Each run: tools/ledgerfit.js fits the base (every step switch off) and fits again with the run's switches on, by the same procedure: the seven weights and lands fitted, everything else hibernated at tools/ledger-benchmarks/2026-10-03-step6-baseline.json; ridge λ 0.01 toward the base benchmark's values; the same seeds. Lists: tyr.auspexFull, tyr.hivemindFull, tyr.secondFull, tyr.maelstrom, tyr.astrategas, sm.auspexFull, sm.tobias. Yardstick through compute() at each fit (ρ; pairwise on the tiers S to D, as the step log). Leave one list out: each list scored by the fit on the other 6. Noise: each army's SD of mean ρ over the scrambled fits (10 per ledger, the base's and the run's pooled: 20). Hint by the keep rule: KEEP only when the mean ρ and mean pairwise both rise and neither army's mean ρ falls past its noise. A hint; the supervisor decides.
| Run | Mean ρ (base → on) | Mean pairwise | Tyranids ρ | Space Marines ρ | Left out: mean ρ | Left out: mean pairwise | Hint | Left out agrees |
|---|---|---|---|---|---|---|---|---|
| base re-fit (against the step-6 weights) | 0.490 → 0.486 (−0.004) | 70.8% → 70.5% (−0.2) | 0.589 → 0.585 (−0.004) | 0.241 → 0.238 (−0.003) | 0.490 → 0.486 (−0.004) | 70.8% → 70.5% (−0.2) | – | – |
| burstKill + threatSoak | 0.486 → 0.504 (+0.019) | 70.5% → 71.9% (+1.3) | 0.585 → 0.574 (−0.011) | 0.238 → 0.330 (+0.092) | 0.486 → 0.506 (+0.020) | 70.5% → 71.9% (+1.4) | KEEP | yes (KEEP) |
| burstKill + threatSoak + r.mortal=1 | 0.486 → 0.506 (+0.020) | 70.5% → 71.9% (+1.4) | 0.585 → 0.577 (−0.008) | 0.238 → 0.329 (+0.091) | 0.486 → 0.503 (+0.017) | 70.5% → 71.8% (+1.2) | KEEP | yes (KEEP) |
The base row compares the step-6 baseline as it stands (its weights, unfitted; left out is in sample there) with the base re-fitted on the 7 lists. Noise (SD of mean ρ, scrambled fits): Tyranids 0.059, Space Marines 0.096, all lists 0.053 (first run's pool).
Per list (ρ / pairwise, S to D)
| List | Step 6 | Base re-fit | burstKill + threatSoak | burstKill + threatSoak + r.mortal=1 |
|---|---|---|---|---|
| tyr.auspexFull | 0.688 / 80.8% | 0.693 / 81.0% | 0.680 / 80.1% | 0.684 / 80.3% |
| tyr.hivemindFull | 0.664 / 80.2% | 0.658 / 80.1% | 0.640 / 78.6% | 0.641 / 78.7% |
| tyr.secondFull | 0.644 / 78.6% | 0.622 / 77.5% | 0.581 / 75.5% | 0.584 / 75.6% |
| tyr.maelstrom | 0.571 / 71.4% | 0.565 / 71.0% | 0.580 / 73.8% | 0.584 / 73.8% |
| tyr.astrategas | 0.381 / 65.9% | 0.386 / 66.2% | 0.389 / 67.3% | 0.392 / 67.4% |
| sm.auspexFull | 0.284 / 63.4% | 0.280 / 63.2% | 0.372 / 66.8% | 0.371 / 66.8% |
| sm.tobias | 0.197 / 54.9% | 0.195 / 54.7% | 0.288 / 61.0% | 0.287 / 61.0% |
Left out (each list by the fit on the others), ρ / pairwise:
| List | Base re-fit | burstKill + threatSoak | burstKill + threatSoak + r.mortal=1 |
|---|---|---|---|
| tyr.auspexFull | 0.692 / 80.9% | 0.680 / 80.1% | 0.682 / 80.2% |
| tyr.hivemindFull | 0.657 / 80.0% | 0.637 / 78.5% | 0.637 / 78.5% |
| tyr.secondFull | 0.623 / 77.6% | 0.588 / 75.8% | 0.577 / 75.3% |
| tyr.maelstrom | 0.567 / 71.0% | 0.584 / 73.8% | 0.579 / 73.5% |
| tyr.astrategas | 0.390 / 66.3% | 0.391 / 67.3% | 0.389 / 67.2% |
| sm.auspexFull | 0.277 / 63.0% | 0.370 / 66.7% | 0.368 / 66.6% |
| sm.tobias | 0.194 / 54.7% | 0.292 / 61.2% | 0.289 / 61.1% |
The fitted knobs
| Knob | Step 6 | Base re-fit | burstKill + threatSoak | burstKill + threatSoak + r.mortal=1 |
|---|---|---|---|---|
| lands | 1.500 | 1.451 | 1.451 | 1.451 |
| wKill | 498.2 | 445.6 | 379.7 | 388.1 |
| wSoak | 14.97 | 15.14 | 15.23 | 15.34 |
| wScore | 9.652 | 9.890 | 10.02 | 10.02 |
| wActions | 1.306 | 1.296 | 1.303 | 1.302 |
| wHold | 18.89 | 19.86 | 19.82 | 19.94 |
| wPresence | 2.515 | 2.605 | 2.729 | 2.687 |
| wSpawn | 15.65 | 15.25 | 15.36 | 15.31 |
Movers (ranks between the base re-fit and the run's re-fit; letters per list)
burstKill + threatSoak. Tyranids: Ripper Swarms 38 → 50 (B/C/B/D/D), Harpy 32 → 22 (D/D/D/F/D), Psychophage 27 → 36 (B/B/A/B/C), Hormagaunts 23 → 16 (S/A/B/A/S), Neurolictor 21 → 28 (S/S/S/–/S), Raveners 36 → 29 (S/B/A/B/A), Winged Tyranid Prime 30 → 24 (C/B/B/C/B), Toxicrene 26 → 32 (C/–/–/D/D). Space Marines: Apothecary 10 → 77 (B/D), Rhino 18 → 70 (B/D), Firestrike Servo-Turrets 64 → 23 (B/D), Captain in Phobos Armour 36 → 76 (B/D), Lieutenant in Phobos Armour 44 → 78 (C/C), Techmarine 14 → 41 (A/B), Company Heroes 25 → 52 (A/B), Terminator Assault Squad 63 → 39 (S/B).
burstKill + threatSoak + r.mortal=1. Tyranids: Ripper Swarms 38 → 50 (B/C/B/D/D), Harpy 32 → 23 (D/D/D/F/D), Psychophage 27 → 36 (B/B/A/B/C), Hormagaunts 23 → 16 (S/A/B/A/S), Neurolictor 21 → 28 (S/S/S/–/S), Raveners 36 → 29 (S/B/A/B/A), Winged Tyranid Prime 30 → 24 (C/B/B/C/B), Toxicrene 26 → 32 (C/–/–/D/D). Space Marines: Apothecary 10 → 77 (B/D), Rhino 18 → 70 (B/D), Firestrike Servo-Turrets 64 → 23 (B/D), Captain in Phobos Armour 36 → 76 (B/D), Lieutenant in Phobos Armour 44 → 78 (C/C), Techmarine 14 → 41 (A/B), Company Heroes 25 → 52 (A/B), Terminator Assault Squad 63 → 39 (S/B).
Base re-fit against step 6: Tyranids: Neurogaunts 29 → 22 (B/C/C/C/C), Haruspex 24 → 29 (B/B/A/A/B), Biovores 5 → 1 (S/S/S/S/S), Hive Tyrant 3 → 6 (S/A/S/A/A), Hormagaunts 26 → 23 (S/A/B/A/S), Toxicrene 23 → 26 (C/–/–/D/D), Trygon 22 → 24 (B/C/B/B/A), Termagants 36 → 34 (B/B/C/B/A). Space Marines: Outrider Squad 7 → 4 (A/C), Invictor Tactical Warsuit 19 → 22 (B/D), Lieutenant 31 → 34 (S/C), Land Raider 57 → 54 (A/C), Land Raider Crusader 68 → 65 (B/D), Intercessor Squad 15 → 13 (S/A), Rhino 20 → 18 (B/D), Tactical Squad 21 → 19 (B/D).
Checks and run times
- Each fit's latents (every unit's ranking row) matched compute() at the fitted setting, the largest relative difference 5.8e-16; every form's basis matched valueForm() (6.3e-16).
- Ranking rows: base solo/solo; burstKill + threatSoak solo/solo; burstKill + threatSoak + r.mortal=1 solo/solo.
- Run times (the main fit; with folds and scrambles on 3 threads): base 3.12 s (20.7 s); burstKill + threatSoak 6.83 s (37 s); burstKill + threatSoak + r.mortal=1 5.11 s (34.7 s). Total 93.8 s.