Tactical Reroll
⋯

Army rules in the ledger, measured (T-695, phase 2, 5 Oct)

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

Phase 1 (reports/tiers/2026-10-05-army-rules.md) catalogued every army rule and proposed eight dials. This step merges the four armyfx.json corrections, re-freezes the ledger's inputs, builds five of the dials (each 0 = today exactly) and measures each alone. Rules read on Wahapedia's 11th-edition pages in the sense of BSData 374f505; nothing here is their wording. Tools: tools/armyburst.js (the Burst variants), tools/armymeasure.js (held out and placebo), tools/exam.js (intervals). Numbers: build/t695/ (git-ignored), reproduced by the commands at the end.

The short answer

The conflict: does the ledger apply army-rule dice?

tools/ledger.js formEffects takes the rules a datasheet lists (DetFx.armyRules with kindfx.json's patches) and passes each effect through matrix.js unitLevel, so an unconditional, non-choice, unmarked effect would apply. None of the 16 armies had one. Effect by effect, on the snapshot before this step (31 effects):

ArmyEffectsFate
TyranidsSynapse's +1 S in meleedropped: the rule is an aura from a keyword (reaches others only); Synapse enters as the synapse kind
Space Marines (and the three chapters)Oath's re-roll hits; +1 to wound (Codex)dropped: a chosen target (unitLevel)
Adeptus MechanicusProtector's +1 BS and −1 to be hit; Conqueror's +1 WS and +1 APdropped: a choice's options (ARMY_PICK null)
Astra Militarumthe four Ordersdropped: a choice's options
Death Guard−1 Toughness; Skullsquirm's −1 to be hit; Rattlejoint's +1 APthe first switched off; the Plagues a choice
Leagues of Votannthe footings' +1 to hit (2); −1 to be woundeddropped: a choice's options (and vouched)
Orksthe riled 5+ invulnerable savedropped: vouched, counted never met (v4walk none)
Thousand Sonsthe four ritual effectsdropped: a choice's options (and marks)
World Eatersthe nine blessing effectsdropped: a choice's options

T-672's armyPick puts a choice's first option in, only in tools/burst.js --army-pick's file (none built today). The Drukhari's Pain and the Orks' riled dice live in unitfx.json and leaderfx.json, vouched, so they never applied either.

After the corrections: Death Guard's −1 Toughness in melee is now unconditional and applied. Its ranged half, the Plagues and the other three corrections sit in a choice or are vouched, so they change no ledger number.

The corrections and the snapshot

The dials (docs/lab/ledger/ledger.js, design/ledger.md section 38)

The three Burst dials read burstFx, which tools/armyburst.js writes and ledger-merge merges. That file holds each solo form's Burst again with the rule taken (tools/burst.js --field --army-variant). They act on Track A's Burst (burstKill on), as armyPick does, and only on attacks.

Not built: armyAura, armySpawn, armyMove.

Measured (each alone over Track A, 11th-edition lists, wCarry 0)

Strengths 0, 0.25, 0.5 and 1. "Held out": 3 seeded splits of the 15 armies, choosing the strength on 10 and scoring the gain on the other 5; the mean of the three folds ± their sd. Placebo: the same credit given to random units of each army, 3 draws. For a Burst dial, each unit's relative gain goes to another unit of its army; for a credit dial, the tables' units are swapped for as many random others. The placebo is chosen and scored the same way. Per-army Δ at 1 carries the exam's 95% interval (2,000 draws, seed 1).

DialPooled Δ at 0.25 / 0.5 / 1Held out ± spread (strengths chosen)Placebo held outPlacebo at 1TyranidsPer army at 1 [95%]
armyMarks−0.07 / −0.10 / +0.040.00 ± 0.00 (0, 0, 0)+0.01+0.050.0SM +0.7 [−1.9, +3.5], BA +1.6 [−5.5, +9.1], DA +1.4 [−0.7, +3.9], SW −2.1 [−10.3, +5.4], TSons −1.0 [−6.9, +4.2]
armyRounds−0.01 / −0.00 / −0.140.00 ± 0.00 (0, 0, 0)+0.01−0.320.0AdMech −0.9 [−6.3, +4.2], DG +1.1 [−2.3, +4.5], WE −2.3 [−7.4, +2.4]
armyStates−0.03 / −0.03 / −0.110.00 ± 0.00 (0, 0, 0)−0.07+0.040.0DG −1.7 [−5.5, +1.3], Drukhari −1.4 [−5.0, 0.0], Orks +1.5 [−0.9, +5.2]
armyEnabler+0.16 / +0.28 / +0.33 [+0.0, +0.8]+0.17 ± 0.24 (1, 1, 0.25)+0.01−0.040.0TSons +4.9 [+0.0, +11.7], Orks +0.2 [−1.1, +1.5]; WE 0.0
armyOrders+0.03 / +0.06 / +0.08 [−0.1, +0.3]0.00 ± 0.00 (1, 0, 1)0.00−0.180.0AM +1.2 [−1.8, +4.1]

Track A: 59.2 pooled over 15 armies; Tyranids 82.4 on the three 11th-edition lists. The exam at strength 1 on all five dials is in build/t695/exam.md.

Who moved (strength 1, Track A ranks).

Prediction against result

For the cascade

Doubts

Commands: node tools/armyburst.js --army <a> (or tools/ledger-all.js, whose chain now runs it), node tools/ledger-merge.js --army <a>, node tools/armymeasure.js --json build/t695/measure.json --write-candidates build/t695/cand (about 2 minutes), node tools/exam.js tools/ledger-benchmarks/2026-10-05-step34b-baseline.json build/t695/cand/<dial>-1.json … --md.