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.auspex, tyr.hivemind, tyr.second, 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.472 → 0.464 (−0.008) | 70.1% → 69.7% (−0.4) | 0.564 → 0.554 (−0.011) | 0.241 → 0.238 (−0.003) | 0.472 → 0.460 (−0.012) | 70.1% → 69.6% (−0.5) | – | – |
| killClassWeight | 0.464 → 0.456 (−0.008) | 69.7% → 69.4% (−0.3) | 0.554 → 0.548 (−0.006) | 0.238 → 0.226 (−0.012) | 0.460 → 0.451 (−0.009) | 69.6% → 69.2% (−0.4) | REVERT: mean ρ −0.008; mean pairwise −0.3 points | yes (REVERT) |
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.038, Space Marines 0.107, all lists 0.038 (first run's pool).
Per list (ρ / pairwise, S to D)
| List | Step 6 | Base re-fit | killClassWeight |
|---|---|---|---|
| tyr.auspex | 0.662 / 79.8% | 0.656 / 79.4% | 0.650 / 79.1% |
| tyr.hivemind | 0.622 / 78.6% | 0.616 / 78.5% | 0.605 / 78.2% |
| tyr.second | 0.587 / 76.7% | 0.568 / 75.7% | 0.555 / 75.1% |
| tyr.maelstrom | 0.571 / 71.4% | 0.554 / 71.0% | 0.554 / 70.8% |
| tyr.astrategas | 0.381 / 65.9% | 0.376 / 65.5% | 0.375 / 65.4% |
| sm.auspexFull | 0.284 / 63.4% | 0.281 / 63.2% | 0.275 / 62.8% |
| sm.tobias | 0.197 / 54.9% | 0.195 / 54.7% | 0.176 / 54.2% |
Left out (each list by the fit on the others), ρ / pairwise:
| List | Base re-fit | killClassWeight |
|---|---|---|
| tyr.auspex | 0.649 / 79.0% | 0.639 / 78.6% |
| tyr.hivemind | 0.608 / 78.2% | 0.599 / 77.9% |
| tyr.second | 0.556 / 75.2% | 0.555 / 75.1% |
| tyr.maelstrom | 0.556 / 71.0% | 0.554 / 70.8% |
| tyr.astrategas | 0.381 / 65.9% | 0.382 / 65.8% |
| sm.auspexFull | 0.272 / 62.9% | 0.254 / 61.7% |
| sm.tobias | 0.199 / 55.0% | 0.176 / 54.2% |
The fitted knobs
| Knob | Step 6 | Base re-fit | killClassWeight |
|---|---|---|---|
| lands | 1.500 | 1.451 | 1.451 |
| wKill | 498.2 | 411.4 | 389.9 |
| wSoak | 14.97 | 14.71 | 14.80 |
| wScore | 9.652 | 10.02 | 10.13 |
| wActions | 1.306 | 1.292 | 1.295 |
| wHold | 18.89 | 19.87 | 20.32 |
| wPresence | 2.515 | 2.739 | 2.695 |
| wSpawn | 15.65 | 15.34 | 15.32 |
Movers (ranks between the base re-fit and the run's re-fit; letters per list)
killClassWeight. Tyranids: Neurogaunts 22 → 20 (B/C/C/C/C), Exocrine 20 → 22 (A/A/A/S/S), Tyranid Warriors with Ranged Bio-Weapons 13 → 12 (C/C/B/D/C), The Red Terror 12 → 13 (A/A/S/–/–), Harpy 27 → 26 (D/–/–/F/D), Toxicrene 26 → 27 (–/–/–/D/D), Gargoyles 47 → 46 (–/B/B/A/S), Hive Crone 46 → 47 (D/–/–/F/D). Space Marines: Eradicator Squad 31 → 9 (A/B), Centurion Assault Squad 30 → 11 (B/C), Gladiator Lancer 38 → 19 (A/C), Centurion Devastator Squad 32 → 14 (B/C), Redemptor Dreadnought 42 → 26 (A/C), Lieutenant in Phobos Armour 44 → 58 (C/C), Devastator Squad 23 → 10 (B/D), Dreadnought 52 → 40 (C/D).
Base re-fit against step 6: Tyranids: Neurogaunts 29 → 22 (B/C/C/C/C), Harpy 33 → 27 (D/–/–/F/D), Haruspex 24 → 30 (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 (–/–/–/D/D), Von Ryan's Leapers 6 → 4 (S/B/A/B/C). Space Marines: Tactical Squad 21 → 16 (B/D), Land Raider 57 → 53 (A/C), Land Raider Crusader 68 → 64 (B/D), Outrider Squad 7 → 4 (A/C), Scout Squad 23 → 20 (S/S), Eradicator Squad with Heavy Bolters 18 → 21 (A/B), Invictor Tactical Warsuit 19 → 22 (B/D), Lieutenant 31 → 34 (S/C).
Checks and run times
- Each fit's latents (every unit's ranking row) matched compute() at the fitted setting, the largest relative difference 3.9e-16; every form's basis matched valueForm() (6.6e-16).
- Ranking rows: base solo/solo; killClassWeight solo/solo.
- Run times (the main fit; with folds and scrambles on 3 threads): base 4.5 s (33.5 s); killClassWeight 5.63 s (45 s). Total 80 s.