diff --git a/docs/superpowers/specs/2026-05-04-sp11-reward-as-controlled-subsystem.md b/docs/superpowers/specs/2026-05-04-sp11-reward-as-controlled-subsystem.md index 9b9eb2e6b..5bb99082e 100644 --- a/docs/superpowers/specs/2026-05-04-sp11-reward-as-controlled-subsystem.md +++ b/docs/superpowers/specs/2026-05-04-sp11-reward-as-controlled-subsystem.md @@ -562,8 +562,33 @@ After SP10's last slot at 339: | `[352..358)` | `REWARD_COMPONENT_GRAD_RATIO_BASE` (6 canaries) | 6 | | `358` | `SABOTEUR_ENGAGEMENT_RATE_INDEX` (canary) | 1 | | `359` | `PNL_REWARD_MAGNITUDE_EMA_INDEX` (canary) | 1 | +| `360` | `POPART_COMPONENT_MAG_EMA_INDEX` (canary, NEW B1b fix-up) | 1 | -Total: **20 new slots**. Bump `SP5_SLOT_END = 360`, `ISV_TOTAL_DIM = 360`. +Total: **21 new slots**. Bump `SP5_SLOT_END = 361`, `ISV_TOTAL_DIM = 361`. + +**Why slot 360 (amendment 2026-05-04 post-B1b smoke):** B1b's structural +refactor revealed that pre-SP11's `reward_components_per_sample[+0]` +(which feeds slot 63 = `REWARD_POPART_EMA_INDEX`) was being overloaded +to mean both "PopArt's normalization input" (= total reward magnitude +EMA) AND "popart-component-specific magnitude". Pre-SP11 these +collapsed to the same value because reward composition was inline +accumulation with popart as the dominant component. + +Post-B1b with explicit per-component decomposition, the SP11 mag-ratio +canary reading slot 63 saw the inflated TOTAL-reward magnitude as +"popart's signal", and the controller redistributed weight toward +popart (w_pop ≈ 2.0) based on a contaminated ratio. Symptom: B1b smoke +showed sharpe ≈ 3 vs B1a baseline ≈ 30, traced to the controller +amplifying a wrongly-attributed signal while attenuating the actually- +firing components. + +Resolution: allocate slot 360 for popart-component-specific magnitude +EMA. Slot 63 stays as PopArt's input (= total reward magnitude, +pre-SP11 invariant preserved). The SP11 mag-ratio canary reads slot +360 (popart-specific) + slots 64..68 (existing cf/trail/micro/opp_cost/ +bonus) to compute the 6-component ratios. No change to PopArt's +existing readers; one new producer kernel + one mag-ratio canary +signature change. ## 5. Producer kernels (4 total)