{
  "schema_version": 3,
  "app": "jellyfin-ladder",
  "display_name": "Jellyfin transcode ladder",
  "upstream_repo": "https://github.com/jellyfin/jellyfin",
  "docs_url": "https://jellyfin.org/docs/general/installation/container/",
  "status": "ok",
  "summary": {
    "primary_service": "jellyfin",
    "app_version": "12.2",
    "app_version_pinned": true,
    "runs": 3,
    "publishable": true,
    "publishable_note": null,
    "idle_total_mem_mib": 267.26,
    "idle_total_cpu_pct": 1.68,
    "peak_total_mem_mib": 1204.22,
    "peak_is_under_load": true,
    "startup_seconds": 10.8,
    "startup_peak_total_mem_mib": 279.4,
    "settled": true,
    "settle_seconds_used": 121.2,
    "peak_max_mib": 1253.38,
    "sizing_peak_mib": 1253.38,
    "idle_mem_mib": {
      "median": 267.26,
      "min": 262.62,
      "max": 272.69,
      "values": [
        262.62,
        267.26,
        272.69
      ]
    },
    "idle_cpu_pct": {
      "median": 1.68,
      "min": 1.65,
      "max": 1.69,
      "values": [
        1.68,
        1.65,
        1.69
      ]
    },
    "peak_mem_mib": {
      "median": 1204.22,
      "min": 1175.55,
      "max": 1253.38,
      "values": [
        1175.55,
        1204.22,
        1253.38
      ]
    },
    "startup_peak_mem_mib": {
      "median": 279.4,
      "min": 276.9,
      "max": 281.7,
      "values": [
        276.9,
        281.7,
        279.4
      ]
    },
    "startup_s": {
      "median": 10.8,
      "min": 10.8,
      "max": 10.8,
      "values": [
        10.8,
        10.8,
        10.8
      ]
    },
    "settled_after_healthy_s": {
      "median": 124.8,
      "min": 124.7,
      "max": 126.8,
      "values": [
        126.8,
        124.7,
        124.8
      ]
    },
    "settled_runs": 3,
    "per_service": {
      "jellyfin": {
        "idle_mem_mib": {
          "median": 267.26,
          "min": 262.62,
          "max": 272.69,
          "values": [
            262.62,
            267.26,
            272.69
          ]
        },
        "peak_mem_mib": {
          "median": 1204.22,
          "min": 1175.55,
          "max": 1253.38,
          "values": [
            1175.55,
            1204.22,
            1253.38
          ]
        }
      }
    },
    "variance_flag": null,
    "representative_run": 2,
    "cpu_models": [
      "INTEL(R) XEON(R) PLATINUM 8573C"
    ],
    "cpu_model_mismatch": false,
    "rule": "idle = median of the run idle means; peak = median of the run peaks (highest simultaneous total, under load when the app has a load step); peak_max_mib = highest run peak; sizing_peak_mib = highest over runs of max(run peak, run startup peak); variance_flag when max/min over runs is above 1.5 for idle or peak.",
    "ladder": {
      "levels": [
        {
          "players": 1,
          "runs_measured": 3,
          "runs_skipped": 0,
          "runs_kept_up": 3,
          "verdict": "yes",
          "outcomes": [
            "kept_up",
            "kept_up",
            "kept_up"
          ],
          "ffmpeg_speed_min_x": {
            "median": 3.12,
            "min": 3.05,
            "max": 3.14,
            "values": [
              3.14,
              3.12,
              3.05
            ]
          },
          "ffmpeg_speed_median_x": {
            "median": 3.12,
            "min": 3.05,
            "max": 3.14,
            "values": [
              3.14,
              3.12,
              3.05
            ]
          },
          "ffmpeg_speed_max_x": {
            "median": 3.12,
            "min": 3.05,
            "max": 3.14,
            "values": [
              3.14,
              3.12,
              3.05
            ]
          },
          "late_segments_total": {
            "median": 0,
            "min": 0,
            "max": 0,
            "values": [
              0,
              0,
              0
            ]
          },
          "max_lateness_s": {
            "median": 0.0,
            "min": 0.0,
            "max": 0.0,
            "values": [
              0.0,
              0.0,
              0.0
            ]
          },
          "stall_seconds_max": {
            "median": 0.0,
            "min": 0.0,
            "max": 0.0,
            "values": [
              0.0,
              0.0,
              0.0
            ]
          },
          "first_segment_s_max": {
            "median": 2.99,
            "min": 2.95,
            "max": 3.04,
            "values": [
              2.95,
              2.99,
              3.04
            ]
          },
          "stack_mem_mean_mib": {
            "median": 554.72,
            "min": 528.98,
            "max": 561.31,
            "values": [
              528.98,
              561.31,
              554.72
            ]
          },
          "stack_mem_max_mib": {
            "median": 566.3,
            "min": 541.9,
            "max": 571.9,
            "values": [
              541.9,
              571.9,
              566.3
            ]
          },
          "stack_cpu_mean_pct": {
            "median": 197.18,
            "min": 196.81,
            "max": 197.31,
            "values": [
              196.81,
              197.31,
              197.18
            ]
          }
        },
        {
          "players": 2,
          "runs_measured": 3,
          "runs_skipped": 0,
          "runs_kept_up": 3,
          "verdict": "yes",
          "outcomes": [
            "kept_up",
            "kept_up",
            "kept_up"
          ],
          "ffmpeg_speed_min_x": {
            "median": 1.58,
            "min": 1.58,
            "max": 1.59,
            "values": [
              1.58,
              1.59,
              1.58
            ]
          },
          "ffmpeg_speed_median_x": {
            "median": 1.58,
            "min": 1.58,
            "max": 1.6,
            "values": [
              1.58,
              1.6,
              1.58
            ]
          },
          "ffmpeg_speed_max_x": {
            "median": 1.59,
            "min": 1.58,
            "max": 1.61,
            "values": [
              1.58,
              1.61,
              1.59
            ]
          },
          "late_segments_total": {
            "median": 0,
            "min": 0,
            "max": 0,
            "values": [
              0,
              0,
              0
            ]
          },
          "max_lateness_s": {
            "median": 0.0,
            "min": 0.0,
            "max": 0.0,
            "values": [
              0.0,
              0.0,
              0.0
            ]
          },
          "stall_seconds_max": {
            "median": 0.0,
            "min": 0.0,
            "max": 0.0,
            "values": [
              0.0,
              0.0,
              0.0
            ]
          },
          "first_segment_s_max": {
            "median": 5.57,
            "min": 4.87,
            "max": 5.58,
            "values": [
              4.87,
              5.57,
              5.58
            ]
          },
          "stack_mem_mean_mib": {
            "median": 795.5,
            "min": 774.03,
            "max": 803.84,
            "values": [
              774.03,
              803.84,
              795.5
            ]
          },
          "stack_mem_max_mib": {
            "median": 810.2,
            "min": 790.3,
            "max": 822.8,
            "values": [
              790.3,
              822.8,
              810.2
            ]
          },
          "stack_cpu_mean_pct": {
            "median": 197.53,
            "min": 197.39,
            "max": 197.59,
            "values": [
              197.39,
              197.59,
              197.53
            ]
          }
        },
        {
          "players": 3,
          "runs_measured": 3,
          "runs_skipped": 0,
          "runs_kept_up": 3,
          "verdict": "yes",
          "outcomes": [
            "kept_up",
            "kept_up",
            "kept_up"
          ],
          "ffmpeg_speed_min_x": {
            "median": 1.03,
            "min": 1.03,
            "max": 1.04,
            "values": [
              1.03,
              1.04,
              1.03
            ]
          },
          "ffmpeg_speed_median_x": {
            "median": 1.06,
            "min": 1.03,
            "max": 1.06,
            "values": [
              1.03,
              1.06,
              1.06
            ]
          },
          "ffmpeg_speed_max_x": {
            "median": 1.06,
            "min": 1.04,
            "max": 1.07,
            "values": [
              1.04,
              1.07,
              1.06
            ]
          },
          "late_segments_total": {
            "median": 0,
            "min": 0,
            "max": 0,
            "values": [
              0,
              0,
              0
            ]
          },
          "max_lateness_s": {
            "median": 0.0,
            "min": 0.0,
            "max": 0.0,
            "values": [
              0.0,
              0.0,
              0.0
            ]
          },
          "stall_seconds_max": {
            "median": 0.0,
            "min": 0.0,
            "max": 0.0,
            "values": [
              0.0,
              0.0,
              0.0
            ]
          },
          "first_segment_s_max": {
            "median": 7.15,
            "min": 7.0,
            "max": 7.23,
            "values": [
              7.23,
              7.15,
              7.0
            ]
          },
          "stack_mem_mean_mib": {
            "median": 1021.36,
            "min": 971.91,
            "max": 1030.25,
            "values": [
              971.91,
              1030.25,
              1021.36
            ]
          },
          "stack_mem_max_mib": {
            "median": 1031.17,
            "min": 982.8,
            "max": 1039.36,
            "values": [
              982.8,
              1039.36,
              1031.17
            ]
          },
          "stack_cpu_mean_pct": {
            "median": 197.41,
            "min": 197.31,
            "max": 197.63,
            "values": [
              197.41,
              197.31,
              197.63
            ]
          }
        },
        {
          "players": 4,
          "runs_measured": 3,
          "runs_skipped": 0,
          "runs_kept_up": 0,
          "verdict": "no",
          "outcomes": [
            "failed",
            "failed",
            "failed"
          ],
          "ffmpeg_speed_min_x": {
            "median": 0.78,
            "min": 0.76,
            "max": 0.78,
            "values": [
              0.78,
              0.78,
              0.76
            ]
          },
          "ffmpeg_speed_median_x": {
            "median": 0.78,
            "min": 0.77,
            "max": 0.79,
            "values": [
              0.78,
              0.79,
              0.77
            ]
          },
          "ffmpeg_speed_max_x": {
            "median": 0.79,
            "min": 0.78,
            "max": 0.82,
            "values": [
              0.79,
              0.82,
              0.78
            ]
          },
          "late_segments_total": {
            "median": 52,
            "min": 51,
            "max": 53,
            "values": [
              51,
              52,
              53
            ]
          },
          "max_lateness_s": {
            "median": 10.94,
            "min": 10.56,
            "max": 12.1,
            "values": [
              10.56,
              10.94,
              12.1
            ]
          },
          "stall_seconds_max": {
            "median": 10.94,
            "min": 10.56,
            "max": 12.1,
            "values": [
              10.56,
              10.94,
              12.1
            ]
          },
          "first_segment_s_max": {
            "median": 9.72,
            "min": 9.64,
            "max": 9.91,
            "values": [
              9.91,
              9.64,
              9.72
            ]
          },
          "stack_mem_mean_mib": {
            "median": 1193.74,
            "min": 1170.26,
            "max": 1243.95,
            "values": [
              1170.26,
              1193.74,
              1243.95
            ]
          },
          "stack_mem_max_mib": {
            "median": 1204.22,
            "min": 1175.55,
            "max": 1253.38,
            "values": [
              1175.55,
              1204.22,
              1253.38
            ]
          },
          "stack_cpu_mean_pct": {
            "median": 197.38,
            "min": 197.22,
            "max": 197.43,
            "values": [
              197.38,
              197.22,
              197.43
            ]
          }
        },
        {
          "players": 6,
          "runs_measured": 0,
          "runs_skipped": 3,
          "runs_kept_up": 0,
          "verdict": "not_run",
          "outcomes": [
            "skipped",
            "skipped",
            "skipped"
          ],
          "ffmpeg_speed_min_x": null,
          "ffmpeg_speed_median_x": null,
          "ffmpeg_speed_max_x": null,
          "late_segments_total": null,
          "max_lateness_s": null,
          "stall_seconds_max": null,
          "first_segment_s_max": null,
          "stack_mem_mean_mib": null,
          "stack_mem_max_mib": null,
          "stack_cpu_mean_pct": null
        },
        {
          "players": 8,
          "runs_measured": 0,
          "runs_skipped": 3,
          "runs_kept_up": 0,
          "verdict": "not_run",
          "outcomes": [
            "skipped",
            "skipped",
            "skipped"
          ],
          "ffmpeg_speed_min_x": null,
          "ffmpeg_speed_median_x": null,
          "ffmpeg_speed_max_x": null,
          "late_segments_total": null,
          "max_lateness_s": null,
          "stall_seconds_max": null,
          "first_segment_s_max": null,
          "stack_mem_mean_mib": null,
          "stack_mem_max_mib": null,
          "stack_cpu_mean_pct": null
        }
      ],
      "max_players_kept_up": {
        "median": 3,
        "min": 3,
        "max": 3,
        "values": [
          3,
          3,
          3
        ]
      },
      "levels_requested": [
        1,
        2,
        3,
        4,
        6,
        8
      ],
      "hold_seconds": 60,
      "runs_with_ladder": 3,
      "stopped_early": [
        {
          "run": 1,
          "after_players": 4,
          "reason": "4 players clearly failed (outcome failed); higher levels not run"
        },
        {
          "run": 2,
          "after_players": 4,
          "reason": "4 players clearly failed (outcome failed); higher levels not run"
        },
        {
          "run": 3,
          "after_players": 4,
          "reason": "4 players clearly failed (outcome failed); higher levels not run"
        }
      ],
      "definition": "A level kept up when every player received every segment it needed before its playhead reached it: no late segment on any player (lab/notes/jellyfin-2026-10-06.md, section 5; the same rule as the 2026-10-04 and 10-06 manual ladders). 'marginal' = some late segments but not a clear failure; 'failed' = at least half of the players were late on a quarter or more of their segments, or errored (the ladder stops there). Speeds are the speed= of the last ffmpeg progress line per player (an average since that ffmpeg started). Per level: verdict 'yes' = every measured run kept up, 'no' = none did, 'mixed' = some did. Figures are the median over the runs that measured the level; a level skipped in a run after a lower level failed is not counted for that run."
    }
  },
  "run": {
    "started_at": "2026-10-11T07:54:42Z",
    "date": "2026-10-11",
    "harness_version": "3.0.0",
    "runs_requested": 3,
    "docker_host": null,
    "remote": false,
    "runs_completed": 3
  },
  "host": {
    "label": "github-actions ubuntu-latest (2 vCPU, 8 GB)",
    "ci": {
      "runs_on": "ubuntu-latest",
      "runner_environment": "github-hosted",
      "runner_os": "Linux",
      "runner_arch": "X64",
      "image_os": "ubuntu24",
      "image_version": "20261004.327.1"
    },
    "cpu_model": "INTEL(R) XEON(R) PLATINUM 8573C",
    "cpu_model_note": null,
    "cores": 2,
    "mem_total_mib": 7937,
    "kernel": "6.17.0-1022-azure",
    "os": "Ubuntu 24.04.5 LTS",
    "arch": "x86_64",
    "oci_arch": "amd64",
    "docker_server_version": "28.0.4",
    "docker_client_version": "28.0.4",
    "compose_client_version": "2.38.2",
    "storage_driver": "overlay2",
    "containerd_image_store": false,
    "source": "docker info + throwaway container reading /proc/cpuinfo on the daemon host",
    "compose_note": "Compose runs on the client machine; Docker server fields are from the daemon host"
  },
  "helper_images": {
    "curlimages/curl:latest": {
      "pulled_as": "curlimages/curl:latest",
      "digest": "curlimages/curl@sha256:58adaa4e8dca9c988bae2aba4ab3434a0bb2da16bbe3f92dec39ec7785166777"
    },
    "python:3.12-slim": {
      "pulled_as": "python:3.12-slim",
      "digest": "python@sha256:a6e34c598f2467ed0e9a8d349809fcd8b5c603269512df273a0bb1784edc11b1"
    }
  },
  "pull_seconds": 39.6,
  "finished_at": "2026-10-11T08:20:33Z",
  "elapsed_seconds": 1551.6,
  "services": {
    "jellyfin": {
      "image_ref": "jellyfin/jellyfin:12.2",
      "image_repo": "jellyfin/jellyfin",
      "image_tag": "12.2",
      "digest": "sha256:357724bf0ae27a672c7cbaa899db2d9abeb13dbd8657ccce750258a4c059d037",
      "digest_note": null,
      "version": "12.2",
      "version_source": "label:org.opencontainers.image.version",
      "version_pinned": true,
      "version_note": null,
      "resolved_tag": "12.2",
      "resolved_tag_note": null,
      "image_size": {
        "unpacked_mb": 1730.0,
        "unpacked_source": "docker image ls Size: unpacked image on the daemon host, rounded by docker to 3 significant figures",
        "compressed_mb": 754.0,
        "compressed_source": "sum of compressed layer sizes in the registry manifest for linux/amd64",
        "compressed_null_reason": null,
        "unit_note": "MB = 10^6 bytes. unpacked = disk used on the host; compressed = what is downloaded"
      },
      "compose_image": "jellyfin/jellyfin:12.2",
      "compose_comment": "sha256:357724bf0ae27a672c7cbaa899db2d9abeb13dbd8657ccce750258a4c059d037  (version 12.2, from label:org.opencontainers.image.version)",
      "restart_count": 0,
      "oom_killed": false
    }
  },
  "runs": [
    {
      "run": 1,
      "started_at": "2026-10-11T07:55:27Z",
      "host": {
        "label": "github-actions ubuntu-latest (2 vCPU, 8 GB)",
        "ci": {
          "runs_on": "ubuntu-latest",
          "runner_environment": "github-hosted",
          "runner_os": "Linux",
          "runner_arch": "X64",
          "image_os": "ubuntu24",
          "image_version": "20261004.327.1"
        },
        "cpu_model": "INTEL(R) XEON(R) PLATINUM 8573C",
        "cpu_model_note": null,
        "cores": 2,
        "mem_total_mib": 7937,
        "kernel": "6.17.0-1022-azure",
        "os": "Ubuntu 24.04.5 LTS",
        "arch": "x86_64",
        "oci_arch": "amd64",
        "docker_server_version": "28.0.4",
        "docker_client_version": "28.0.4",
        "compose_client_version": "2.38.2",
        "storage_driver": "overlay2",
        "containerd_image_store": false,
        "source": "docker info + throwaway container reading /proc/cpuinfo on the daemon host",
        "compose_note": "Compose runs on the client machine; Docker server fields are from the daemon host"
      },
      "date": "2026-10-11",
      "startup": {
        "seconds": 10.8,
        "ok": true,
        "checks": [
          {
            "type": "container",
            "ok": true,
            "ready_after_s": 10.8,
            "detail": "shb-jellyfin-ladder-jellyfin-1=running/healthy"
          }
        ],
        "up_command_seconds": 0.3,
        "definition": "wall clock from starting `docker compose up -d` until every health check passed; checks poll every 0.5 s from a throwaway container on the compose network, so resolution is about +/- 1 s"
      },
      "versions": {
        "jellyfin": "12.2"
      },
      "setup": [
        {
          "exit_code": 0,
          "duration_s": 3.4,
          "reported": {
            "jellyfin_version": "12.2.0",
            "wizard_completed": true,
            "libraries": [
              {
                "name": "Movies",
                "type": "movies",
                "paths": [
                  "/media/movies"
                ]
              }
            ]
          },
          "output_tail": [
            "GET /health -> HTTP 200 'Healthy'",
            "GET /System/Info/Public -> HTTP 200 version=12.2.0 wizard_completed=False local_address=http://172.18.0.2:8096",
            "POST /Startup/Configuration -> HTTP 204",
            "GET /Startup/User -> HTTP 200",
            "POST /Startup/User (create admin 'labadmin') -> HTTP 204",
            "POST /Startup/RemoteAccess -> HTTP 204",
            "POST /Startup/Complete -> HTTP 204",
            "GET /System/Info/Public -> wizard_completed=True",
            "POST /Users/AuthenticateByName -> HTTP 200 (token not printed)",
            "POST /Library/VirtualFolders (Movies -> /media/movies, no scan yet) -> HTTP 204",
            "libraries: [{\"name\": \"Movies\", \"type\": \"movies\", \"paths\": [\"/media/movies\"]}]"
          ],
          "description": "Complete the startup wizard through the documented Startup API (server name and language, the admin user, remote access, complete), log in, and add a library called Movies that points at /media/movies (no metadata fetchers for movies, so no lookups on the internet; no scan yet). This is the setup step of the jellyfin app, unchanged."
        }
      ],
      "idle": {
        "per_service": {
          "jellyfin": {
            "samples": 16,
            "mem_mean_mib": 262.62,
            "mem_max_mib": 266.8,
            "cpu_mean_pct": 1.68,
            "cpu_max_pct": 9.28
          }
        },
        "total": {
          "samples": 16,
          "dropped_for_total": 0,
          "mem_mean_mib": 262.62,
          "mem_max_mib": 266.8,
          "cpu_mean_pct": 1.68,
          "cpu_max_pct": 9.28
        },
        "window_seconds": 30.3,
        "series": [
          {
            "t_offset_s": 0.0,
            "total_mem_mib": 260.2,
            "total_cpu_pct": 4.03
          },
          {
            "t_offset_s": 2.0,
            "total_mem_mib": 260.0,
            "total_cpu_pct": 0.09
          },
          {
            "t_offset_s": 4.0,
            "total_mem_mib": 260.0,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 6.1,
            "total_mem_mib": 260.3,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 8.1,
            "total_mem_mib": 260.3,
            "total_cpu_pct": 0.2
          },
          {
            "t_offset_s": 10.1,
            "total_mem_mib": 260.2,
            "total_cpu_pct": 6.74
          },
          {
            "t_offset_s": 12.1,
            "total_mem_mib": 260.2,
            "total_cpu_pct": 0.15
          },
          {
            "t_offset_s": 14.1,
            "total_mem_mib": 260.2,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 16.2,
            "total_mem_mib": 260.6,
            "total_cpu_pct": 0.07
          },
          {
            "t_offset_s": 18.2,
            "total_mem_mib": 260.6,
            "total_cpu_pct": 0.04
          },
          {
            "t_offset_s": 20.2,
            "total_mem_mib": 266.3,
            "total_cpu_pct": 9.28
          },
          {
            "t_offset_s": 22.2,
            "total_mem_mib": 266.6,
            "total_cpu_pct": 0.11
          },
          {
            "t_offset_s": 24.2,
            "total_mem_mib": 266.4,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 26.3,
            "total_mem_mib": 266.6,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 28.3,
            "total_mem_mib": 266.6,
            "total_cpu_pct": 0.43
          },
          {
            "t_offset_s": 30.3,
            "total_mem_mib": 266.8,
            "total_cpu_pct": 5.73
          }
        ]
      },
      "settle": {
        "settled": true,
        "mode": "detected",
        "settle_seconds_used": 121.2,
        "settle_started_after_healthy_s": 5.6,
        "params": {
          "window_seconds": 60,
          "threshold_pct": 2.0,
          "threshold_min_mib": 10.0,
          "min_seconds": 120,
          "max_seconds": 600
        },
        "last_window": {
          "n": 30,
          "mean_mib": 261.83,
          "min_mib": 260.0,
          "max_mib": 265.2,
          "spread_mib": 5.2,
          "threshold_mib": 10.0
        },
        "rechecks": 0,
        "rule": "settled = over the last window_seconds the stack total varied (max - min) by less than max(threshold_pct of the window mean, threshold_min_mib); not before min_seconds, at the latest max_seconds, both counted from the end of the setup steps; the idle window must also be flat and agree with it. If max_seconds passes without settling, settled=false and the idle window is measured anyway."
      },
      "startup_peak": {
        "per_service_mem_mib": {
          "jellyfin": 276.9
        },
        "total_mem_mib": 276.9,
        "samples": 63,
        "note": "highest value across docker stats samples (about one every 2-3 s) from healthy until the stack settled; shorter spikes between samples are not seen"
      },
      "timeline": {
        "step_s": 10,
        "t0": "healthy",
        "offsets_s": [
          10,
          20,
          30,
          40,
          50,
          60,
          70,
          80,
          90,
          100,
          110,
          120,
          130,
          140,
          150,
          160
        ],
        "total_mem_mib": [
          259.8,
          276.4,
          268.8,
          268.0,
          265.2,
          264.0,
          264.1,
          264.2,
          262.6,
          262.7,
          260.3,
          260.1,
          260.3,
          260.2,
          262.9,
          266.6
        ],
        "per_service_mem_mib": {
          "jellyfin": [
            259.8,
            276.4,
            268.8,
            268.0,
            265.2,
            264.0,
            264.1,
            264.2,
            262.6,
            262.7,
            260.3,
            260.1,
            260.3,
            260.2,
            262.9,
            266.6
          ]
        }
      },
      "load": {
        "per_service": {
          "jellyfin": {
            "samples": 166,
            "mem_mean_mib": 782.78,
            "mem_max_mib": 1175.55,
            "cpu_mean_pct": 167.41,
            "cpu_max_pct": 200.42
          }
        },
        "total": {
          "samples": 166,
          "dropped_for_total": 0,
          "mem_mean_mib": 782.78,
          "mem_max_mib": 1175.55,
          "cpu_mean_pct": 167.41,
          "cpu_max_pct": 200.42
        },
        "description": "One library scan, then a ladder of simultaneous software transcodes: 1, 2, 3, 4, 6 and 8 simulated players. Every player has its own device ID and plays the same 12-minute film, asking for a 1280x720, 4 Mb/s H.264 HLS stream that cannot direct play, so Jellyfin runs one ffmpeg per player with libx264 on the CPU (no hardware acceleration in the lab), and each player fetches the 3-second segments in real time for 60 seconds of playback. The 1080p H.264 source is synthetic: a test pattern with added noise at about 8 Mb/s, with AAC stereo audio that Jellyfin copies. ffmpeg runs without throttling (the default), so each job works as fast as the CPU allows. After each level the players stop their encodings, the script waits until Jellyfin reports no transcode and pauses 10 seconds. A level kept up when no player had a segment arrive after the moment its playhead needed it. For each level the result records the speed of every ffmpeg (from Jellyfin's transcode logs), the late segments and rebuffering of every player, the delay to the first segment and the memory and CPU of the stack. The ladder stops at the first level where at least half of the players are late on a quarter or more of their segments. No browser, no subtitles.",
        "duration_s": 330.6,
        "window": "from LAB_MARK load_start (or step start) until 2 s after the step ended",
        "reported_by_script": {
          "library_scan_seconds": 1.0,
          "library_scan_status": "Completed",
          "movies_in_library": 1,
          "ladder": {
            "item": "Long Test Feature",
            "levels_requested": [
              1,
              2,
              3,
              4,
              6,
              8
            ],
            "hold_seconds": 60,
            "pause_seconds": 10,
            "max_players_kept_up": 3,
            "stopped_early": {
              "after_players": 4,
              "reason": "4 players clearly failed (outcome failed); higher levels not run"
            },
            "levels": [
              {
                "players": 1,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 3.3,
                "steady_start_offset_s": 7.6,
                "steady_end_offset_s": 67.6,
                "speed_min_x": 3.14,
                "speed_median_x": 3.14,
                "speed_max_x": 3.14,
                "steady_speed_min_x": 3.292,
                "steady_speed_median_x": 3.292,
                "ffmpeg_logs_found": 1,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 2.95,
                "first_segment_s_max": 2.95,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 0,
                  "video_direct": 0,
                  "video_codecs": [],
                  "framerates": []
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.1,
                    "seconds_to_first_segment": 2.95,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 3.14,
                    "last_fps": 76.0,
                    "media_time_s": 201.2,
                    "elapsed_s": 64.0,
                    "frames": 4845,
                    "steady_speed_x": 3.292
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 2,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 82.0,
                "steady_start_offset_s": 89.4,
                "steady_end_offset_s": 148.9,
                "speed_min_x": 1.58,
                "speed_median_x": 1.58,
                "speed_max_x": 1.58,
                "steady_speed_min_x": 1.637,
                "steady_speed_median_x": 1.644,
                "ffmpeg_logs_found": 2,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 4.715,
                "first_segment_s_max": 4.87,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 1,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    37.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.2,
                    "seconds_to_first_segment": 4.56,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.2,
                    "seconds_to_first_segment": 4.87,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 1.58,
                    "last_fps": 38.0,
                    "media_time_s": 107.2,
                    "elapsed_s": 67.6,
                    "frames": 2591,
                    "steady_speed_x": 1.651
                  },
                  {
                    "last_speed_x": 1.58,
                    "last_fps": 38.0,
                    "media_time_s": 107.1,
                    "elapsed_s": 67.6,
                    "frames": 2599,
                    "steady_speed_x": 1.637
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 3,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 164.3,
                "steady_start_offset_s": 175.2,
                "steady_end_offset_s": 234.5,
                "speed_min_x": 1.03,
                "speed_median_x": 1.03,
                "speed_max_x": 1.04,
                "steady_speed_min_x": 1.062,
                "steady_speed_median_x": 1.07,
                "ffmpeg_logs_found": 3,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 7.02,
                "first_segment_s_max": 7.23,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 3,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    24.0,
                    25.0,
                    25.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 23,
                    "playback_seconds": 60.0,
                    "seconds_to_first_segment": 6.87,
                    "error": null,
                    "segments_after_start": 21,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 23,
                    "playback_seconds": 60.6,
                    "seconds_to_first_segment": 7.02,
                    "error": null,
                    "segments_after_start": 21,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 23,
                    "playback_seconds": 60.9,
                    "seconds_to_first_segment": 7.23,
                    "error": null,
                    "segments_after_start": 21,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 1.04,
                    "last_fps": 25.0,
                    "media_time_s": 74.0,
                    "elapsed_s": 70.8,
                    "frames": 1781,
                    "steady_speed_x": 1.07
                  },
                  {
                    "last_speed_x": 1.03,
                    "last_fps": 25.0,
                    "media_time_s": 73.2,
                    "elapsed_s": 71.0,
                    "frames": 1769,
                    "steady_speed_x": 1.062
                  },
                  {
                    "last_speed_x": 1.03,
                    "last_fps": 25.0,
                    "media_time_s": 73.4,
                    "elapsed_s": 71.1,
                    "frames": 1775,
                    "steady_speed_x": 1.092
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 4,
                "skipped": false,
                "outcome": "failed",
                "kept_up": false,
                "clearly_failed": true,
                "start_offset_s": 250.1,
                "steady_start_offset_s": 264.7,
                "steady_end_offset_s": 323.5,
                "speed_min_x": 0.777,
                "speed_median_x": 0.78,
                "speed_max_x": 0.792,
                "steady_speed_min_x": 0.806,
                "steady_speed_median_x": 0.822,
                "ffmpeg_logs_found": 4,
                "late_segments_total": 51,
                "late_players": 4,
                "max_lateness_s": 10.56,
                "stall_events_total": 50,
                "stall_seconds_max": 10.56,
                "first_segment_s_median": 9.09,
                "first_segment_s_max": 9.91,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 3,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    18.0,
                    18.0,
                    19.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 60.2,
                    "seconds_to_first_segment": 8.68,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 12,
                    "max_lateness_s": 9.21,
                    "stall_events": 12,
                    "stall_seconds": 9.21,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 61.5,
                    "seconds_to_first_segment": 8.58,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 13,
                    "max_lateness_s": 10.52,
                    "stall_events": 13,
                    "stall_seconds": 10.52,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 61.6,
                    "seconds_to_first_segment": 9.5,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 13,
                    "max_lateness_s": 10.56,
                    "stall_events": 12,
                    "stall_seconds": 10.56,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 61.1,
                    "seconds_to_first_segment": 9.91,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 13,
                    "max_lateness_s": 10.04,
                    "stall_events": 13,
                    "stall_seconds": 10.04,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 0.779,
                    "last_fps": 19.0,
                    "media_time_s": 58.4,
                    "elapsed_s": 74.9,
                    "frames": 1410,
                    "steady_speed_x": 0.806
                  },
                  {
                    "last_speed_x": 0.777,
                    "last_fps": 19.0,
                    "media_time_s": 58.5,
                    "elapsed_s": 75.4,
                    "frames": 1414,
                    "steady_speed_x": 0.835
                  },
                  {
                    "last_speed_x": 0.792,
                    "last_fps": 19.0,
                    "media_time_s": 58.5,
                    "elapsed_s": 73.9,
                    "frames": 1410,
                    "steady_speed_x": 0.824
                  },
                  {
                    "last_speed_x": 0.782,
                    "last_fps": 19.0,
                    "media_time_s": 58.9,
                    "elapsed_s": 75.4,
                    "frames": 1422,
                    "steady_speed_x": 0.82
                  }
                ]
              },
              {
                "players": 6,
                "skipped": true,
                "reason": "4 players clearly failed (outcome failed); higher levels not run"
              },
              {
                "players": 8,
                "skipped": true,
                "reason": "4 players clearly failed (outcome failed); higher levels not run"
              }
            ],
            "ffmpeg_command": "/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -i file:\"/media/movies/Long Test Feature (2010)/Long Test Feature (2010).mp4\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 libx264 -preset veryfast -crf 23 -maxrate 3872026 -bufsize 7744052 -profile:v:0 high -level 40 -x264opts:0 subme=0:me_range=16:rc_lookahead=10:me=hex:open_gop=0 -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -sc_threshold:v:0 0 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw\\,ih*a)\\,min(1280\\,720*a))/2)*2:trunc(min(max(iw/a\\,ih)\\,min(1280/a\\,720))/2)*2,format=yuv420p\" -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename \"/cache/transcodes/2b0a3318f68cc605099e5456a80ad172%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/cache/transcodes/2b0a3318f68cc605099e5456a80ad172.m3u8\""
          }
        },
        "output_tail": [
          "ladder: levels [1, 2, 3, 4, 6, 8], 60 s of playback each, 10 s pause, keep-up = no late segment on any player",
          "  1 player(s): kept_up; ffmpeg speed 3.14-3.14x (1 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 2.95 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  2 player(s): kept_up; ffmpeg speed 1.58-1.58x (2 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 4.87 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  3 player(s): kept_up; ffmpeg speed 1.03-1.04x (3 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 7.23 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  4 player(s): failed; ffmpeg speed 0.777-0.792x (4 log(s)); late segments 51 on 4 player(s), worst 10.56 s; stalls up to 10.56 s; first segment up to 9.91 s",
          "max players that kept up: 3; stopped early: 4 players clearly failed (outcome failed); higher levels not run",
          "  ffmpeg command: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -i file:\"/media/movies/Long Test Feature (2010)/Long Test Feature (2010).mp4\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 libx264 -preset veryfast -crf 23 -maxrate 3872026 -bufsize 7744052 -profile:v:0 high -level 40 -x264opts:0 subme=0:me_range=16:rc_lookahead=10:me=hex:open_gop=0 -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -sc_threshold:v:0 0 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw\\,ih*a)\\,min(1280\\,720*a))/2)*2:trunc(min(max(iw/a\\,ih)\\,min(1280/a\\,720))/2)*2,format=yuv420p\" -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename \"/cache/transcodes/2b0a3318f68cc605099e5456a80ad172%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/cache/transcodes/2b0a3318f68cc605099e5456a80ad172.m3u8\""
        ],
        "series": [
          {
            "t_offset_s": 0.0,
            "total_mem_mib": 288.4,
            "total_cpu_pct": 103.1
          },
          {
            "t_offset_s": 2.0,
            "total_mem_mib": 291.8,
            "total_cpu_pct": 100.03
          },
          {
            "t_offset_s": 4.0,
            "total_mem_mib": 482.5,
            "total_cpu_pct": 159.42
          },
          {
            "t_offset_s": 6.0,
            "total_mem_mib": 488.0,
            "total_cpu_pct": 198.86
          },
          {
            "t_offset_s": 8.0,
            "total_mem_mib": 512.2,
            "total_cpu_pct": 198.04
          },
          {
            "t_offset_s": 10.0,
            "total_mem_mib": 514.3,
            "total_cpu_pct": 199.61
          },
          {
            "t_offset_s": 12.0,
            "total_mem_mib": 514.0,
            "total_cpu_pct": 195.16
          },
          {
            "t_offset_s": 14.0,
            "total_mem_mib": 514.9,
            "total_cpu_pct": 197.29
          },
          {
            "t_offset_s": 16.0,
            "total_mem_mib": 520.3,
            "total_cpu_pct": 197.79
          },
          {
            "t_offset_s": 18.0,
            "total_mem_mib": 519.9,
            "total_cpu_pct": 193.95
          },
          {
            "t_offset_s": 20.0,
            "total_mem_mib": 520.2,
            "total_cpu_pct": 196.53
          },
          {
            "t_offset_s": 22.1,
            "total_mem_mib": 518.3,
            "total_cpu_pct": 197.19
          },
          {
            "t_offset_s": 24.1,
            "total_mem_mib": 519.7,
            "total_cpu_pct": 194.94
          },
          {
            "t_offset_s": 26.1,
            "total_mem_mib": 519.8,
            "total_cpu_pct": 198.99
          },
          {
            "t_offset_s": 28.1,
            "total_mem_mib": 523.8,
            "total_cpu_pct": 192.87
          },
          {
            "t_offset_s": 30.1,
            "total_mem_mib": 525.8,
            "total_cpu_pct": 197.85
          },
          {
            "t_offset_s": 32.1,
            "total_mem_mib": 529.3,
            "total_cpu_pct": 197.63
          },
          {
            "t_offset_s": 34.1,
            "total_mem_mib": 532.4,
            "total_cpu_pct": 196.14
          },
          {
            "t_offset_s": 36.1,
            "total_mem_mib": 533.4,
            "total_cpu_pct": 198.21
          },
          {
            "t_offset_s": 38.1,
            "total_mem_mib": 535.2,
            "total_cpu_pct": 196.16
          },
          {
            "t_offset_s": 40.1,
            "total_mem_mib": 534.0,
            "total_cpu_pct": 198.33
          },
          {
            "t_offset_s": 42.1,
            "total_mem_mib": 537.9,
            "total_cpu_pct": 198.12
          },
          {
            "t_offset_s": 44.1,
            "total_mem_mib": 537.3,
            "total_cpu_pct": 198.69
          },
          {
            "t_offset_s": 46.1,
            "total_mem_mib": 536.8,
            "total_cpu_pct": 198.95
          },
          {
            "t_offset_s": 48.1,
            "total_mem_mib": 536.9,
            "total_cpu_pct": 190.3
          },
          {
            "t_offset_s": 50.1,
            "total_mem_mib": 533.5,
            "total_cpu_pct": 195.77
          },
          {
            "t_offset_s": 52.1,
            "total_mem_mib": 534.9,
            "total_cpu_pct": 198.76
          },
          {
            "t_offset_s": 54.1,
            "total_mem_mib": 535.6,
            "total_cpu_pct": 198.81
          },
          {
            "t_offset_s": 56.1,
            "total_mem_mib": 536.2,
            "total_cpu_pct": 197.49
          },
          {
            "t_offset_s": 58.1,
            "total_mem_mib": 541.4,
            "total_cpu_pct": 193.59
          },
          {
            "t_offset_s": 60.1,
            "total_mem_mib": 541.6,
            "total_cpu_pct": 195.47
          },
          {
            "t_offset_s": 62.1,
            "total_mem_mib": 541.9,
            "total_cpu_pct": 198.26
          },
          {
            "t_offset_s": 64.1,
            "total_mem_mib": 539.0,
            "total_cpu_pct": 196.64
          },
          {
            "t_offset_s": 66.2,
            "total_mem_mib": 539.1,
            "total_cpu_pct": 197.02
          },
          {
            "t_offset_s": 68.2,
            "total_mem_mib": 338.1,
            "total_cpu_pct": 23.83
          },
          {
            "t_offset_s": 70.2,
            "total_mem_mib": 339.2,
            "total_cpu_pct": 4.94
          },
          {
            "t_offset_s": 72.2,
            "total_mem_mib": 339.1,
            "total_cpu_pct": 1.93
          },
          {
            "t_offset_s": 74.2,
            "total_mem_mib": 338.9,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 76.2,
            "total_mem_mib": 339.2,
            "total_cpu_pct": 0.04
          },
          {
            "t_offset_s": 78.2,
            "total_mem_mib": 339.0,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 80.2,
            "total_mem_mib": 339.1,
            "total_cpu_pct": 3.96
          },
          {
            "t_offset_s": 82.2,
            "total_mem_mib": 661.3,
            "total_cpu_pct": 164.09
          },
          {
            "t_offset_s": 84.2,
            "total_mem_mib": 760.2,
            "total_cpu_pct": 199.49
          },
          {
            "t_offset_s": 86.2,
            "total_mem_mib": 762.1,
            "total_cpu_pct": 198.75
          },
          {
            "t_offset_s": 88.2,
            "total_mem_mib": 763.8,
            "total_cpu_pct": 193.37
          },
          {
            "t_offset_s": 90.2,
            "total_mem_mib": 766.0,
            "total_cpu_pct": 198.29
          },
          {
            "t_offset_s": 92.2,
            "total_mem_mib": 764.9,
            "total_cpu_pct": 198.14
          },
          {
            "t_offset_s": 94.2,
            "total_mem_mib": 765.3,
            "total_cpu_pct": 199.4
          },
          {
            "t_offset_s": 96.2,
            "total_mem_mib": 768.0,
            "total_cpu_pct": 195.66
          },
          {
            "t_offset_s": 98.2,
            "total_mem_mib": 766.8,
            "total_cpu_pct": 194.07
          },
          {
            "t_offset_s": 100.2,
            "total_mem_mib": 766.4,
            "total_cpu_pct": 198.19
          },
          {
            "t_offset_s": 102.2,
            "total_mem_mib": 768.7,
            "total_cpu_pct": 197.74
          },
          {
            "t_offset_s": 104.2,
            "total_mem_mib": 769.8,
            "total_cpu_pct": 198.79
          },
          {
            "t_offset_s": 106.3,
            "total_mem_mib": 769.4,
            "total_cpu_pct": 199.24
          },
          {
            "t_offset_s": 108.3,
            "total_mem_mib": 769.2,
            "total_cpu_pct": 193.9
          },
          {
            "t_offset_s": 110.3,
            "total_mem_mib": 768.3,
            "total_cpu_pct": 200.42
          },
          {
            "t_offset_s": 112.3,
            "total_mem_mib": 778.4,
            "total_cpu_pct": 196.2
          },
          {
            "t_offset_s": 114.3,
            "total_mem_mib": 767.2,
            "total_cpu_pct": 199.54
          },
          {
            "t_offset_s": 116.3,
            "total_mem_mib": 768.0,
            "total_cpu_pct": 196.24
          },
          {
            "t_offset_s": 118.3,
            "total_mem_mib": 769.7,
            "total_cpu_pct": 191.88
          },
          {
            "t_offset_s": 120.3,
            "total_mem_mib": 770.0,
            "total_cpu_pct": 198.56
          },
          {
            "t_offset_s": 122.3,
            "total_mem_mib": 771.6,
            "total_cpu_pct": 198.91
          },
          {
            "t_offset_s": 124.3,
            "total_mem_mib": 775.0,
            "total_cpu_pct": 199.5
          },
          {
            "t_offset_s": 126.3,
            "total_mem_mib": 775.1,
            "total_cpu_pct": 199.2
          },
          {
            "t_offset_s": 128.3,
            "total_mem_mib": 785.8,
            "total_cpu_pct": 193.71
          },
          {
            "t_offset_s": 130.3,
            "total_mem_mib": 778.8,
            "total_cpu_pct": 198.41
          },
          {
            "t_offset_s": 132.3,
            "total_mem_mib": 779.4,
            "total_cpu_pct": 198.95
          },
          {
            "t_offset_s": 134.3,
            "total_mem_mib": 781.7,
            "total_cpu_pct": 195.91
          },
          {
            "t_offset_s": 136.3,
            "total_mem_mib": 782.4,
            "total_cpu_pct": 198.69
          },
          {
            "t_offset_s": 138.3,
            "total_mem_mib": 781.7,
            "total_cpu_pct": 194.51
          },
          {
            "t_offset_s": 140.3,
            "total_mem_mib": 786.6,
            "total_cpu_pct": 198.07
          },
          {
            "t_offset_s": 142.3,
            "total_mem_mib": 787.0,
            "total_cpu_pct": 199.07
          },
          {
            "t_offset_s": 144.3,
            "total_mem_mib": 790.3,
            "total_cpu_pct": 198.93
          },
          {
            "t_offset_s": 146.3,
            "total_mem_mib": 785.7,
            "total_cpu_pct": 198.32
          },
          {
            "t_offset_s": 148.3,
            "total_mem_mib": 787.6,
            "total_cpu_pct": 197.1
          },
          {
            "t_offset_s": 150.4,
            "total_mem_mib": 351.9,
            "total_cpu_pct": 23.07
          },
          {
            "t_offset_s": 152.4,
            "total_mem_mib": 350.4,
            "total_cpu_pct": 0.05
          },
          {
            "t_offset_s": 154.4,
            "total_mem_mib": 350.6,
            "total_cpu_pct": 3.41
          },
          {
            "t_offset_s": 156.4,
            "total_mem_mib": 350.6,
            "total_cpu_pct": 0.05
          },
          {
            "t_offset_s": 158.4,
            "total_mem_mib": 347.0,
            "total_cpu_pct": 0.05
          },
          {
            "t_offset_s": 160.4,
            "total_mem_mib": 347.2,
            "total_cpu_pct": 3.96
          },
          {
            "t_offset_s": 162.4,
            "total_mem_mib": 347.2,
            "total_cpu_pct": 0.05
          },
          {
            "t_offset_s": 164.4,
            "total_mem_mib": 439.4,
            "total_cpu_pct": 164.94
          },
          {
            "t_offset_s": 166.4,
            "total_mem_mib": 951.7,
            "total_cpu_pct": 198.54
          },
          {
            "t_offset_s": 168.4,
            "total_mem_mib": 959.2,
            "total_cpu_pct": 196.61
          },
          {
            "t_offset_s": 170.4,
            "total_mem_mib": 964.6,
            "total_cpu_pct": 195.57
          },
          {
            "t_offset_s": 172.4,
            "total_mem_mib": 968.8,
            "total_cpu_pct": 199.41
          },
          {
            "t_offset_s": 174.4,
            "total_mem_mib": 967.6,
            "total_cpu_pct": 195.22
          },
          {
            "t_offset_s": 176.4,
            "total_mem_mib": 968.9,
            "total_cpu_pct": 197.55
          },
          {
            "t_offset_s": 178.4,
            "total_mem_mib": 970.3,
            "total_cpu_pct": 199.74
          },
          {
            "t_offset_s": 180.4,
            "total_mem_mib": 973.4,
            "total_cpu_pct": 199.18
          },
          {
            "t_offset_s": 182.4,
            "total_mem_mib": 973.4,
            "total_cpu_pct": 198.77
          },
          {
            "t_offset_s": 184.4,
            "total_mem_mib": 969.1,
            "total_cpu_pct": 194.43
          },
          {
            "t_offset_s": 186.4,
            "total_mem_mib": 971.8,
            "total_cpu_pct": 195.99
          },
          {
            "t_offset_s": 188.4,
            "total_mem_mib": 968.2,
            "total_cpu_pct": 199.31
          },
          {
            "t_offset_s": 190.4,
            "total_mem_mib": 967.7,
            "total_cpu_pct": 199.35
          },
          {
            "t_offset_s": 192.5,
            "total_mem_mib": 963.3,
            "total_cpu_pct": 197.07
          },
          {
            "t_offset_s": 194.5,
            "total_mem_mib": 966.0,
            "total_cpu_pct": 195.0
          },
          {
            "t_offset_s": 196.5,
            "total_mem_mib": 965.6,
            "total_cpu_pct": 197.3
          },
          {
            "t_offset_s": 198.5,
            "total_mem_mib": 967.9,
            "total_cpu_pct": 198.35
          },
          {
            "t_offset_s": 200.5,
            "total_mem_mib": 971.1,
            "total_cpu_pct": 197.74
          },
          {
            "t_offset_s": 202.5,
            "total_mem_mib": 972.2,
            "total_cpu_pct": 197.66
          },
          {
            "t_offset_s": 204.5,
            "total_mem_mib": 971.7,
            "total_cpu_pct": 195.15
          },
          {
            "t_offset_s": 206.5,
            "total_mem_mib": 972.8,
            "total_cpu_pct": 198.19
          },
          {
            "t_offset_s": 208.5,
            "total_mem_mib": 982.8,
            "total_cpu_pct": 197.27
          },
          {
            "t_offset_s": 210.5,
            "total_mem_mib": 972.4,
            "total_cpu_pct": 199.5
          },
          {
            "t_offset_s": 212.5,
            "total_mem_mib": 972.9,
            "total_cpu_pct": 198.09
          },
          {
            "t_offset_s": 214.5,
            "total_mem_mib": 973.8,
            "total_cpu_pct": 191.95
          },
          {
            "t_offset_s": 216.5,
            "total_mem_mib": 973.4,
            "total_cpu_pct": 198.6
          },
          {
            "t_offset_s": 218.5,
            "total_mem_mib": 973.3,
            "total_cpu_pct": 199.78
          },
          {
            "t_offset_s": 220.5,
            "total_mem_mib": 973.2,
            "total_cpu_pct": 197.14
          },
          {
            "t_offset_s": 222.5,
            "total_mem_mib": 973.5,
            "total_cpu_pct": 198.68
          },
          {
            "t_offset_s": 224.5,
            "total_mem_mib": 973.0,
            "total_cpu_pct": 193.9
          },
          {
            "t_offset_s": 226.5,
            "total_mem_mib": 975.8,
            "total_cpu_pct": 198.74
          },
          {
            "t_offset_s": 228.5,
            "total_mem_mib": 977.3,
            "total_cpu_pct": 197.35
          },
          {
            "t_offset_s": 230.6,
            "total_mem_mib": 977.8,
            "total_cpu_pct": 196.3
          },
          {
            "t_offset_s": 232.6,
            "total_mem_mib": 977.2,
            "total_cpu_pct": 198.93
          },
          {
            "t_offset_s": 234.6,
            "total_mem_mib": 971.7,
            "total_cpu_pct": 194.22
          },
          {
            "t_offset_s": 236.6,
            "total_mem_mib": 349.1,
            "total_cpu_pct": 6.12
          },
          {
            "t_offset_s": 238.6,
            "total_mem_mib": 348.0,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 240.6,
            "total_mem_mib": 348.7,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 242.6,
            "total_mem_mib": 348.9,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 244.6,
            "total_mem_mib": 348.8,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 246.6,
            "total_mem_mib": 348.8,
            "total_cpu_pct": 4.16
          },
          {
            "t_offset_s": 248.6,
            "total_mem_mib": 348.6,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 250.6,
            "total_mem_mib": 559.0,
            "total_cpu_pct": 180.86
          },
          {
            "t_offset_s": 252.6,
            "total_mem_mib": 1142.78,
            "total_cpu_pct": 198.17
          },
          {
            "t_offset_s": 254.6,
            "total_mem_mib": 1155.07,
            "total_cpu_pct": 195.32
          },
          {
            "t_offset_s": 256.6,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 197.39
          },
          {
            "t_offset_s": 258.6,
            "total_mem_mib": 1166.34,
            "total_cpu_pct": 198.27
          },
          {
            "t_offset_s": 260.6,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 198.73
          },
          {
            "t_offset_s": 262.6,
            "total_mem_mib": 1170.43,
            "total_cpu_pct": 195.63
          },
          {
            "t_offset_s": 264.7,
            "total_mem_mib": 1173.5,
            "total_cpu_pct": 194.71
          },
          {
            "t_offset_s": 266.7,
            "total_mem_mib": 1170.43,
            "total_cpu_pct": 198.12
          },
          {
            "t_offset_s": 268.7,
            "total_mem_mib": 1174.53,
            "total_cpu_pct": 196.85
          },
          {
            "t_offset_s": 270.7,
            "total_mem_mib": 1175.55,
            "total_cpu_pct": 198.41
          },
          {
            "t_offset_s": 272.7,
            "total_mem_mib": 1168.38,
            "total_cpu_pct": 198.78
          },
          {
            "t_offset_s": 274.7,
            "total_mem_mib": 1170.43,
            "total_cpu_pct": 195.29
          },
          {
            "t_offset_s": 276.7,
            "total_mem_mib": 1171.46,
            "total_cpu_pct": 199.92
          },
          {
            "t_offset_s": 278.7,
            "total_mem_mib": 1172.48,
            "total_cpu_pct": 196.91
          },
          {
            "t_offset_s": 280.7,
            "total_mem_mib": 1173.5,
            "total_cpu_pct": 199.8
          },
          {
            "t_offset_s": 282.7,
            "total_mem_mib": 1171.46,
            "total_cpu_pct": 198.86
          },
          {
            "t_offset_s": 284.7,
            "total_mem_mib": 1174.53,
            "total_cpu_pct": 192.41
          },
          {
            "t_offset_s": 286.7,
            "total_mem_mib": 1168.38,
            "total_cpu_pct": 198.37
          },
          {
            "t_offset_s": 288.7,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 198.86
          },
          {
            "t_offset_s": 290.7,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 195.61
          },
          {
            "t_offset_s": 292.7,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 199.27
          },
          {
            "t_offset_s": 294.7,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 197.37
          },
          {
            "t_offset_s": 296.7,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 198.36
          },
          {
            "t_offset_s": 298.7,
            "total_mem_mib": 1168.38,
            "total_cpu_pct": 198.28
          },
          {
            "t_offset_s": 300.7,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 194.47
          },
          {
            "t_offset_s": 302.8,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 197.78
          },
          {
            "t_offset_s": 304.8,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 197.28
          },
          {
            "t_offset_s": 306.8,
            "total_mem_mib": 1167.36,
            "total_cpu_pct": 198.28
          },
          {
            "t_offset_s": 308.8,
            "total_mem_mib": 1168.38,
            "total_cpu_pct": 199.33
          },
          {
            "t_offset_s": 310.8,
            "total_mem_mib": 1166.34,
            "total_cpu_pct": 194.33
          },
          {
            "t_offset_s": 312.8,
            "total_mem_mib": 1170.43,
            "total_cpu_pct": 196.86
          },
          {
            "t_offset_s": 314.8,
            "total_mem_mib": 1168.38,
            "total_cpu_pct": 198.18
          },
          {
            "t_offset_s": 316.8,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 199.31
          },
          {
            "t_offset_s": 318.8,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 197.15
          },
          {
            "t_offset_s": 320.8,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 194.9
          },
          {
            "t_offset_s": 322.8,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 198.92
          },
          {
            "t_offset_s": 324.8,
            "total_mem_mib": 950.9,
            "total_cpu_pct": 198.38
          },
          {
            "t_offset_s": 326.8,
            "total_mem_mib": 352.7,
            "total_cpu_pct": 9.07
          },
          {
            "t_offset_s": 328.8,
            "total_mem_mib": 352.0,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 330.8,
            "total_mem_mib": 352.1,
            "total_cpu_pct": 0.01
          }
        ],
        "series_start_offset_s": 1.4,
        "peak_note": "peak = highest value seen across docker stats samples (about one every 2-3 s); shorter spikes between samples are not seen"
      },
      "container_end_state": {
        "jellyfin": {
          "restart_count": 0,
          "oom_killed": false
        }
      },
      "teardown": {
        "done": true,
        "volumes_removed": true,
        "images_removed": false,
        "error": null
      },
      "warnings": [],
      "finished_at": "2026-10-11T08:03:48Z",
      "elapsed_seconds": 501.3
    },
    {
      "run": 2,
      "started_at": "2026-10-11T08:03:48Z",
      "host": {
        "label": "github-actions ubuntu-latest (2 vCPU, 8 GB)",
        "ci": {
          "runs_on": "ubuntu-latest",
          "runner_environment": "github-hosted",
          "runner_os": "Linux",
          "runner_arch": "X64",
          "image_os": "ubuntu24",
          "image_version": "20261004.327.1"
        },
        "cpu_model": "INTEL(R) XEON(R) PLATINUM 8573C",
        "cpu_model_note": null,
        "cores": 2,
        "mem_total_mib": 7937,
        "kernel": "6.17.0-1022-azure",
        "os": "Ubuntu 24.04.5 LTS",
        "arch": "x86_64",
        "oci_arch": "amd64",
        "docker_server_version": "28.0.4",
        "docker_client_version": "28.0.4",
        "compose_client_version": "2.38.2",
        "storage_driver": "overlay2",
        "containerd_image_store": false,
        "source": "docker info + throwaway container reading /proc/cpuinfo on the daemon host",
        "compose_note": "Compose runs on the client machine; Docker server fields are from the daemon host"
      },
      "date": "2026-10-11",
      "startup": {
        "seconds": 10.8,
        "ok": true,
        "checks": [
          {
            "type": "container",
            "ok": true,
            "ready_after_s": 10.8,
            "detail": "shb-jellyfin-ladder-jellyfin-1=running/healthy"
          }
        ],
        "up_command_seconds": 0.3,
        "definition": "wall clock from starting `docker compose up -d` until every health check passed; checks poll every 0.5 s from a throwaway container on the compose network, so resolution is about +/- 1 s"
      },
      "versions": {
        "jellyfin": "12.2"
      },
      "setup": [
        {
          "exit_code": 0,
          "duration_s": 3.4,
          "reported": {
            "jellyfin_version": "12.2.0",
            "wizard_completed": true,
            "libraries": [
              {
                "name": "Movies",
                "type": "movies",
                "paths": [
                  "/media/movies"
                ]
              }
            ]
          },
          "output_tail": [
            "GET /health -> HTTP 200 'Healthy'",
            "GET /System/Info/Public -> HTTP 200 version=12.2.0 wizard_completed=False local_address=http://172.18.0.2:8096",
            "POST /Startup/Configuration -> HTTP 204",
            "GET /Startup/User -> HTTP 200",
            "POST /Startup/User (create admin 'labadmin') -> HTTP 204",
            "POST /Startup/RemoteAccess -> HTTP 204",
            "POST /Startup/Complete -> HTTP 204",
            "GET /System/Info/Public -> wizard_completed=True",
            "POST /Users/AuthenticateByName -> HTTP 200 (token not printed)",
            "POST /Library/VirtualFolders (Movies -> /media/movies, no scan yet) -> HTTP 204",
            "libraries: [{\"name\": \"Movies\", \"type\": \"movies\", \"paths\": [\"/media/movies\"]}]"
          ],
          "description": "Complete the startup wizard through the documented Startup API (server name and language, the admin user, remote access, complete), log in, and add a library called Movies that points at /media/movies (no metadata fetchers for movies, so no lookups on the internet; no scan yet). This is the setup step of the jellyfin app, unchanged."
        }
      ],
      "idle": {
        "per_service": {
          "jellyfin": {
            "samples": 16,
            "mem_mean_mib": 267.26,
            "mem_max_mib": 269.4,
            "cpu_mean_pct": 1.65,
            "cpu_max_pct": 14.04
          }
        },
        "total": {
          "samples": 16,
          "dropped_for_total": 0,
          "mem_mean_mib": 267.26,
          "mem_max_mib": 269.4,
          "cpu_mean_pct": 1.65,
          "cpu_max_pct": 14.04
        },
        "window_seconds": 30.3,
        "series": [
          {
            "t_offset_s": 0.0,
            "total_mem_mib": 266.4,
            "total_cpu_pct": 0.04
          },
          {
            "t_offset_s": 2.0,
            "total_mem_mib": 266.6,
            "total_cpu_pct": 4.84
          },
          {
            "t_offset_s": 4.0,
            "total_mem_mib": 266.6,
            "total_cpu_pct": 0.09
          },
          {
            "t_offset_s": 6.1,
            "total_mem_mib": 266.6,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 8.1,
            "total_mem_mib": 266.1,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 10.1,
            "total_mem_mib": 266.1,
            "total_cpu_pct": 0.23
          },
          {
            "t_offset_s": 12.1,
            "total_mem_mib": 266.4,
            "total_cpu_pct": 6.42
          },
          {
            "t_offset_s": 14.1,
            "total_mem_mib": 266.3,
            "total_cpu_pct": 0.13
          },
          {
            "t_offset_s": 16.2,
            "total_mem_mib": 266.1,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 18.2,
            "total_mem_mib": 266.3,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 20.2,
            "total_mem_mib": 266.3,
            "total_cpu_pct": 0.03
          },
          {
            "t_offset_s": 22.2,
            "total_mem_mib": 269.3,
            "total_cpu_pct": 14.04
          },
          {
            "t_offset_s": 24.2,
            "total_mem_mib": 269.3,
            "total_cpu_pct": 0.1
          },
          {
            "t_offset_s": 26.3,
            "total_mem_mib": 269.3,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 28.3,
            "total_mem_mib": 269.4,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 30.3,
            "total_mem_mib": 269.1,
            "total_cpu_pct": 0.41
          }
        ]
      },
      "settle": {
        "settled": true,
        "mode": "detected",
        "settle_seconds_used": 121.1,
        "settle_started_after_healthy_s": 3.6,
        "params": {
          "window_seconds": 60,
          "threshold_pct": 2.0,
          "threshold_min_mib": 10.0,
          "min_seconds": 120,
          "max_seconds": 600
        },
        "last_window": {
          "n": 30,
          "mean_mib": 269.07,
          "min_mib": 266.3,
          "max_mib": 276.0,
          "spread_mib": 9.7,
          "threshold_mib": 10.0
        },
        "rechecks": 0,
        "rule": "settled = over the last window_seconds the stack total varied (max - min) by less than max(threshold_pct of the window mean, threshold_min_mib); not before min_seconds, at the latest max_seconds, both counted from the end of the setup steps; the idle window must also be flat and agree with it. If max_seconds passes without settling, settled=false and the idle window is measured anyway."
      },
      "startup_peak": {
        "per_service_mem_mib": {
          "jellyfin": 281.7
        },
        "total_mem_mib": 281.7,
        "samples": 62,
        "note": "highest value across docker stats samples (about one every 2-3 s) from healthy until the stack settled; shorter spikes between samples are not seen"
      },
      "timeline": {
        "step_s": 10,
        "t0": "healthy",
        "offsets_s": [
          10,
          20,
          30,
          40,
          50,
          60,
          70,
          80,
          90,
          100,
          110,
          120,
          130,
          140,
          150,
          160
        ],
        "total_mem_mib": [
          269.1,
          281.5,
          281.1,
          279.8,
          276.7,
          277.0,
          275.3,
          275.4,
          269.7,
          267.0,
          266.5,
          266.4,
          266.5,
          266.3,
          267.5,
          269.3
        ],
        "per_service_mem_mib": {
          "jellyfin": [
            269.1,
            281.5,
            281.1,
            279.8,
            276.7,
            277.0,
            275.3,
            275.4,
            269.7,
            267.0,
            266.5,
            266.4,
            266.5,
            266.3,
            267.5,
            269.3
          ]
        }
      },
      "load": {
        "per_service": {
          "jellyfin": {
            "samples": 167,
            "mem_mean_mib": 812.32,
            "mem_max_mib": 1204.22,
            "cpu_mean_pct": 167.51,
            "cpu_max_pct": 200.0
          }
        },
        "total": {
          "samples": 167,
          "dropped_for_total": 0,
          "mem_mean_mib": 812.32,
          "mem_max_mib": 1204.22,
          "cpu_mean_pct": 167.51,
          "cpu_max_pct": 200.0
        },
        "description": "One library scan, then a ladder of simultaneous software transcodes: 1, 2, 3, 4, 6 and 8 simulated players. Every player has its own device ID and plays the same 12-minute film, asking for a 1280x720, 4 Mb/s H.264 HLS stream that cannot direct play, so Jellyfin runs one ffmpeg per player with libx264 on the CPU (no hardware acceleration in the lab), and each player fetches the 3-second segments in real time for 60 seconds of playback. The 1080p H.264 source is synthetic: a test pattern with added noise at about 8 Mb/s, with AAC stereo audio that Jellyfin copies. ffmpeg runs without throttling (the default), so each job works as fast as the CPU allows. After each level the players stop their encodings, the script waits until Jellyfin reports no transcode and pauses 10 seconds. A level kept up when no player had a segment arrive after the moment its playhead needed it. For each level the result records the speed of every ffmpeg (from Jellyfin's transcode logs), the late segments and rebuffering of every player, the delay to the first segment and the memory and CPU of the stack. The ladder stops at the first level where at least half of the players are late on a quarter or more of their segments. No browser, no subtitles.",
        "duration_s": 332.5,
        "window": "from LAB_MARK load_start (or step start) until 2 s after the step ended",
        "reported_by_script": {
          "library_scan_seconds": 1.0,
          "library_scan_status": "Completed",
          "movies_in_library": 1,
          "ladder": {
            "item": "Long Test Feature",
            "levels_requested": [
              1,
              2,
              3,
              4,
              6,
              8
            ],
            "hold_seconds": 60,
            "pause_seconds": 10,
            "max_players_kept_up": 3,
            "stopped_early": {
              "after_players": 4,
              "reason": "4 players clearly failed (outcome failed); higher levels not run"
            },
            "levels": [
              {
                "players": 1,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 3.3,
                "steady_start_offset_s": 7.5,
                "steady_end_offset_s": 67.6,
                "speed_min_x": 3.12,
                "speed_median_x": 3.12,
                "speed_max_x": 3.12,
                "steady_speed_min_x": 3.271,
                "steady_speed_median_x": 3.271,
                "ffmpeg_logs_found": 1,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 2.99,
                "first_segment_s_max": 2.99,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 1,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    72.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.1,
                    "seconds_to_first_segment": 2.99,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 3.12,
                    "last_fps": 75.0,
                    "media_time_s": 199.8,
                    "elapsed_s": 64.0,
                    "frames": 4813,
                    "steady_speed_x": 3.271
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 2,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 82.0,
                "steady_start_offset_s": 89.9,
                "steady_end_offset_s": 148.5,
                "speed_min_x": 1.59,
                "speed_median_x": 1.6,
                "speed_max_x": 1.61,
                "steady_speed_min_x": 1.652,
                "steady_speed_median_x": 1.657,
                "ffmpeg_logs_found": 2,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 4.79,
                "first_segment_s_max": 5.57,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 2,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    37.0,
                    38.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.1,
                    "seconds_to_first_segment": 5.57,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.2,
                    "seconds_to_first_segment": 4.01,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 1.59,
                    "last_fps": 38.0,
                    "media_time_s": 107.7,
                    "elapsed_s": 67.6,
                    "frames": 2599,
                    "steady_speed_x": 1.662
                  },
                  {
                    "last_speed_x": 1.61,
                    "last_fps": 39.0,
                    "media_time_s": 108.0,
                    "elapsed_s": 67.0,
                    "frames": 2599,
                    "steady_speed_x": 1.652
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 3,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 164.2,
                "steady_start_offset_s": 174.7,
                "steady_end_offset_s": 234.5,
                "speed_min_x": 1.04,
                "speed_median_x": 1.06,
                "speed_max_x": 1.07,
                "steady_speed_min_x": 1.074,
                "steady_speed_median_x": 1.114,
                "ffmpeg_logs_found": 3,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 6.64,
                "first_segment_s_max": 7.15,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 0,
                  "video_direct": 0,
                  "video_codecs": [],
                  "framerates": []
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 61.6,
                    "seconds_to_first_segment": 6.64,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 61.6,
                    "seconds_to_first_segment": 7.15,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 23,
                    "playback_seconds": 60.2,
                    "seconds_to_first_segment": 6.64,
                    "error": null,
                    "segments_after_start": 21,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 1.06,
                    "last_fps": 26.0,
                    "media_time_s": 76.6,
                    "elapsed_s": 71.9,
                    "frames": 1853,
                    "steady_speed_x": 1.117
                  },
                  {
                    "last_speed_x": 1.07,
                    "last_fps": 26.0,
                    "media_time_s": 76.8,
                    "elapsed_s": 71.8,
                    "frames": 1847,
                    "steady_speed_x": 1.114
                  },
                  {
                    "last_speed_x": 1.04,
                    "last_fps": 25.0,
                    "media_time_s": 72.9,
                    "elapsed_s": 70.4,
                    "frames": 1769,
                    "steady_speed_x": 1.074
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 4,
                "skipped": false,
                "outcome": "failed",
                "kept_up": false,
                "clearly_failed": true,
                "start_offset_s": 251.0,
                "steady_start_offset_s": 265.2,
                "steady_end_offset_s": 325.3,
                "speed_min_x": 0.781,
                "speed_median_x": 0.785,
                "speed_max_x": 0.821,
                "steady_speed_min_x": 0.792,
                "steady_speed_median_x": 0.824,
                "ffmpeg_logs_found": 4,
                "late_segments_total": 52,
                "late_players": 4,
                "max_lateness_s": 10.94,
                "stall_events_total": 51,
                "stall_seconds_max": 10.94,
                "first_segment_s_median": 8.965,
                "first_segment_s_max": 9.64,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 3,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    18.0,
                    19.0,
                    19.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 62.0,
                    "seconds_to_first_segment": 9.64,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 13,
                    "max_lateness_s": 10.94,
                    "stall_events": 13,
                    "stall_seconds": 10.94,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 61.3,
                    "seconds_to_first_segment": 8.3,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 13,
                    "max_lateness_s": 10.3,
                    "stall_events": 13,
                    "stall_seconds": 10.3,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 19,
                    "playback_seconds": 62.8,
                    "seconds_to_first_segment": 9.52,
                    "error": null,
                    "segments_after_start": 17,
                    "late_segments": 13,
                    "max_lateness_s": 8.94,
                    "stall_events": 12,
                    "stall_seconds": 8.94,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 61.6,
                    "seconds_to_first_segment": 8.41,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 13,
                    "max_lateness_s": 10.6,
                    "stall_events": 13,
                    "stall_seconds": 10.6,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 0.783,
                    "last_fps": 19.0,
                    "media_time_s": 58.4,
                    "elapsed_s": 74.6,
                    "frames": 1410,
                    "steady_speed_x": 0.792
                  },
                  {
                    "last_speed_x": 0.787,
                    "last_fps": 19.0,
                    "media_time_s": 59.5,
                    "elapsed_s": 75.6,
                    "frames": 1434,
                    "steady_speed_x": 0.844
                  },
                  {
                    "last_speed_x": 0.781,
                    "last_fps": 19.0,
                    "media_time_s": 58.6,
                    "elapsed_s": 74.9,
                    "frames": 1410,
                    "steady_speed_x": 0.803
                  },
                  {
                    "last_speed_x": 0.821,
                    "last_fps": 20.0,
                    "media_time_s": 62.6,
                    "elapsed_s": 76.2,
                    "frames": 1512,
                    "steady_speed_x": 0.89
                  }
                ]
              },
              {
                "players": 6,
                "skipped": true,
                "reason": "4 players clearly failed (outcome failed); higher levels not run"
              },
              {
                "players": 8,
                "skipped": true,
                "reason": "4 players clearly failed (outcome failed); higher levels not run"
              }
            ],
            "ffmpeg_command": "/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -i file:\"/media/movies/Long Test Feature (2010)/Long Test Feature (2010).mp4\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 libx264 -preset veryfast -crf 23 -maxrate 3872026 -bufsize 7744052 -profile:v:0 high -level 40 -x264opts:0 subme=0:me_range=16:rc_lookahead=10:me=hex:open_gop=0 -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -sc_threshold:v:0 0 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw\\,ih*a)\\,min(1280\\,720*a))/2)*2:trunc(min(max(iw/a\\,ih)\\,min(1280/a\\,720))/2)*2,format=yuv420p\" -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename \"/cache/transcodes/d27fff6126ab1980d3d1456fed6ac5b3%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/cache/transcodes/d27fff6126ab1980d3d1456fed6ac5b3.m3u8\""
          }
        },
        "output_tail": [
          "ladder: levels [1, 2, 3, 4, 6, 8], 60 s of playback each, 10 s pause, keep-up = no late segment on any player",
          "  1 player(s): kept_up; ffmpeg speed 3.12-3.12x (1 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 2.99 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  2 player(s): kept_up; ffmpeg speed 1.59-1.61x (2 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 5.57 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  3 player(s): kept_up; ffmpeg speed 1.04-1.07x (3 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 7.15 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  4 player(s): failed; ffmpeg speed 0.781-0.821x (4 log(s)); late segments 52 on 4 player(s), worst 10.94 s; stalls up to 10.94 s; first segment up to 9.64 s",
          "max players that kept up: 3; stopped early: 4 players clearly failed (outcome failed); higher levels not run",
          "  ffmpeg command: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -i file:\"/media/movies/Long Test Feature (2010)/Long Test Feature (2010).mp4\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 libx264 -preset veryfast -crf 23 -maxrate 3872026 -bufsize 7744052 -profile:v:0 high -level 40 -x264opts:0 subme=0:me_range=16:rc_lookahead=10:me=hex:open_gop=0 -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -sc_threshold:v:0 0 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw\\,ih*a)\\,min(1280\\,720*a))/2)*2:trunc(min(max(iw/a\\,ih)\\,min(1280/a\\,720))/2)*2,format=yuv420p\" -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename \"/cache/transcodes/d27fff6126ab1980d3d1456fed6ac5b3%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/cache/transcodes/d27fff6126ab1980d3d1456fed6ac5b3.m3u8\""
        ],
        "series": [
          {
            "t_offset_s": 0.0,
            "total_mem_mib": 295.6,
            "total_cpu_pct": 100.18
          },
          {
            "t_offset_s": 2.0,
            "total_mem_mib": 299.0,
            "total_cpu_pct": 85.78
          },
          {
            "t_offset_s": 4.0,
            "total_mem_mib": 516.3,
            "total_cpu_pct": 163.35
          },
          {
            "t_offset_s": 6.0,
            "total_mem_mib": 521.7,
            "total_cpu_pct": 199.26
          },
          {
            "t_offset_s": 8.0,
            "total_mem_mib": 550.7,
            "total_cpu_pct": 198.25
          },
          {
            "t_offset_s": 10.0,
            "total_mem_mib": 548.1,
            "total_cpu_pct": 194.09
          },
          {
            "t_offset_s": 12.0,
            "total_mem_mib": 550.4,
            "total_cpu_pct": 197.73
          },
          {
            "t_offset_s": 14.0,
            "total_mem_mib": 548.4,
            "total_cpu_pct": 198.51
          },
          {
            "t_offset_s": 16.0,
            "total_mem_mib": 548.5,
            "total_cpu_pct": 196.86
          },
          {
            "t_offset_s": 18.0,
            "total_mem_mib": 549.6,
            "total_cpu_pct": 199.3
          },
          {
            "t_offset_s": 20.0,
            "total_mem_mib": 551.7,
            "total_cpu_pct": 193.06
          },
          {
            "t_offset_s": 22.0,
            "total_mem_mib": 554.7,
            "total_cpu_pct": 197.2
          },
          {
            "t_offset_s": 24.1,
            "total_mem_mib": 555.9,
            "total_cpu_pct": 199.87
          },
          {
            "t_offset_s": 26.1,
            "total_mem_mib": 558.5,
            "total_cpu_pct": 195.13
          },
          {
            "t_offset_s": 28.1,
            "total_mem_mib": 563.4,
            "total_cpu_pct": 198.31
          },
          {
            "t_offset_s": 30.1,
            "total_mem_mib": 564.5,
            "total_cpu_pct": 195.71
          },
          {
            "t_offset_s": 32.1,
            "total_mem_mib": 568.6,
            "total_cpu_pct": 197.02
          },
          {
            "t_offset_s": 34.1,
            "total_mem_mib": 571.1,
            "total_cpu_pct": 198.91
          },
          {
            "t_offset_s": 36.1,
            "total_mem_mib": 559.3,
            "total_cpu_pct": 198.62
          },
          {
            "t_offset_s": 38.1,
            "total_mem_mib": 564.3,
            "total_cpu_pct": 198.43
          },
          {
            "t_offset_s": 40.1,
            "total_mem_mib": 564.0,
            "total_cpu_pct": 194.51
          },
          {
            "t_offset_s": 42.1,
            "total_mem_mib": 566.4,
            "total_cpu_pct": 195.92
          },
          {
            "t_offset_s": 44.1,
            "total_mem_mib": 566.1,
            "total_cpu_pct": 199.49
          },
          {
            "t_offset_s": 46.1,
            "total_mem_mib": 567.0,
            "total_cpu_pct": 198.21
          },
          {
            "t_offset_s": 48.1,
            "total_mem_mib": 566.7,
            "total_cpu_pct": 199.22
          },
          {
            "t_offset_s": 50.1,
            "total_mem_mib": 566.8,
            "total_cpu_pct": 193.89
          },
          {
            "t_offset_s": 52.1,
            "total_mem_mib": 567.3,
            "total_cpu_pct": 196.34
          },
          {
            "t_offset_s": 54.1,
            "total_mem_mib": 567.1,
            "total_cpu_pct": 199.41
          },
          {
            "t_offset_s": 56.1,
            "total_mem_mib": 567.4,
            "total_cpu_pct": 197.93
          },
          {
            "t_offset_s": 58.1,
            "total_mem_mib": 567.2,
            "total_cpu_pct": 199.17
          },
          {
            "t_offset_s": 60.1,
            "total_mem_mib": 566.9,
            "total_cpu_pct": 195.72
          },
          {
            "t_offset_s": 62.1,
            "total_mem_mib": 571.9,
            "total_cpu_pct": 197.06
          },
          {
            "t_offset_s": 64.1,
            "total_mem_mib": 565.6,
            "total_cpu_pct": 197.98
          },
          {
            "t_offset_s": 66.2,
            "total_mem_mib": 566.3,
            "total_cpu_pct": 198.73
          },
          {
            "t_offset_s": 68.2,
            "total_mem_mib": 337.1,
            "total_cpu_pct": 17.4
          },
          {
            "t_offset_s": 70.2,
            "total_mem_mib": 334.4,
            "total_cpu_pct": 0.84
          },
          {
            "t_offset_s": 72.2,
            "total_mem_mib": 334.6,
            "total_cpu_pct": 0.81
          },
          {
            "t_offset_s": 74.2,
            "total_mem_mib": 334.8,
            "total_cpu_pct": 0.14
          },
          {
            "t_offset_s": 76.2,
            "total_mem_mib": 334.8,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 78.2,
            "total_mem_mib": 332.3,
            "total_cpu_pct": 4.04
          },
          {
            "t_offset_s": 80.2,
            "total_mem_mib": 332.0,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 82.2,
            "total_mem_mib": 606.8,
            "total_cpu_pct": 166.37
          },
          {
            "t_offset_s": 84.2,
            "total_mem_mib": 779.8,
            "total_cpu_pct": 198.48
          },
          {
            "t_offset_s": 86.2,
            "total_mem_mib": 785.9,
            "total_cpu_pct": 199.23
          },
          {
            "t_offset_s": 88.2,
            "total_mem_mib": 788.1,
            "total_cpu_pct": 196.94
          },
          {
            "t_offset_s": 90.2,
            "total_mem_mib": 787.7,
            "total_cpu_pct": 194.76
          },
          {
            "t_offset_s": 92.2,
            "total_mem_mib": 788.6,
            "total_cpu_pct": 199.82
          },
          {
            "t_offset_s": 94.2,
            "total_mem_mib": 790.8,
            "total_cpu_pct": 196.94
          },
          {
            "t_offset_s": 96.2,
            "total_mem_mib": 793.3,
            "total_cpu_pct": 198.57
          },
          {
            "t_offset_s": 98.2,
            "total_mem_mib": 792.8,
            "total_cpu_pct": 199.19
          },
          {
            "t_offset_s": 100.2,
            "total_mem_mib": 793.0,
            "total_cpu_pct": 194.49
          },
          {
            "t_offset_s": 102.2,
            "total_mem_mib": 793.3,
            "total_cpu_pct": 197.98
          },
          {
            "t_offset_s": 104.2,
            "total_mem_mib": 794.3,
            "total_cpu_pct": 196.31
          },
          {
            "t_offset_s": 106.2,
            "total_mem_mib": 797.0,
            "total_cpu_pct": 199.41
          },
          {
            "t_offset_s": 108.2,
            "total_mem_mib": 796.5,
            "total_cpu_pct": 199.47
          },
          {
            "t_offset_s": 110.3,
            "total_mem_mib": 796.3,
            "total_cpu_pct": 194.28
          },
          {
            "t_offset_s": 112.3,
            "total_mem_mib": 796.4,
            "total_cpu_pct": 199.5
          },
          {
            "t_offset_s": 114.3,
            "total_mem_mib": 802.1,
            "total_cpu_pct": 197.87
          },
          {
            "t_offset_s": 116.3,
            "total_mem_mib": 805.8,
            "total_cpu_pct": 197.46
          },
          {
            "t_offset_s": 118.3,
            "total_mem_mib": 805.1,
            "total_cpu_pct": 199.48
          },
          {
            "t_offset_s": 120.3,
            "total_mem_mib": 806.1,
            "total_cpu_pct": 192.55
          },
          {
            "t_offset_s": 122.3,
            "total_mem_mib": 804.6,
            "total_cpu_pct": 198.94
          },
          {
            "t_offset_s": 124.3,
            "total_mem_mib": 808.0,
            "total_cpu_pct": 199.62
          },
          {
            "t_offset_s": 126.3,
            "total_mem_mib": 807.2,
            "total_cpu_pct": 196.77
          },
          {
            "t_offset_s": 128.3,
            "total_mem_mib": 812.0,
            "total_cpu_pct": 198.99
          },
          {
            "t_offset_s": 130.3,
            "total_mem_mib": 819.3,
            "total_cpu_pct": 191.89
          },
          {
            "t_offset_s": 132.3,
            "total_mem_mib": 815.0,
            "total_cpu_pct": 199.88
          },
          {
            "t_offset_s": 134.3,
            "total_mem_mib": 813.5,
            "total_cpu_pct": 199.05
          },
          {
            "t_offset_s": 136.3,
            "total_mem_mib": 813.1,
            "total_cpu_pct": 195.85
          },
          {
            "t_offset_s": 138.3,
            "total_mem_mib": 812.6,
            "total_cpu_pct": 199.84
          },
          {
            "t_offset_s": 140.3,
            "total_mem_mib": 814.1,
            "total_cpu_pct": 195.05
          },
          {
            "t_offset_s": 142.3,
            "total_mem_mib": 815.1,
            "total_cpu_pct": 199.59
          },
          {
            "t_offset_s": 144.3,
            "total_mem_mib": 815.0,
            "total_cpu_pct": 199.77
          },
          {
            "t_offset_s": 146.3,
            "total_mem_mib": 822.8,
            "total_cpu_pct": 196.72
          },
          {
            "t_offset_s": 148.3,
            "total_mem_mib": 810.7,
            "total_cpu_pct": 174.08
          },
          {
            "t_offset_s": 150.4,
            "total_mem_mib": 356.8,
            "total_cpu_pct": 31.87
          },
          {
            "t_offset_s": 152.4,
            "total_mem_mib": 356.2,
            "total_cpu_pct": 4.97
          },
          {
            "t_offset_s": 154.4,
            "total_mem_mib": 356.1,
            "total_cpu_pct": 0.05
          },
          {
            "t_offset_s": 156.4,
            "total_mem_mib": 356.1,
            "total_cpu_pct": 0.03
          },
          {
            "t_offset_s": 158.4,
            "total_mem_mib": 354.8,
            "total_cpu_pct": 0.08
          },
          {
            "t_offset_s": 160.4,
            "total_mem_mib": 354.8,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 162.4,
            "total_mem_mib": 353.0,
            "total_cpu_pct": 3.9
          },
          {
            "t_offset_s": 164.4,
            "total_mem_mib": 507.3,
            "total_cpu_pct": 173.47
          },
          {
            "t_offset_s": 166.4,
            "total_mem_mib": 1008.0,
            "total_cpu_pct": 194.22
          },
          {
            "t_offset_s": 168.4,
            "total_mem_mib": 1017.0,
            "total_cpu_pct": 198.51
          },
          {
            "t_offset_s": 170.4,
            "total_mem_mib": 1021.0,
            "total_cpu_pct": 197.68
          },
          {
            "t_offset_s": 172.4,
            "total_mem_mib": 1034.24,
            "total_cpu_pct": 196.53
          },
          {
            "t_offset_s": 174.4,
            "total_mem_mib": 1026.05,
            "total_cpu_pct": 199.25
          },
          {
            "t_offset_s": 176.4,
            "total_mem_mib": 1026.05,
            "total_cpu_pct": 194.81
          },
          {
            "t_offset_s": 178.4,
            "total_mem_mib": 1029.12,
            "total_cpu_pct": 196.35
          },
          {
            "t_offset_s": 180.4,
            "total_mem_mib": 1028.1,
            "total_cpu_pct": 199.06
          },
          {
            "t_offset_s": 182.4,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 198.81
          },
          {
            "t_offset_s": 184.4,
            "total_mem_mib": 1023.0,
            "total_cpu_pct": 198.29
          },
          {
            "t_offset_s": 186.4,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 195.48
          },
          {
            "t_offset_s": 188.5,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 196.07
          },
          {
            "t_offset_s": 190.5,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 196.77
          },
          {
            "t_offset_s": 192.5,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 198.8
          },
          {
            "t_offset_s": 194.5,
            "total_mem_mib": 1035.26,
            "total_cpu_pct": 198.1
          },
          {
            "t_offset_s": 196.5,
            "total_mem_mib": 1026.05,
            "total_cpu_pct": 195.82
          },
          {
            "t_offset_s": 198.5,
            "total_mem_mib": 1031.17,
            "total_cpu_pct": 198.37
          },
          {
            "t_offset_s": 200.5,
            "total_mem_mib": 1030.14,
            "total_cpu_pct": 196.5
          },
          {
            "t_offset_s": 202.5,
            "total_mem_mib": 1030.14,
            "total_cpu_pct": 197.06
          },
          {
            "t_offset_s": 204.5,
            "total_mem_mib": 1031.17,
            "total_cpu_pct": 198.3
          },
          {
            "t_offset_s": 206.5,
            "total_mem_mib": 1028.1,
            "total_cpu_pct": 194.28
          },
          {
            "t_offset_s": 208.5,
            "total_mem_mib": 1027.07,
            "total_cpu_pct": 197.1
          },
          {
            "t_offset_s": 210.5,
            "total_mem_mib": 1031.17,
            "total_cpu_pct": 197.19
          },
          {
            "t_offset_s": 212.5,
            "total_mem_mib": 1030.14,
            "total_cpu_pct": 199.4
          },
          {
            "t_offset_s": 214.5,
            "total_mem_mib": 1031.17,
            "total_cpu_pct": 198.45
          },
          {
            "t_offset_s": 216.5,
            "total_mem_mib": 1033.22,
            "total_cpu_pct": 191.43
          },
          {
            "t_offset_s": 218.5,
            "total_mem_mib": 1032.19,
            "total_cpu_pct": 198.6
          },
          {
            "t_offset_s": 220.5,
            "total_mem_mib": 1033.22,
            "total_cpu_pct": 199.47
          },
          {
            "t_offset_s": 222.5,
            "total_mem_mib": 1034.24,
            "total_cpu_pct": 198.6
          },
          {
            "t_offset_s": 224.5,
            "total_mem_mib": 1036.29,
            "total_cpu_pct": 199.0
          },
          {
            "t_offset_s": 226.5,
            "total_mem_mib": 1038.34,
            "total_cpu_pct": 195.3
          },
          {
            "t_offset_s": 228.6,
            "total_mem_mib": 1036.29,
            "total_cpu_pct": 200.0
          },
          {
            "t_offset_s": 230.6,
            "total_mem_mib": 1035.26,
            "total_cpu_pct": 197.68
          },
          {
            "t_offset_s": 232.6,
            "total_mem_mib": 1039.36,
            "total_cpu_pct": 195.04
          },
          {
            "t_offset_s": 234.6,
            "total_mem_mib": 1029.12,
            "total_cpu_pct": 196.82
          },
          {
            "t_offset_s": 236.6,
            "total_mem_mib": 361.9,
            "total_cpu_pct": 103.21
          },
          {
            "t_offset_s": 238.6,
            "total_mem_mib": 360.8,
            "total_cpu_pct": 9.66
          },
          {
            "t_offset_s": 240.6,
            "total_mem_mib": 361.2,
            "total_cpu_pct": 6.13
          },
          {
            "t_offset_s": 242.6,
            "total_mem_mib": 361.2,
            "total_cpu_pct": 0.0
          },
          {
            "t_offset_s": 244.6,
            "total_mem_mib": 360.7,
            "total_cpu_pct": 0.03
          },
          {
            "t_offset_s": 246.6,
            "total_mem_mib": 360.6,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 248.6,
            "total_mem_mib": 360.7,
            "total_cpu_pct": 3.89
          },
          {
            "t_offset_s": 250.6,
            "total_mem_mib": 362.1,
            "total_cpu_pct": 74.46
          },
          {
            "t_offset_s": 252.6,
            "total_mem_mib": 1093.63,
            "total_cpu_pct": 198.92
          },
          {
            "t_offset_s": 254.6,
            "total_mem_mib": 1169.41,
            "total_cpu_pct": 198.73
          },
          {
            "t_offset_s": 256.6,
            "total_mem_mib": 1178.62,
            "total_cpu_pct": 193.96
          },
          {
            "t_offset_s": 258.6,
            "total_mem_mib": 1181.7,
            "total_cpu_pct": 199.55
          },
          {
            "t_offset_s": 260.6,
            "total_mem_mib": 1184.77,
            "total_cpu_pct": 198.83
          },
          {
            "t_offset_s": 262.6,
            "total_mem_mib": 1186.82,
            "total_cpu_pct": 199.6
          },
          {
            "t_offset_s": 264.6,
            "total_mem_mib": 1196.03,
            "total_cpu_pct": 197.48
          },
          {
            "t_offset_s": 266.6,
            "total_mem_mib": 1188.86,
            "total_cpu_pct": 194.29
          },
          {
            "t_offset_s": 268.6,
            "total_mem_mib": 1190.91,
            "total_cpu_pct": 196.85
          },
          {
            "t_offset_s": 270.7,
            "total_mem_mib": 1192.96,
            "total_cpu_pct": 195.98
          },
          {
            "t_offset_s": 272.7,
            "total_mem_mib": 1184.77,
            "total_cpu_pct": 197.73
          },
          {
            "t_offset_s": 274.7,
            "total_mem_mib": 1185.79,
            "total_cpu_pct": 199.32
          },
          {
            "t_offset_s": 276.7,
            "total_mem_mib": 1187.84,
            "total_cpu_pct": 194.86
          },
          {
            "t_offset_s": 278.7,
            "total_mem_mib": 1186.82,
            "total_cpu_pct": 199.62
          },
          {
            "t_offset_s": 280.7,
            "total_mem_mib": 1189.89,
            "total_cpu_pct": 198.45
          },
          {
            "t_offset_s": 282.7,
            "total_mem_mib": 1191.94,
            "total_cpu_pct": 197.3
          },
          {
            "t_offset_s": 284.7,
            "total_mem_mib": 1191.94,
            "total_cpu_pct": 198.38
          },
          {
            "t_offset_s": 286.7,
            "total_mem_mib": 1204.22,
            "total_cpu_pct": 192.61
          },
          {
            "t_offset_s": 288.7,
            "total_mem_mib": 1193.98,
            "total_cpu_pct": 199.42
          },
          {
            "t_offset_s": 290.7,
            "total_mem_mib": 1189.89,
            "total_cpu_pct": 197.6
          },
          {
            "t_offset_s": 292.7,
            "total_mem_mib": 1201.15,
            "total_cpu_pct": 196.9
          },
          {
            "t_offset_s": 294.7,
            "total_mem_mib": 1192.96,
            "total_cpu_pct": 198.3
          },
          {
            "t_offset_s": 296.7,
            "total_mem_mib": 1192.96,
            "total_cpu_pct": 194.23
          },
          {
            "t_offset_s": 298.7,
            "total_mem_mib": 1193.98,
            "total_cpu_pct": 195.55
          },
          {
            "t_offset_s": 300.7,
            "total_mem_mib": 1192.96,
            "total_cpu_pct": 198.96
          },
          {
            "t_offset_s": 302.7,
            "total_mem_mib": 1193.98,
            "total_cpu_pct": 197.96
          },
          {
            "t_offset_s": 304.7,
            "total_mem_mib": 1191.94,
            "total_cpu_pct": 199.35
          },
          {
            "t_offset_s": 306.7,
            "total_mem_mib": 1192.96,
            "total_cpu_pct": 194.28
          },
          {
            "t_offset_s": 308.7,
            "total_mem_mib": 1195.01,
            "total_cpu_pct": 196.67
          },
          {
            "t_offset_s": 310.7,
            "total_mem_mib": 1192.96,
            "total_cpu_pct": 198.52
          },
          {
            "t_offset_s": 312.8,
            "total_mem_mib": 1195.01,
            "total_cpu_pct": 199.71
          },
          {
            "t_offset_s": 314.8,
            "total_mem_mib": 1204.22,
            "total_cpu_pct": 197.66
          },
          {
            "t_offset_s": 316.8,
            "total_mem_mib": 1198.08,
            "total_cpu_pct": 194.34
          },
          {
            "t_offset_s": 318.8,
            "total_mem_mib": 1198.08,
            "total_cpu_pct": 198.68
          },
          {
            "t_offset_s": 320.8,
            "total_mem_mib": 1202.18,
            "total_cpu_pct": 195.79
          },
          {
            "t_offset_s": 322.8,
            "total_mem_mib": 1198.08,
            "total_cpu_pct": 199.66
          },
          {
            "t_offset_s": 324.8,
            "total_mem_mib": 1199.1,
            "total_cpu_pct": 199.12
          },
          {
            "t_offset_s": 326.8,
            "total_mem_mib": 760.7,
            "total_cpu_pct": 191.46
          },
          {
            "t_offset_s": 328.8,
            "total_mem_mib": 363.7,
            "total_cpu_pct": 4.97
          },
          {
            "t_offset_s": 330.8,
            "total_mem_mib": 363.1,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 332.8,
            "total_mem_mib": 363.2,
            "total_cpu_pct": 0.04
          }
        ],
        "series_start_offset_s": 1.4,
        "peak_note": "peak = highest value seen across docker stats samples (about one every 2-3 s); shorter spikes between samples are not seen"
      },
      "container_end_state": {
        "jellyfin": {
          "restart_count": 0,
          "oom_killed": false
        }
      },
      "teardown": {
        "done": true,
        "volumes_removed": true,
        "images_removed": false,
        "error": null
      },
      "warnings": [],
      "finished_at": "2026-10-11T08:12:10Z",
      "elapsed_seconds": 501.6
    },
    {
      "run": 3,
      "started_at": "2026-10-11T08:12:10Z",
      "host": {
        "label": "github-actions ubuntu-latest (2 vCPU, 8 GB)",
        "ci": {
          "runs_on": "ubuntu-latest",
          "runner_environment": "github-hosted",
          "runner_os": "Linux",
          "runner_arch": "X64",
          "image_os": "ubuntu24",
          "image_version": "20261004.327.1"
        },
        "cpu_model": "INTEL(R) XEON(R) PLATINUM 8573C",
        "cpu_model_note": null,
        "cores": 2,
        "mem_total_mib": 7937,
        "kernel": "6.17.0-1022-azure",
        "os": "Ubuntu 24.04.5 LTS",
        "arch": "x86_64",
        "oci_arch": "amd64",
        "docker_server_version": "28.0.4",
        "docker_client_version": "28.0.4",
        "compose_client_version": "2.38.2",
        "storage_driver": "overlay2",
        "containerd_image_store": false,
        "source": "docker info + throwaway container reading /proc/cpuinfo on the daemon host",
        "compose_note": "Compose runs on the client machine; Docker server fields are from the daemon host"
      },
      "date": "2026-10-11",
      "startup": {
        "seconds": 10.8,
        "ok": true,
        "checks": [
          {
            "type": "container",
            "ok": true,
            "ready_after_s": 10.8,
            "detail": "shb-jellyfin-ladder-jellyfin-1=running/healthy"
          }
        ],
        "up_command_seconds": 0.3,
        "definition": "wall clock from starting `docker compose up -d` until every health check passed; checks poll every 0.5 s from a throwaway container on the compose network, so resolution is about +/- 1 s"
      },
      "versions": {
        "jellyfin": "12.2"
      },
      "setup": [
        {
          "exit_code": 0,
          "duration_s": 3.4,
          "reported": {
            "jellyfin_version": "12.2.0",
            "wizard_completed": true,
            "libraries": [
              {
                "name": "Movies",
                "type": "movies",
                "paths": [
                  "/media/movies"
                ]
              }
            ]
          },
          "output_tail": [
            "GET /health -> HTTP 200 'Healthy'",
            "GET /System/Info/Public -> HTTP 200 version=12.2.0 wizard_completed=False local_address=http://172.18.0.2:8096",
            "POST /Startup/Configuration -> HTTP 204",
            "GET /Startup/User -> HTTP 200",
            "POST /Startup/User (create admin 'labadmin') -> HTTP 204",
            "POST /Startup/RemoteAccess -> HTTP 204",
            "POST /Startup/Complete -> HTTP 204",
            "GET /System/Info/Public -> wizard_completed=True",
            "POST /Users/AuthenticateByName -> HTTP 200 (token not printed)",
            "POST /Library/VirtualFolders (Movies -> /media/movies, no scan yet) -> HTTP 204",
            "libraries: [{\"name\": \"Movies\", \"type\": \"movies\", \"paths\": [\"/media/movies\"]}]"
          ],
          "description": "Complete the startup wizard through the documented Startup API (server name and language, the admin user, remote access, complete), log in, and add a library called Movies that points at /media/movies (no metadata fetchers for movies, so no lookups on the internet; no scan yet). This is the setup step of the jellyfin app, unchanged."
        }
      ],
      "idle": {
        "per_service": {
          "jellyfin": {
            "samples": 16,
            "mem_mean_mib": 272.69,
            "mem_max_mib": 276.9,
            "cpu_mean_pct": 1.69,
            "cpu_max_pct": 14.52
          }
        },
        "total": {
          "samples": 16,
          "dropped_for_total": 0,
          "mem_mean_mib": 272.69,
          "mem_max_mib": 276.9,
          "cpu_mean_pct": 1.69,
          "cpu_max_pct": 14.52
        },
        "window_seconds": 30.3,
        "series": [
          {
            "t_offset_s": 0.0,
            "total_mem_mib": 270.7,
            "total_cpu_pct": 0.03
          },
          {
            "t_offset_s": 2.0,
            "total_mem_mib": 271.0,
            "total_cpu_pct": 4.38
          },
          {
            "t_offset_s": 4.0,
            "total_mem_mib": 270.9,
            "total_cpu_pct": 0.1
          },
          {
            "t_offset_s": 6.1,
            "total_mem_mib": 270.9,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 8.1,
            "total_mem_mib": 270.9,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 10.1,
            "total_mem_mib": 270.7,
            "total_cpu_pct": 0.24
          },
          {
            "t_offset_s": 12.1,
            "total_mem_mib": 270.8,
            "total_cpu_pct": 6.88
          },
          {
            "t_offset_s": 14.1,
            "total_mem_mib": 270.7,
            "total_cpu_pct": 0.13
          },
          {
            "t_offset_s": 16.2,
            "total_mem_mib": 270.7,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 18.2,
            "total_mem_mib": 270.9,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 20.2,
            "total_mem_mib": 270.7,
            "total_cpu_pct": 0.05
          },
          {
            "t_offset_s": 22.2,
            "total_mem_mib": 276.9,
            "total_cpu_pct": 14.52
          },
          {
            "t_offset_s": 24.2,
            "total_mem_mib": 276.9,
            "total_cpu_pct": 0.12
          },
          {
            "t_offset_s": 26.3,
            "total_mem_mib": 276.9,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 28.3,
            "total_mem_mib": 276.8,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 30.3,
            "total_mem_mib": 276.6,
            "total_cpu_pct": 0.42
          }
        ]
      },
      "settle": {
        "settled": true,
        "mode": "detected",
        "settle_seconds_used": 121.2,
        "settle_started_after_healthy_s": 3.6,
        "params": {
          "window_seconds": 60,
          "threshold_pct": 2.0,
          "threshold_min_mib": 10.0,
          "min_seconds": 120,
          "max_seconds": 600
        },
        "last_window": {
          "n": 30,
          "mean_mib": 269.71,
          "min_mib": 266.8,
          "max_mib": 270.8,
          "spread_mib": 4.0,
          "threshold_mib": 10.0
        },
        "rechecks": 0,
        "rule": "settled = over the last window_seconds the stack total varied (max - min) by less than max(threshold_pct of the window mean, threshold_min_mib); not before min_seconds, at the latest max_seconds, both counted from the end of the setup steps; the idle window must also be flat and agree with it. If max_seconds passes without settling, settled=false and the idle window is measured anyway."
      },
      "startup_peak": {
        "per_service_mem_mib": {
          "jellyfin": 279.4
        },
        "total_mem_mib": 279.4,
        "samples": 62,
        "note": "highest value across docker stats samples (about one every 2-3 s) from healthy until the stack settled; shorter spikes between samples are not seen"
      },
      "timeline": {
        "step_s": 10,
        "t0": "healthy",
        "offsets_s": [
          10,
          20,
          30,
          40,
          50,
          60,
          70,
          80,
          90,
          100,
          110,
          120,
          130,
          140,
          150,
          160
        ],
        "total_mem_mib": [
          266.6,
          279.2,
          274.6,
          272.7,
          271.1,
          268.9,
          267.0,
          268.8,
          269.3,
          270.4,
          270.6,
          269.9,
          270.8,
          270.8,
          273.2,
          276.8
        ],
        "per_service_mem_mib": {
          "jellyfin": [
            266.6,
            279.2,
            274.6,
            272.7,
            271.1,
            268.9,
            267.0,
            268.8,
            269.3,
            270.4,
            270.6,
            269.9,
            270.8,
            270.8,
            273.2,
            276.8
          ]
        }
      },
      "load": {
        "per_service": {
          "jellyfin": {
            "samples": 168,
            "mem_mean_mib": 819.3,
            "mem_max_mib": 1253.38,
            "cpu_mean_pct": 167.74,
            "cpu_max_pct": 200.68
          }
        },
        "total": {
          "samples": 168,
          "dropped_for_total": 0,
          "mem_mean_mib": 819.3,
          "mem_max_mib": 1253.38,
          "cpu_mean_pct": 167.74,
          "cpu_max_pct": 200.68
        },
        "description": "One library scan, then a ladder of simultaneous software transcodes: 1, 2, 3, 4, 6 and 8 simulated players. Every player has its own device ID and plays the same 12-minute film, asking for a 1280x720, 4 Mb/s H.264 HLS stream that cannot direct play, so Jellyfin runs one ffmpeg per player with libx264 on the CPU (no hardware acceleration in the lab), and each player fetches the 3-second segments in real time for 60 seconds of playback. The 1080p H.264 source is synthetic: a test pattern with added noise at about 8 Mb/s, with AAC stereo audio that Jellyfin copies. ffmpeg runs without throttling (the default), so each job works as fast as the CPU allows. After each level the players stop their encodings, the script waits until Jellyfin reports no transcode and pauses 10 seconds. A level kept up when no player had a segment arrive after the moment its playhead needed it. For each level the result records the speed of every ffmpeg (from Jellyfin's transcode logs), the late segments and rebuffering of every player, the delay to the first segment and the memory and CPU of the stack. The ladder stops at the first level where at least half of the players are late on a quarter or more of their segments. No browser, no subtitles.",
        "duration_s": 333.7,
        "window": "from LAB_MARK load_start (or step start) until 2 s after the step ended",
        "reported_by_script": {
          "library_scan_seconds": 1.0,
          "library_scan_status": "Completed",
          "movies_in_library": 1,
          "ladder": {
            "item": "Long Test Feature",
            "levels_requested": [
              1,
              2,
              3,
              4,
              6,
              8
            ],
            "hold_seconds": 60,
            "pause_seconds": 10,
            "max_players_kept_up": 3,
            "stopped_early": {
              "after_players": 4,
              "reason": "4 players clearly failed (outcome failed); higher levels not run"
            },
            "levels": [
              {
                "players": 1,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 3.3,
                "steady_start_offset_s": 7.7,
                "steady_end_offset_s": 67.8,
                "speed_min_x": 3.05,
                "speed_median_x": 3.05,
                "speed_max_x": 3.05,
                "steady_speed_min_x": 3.215,
                "steady_speed_median_x": 3.215,
                "ffmpeg_logs_found": 1,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 3.04,
                "first_segment_s_max": 3.04,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 0,
                  "video_direct": 0,
                  "video_codecs": [],
                  "framerates": []
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.1,
                    "seconds_to_first_segment": 3.04,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 3.05,
                    "last_fps": 73.0,
                    "media_time_s": 194.9,
                    "elapsed_s": 64.0,
                    "frames": 4695,
                    "steady_speed_x": 3.215
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 2,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 82.1,
                "steady_start_offset_s": 90.0,
                "steady_end_offset_s": 148.7,
                "speed_min_x": 1.58,
                "speed_median_x": 1.585,
                "speed_max_x": 1.59,
                "steady_speed_min_x": 1.596,
                "steady_speed_median_x": 1.641,
                "ffmpeg_logs_found": 2,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 4.85,
                "first_segment_s_max": 5.58,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 2,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    37.0,
                    38.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.2,
                    "seconds_to_first_segment": 4.12,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 60.1,
                    "seconds_to_first_segment": 5.58,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 1.58,
                    "last_fps": 38.0,
                    "media_time_s": 106.0,
                    "elapsed_s": 66.9,
                    "frames": 2549,
                    "steady_speed_x": 1.596
                  },
                  {
                    "last_speed_x": 1.59,
                    "last_fps": 38.0,
                    "media_time_s": 107.5,
                    "elapsed_s": 67.6,
                    "frames": 2599,
                    "steady_speed_x": 1.685
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 3,
                "skipped": false,
                "outcome": "kept_up",
                "kept_up": true,
                "clearly_failed": false,
                "start_offset_s": 164.5,
                "steady_start_offset_s": 175.0,
                "steady_end_offset_s": 235.5,
                "speed_min_x": 1.03,
                "speed_median_x": 1.06,
                "speed_max_x": 1.06,
                "steady_speed_min_x": 1.051,
                "steady_speed_median_x": 1.104,
                "ffmpeg_logs_found": 3,
                "late_segments_total": 0,
                "late_players": 0,
                "max_lateness_s": 0.0,
                "stall_events_total": 0,
                "stall_seconds_max": 0.0,
                "first_segment_s_median": 6.91,
                "first_segment_s_max": 7.0,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 2,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    25.0,
                    25.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 23,
                    "playback_seconds": 60.7,
                    "seconds_to_first_segment": 6.91,
                    "error": null,
                    "segments_after_start": 21,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 62.1,
                    "seconds_to_first_segment": 7.0,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 24,
                    "playback_seconds": 62.4,
                    "seconds_to_first_segment": 6.79,
                    "error": null,
                    "segments_after_start": 22,
                    "late_segments": 0,
                    "max_lateness_s": 0.0,
                    "stall_events": 0,
                    "stall_seconds": 0.0,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 1.06,
                    "last_fps": 25.0,
                    "media_time_s": 76.5,
                    "elapsed_s": 72.4,
                    "frames": 1843,
                    "steady_speed_x": 1.104
                  },
                  {
                    "last_speed_x": 1.03,
                    "last_fps": 25.0,
                    "media_time_s": 73.6,
                    "elapsed_s": 71.5,
                    "frames": 1771,
                    "steady_speed_x": 1.051
                  },
                  {
                    "last_speed_x": 1.06,
                    "last_fps": 26.0,
                    "media_time_s": 76.7,
                    "elapsed_s": 72.4,
                    "frames": 1853,
                    "steady_speed_x": 1.113
                  }
                ],
                "transcodes_left_after_stop": 0,
                "stop_wait_s": 0.0
              },
              {
                "players": 4,
                "skipped": false,
                "outcome": "failed",
                "kept_up": false,
                "clearly_failed": true,
                "start_offset_s": 251.8,
                "steady_start_offset_s": 266.2,
                "steady_end_offset_s": 326.1,
                "speed_min_x": 0.761,
                "speed_median_x": 0.767,
                "speed_max_x": 0.783,
                "steady_speed_min_x": 0.776,
                "steady_speed_median_x": 0.804,
                "ffmpeg_logs_found": 4,
                "late_segments_total": 53,
                "late_players": 4,
                "max_lateness_s": 12.1,
                "stall_events_total": 53,
                "stall_seconds_max": 12.1,
                "first_segment_s_median": 9.095,
                "first_segment_s_max": 9.72,
                "errors": [],
                "sessions_midway": {
                  "transcoding_sessions": 4,
                  "video_direct": 0,
                  "video_codecs": [
                    "h264"
                  ],
                  "framerates": [
                    17.0,
                    18.0,
                    18.0,
                    19.0
                  ]
                },
                "transcode_reasons": [
                  "ContainerBitrateExceedsLimit"
                ],
                "players_detail": [
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 61.1,
                    "seconds_to_first_segment": 8.67,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 12,
                    "max_lateness_s": 10.07,
                    "stall_events": 12,
                    "stall_seconds": 10.07,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 63.1,
                    "seconds_to_first_segment": 8.69,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 14,
                    "max_lateness_s": 12.05,
                    "stall_events": 14,
                    "stall_seconds": 12.05,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 62.6,
                    "seconds_to_first_segment": 9.5,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 13,
                    "max_lateness_s": 11.55,
                    "stall_events": 13,
                    "stall_seconds": 11.55,
                    "encoding_stop_http": 204
                  },
                  {
                    "segments_fetched": 18,
                    "playback_seconds": 63.1,
                    "seconds_to_first_segment": 9.72,
                    "error": null,
                    "segments_after_start": 16,
                    "late_segments": 14,
                    "max_lateness_s": 12.1,
                    "stall_events": 14,
                    "stall_seconds": 12.1,
                    "encoding_stop_http": 204
                  }
                ],
                "ffmpeg": [
                  {
                    "last_speed_x": 0.783,
                    "last_fps": 19.0,
                    "media_time_s": 58.4,
                    "elapsed_s": 74.6,
                    "frames": 1406,
                    "steady_speed_x": 0.776
                  },
                  {
                    "last_speed_x": 0.769,
                    "last_fps": 19.0,
                    "media_time_s": 58.8,
                    "elapsed_s": 76.5,
                    "frames": 1418,
                    "steady_speed_x": 0.795
                  },
                  {
                    "last_speed_x": 0.761,
                    "last_fps": 18.0,
                    "media_time_s": 58.4,
                    "elapsed_s": 76.8,
                    "frames": 1414,
                    "steady_speed_x": 0.824
                  },
                  {
                    "last_speed_x": 0.765,
                    "last_fps": 18.0,
                    "media_time_s": 58.7,
                    "elapsed_s": 76.7,
                    "frames": 1414,
                    "steady_speed_x": 0.813
                  }
                ]
              },
              {
                "players": 6,
                "skipped": true,
                "reason": "4 players clearly failed (outcome failed); higher levels not run"
              },
              {
                "players": 8,
                "skipped": true,
                "reason": "4 players clearly failed (outcome failed); higher levels not run"
              }
            ],
            "ffmpeg_command": "/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -i file:\"/media/movies/Long Test Feature (2010)/Long Test Feature (2010).mp4\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 libx264 -preset veryfast -crf 23 -maxrate 3872026 -bufsize 7744052 -profile:v:0 high -level 40 -x264opts:0 subme=0:me_range=16:rc_lookahead=10:me=hex:open_gop=0 -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -sc_threshold:v:0 0 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw\\,ih*a)\\,min(1280\\,720*a))/2)*2:trunc(min(max(iw/a\\,ih)\\,min(1280/a\\,720))/2)*2,format=yuv420p\" -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename \"/cache/transcodes/cfb20e6398db477a12d3428924323d78%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/cache/transcodes/cfb20e6398db477a12d3428924323d78.m3u8\""
          }
        },
        "output_tail": [
          "ladder: levels [1, 2, 3, 4, 6, 8], 60 s of playback each, 10 s pause, keep-up = no late segment on any player",
          "  1 player(s): kept_up; ffmpeg speed 3.05-3.05x (1 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 3.04 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  2 player(s): kept_up; ffmpeg speed 1.58-1.59x (2 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 5.58 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  3 player(s): kept_up; ffmpeg speed 1.03-1.06x (3 log(s)); late segments 0 on 0 player(s), worst 0.0 s; stalls up to 0.0 s; first segment up to 7.0 s",
          "  waited 0.0 s for the transcodes to end (0 still listed), pausing 10 s",
          "  4 player(s): failed; ffmpeg speed 0.761-0.783x (4 log(s)); late segments 53 on 4 player(s), worst 12.1 s; stalls up to 12.1 s; first segment up to 9.72 s",
          "max players that kept up: 3; stopped early: 4 players clearly failed (outcome failed); higher levels not run",
          "  ffmpeg command: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -probesize 1G -i file:\"/media/movies/Long Test Feature (2010)/Long Test Feature (2010).mp4\" -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 libx264 -preset veryfast -crf 23 -maxrate 3872026 -bufsize 7744052 -profile:v:0 high -level 40 -x264opts:0 subme=0:me_range=16:rc_lookahead=10:me=hex:open_gop=0 -force_key_frames:0 \"expr:gte(t,n_forced*3)\" -sc_threshold:v:0 0 -vf \"setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709,scale=trunc(min(max(iw\\,ih*a)\\,min(1280\\,720*a))/2)*2:trunc(min(max(iw/a\\,ih)\\,min(1280/a\\,720))/2)*2,format=yuv420p\" -codec:a:0 copy -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename \"/cache/transcodes/cfb20e6398db477a12d3428924323d78%d.ts\" -hls_playlist_type vod -hls_list_size 0 -y \"/cache/transcodes/cfb20e6398db477a12d3428924323d78.m3u8\""
        ],
        "series": [
          {
            "t_offset_s": 0.0,
            "total_mem_mib": 293.4,
            "total_cpu_pct": 100.62
          },
          {
            "t_offset_s": 2.0,
            "total_mem_mib": 296.6,
            "total_cpu_pct": 85.84
          },
          {
            "t_offset_s": 4.0,
            "total_mem_mib": 514.6,
            "total_cpu_pct": 157.68
          },
          {
            "t_offset_s": 6.0,
            "total_mem_mib": 519.0,
            "total_cpu_pct": 198.12
          },
          {
            "t_offset_s": 8.0,
            "total_mem_mib": 520.1,
            "total_cpu_pct": 199.06
          },
          {
            "t_offset_s": 10.0,
            "total_mem_mib": 548.1,
            "total_cpu_pct": 193.02
          },
          {
            "t_offset_s": 12.0,
            "total_mem_mib": 549.7,
            "total_cpu_pct": 197.84
          },
          {
            "t_offset_s": 14.0,
            "total_mem_mib": 548.5,
            "total_cpu_pct": 199.49
          },
          {
            "t_offset_s": 16.0,
            "total_mem_mib": 543.2,
            "total_cpu_pct": 195.76
          },
          {
            "t_offset_s": 18.0,
            "total_mem_mib": 545.0,
            "total_cpu_pct": 199.14
          },
          {
            "t_offset_s": 20.1,
            "total_mem_mib": 547.6,
            "total_cpu_pct": 194.29
          },
          {
            "t_offset_s": 22.1,
            "total_mem_mib": 549.6,
            "total_cpu_pct": 198.43
          },
          {
            "t_offset_s": 24.1,
            "total_mem_mib": 551.2,
            "total_cpu_pct": 197.96
          },
          {
            "t_offset_s": 26.1,
            "total_mem_mib": 554.2,
            "total_cpu_pct": 198.11
          },
          {
            "t_offset_s": 28.1,
            "total_mem_mib": 549.9,
            "total_cpu_pct": 198.34
          },
          {
            "t_offset_s": 30.1,
            "total_mem_mib": 551.1,
            "total_cpu_pct": 192.94
          },
          {
            "t_offset_s": 32.1,
            "total_mem_mib": 554.7,
            "total_cpu_pct": 197.76
          },
          {
            "t_offset_s": 34.1,
            "total_mem_mib": 557.0,
            "total_cpu_pct": 198.87
          },
          {
            "t_offset_s": 36.1,
            "total_mem_mib": 558.4,
            "total_cpu_pct": 197.48
          },
          {
            "t_offset_s": 38.1,
            "total_mem_mib": 561.7,
            "total_cpu_pct": 197.58
          },
          {
            "t_offset_s": 40.1,
            "total_mem_mib": 562.8,
            "total_cpu_pct": 193.63
          },
          {
            "t_offset_s": 42.1,
            "total_mem_mib": 561.9,
            "total_cpu_pct": 195.32
          },
          {
            "t_offset_s": 44.1,
            "total_mem_mib": 562.0,
            "total_cpu_pct": 199.63
          },
          {
            "t_offset_s": 46.1,
            "total_mem_mib": 557.7,
            "total_cpu_pct": 199.24
          },
          {
            "t_offset_s": 48.1,
            "total_mem_mib": 558.2,
            "total_cpu_pct": 197.77
          },
          {
            "t_offset_s": 50.1,
            "total_mem_mib": 559.1,
            "total_cpu_pct": 193.8
          },
          {
            "t_offset_s": 52.1,
            "total_mem_mib": 558.5,
            "total_cpu_pct": 195.82
          },
          {
            "t_offset_s": 54.1,
            "total_mem_mib": 558.5,
            "total_cpu_pct": 197.82
          },
          {
            "t_offset_s": 56.1,
            "total_mem_mib": 559.1,
            "total_cpu_pct": 198.23
          },
          {
            "t_offset_s": 58.1,
            "total_mem_mib": 559.8,
            "total_cpu_pct": 198.33
          },
          {
            "t_offset_s": 60.2,
            "total_mem_mib": 560.3,
            "total_cpu_pct": 195.29
          },
          {
            "t_offset_s": 62.2,
            "total_mem_mib": 566.3,
            "total_cpu_pct": 197.88
          },
          {
            "t_offset_s": 64.2,
            "total_mem_mib": 563.6,
            "total_cpu_pct": 198.99
          },
          {
            "t_offset_s": 66.2,
            "total_mem_mib": 563.8,
            "total_cpu_pct": 197.45
          },
          {
            "t_offset_s": 68.2,
            "total_mem_mib": 335.4,
            "total_cpu_pct": 25.75
          },
          {
            "t_offset_s": 70.2,
            "total_mem_mib": 336.2,
            "total_cpu_pct": 0.86
          },
          {
            "t_offset_s": 72.2,
            "total_mem_mib": 336.5,
            "total_cpu_pct": 3.63
          },
          {
            "t_offset_s": 74.2,
            "total_mem_mib": 336.3,
            "total_cpu_pct": 0.14
          },
          {
            "t_offset_s": 76.2,
            "total_mem_mib": 336.2,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 78.2,
            "total_mem_mib": 335.8,
            "total_cpu_pct": 4.08
          },
          {
            "t_offset_s": 80.2,
            "total_mem_mib": 335.7,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 82.2,
            "total_mem_mib": 605.1,
            "total_cpu_pct": 155.48
          },
          {
            "t_offset_s": 84.2,
            "total_mem_mib": 780.8,
            "total_cpu_pct": 197.23
          },
          {
            "t_offset_s": 86.2,
            "total_mem_mib": 782.2,
            "total_cpu_pct": 198.41
          },
          {
            "t_offset_s": 88.2,
            "total_mem_mib": 784.0,
            "total_cpu_pct": 195.84
          },
          {
            "t_offset_s": 90.2,
            "total_mem_mib": 785.4,
            "total_cpu_pct": 194.13
          },
          {
            "t_offset_s": 92.2,
            "total_mem_mib": 786.5,
            "total_cpu_pct": 198.59
          },
          {
            "t_offset_s": 94.2,
            "total_mem_mib": 787.7,
            "total_cpu_pct": 199.41
          },
          {
            "t_offset_s": 96.2,
            "total_mem_mib": 790.3,
            "total_cpu_pct": 199.02
          },
          {
            "t_offset_s": 98.2,
            "total_mem_mib": 796.9,
            "total_cpu_pct": 196.16
          },
          {
            "t_offset_s": 100.2,
            "total_mem_mib": 785.0,
            "total_cpu_pct": 194.46
          },
          {
            "t_offset_s": 102.3,
            "total_mem_mib": 786.1,
            "total_cpu_pct": 197.75
          },
          {
            "t_offset_s": 104.3,
            "total_mem_mib": 788.4,
            "total_cpu_pct": 196.89
          },
          {
            "t_offset_s": 106.3,
            "total_mem_mib": 788.7,
            "total_cpu_pct": 198.57
          },
          {
            "t_offset_s": 108.3,
            "total_mem_mib": 789.2,
            "total_cpu_pct": 198.26
          },
          {
            "t_offset_s": 110.3,
            "total_mem_mib": 788.9,
            "total_cpu_pct": 195.51
          },
          {
            "t_offset_s": 112.3,
            "total_mem_mib": 788.4,
            "total_cpu_pct": 199.13
          },
          {
            "t_offset_s": 114.3,
            "total_mem_mib": 791.1,
            "total_cpu_pct": 196.65
          },
          {
            "t_offset_s": 116.3,
            "total_mem_mib": 791.5,
            "total_cpu_pct": 198.39
          },
          {
            "t_offset_s": 118.3,
            "total_mem_mib": 793.2,
            "total_cpu_pct": 198.45
          },
          {
            "t_offset_s": 120.3,
            "total_mem_mib": 796.3,
            "total_cpu_pct": 194.97
          },
          {
            "t_offset_s": 122.3,
            "total_mem_mib": 797.1,
            "total_cpu_pct": 198.38
          },
          {
            "t_offset_s": 124.3,
            "total_mem_mib": 798.0,
            "total_cpu_pct": 198.52
          },
          {
            "t_offset_s": 126.3,
            "total_mem_mib": 797.3,
            "total_cpu_pct": 200.19
          },
          {
            "t_offset_s": 128.3,
            "total_mem_mib": 800.8,
            "total_cpu_pct": 199.47
          },
          {
            "t_offset_s": 130.3,
            "total_mem_mib": 801.7,
            "total_cpu_pct": 191.24
          },
          {
            "t_offset_s": 132.3,
            "total_mem_mib": 802.3,
            "total_cpu_pct": 199.01
          },
          {
            "t_offset_s": 134.3,
            "total_mem_mib": 804.3,
            "total_cpu_pct": 200.19
          },
          {
            "t_offset_s": 136.3,
            "total_mem_mib": 804.4,
            "total_cpu_pct": 199.14
          },
          {
            "t_offset_s": 138.3,
            "total_mem_mib": 803.4,
            "total_cpu_pct": 198.98
          },
          {
            "t_offset_s": 140.3,
            "total_mem_mib": 810.2,
            "total_cpu_pct": 192.54
          },
          {
            "t_offset_s": 142.4,
            "total_mem_mib": 805.1,
            "total_cpu_pct": 199.2
          },
          {
            "t_offset_s": 144.4,
            "total_mem_mib": 803.3,
            "total_cpu_pct": 199.24
          },
          {
            "t_offset_s": 146.4,
            "total_mem_mib": 808.1,
            "total_cpu_pct": 195.97
          },
          {
            "t_offset_s": 148.4,
            "total_mem_mib": 807.1,
            "total_cpu_pct": 199.18
          },
          {
            "t_offset_s": 150.4,
            "total_mem_mib": 354.5,
            "total_cpu_pct": 33.99
          },
          {
            "t_offset_s": 152.4,
            "total_mem_mib": 354.1,
            "total_cpu_pct": 1.01
          },
          {
            "t_offset_s": 154.4,
            "total_mem_mib": 353.9,
            "total_cpu_pct": 3.03
          },
          {
            "t_offset_s": 156.4,
            "total_mem_mib": 354.2,
            "total_cpu_pct": 3.97
          },
          {
            "t_offset_s": 158.4,
            "total_mem_mib": 354.1,
            "total_cpu_pct": 0.07
          },
          {
            "t_offset_s": 160.4,
            "total_mem_mib": 354.1,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 162.4,
            "total_mem_mib": 354.1,
            "total_cpu_pct": 0.02
          },
          {
            "t_offset_s": 164.4,
            "total_mem_mib": 426.7,
            "total_cpu_pct": 141.65
          },
          {
            "t_offset_s": 166.4,
            "total_mem_mib": 1015.0,
            "total_cpu_pct": 197.83
          },
          {
            "t_offset_s": 168.4,
            "total_mem_mib": 1015.0,
            "total_cpu_pct": 196.78
          },
          {
            "t_offset_s": 170.4,
            "total_mem_mib": 1020.0,
            "total_cpu_pct": 194.61
          },
          {
            "t_offset_s": 172.4,
            "total_mem_mib": 1024.0,
            "total_cpu_pct": 196.1
          },
          {
            "t_offset_s": 174.4,
            "total_mem_mib": 1017.0,
            "total_cpu_pct": 198.57
          },
          {
            "t_offset_s": 176.4,
            "total_mem_mib": 1017.0,
            "total_cpu_pct": 198.17
          },
          {
            "t_offset_s": 178.4,
            "total_mem_mib": 1019.0,
            "total_cpu_pct": 198.75
          },
          {
            "t_offset_s": 180.4,
            "total_mem_mib": 1022.0,
            "total_cpu_pct": 194.59
          },
          {
            "t_offset_s": 182.4,
            "total_mem_mib": 1019.0,
            "total_cpu_pct": 196.44
          },
          {
            "t_offset_s": 184.4,
            "total_mem_mib": 1018.0,
            "total_cpu_pct": 199.56
          },
          {
            "t_offset_s": 186.5,
            "total_mem_mib": 1020.0,
            "total_cpu_pct": 197.68
          },
          {
            "t_offset_s": 188.5,
            "total_mem_mib": 1020.0,
            "total_cpu_pct": 197.25
          },
          {
            "t_offset_s": 190.5,
            "total_mem_mib": 1021.0,
            "total_cpu_pct": 199.54
          },
          {
            "t_offset_s": 192.5,
            "total_mem_mib": 1014.0,
            "total_cpu_pct": 197.99
          },
          {
            "t_offset_s": 194.5,
            "total_mem_mib": 1014.0,
            "total_cpu_pct": 199.0
          },
          {
            "t_offset_s": 196.5,
            "total_mem_mib": 1014.0,
            "total_cpu_pct": 194.64
          },
          {
            "t_offset_s": 198.5,
            "total_mem_mib": 1030.14,
            "total_cpu_pct": 196.06
          },
          {
            "t_offset_s": 200.5,
            "total_mem_mib": 1016.0,
            "total_cpu_pct": 199.32
          },
          {
            "t_offset_s": 202.5,
            "total_mem_mib": 1015.0,
            "total_cpu_pct": 199.61
          },
          {
            "t_offset_s": 204.5,
            "total_mem_mib": 1016.0,
            "total_cpu_pct": 195.55
          },
          {
            "t_offset_s": 206.5,
            "total_mem_mib": 1017.0,
            "total_cpu_pct": 195.48
          },
          {
            "t_offset_s": 208.5,
            "total_mem_mib": 1018.0,
            "total_cpu_pct": 199.24
          },
          {
            "t_offset_s": 210.5,
            "total_mem_mib": 1020.0,
            "total_cpu_pct": 198.02
          },
          {
            "t_offset_s": 212.5,
            "total_mem_mib": 1020.0,
            "total_cpu_pct": 199.52
          },
          {
            "t_offset_s": 214.5,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 199.19
          },
          {
            "t_offset_s": 216.5,
            "total_mem_mib": 1024.0,
            "total_cpu_pct": 194.34
          },
          {
            "t_offset_s": 218.5,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 195.93
          },
          {
            "t_offset_s": 220.5,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 196.24
          },
          {
            "t_offset_s": 222.5,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 197.88
          },
          {
            "t_offset_s": 224.5,
            "total_mem_mib": 1029.12,
            "total_cpu_pct": 198.74
          },
          {
            "t_offset_s": 226.6,
            "total_mem_mib": 1031.17,
            "total_cpu_pct": 194.35
          },
          {
            "t_offset_s": 228.6,
            "total_mem_mib": 1030.14,
            "total_cpu_pct": 199.0
          },
          {
            "t_offset_s": 230.6,
            "total_mem_mib": 1028.1,
            "total_cpu_pct": 199.72
          },
          {
            "t_offset_s": 232.6,
            "total_mem_mib": 1031.17,
            "total_cpu_pct": 198.48
          },
          {
            "t_offset_s": 234.6,
            "total_mem_mib": 1030.14,
            "total_cpu_pct": 198.69
          },
          {
            "t_offset_s": 236.6,
            "total_mem_mib": 799.8,
            "total_cpu_pct": 193.52
          },
          {
            "t_offset_s": 238.6,
            "total_mem_mib": 350.6,
            "total_cpu_pct": 7.4
          },
          {
            "t_offset_s": 240.6,
            "total_mem_mib": 350.6,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 242.6,
            "total_mem_mib": 351.8,
            "total_cpu_pct": 3.93
          },
          {
            "t_offset_s": 244.6,
            "total_mem_mib": 351.8,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 246.6,
            "total_mem_mib": 351.5,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 248.6,
            "total_mem_mib": 352.5,
            "total_cpu_pct": 0.03
          },
          {
            "t_offset_s": 250.6,
            "total_mem_mib": 352.0,
            "total_cpu_pct": 0.01
          },
          {
            "t_offset_s": 252.6,
            "total_mem_mib": 728.4,
            "total_cpu_pct": 193.66
          },
          {
            "t_offset_s": 254.6,
            "total_mem_mib": 1212.42,
            "total_cpu_pct": 196.44
          },
          {
            "t_offset_s": 256.6,
            "total_mem_mib": 1219.58,
            "total_cpu_pct": 194.41
          },
          {
            "t_offset_s": 258.6,
            "total_mem_mib": 1228.8,
            "total_cpu_pct": 199.18
          },
          {
            "t_offset_s": 260.6,
            "total_mem_mib": 1229.82,
            "total_cpu_pct": 197.5
          },
          {
            "t_offset_s": 262.6,
            "total_mem_mib": 1226.75,
            "total_cpu_pct": 199.78
          },
          {
            "t_offset_s": 264.6,
            "total_mem_mib": 1227.78,
            "total_cpu_pct": 199.41
          },
          {
            "t_offset_s": 266.7,
            "total_mem_mib": 1231.87,
            "total_cpu_pct": 195.03
          },
          {
            "t_offset_s": 268.7,
            "total_mem_mib": 1231.87,
            "total_cpu_pct": 196.63
          },
          {
            "t_offset_s": 270.7,
            "total_mem_mib": 1233.92,
            "total_cpu_pct": 198.32
          },
          {
            "t_offset_s": 272.7,
            "total_mem_mib": 1234.94,
            "total_cpu_pct": 198.58
          },
          {
            "t_offset_s": 274.7,
            "total_mem_mib": 1238.02,
            "total_cpu_pct": 198.13
          },
          {
            "t_offset_s": 276.7,
            "total_mem_mib": 1236.99,
            "total_cpu_pct": 194.02
          },
          {
            "t_offset_s": 278.7,
            "total_mem_mib": 1238.02,
            "total_cpu_pct": 199.13
          },
          {
            "t_offset_s": 280.7,
            "total_mem_mib": 1235.97,
            "total_cpu_pct": 196.28
          },
          {
            "t_offset_s": 282.7,
            "total_mem_mib": 1244.16,
            "total_cpu_pct": 198.11
          },
          {
            "t_offset_s": 284.7,
            "total_mem_mib": 1244.16,
            "total_cpu_pct": 198.56
          },
          {
            "t_offset_s": 286.7,
            "total_mem_mib": 1243.14,
            "total_cpu_pct": 193.3
          },
          {
            "t_offset_s": 288.7,
            "total_mem_mib": 1248.26,
            "total_cpu_pct": 197.38
          },
          {
            "t_offset_s": 290.7,
            "total_mem_mib": 1248.26,
            "total_cpu_pct": 199.55
          },
          {
            "t_offset_s": 292.7,
            "total_mem_mib": 1248.26,
            "total_cpu_pct": 198.21
          },
          {
            "t_offset_s": 294.7,
            "total_mem_mib": 1248.26,
            "total_cpu_pct": 198.79
          },
          {
            "t_offset_s": 296.7,
            "total_mem_mib": 1250.3,
            "total_cpu_pct": 194.02
          },
          {
            "t_offset_s": 298.7,
            "total_mem_mib": 1250.3,
            "total_cpu_pct": 198.63
          },
          {
            "t_offset_s": 300.7,
            "total_mem_mib": 1252.35,
            "total_cpu_pct": 197.85
          },
          {
            "t_offset_s": 302.7,
            "total_mem_mib": 1253.38,
            "total_cpu_pct": 197.35
          },
          {
            "t_offset_s": 304.8,
            "total_mem_mib": 1250.3,
            "total_cpu_pct": 199.48
          },
          {
            "t_offset_s": 306.8,
            "total_mem_mib": 1250.3,
            "total_cpu_pct": 193.04
          },
          {
            "t_offset_s": 308.8,
            "total_mem_mib": 1249.28,
            "total_cpu_pct": 195.8
          },
          {
            "t_offset_s": 310.8,
            "total_mem_mib": 1250.3,
            "total_cpu_pct": 200.1
          },
          {
            "t_offset_s": 312.8,
            "total_mem_mib": 1245.18,
            "total_cpu_pct": 198.69
          },
          {
            "t_offset_s": 314.8,
            "total_mem_mib": 1246.21,
            "total_cpu_pct": 199.27
          },
          {
            "t_offset_s": 316.8,
            "total_mem_mib": 1242.11,
            "total_cpu_pct": 193.87
          },
          {
            "t_offset_s": 318.8,
            "total_mem_mib": 1241.09,
            "total_cpu_pct": 198.26
          },
          {
            "t_offset_s": 320.8,
            "total_mem_mib": 1243.14,
            "total_cpu_pct": 198.55
          },
          {
            "t_offset_s": 322.8,
            "total_mem_mib": 1244.16,
            "total_cpu_pct": 200.68
          },
          {
            "t_offset_s": 324.8,
            "total_mem_mib": 1252.35,
            "total_cpu_pct": 196.66
          },
          {
            "t_offset_s": 326.8,
            "total_mem_mib": 1025.02,
            "total_cpu_pct": 195.37
          },
          {
            "t_offset_s": 328.8,
            "total_mem_mib": 788.7,
            "total_cpu_pct": 197.72
          },
          {
            "t_offset_s": 330.8,
            "total_mem_mib": 356.5,
            "total_cpu_pct": 12.98
          },
          {
            "t_offset_s": 332.8,
            "total_mem_mib": 356.9,
            "total_cpu_pct": 4.13
          },
          {
            "t_offset_s": 334.8,
            "total_mem_mib": 356.7,
            "total_cpu_pct": 0.01
          }
        ],
        "series_start_offset_s": 1.4,
        "peak_note": "peak = highest value seen across docker stats samples (about one every 2-3 s); shorter spikes between samples are not seen"
      },
      "container_end_state": {
        "jellyfin": {
          "restart_count": 0,
          "oom_killed": false
        }
      },
      "teardown": {
        "done": true,
        "volumes_removed": true,
        "images_removed": false,
        "error": null
      },
      "warnings": [],
      "finished_at": "2026-10-11T08:20:33Z",
      "elapsed_seconds": 503.5
    }
  ],
  "load_defined": true,
  "notes": [
    "Host: a GitHub Actions runner (ubuntu-latest, 2 vCPU, 8 GB RAM; the CPU model varies between AMD EPYC generations, and each run records its own). The result is valid for that host only. There is no GPU or iGPU: hardware acceleration is not tested. Every transcode is software x264 inside the official jellyfin-ffmpeg.",
    "Keep-up rule, unchanged from the manual ladders of 2026-10-04 and 2026-10-06 (lab/notes/jellyfin-2026-10-04.md section 5, jellyfin-2026-10-06.md section 5): a player starts playing when its second segment has arrived; a later segment is late if it arrives after start + its playlist time; a level kept up when no player had a late segment. The speed per player is the speed= of the last progress line of each Jellyfin FFmpeg.Transcode log (an average since that ffmpeg started).",
    "Differences from the manual ladders: the library holds only the film that is played (the other 12 generated films are not needed and are not made), the encodings are ended with the API's DELETE /Videos/ActiveEncodings at the end of each level, the levels run one after another in one stack (the manual ladders ran on a stack that had already run a scan and transcodes), and a level 3 was added because two vCPUs are expected to hold about three streams. The stack is also being sampled by the harness (docker stats), as in the manual ladders.",
    "This app has no published result of its own yet. The headline Jellyfin figures stay with the jellyfin app.",
    "service jellyfin: bind mount /home/runner/work/claudeftw/claudeftw/lab/apps/jellyfin-ladder/media refers to a path on the daemon host; prefer named volumes so remote runs and `down -v` stay clean"
  ],
  "warnings": [],
  "files": {
    "compose": "jellyfin-ladder.compose.yaml",
    "env": null
  },
  "definitions": {
    "memory": "cgroup working set as reported by `docker stats` (usage minus inactive file cache), MiB = 2^20 bytes",
    "cpu": "percent of ONE core as reported by `docker stats` (4 busy cores = 400)",
    "total": "stats over the sum of all containers at the same instant",
    "sample_interval": "docker stats --no-stream takes about 1-2 s per call, so samples are 2-3 s apart",
    "runs": "each run is a full fresh cycle (up, health, setup, settle, idle, load, down -v); the published figure is the median over the runs, shown with the min-max range; see summary.rule"
  }
}
