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.
| Dial | Best strength (in sample) | Pooled in-sample Δ | Held-out Δ ± SE | Armies better | Tyranids Δ |
|---|---|---|---|---|---|
leadersLeading (existing, T-604) | off; on gives −2.3 | 0.0 | 0.0 ± 0.0 | 2 / 15 on | −1.1 on |
joinedMarginal (existing, T-624) | off; on gives −3.4 | 0.0 | 0.0 ± 0.0 | 5 / 15 on | −4.9 on |
joinedMarginal + joinedShapley (existing) | off; on gives −1.4 | 0.0 | −0.6 ± 0.3 | 5 / 15 on | −2.5 on |
attachChars (existing, step 36b; not a leader credit) | on | +1.1 | +1.1 ± 0.7 | 11 / 15 | −0.0 |
leaderCredit λ (new, 0 to 1) | 0; λ 0.25 gives −0.4, λ 1 gives −3.4 | 0.0 | −0.8 ± 0.2 | 3 / 15 at 0.25 | −0.5 at 0.25 |
aircraftBoard a (new, 0 to 1) | 1 | +0.2 | +0.2 ± 0.1 | 5 / 15, none worse | +0.2 |
loneOpSoak σ (new, 0 to 2) | 1 to 2 | +0.0 | 0.0 ± 0.0 | 1 / 15 | +0.1 at 2 |
smallPiece e (new, 0 to 0.5) | 0.5 (the edge) | +1.4 | +1.2 ± 1.0 | 9 / 15 | −3.1 |
| aircraftBoard 1 + smallPiece 0.5 | (chosen jointly) | +1.6 | +1.5 ± 1.0 | 10 / 15 | −2.8 |
| the two + attachChars, smallPiece 0.4 | (chosen jointly) | +2.5 | +2.2 ± 1.3 | 10 / 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)
- Leaders. Every army's build/ledger file already holds joined forms (66 to 9,638 a file), so nothing needed generating. The existing switches all hurt.
leadersLeadingandjoinedMarginallose 2 to 3 points in 10 to 13 armies. The newleaderCreditgives a leader λ of the gap between its solo Value and its worth at the margin leading, and it hurts at every λ. It hurts with Kill read the same way on solo and joined forms too (burstKill off: −0.1 at λ 0.25, −1.7 at λ 1). The engine's measured buff to the squad moves leaders, but not the ones the reviewers rate.attachCharshelps (+1.1, 11 of 15), but it reads Kill against an enemy whose characters are attached; it gives our own leaders nothing. - aircraftBoard a: an AIRCRAFT form's Kill × (1 − 0.2a) and its Score, Hold and Presence × (1 − a). In 11th edition, aircraft start in strategic reserves and go back there at the end of every enemy turn, so they shoot from round two and are never on the board when objectives are scored. The ledger already gave them almost no Score, Hold or Presence (they can't act), so the dial is in effect 20% off their Kill. The gain is small, but it never costs an army anything. The reviewers' gap is bigger than the rule explains (T-669's fitted move was −97 percentile points).
- loneOpSoak σ: a solo Lone Operative adds σ × its shooting Soak × 0.5 ÷ 0.5 (half the enemy's shooting can't reach it past 12"), outside the threat gate. It does nothing, because Soak is 2 to 5% of a Lone Operative's Value at Track A. Even σ 40 gives only +0.3. The protection is real, but Soak is the wrong place to credit it. It may belong on Kill over the unit's life instead.
- smallPiece e: the final Value × (points ÷ the army's median reference points)^e. This is the points exponent (
pointsExpat −e), centred so that the median unit keeps its Value. Its best value is at the top of the allowed range, and the in-sample gain is still rising there. It helps Astra Militarum (+8.3), Thousand Sons, Leagues of Votann, Genestealer Cults and Orks. It costs the Adeptus Mechanicus (−6.8) and the Tyranids (−3.1).
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}.