{
  "artifact": "active_expert_ceiling",
  "sprint": "42",
  "claim": "The Amdahl ceiling on decode-bandwidth gain from reducing active routed experts per token, recomputed per model rather than quoted from prose.",
  "method": "active(k) = trunk + lm_head + shared_expert + k * per_routed_expert; speedup(k->k') = active(k)/active(k'); ceiling = limit at k'=0. Pure arithmetic over a config decomposition. No model is loaded and no GPU is used.",
  "models": {
    "Qwen3.8-Flash-Next": {
      "source": "SPRINTS.md 19.3, decomposed from Qwen/Qwen3.8-Flash-Next/config.json: hidden 2560, moe_intermediate 640, 512 experts x 48 layers, 10 routed + 1 shared active, vocab 248320, tie_word_embeddings=false",
      "active_b_per_token": 6.0,
      "routed_active_b": 2.36,
      "per_expert_b": 0.236,
      "fixed_b": 3.64,
      "routed_share_of_active": 0.393333,
      "n_routed_active": 10,
      "ceiling_at_zero_experts": 1.6484,
      "sweep": [
        {
          "active_experts": 10,
          "active_b_per_token": 6.0,
          "speedup_vs_baseline": 1.0
        },
        {
          "active_experts": 9,
          "active_b_per_token": 5.764,
          "speedup_vs_baseline": 1.0409
        },
        {
          "active_experts": 8,
          "active_b_per_token": 5.528,
          "speedup_vs_baseline": 1.0854
        },
        {
          "active_experts": 7,
          "active_b_per_token": 5.292,
          "speedup_vs_baseline": 1.1338
        },
        {
          "active_experts": 6,
          "active_b_per_token": 5.056,
          "speedup_vs_baseline": 1.1867
        },
        {
          "active_experts": 5,
          "active_b_per_token": 4.82,
          "speedup_vs_baseline": 1.2448
        },
        {
          "active_experts": 4,
          "active_b_per_token": 4.584,
          "speedup_vs_baseline": 1.3089
        },
        {
          "active_experts": 3,
          "active_b_per_token": 4.348,
          "speedup_vs_baseline": 1.3799
        },
        {
          "active_experts": 2,
          "active_b_per_token": 4.112,
          "speedup_vs_baseline": 1.4591
        },
        {
          "active_experts": 1,
          "active_b_per_token": 3.876,
          "speedup_vs_baseline": 1.548
        },
        {
          "active_experts": 0,
          "active_b_per_token": 3.64,
          "speedup_vs_baseline": 1.6484
        }
      ]
    }
  },
  "ceiling_qwen38_flash_next": 1.6484,
  "why_this_file_exists": "SPRINTS.md 19.3 recorded 1.648x and 19.4 made it a PRE-REGISTERED upper bound on Sprint 36's search, while instructing 'recompute it per model'. There was no script, no config, no test and no artifact -- the bound existed only as prose. This makes the instruction executable and the number interrogable.",
  "does_not_prove": [
    "This is a BANDWIDTH ceiling only. Storage is a different question and the upside there is large: SPRINTS.md 19.3 records 120.8 B -> ~15 B at a 64-expert basis.",
    "It says nothing about whether a reduced active set preserves quality. That is Sprint 41's functional-rank question and Sprint 14's owed eval, not this.",
    "The k'=0 limit is not a model. It is the correct bound precisely because no real configuration can reach it.",
    "The decomposition is read from a config, not measured on hardware. A real decode step is memory-bound in ways a parameter count only approximates -- the same caveat Sprint 22 records against its own step law.",
    "One architecture. Any other model must be added to MODELS with its own source line; the routed share is architecture-specific and that is the whole point of this file."
  ],
  "cost_usd": 0.0,
  "generated_utc": "2026-08-27T19:01:33.303033+00:00",
  "git_rev": "6cb5ef4",
  "git_dirty": true,
  "run_id": "3b562b4c674a429b",
  "host_kind": "Darwin-arm64",
  "provenance_schema": "gpu-cert-provenance/1"
}