{
  "schema_version": 1,
  "seed": 20260917,
  "runs_per_scenario": 1000,
  "scope": "Illustrative sensitivity analysis, not Steam client telemetry or a population benchmark.",
  "documented_mechanics": [
    "SteamPipe divides files into roughly one megabyte (MB) chunks.",
    "Only new or modified chunks ideally need to be downloaded.",
    "A changed pack file is rebuilt alongside the old file and then committed.",
    "A small logical change can alter many fixed chunks when pack-file offsets move."
  ],
  "model_assumptions": [
    "The model uses a one MiB chunk to represent Valve's roughly one MB documented chunk size; the binary value is a modelling choice.",
    "Network, CPU and disk work can overlap by the declared overlap_fraction range.",
    "Sampled rates use bounded triangular distributions chosen for the named synthetic client profile.",
    "Each chunk attempt has the declared independent failure probability, and a retry transfers one average compressed chunk.",
    "Jobs above 4,096 chunks approximate the sum of geometric retry counts with a normal distribution using the same mean and variance.",
    "The verification rate represents an abstract integrity-pass cost and is not a documented Steam client stage.",
    "No result estimates the distribution of Steam users or the private Steam client implementation."
  ],
  "scenarios": [
    {
      "id": "small-patch-fast-network-hdd",
      "description": "A ten-byte logical change produces one model chunk inside Valve's 25 GB pack-file example on slower local disk.",
      "evidence_basis": "Valve's documented 25 GB rebuild-alongside example, represented as 25,000,000,000 bytes, with synthetic client rates.",
      "logical_change_mib": 0.0000095367431640625,
      "compressed_download_mib": 1,
      "changed_uncompressed_mib": 1,
      "touched_file_mib": 23841.85791015625,
      "free_space_mib": 47683.7158203125,
      "chunk_mib": 1,
      "failure_probability_per_attempt": 0.001,
      "mean_retry_backoff_seconds": 0.25,
      "deadline_seconds": 600,
      "network_mbps": {"low": 800, "mode": 1000, "high": 1200},
      "disk_read_mib_s": {"low": 80, "mode": 120, "high": 160},
      "disk_write_mib_s": {"low": 70, "mode": 100, "high": 130},
      "decompress_mib_s": {"low": 350, "mode": 500, "high": 700},
      "verify_mib_s": {"low": 700, "mode": 1000, "high": 1400},
      "metadata_seconds": {"low": 0.5, "mode": 1, "high": 2},
      "commit_seconds": {"low": 0.2, "mode": 0.5, "high": 1},
      "post_install_seconds": 0,
      "overlap_fraction": {"low": 0.6, "mode": 0.75, "high": 0.9}
    },
    {
      "id": "small-patch-fast-network-nvme",
      "description": "The same ten-byte logical change and 25 GB pack-file rebuild on faster local storage.",
      "evidence_basis": "Valve states that client storage hardware can make the rebuild slow; rates are synthetic.",
      "logical_change_mib": 0.0000095367431640625,
      "compressed_download_mib": 1,
      "changed_uncompressed_mib": 1,
      "touched_file_mib": 23841.85791015625,
      "free_space_mib": 47683.7158203125,
      "chunk_mib": 1,
      "failure_probability_per_attempt": 0.001,
      "mean_retry_backoff_seconds": 0.25,
      "deadline_seconds": 600,
      "network_mbps": {"low": 800, "mode": 1000, "high": 1200},
      "disk_read_mib_s": {"low": 1400, "mode": 2000, "high": 2600},
      "disk_write_mib_s": {"low": 1000, "mode": 1500, "high": 2100},
      "decompress_mib_s": {"low": 350, "mode": 500, "high": 700},
      "verify_mib_s": {"low": 700, "mode": 1000, "high": 1400},
      "metadata_seconds": {"low": 0.5, "mode": 1, "high": 2},
      "commit_seconds": {"low": 0.2, "mode": 0.5, "high": 1},
      "post_install_seconds": 0,
      "overlap_fraction": {"low": 0.6, "mode": 0.75, "high": 0.9}
    },
    {
      "id": "hostile-layout-patch",
      "description": "A small logical change produces a 12.5 GiB download and rebuilds a 25 GiB pack file.",
      "evidence_basis": "Valve documents cases above half a pack file; this synthetic case uses exactly half.",
      "logical_change_mib": 10,
      "compressed_download_mib": 12800,
      "changed_uncompressed_mib": 16000,
      "touched_file_mib": 25600,
      "free_space_mib": 51200,
      "chunk_mib": 1,
      "failure_probability_per_attempt": 0.002,
      "mean_retry_backoff_seconds": 0.25,
      "deadline_seconds": 1800,
      "network_mbps": {"low": 80, "mode": 120, "high": 200},
      "disk_read_mib_s": {"low": 350, "mode": 550, "high": 800},
      "disk_write_mib_s": {"low": 300, "mode": 500, "high": 750},
      "decompress_mib_s": {"low": 350, "mode": 550, "high": 850},
      "verify_mib_s": {"low": 700, "mode": 1100, "high": 1600},
      "metadata_seconds": {"low": 0.5, "mode": 1, "high": 2},
      "commit_seconds": {"low": 0.2, "mode": 0.5, "high": 1},
      "post_install_seconds": 0,
      "overlap_fraction": {"low": 0.6, "mode": 0.75, "high": 0.9}
    },
    {
      "id": "cold-install-network-bound",
      "description": "A 50 GiB compressed cold install expands to 80 GiB on local storage.",
      "evidence_basis": "Synthetic cold-install profile using documented transfer, decompression and placement stages.",
      "logical_change_mib": 51200,
      "compressed_download_mib": 51200,
      "changed_uncompressed_mib": 81920,
      "touched_file_mib": 81920,
      "free_space_mib": 122880,
      "chunk_mib": 1,
      "failure_probability_per_attempt": 0.002,
      "mean_retry_backoff_seconds": 0.25,
      "deadline_seconds": 7200,
      "network_mbps": {"low": 70, "mode": 100, "high": 150},
      "disk_read_mib_s": {"low": 1000, "mode": 1600, "high": 2400},
      "disk_write_mib_s": {"low": 800, "mode": 1300, "high": 2000},
      "decompress_mib_s": {"low": 400, "mode": 650, "high": 1000},
      "verify_mib_s": {"low": 800, "mode": 1300, "high": 2000},
      "metadata_seconds": {"low": 1, "mode": 2, "high": 4},
      "commit_seconds": {"low": 0.5, "mode": 1, "high": 2},
      "post_install_seconds": {"low": 0, "mode": 5, "high": 30},
      "overlap_fraction": {"low": 0.65, "mode": 0.8, "high": 0.92}
    },
    {
      "id": "interrupted-medium-update",
      "description": "A 5 GiB update gives each chunk attempt a five per cent independent failure probability.",
      "evidence_basis": "Synthetic sensitivity case; public per-client Steam failure rates are unavailable.",
      "logical_change_mib": 2048,
      "compressed_download_mib": 5120,
      "changed_uncompressed_mib": 8192,
      "touched_file_mib": 12288,
      "free_space_mib": 24576,
      "chunk_mib": 1,
      "failure_probability_per_attempt": 0.05,
      "mean_retry_backoff_seconds": 0.5,
      "deadline_seconds": 1800,
      "network_mbps": {"low": 80, "mode": 120, "high": 180},
      "disk_read_mib_s": {"low": 300, "mode": 500, "high": 750},
      "disk_write_mib_s": {"low": 250, "mode": 450, "high": 700},
      "decompress_mib_s": {"low": 350, "mode": 550, "high": 850},
      "verify_mib_s": {"low": 700, "mode": 1100, "high": 1600},
      "metadata_seconds": {"low": 0.5, "mode": 1, "high": 2},
      "commit_seconds": {"low": 0.2, "mode": 0.5, "high": 1},
      "post_install_seconds": {"low": 0, "mode": 2, "high": 10},
      "overlap_fraction": {"low": 0.55, "mode": 0.7, "high": 0.85}
    },
    {
      "id": "insufficient-free-space",
      "description": "A one MiB model chunk cannot start the 25 GB alongside rebuild with only 20 GB free.",
      "evidence_basis": "Valve documents the alongside rebuild; the exact preflight policy is not public.",
      "logical_change_mib": 0.0000095367431640625,
      "compressed_download_mib": 1,
      "changed_uncompressed_mib": 1,
      "touched_file_mib": 23841.85791015625,
      "free_space_mib": 19073.486328125,
      "chunk_mib": 1,
      "failure_probability_per_attempt": 0,
      "mean_retry_backoff_seconds": 0,
      "deadline_seconds": 600,
      "network_mbps": 1000,
      "disk_read_mib_s": 120,
      "disk_write_mib_s": 100,
      "decompress_mib_s": 500,
      "verify_mib_s": 1000,
      "metadata_seconds": 1,
      "commit_seconds": 0.5,
      "post_install_seconds": 0,
      "overlap_fraction": 0.75
    }
  ]
}
