Tactical Reroll
⋯

New ingredients from the cross-army misses (T-670, 5 Oct)

From reports/tiers/2026-10-05-ingredients.md , rendered when the site is built.

The question. T-669 found groups of units that the ledger gets wrong in many armies: leaders with a squad buff, psykers, aircraft, Lone Operatives and the cheapest units. Can a dial for each lift the 15 armies the ledger was never fitted on (Track A pools 59.4% pairwise there)? Each idea is a dial on Track A (step 34b). At strength 0 every number is exactly as before. Each was scored with tools/exam.js's pairwise on the 15 armies, pooled with each army counted once, and the Tyranids are shown beside them. Held out: a dial's strength is chosen on 10 armies and scored on the other 5, three folds, repeated over 3 random splits (seeds 1 to 3). Each army's held-out Δ is averaged over the seeds, and the ± is the standard error over the 15 armies.

DialBest strength (in sample)Pooled in-sample ΔHeld-out Δ ± SEArmies betterTyranids Δ
leadersLeading (existing, T-604)off; on gives −2.30.00.0 ± 0.02 / 15 on−1.1 on
joinedMarginal (existing, T-624)off; on gives −3.40.00.0 ± 0.05 / 15 on−4.9 on
joinedMarginal + joinedShapley (existing)off; on gives −1.40.0−0.6 ± 0.35 / 15 on−2.5 on
attachChars (existing, step 36b; not a leader credit)on+1.1+1.1 ± 0.711 / 15−0.0
leaderCredit λ (new, 0 to 1)0; λ 0.25 gives −0.4, λ 1 gives −3.40.0−0.8 ± 0.23 / 15 at 0.25−0.5 at 0.25
aircraftBoard a (new, 0 to 1)1+0.2+0.2 ± 0.15 / 15, none worse+0.2
loneOpSoak σ (new, 0 to 2)1 to 2+0.00.0 ± 0.01 / 15+0.1 at 2
smallPiece e (new, 0 to 0.5)0.5 (the edge)+1.4+1.2 ± 1.09 / 15−3.1
aircraftBoard 1 + smallPiece 0.5(chosen jointly)+1.6+1.5 ± 1.010 / 15−2.8
the two + attachChars, smallPiece 0.4(chosen jointly)+2.5+2.2 ± 1.310 / 15−2.7

The exam's bootstrap (node tools/exam.js on the saved settings, 2,000 draws) gives these pooled intervals against A: aircraftBoard +0.2 [+0.0, +0.5]; smallPiece +1.4 [−0.7, +3.5]; the two together +1.6 [−0.4, +3.8]; all three with attachChars +2.5 [+0.3, +4.7] when units are resampled and [+0.0, +4.9] when armies are. That makes 61.9% pooled, from 59.4%.

What each dial does (docs/lab/ledger/ledger.js; design/ledger.md section 29)

Read: two new dials held up on armies they weren't chosen on, so they are on the page (/lab/ledger/, "Ingredients (T-670)"), off by default: aircraftBoard (small and safe) and smallPiece (the larger gain, but its interval crosses 0 and it costs the Tyranids 3 points). Together with the existing attachChars switch they lift the 15 armies by +2.2 held out. That is the first pooled interval clear of 0 on the exam, though only just. leaderCredit and loneOpSoak stay in ledger.js as dials at 0, off and not on the page. Leader credit from the joined forms points the wrong way, and Lone Operative as Soak is too small to register. Nothing changes Track A or Track B here: adopting them is the supervisor's call.

How it's done: the dials are in ledger.js, and tests/unit/ledgerpage.test.js checks each one by hand. A scratch harness put Track A plus each grid point through compute() exactly as tools/exam.js does, which reproduces its A column (59.4, Tyranids 79.3). Grids: leaderCredit 0, 0.1, 0.25, 0.5, 1; aircraftBoard 0 to 1 by 0.25; loneOpSoak 0 to 2 by 0.5; smallPiece 0 to 0.5 by 0.05; the joint grid aircraftBoard {0, 0.5, 1} × smallPiece {0, 0.1, …, 0.5} × attachChars {off, on}.