tools/ledger-steps.js writes each field per form to tools/ledger-steps-<army>.json; tools/ledger-merge.js copies them into docs/lab/ledger/<army>.json by form id (design/ledger.md section 12). The page reads a field only when its switch is on. Frozen inputs eb3590a, hash 30f0056e6103, BSData 374f505. Every form is rebuilt from the ledger's JSON and its Kill recomputed and checked against the JSON's (all four β, ranged and melee) before anything is written. Proof for each field: the ledger's JSON with the new field stripped is byte-identical to the commit before it, both armies. Raw numbers: Kill is enemy points per 100 points of the form, one turn, every charge landing, before the page's lands, scarcity and sliders.
condMult (T-614): conditional abilities at their shares of the game
Each form's Kill at β 6 with its vouched conditions met at the tier test's round 5 shares (an objective 50%, Synapse range 75%, below half strength 35%, below Starting Strength 35%, never for a lone model, a Battle-shocked target 20%; any other condition met all game, as the tier test reads it), over its Kill with them unmet (the ledger's reading). Conditions with different words are independent; effects on one condition are met together (matrix.js branches). A cell that re-rolls one die a volley keeps the ledger's size-bound cell, scaled by the shares' ratio at one model.
Hand check (tests/unit/ledgersteps.test.js): Genestealers' claws into Intercessors, 35/36 to hit (2+, re-rolling 1s) × 1/2 to wound × 2/3 unsaved = 0.3241 wounds an attack unmet; Vanguard Predator's wound re-roll on an objective half the game makes the wound roll 1/2 + 1/2 × 1/12 = 13/24, so 0.3511, ×13/12 exactly. Across the typical army the kernel gives their melee ×1.065 (×10 and ×5): less than the cell's ×1.083, as saturated slices take no more.
Proof: tyranids.json 1,393 form rows and space-marines.json 8,363, every one carrying condMult; stripped, both byte-identical to d2cca84 (2,900,920 and 15,761,720 bytes).
Tyranids: 313 of 1,106 forms carry a conditional attack; Synaptic Nexus's Goaded to Slaughter (+1 to hit in melee in Synapse, at 75%) leads. Space Marines: the Outriders' Thunderous Impact (+1 S and D the turn it charged: an "other" condition, met all game, as Kill already has every charge landing) leads. Four Tyranid forms fall a hair (melee ×0.99 to ×0.9999): more shooting leaves less for their fight phase.
| Form | Tyranids: pts | Kill β 6 (ranged + melee) | condMult (ranged / melee) | Kill β 6 with it | Change |
|---|---|---|---|---|---|
Tyranid Warriors with Melee Bio-Weapons ×3, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (s.tyranid-warriors-with-melee-bio-weapons.3.default.synaptic-nexus-goaded-to-slaughter) | 75 | 167.8 | 1 / 1.1957 | 200.7 | +32.8 (19.6%) |
Tyranid Warriors with Melee Bio-Weapons ×6, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (s.tyranid-warriors-with-melee-bio-weapons.6.default.synaptic-nexus-goaded-to-slaughter) | 150 | 147.0 | 1 / 1.2021 | 176.7 | +29.7 (20.2%) |
Von Ryan's Leapers ×3, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (s.von-ryan-s-leapers.3.default.synaptic-nexus-goaded-to-slaughter) | 55 | 165.8 | 1 / 1.1539 | 191.3 | +25.5 (15.4%) |
Hormagaunts ×20, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (s.hormagaunts.20.default.synaptic-nexus-goaded-to-slaughter) | 120 | 110.1 | 1 / 1.2027 | 132.4 | +22.3 (20.3%) |
Von Ryan's Leapers ×6, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (s.von-ryan-s-leapers.6.default.synaptic-nexus-goaded-to-slaughter) | 105 | 150.9 | 1 / 1.1432 | 172.6 | +21.6 (14.3%) |
Venomthropes ×3, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (s.venomthropes.3.default.synaptic-nexus-goaded-to-slaughter) | 55 | 145.9 | 1 / 1.1452 | 167.0 | +21.2 (14.5%) |
Carnifexes ×1, datasheet wargear, Synaptic Nexus (Goaded to Slaughter) (s.carnifexes.1.default.synaptic-nexus-goaded-to-slaughter) | 90 | 103.4 | 1 / 1.2048 | 124.5 | +21.2 (20.5%) |
Hormagaunts ×10, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (s.hormagaunts.10.default.synaptic-nexus-goaded-to-slaughter) | 70 | 106.4 | 1 / 1.1981 | 127.5 | +21.1 (19.8%) |
Tyranid Warriors with Melee Bio-Weapons ×6 led by Winged Tyranid Prime, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (j.tyranid-warriors-with-melee-bio-weapons.6.winged-tyranid-prime.auto.synaptic-nexus-goaded-to-slaughter) | 215 | 147.3 | 1 / 1.1421 | 168.2 | +20.9 (14.2%) |
Haruspex ×1, datasheet wargear (no choices), Synaptic Nexus (Goaded to Slaughter) (s.haruspex.1.default.synaptic-nexus-goaded-to-slaughter) | 125 | 151.9 | 1 / 1.1514 | 172.3 | +20.4 (13.4%) |
304 of 1106 forms move.
| Form | Space Marines: pts | Kill β 6 (ranged + melee) | condMult (ranged / melee) | Kill β 6 with it | Change |
|---|---|---|---|---|---|
Outrider Squad ×3, datasheet wargear (no choices), Ceramite Sentinels (s.outrider-squad.3.default.ceramite-sentinels) | 70 | 126.9 | 1.1458 / 2.2604 | 222.3 | +95.4 (75.2%) |
Outrider Squad ×3, datasheet wargear (no choices), Orbital Assault Force (s.outrider-squad.3.default.orbital-assault-force) | 70 | 126.9 | 1.1458 / 2.2604 | 222.3 | +95.4 (75.2%) |
Outrider Squad ×3, datasheet wargear (no choices), 1st Company Task Force (s.outrider-squad.3.default.1st-company-task-force) | 70 | 126.9 | 1 / 2.2592 | 213.8 | +86.9 (68.4%) |
Outrider Squad ×7, Auto-equip, Ceramite Sentinels (s.outrider-squad.7.auto.ceramite-sentinels) | 140 | 151.8 | 1.1935 / 2.0246 | 235.0 | +83.3 (54.9%) |
Outrider Squad ×7, Auto-equip, Orbital Assault Force (s.outrider-squad.7.auto.orbital-assault-force) | 140 | 151.8 | 1.1935 / 2.0246 | 235.0 | +83.3 (54.9%) |
Outrider Squad ×7, datasheet wargear, Ceramite Sentinels (s.outrider-squad.7.default.ceramite-sentinels) | 140 | 128.1 | 1.1377 / 2.1148 | 211.1 | +83.0 (64.8%) |
Outrider Squad ×7, datasheet wargear, Orbital Assault Force (s.outrider-squad.7.default.orbital-assault-force) | 140 | 128.1 | 1.1377 / 2.1148 | 211.1 | +83.0 (64.8%) |
Outrider Squad ×3, datasheet wargear (no choices), Bastion Task Force (s.outrider-squad.3.default.bastion-task-force) | 70 | 126.9 | 1.1458 / 1.9995 | 204.3 | +77.4 (61.0%) |
Outrider Squad ×7, datasheet wargear, 1st Company Task Force (s.outrider-squad.7.default.1st-company-task-force) | 140 | 128.1 | 1 / 2.1572 | 205.5 | +77.4 (60.4%) |
Outrider Squad ×7, Auto-equip, 1st Company Task Force (s.outrider-squad.7.auto.1st-company-task-force) | 140 | 151.8 | 1.0665 / 2.098 | 228.7 | +77.0 (50.7%) |
3050 of 5527 forms move.
killNC (T-605): the typical army's characters joined to their squads
Kill's shape (per β: ranged, melee, byClass) against the typical army with its characters joined. Each character that can lead a squad in the army (BSData's Leader links, matrix.js contextEnv) is spread over those squads in proportion to their copies, one leader per squad copy; the rest, and characters nothing in the army can join, stand alone. A joined share is part of its squad's target: wounds and points together at the squad's profile (the attached unit's Toughness is its bodyguards'; the squad's save stands in for the leader's), at their pooled points per wound. Precision weapons may still pick the leader out: each joined share is also a target only Precision weapons reach, at the leader's profile (that share can be taken twice, bounded by its wounds, only by forms with Precision). byClass splits a joined target's points between the squad's class and the leader's.
Composition: 128 of the army's 630 entries join, 270.6 of its 321.2 character points (84%); 758 targets (630 plus 128 Precision-only). Hand check (tests/unit/ledgersteps.test.js): three Hive Guard into five Intercessors (80 points, 10 wounds) and a Captain (80, 5) at β ∞: alone the Captain is the best target, 2/9 unsaved × 5/2 wounds a hit × 6 shots = 10/3 wounds × 16 points; joined only the squad's target is open, 2/9 × 2 × 6 = 8/3 wounds × 160/15. With joining off, killNC equals kill to the last digit.
Proof: both ledgers stripped of condMult and killNC are byte-identical to d2cca84; stripped of killNC alone (and the step file's hash), byte-identical to the condMult commit, so condMult is unchanged.
Kill at β 6 falls by a median 8.2% (Tyranids; 10th to 90th percentile −18.7% to −2.8%) and 8.4% (Space Marines); lone-character hunters fall most (the Primes, the Broodlord, the Red Terror). The audit's units: Warriors ×3 −4.0%, Hive Guard ×3 −6.1%, Genestealers ×10 −2.3%, Lictor −2.3% (Precision keeps its characters; the audit's bound without characters was −26%). 27 Tyranid forms rise, up to +7.5% (Barbgaunts ×10): squads now carry their leaders' points, and what kills squads well gains them.
| Form | Tyranids: pts | Kill β 6 (ranged + melee) | killNC β 6 (ranged / melee) | Kill β 6 with it | Change |
|---|---|---|---|---|---|
Winged Tyranid Prime ×1, datasheet wargear (no choices), Invasion Fleet (Swarming Instincts) (s.winged-tyranid-prime.1.default.invasion-fleet-swarming-instincts) | 65 | 130.7 | 0.0 / 95.2 | 95.2 | -35.5 (-27.2%) |
Winged Tyranid Prime ×1, datasheet wargear (no choices), Subterranean Assault (s.winged-tyranid-prime.1.default.subterranean-assault) | 65 | 127.8 | 0.0 / 93.7 | 93.7 | -34.1 (-26.7%) |
Broodlord ×1, datasheet wargear (no choices), Invasion Fleet (Swarming Instincts) (s.broodlord.1.default.invasion-fleet-swarming-instincts) | 80 | 136.1 | 0.0 / 102.3 | 102.3 | -33.8 (-24.8%) |
Haruspex ×1, datasheet wargear (no choices), Invasion Fleet (Swarming Instincts) (s.haruspex.1.default.invasion-fleet-swarming-instincts) | 125 | 176.1 | 21.6 / 121.9 | 143.6 | -32.5 (-18.5%) |
Tyrannocyte ×1, datasheet wargear (no choices), Invasion Fleet (Swarming Instincts) (s.tyrannocyte.1.default.invasion-fleet-swarming-instincts) | 80 | 119.4 | 43.8 / 43.7 | 87.5 | -31.9 (-26.7%) |
Tyranid Prime with Lash Whip ×1, datasheet wargear (no choices), Invasion Fleet (Hyper-Aggression) (s.tyranid-prime-with-lash-whip.1.default.invasion-fleet-hyper-aggression) | 75 | 158.2 | 0.0 / 126.6 | 126.6 | -31.7 (-20.0%) |
The Red Terror ×1, datasheet wargear (no choices), Subterranean Assault (s.the-red-terror.1.default.subterranean-assault) | 130 | 134.6 | 0.0 / 103.1 | 103.1 | -31.6 (-23.4%) |
The Red Terror ×1, datasheet wargear (no choices), Invasion Fleet (Swarming Instincts) (s.the-red-terror.1.default.invasion-fleet-swarming-instincts) | 130 | 135.6 | 0.0 / 104.2 | 104.2 | -31.4 (-23.2%) |
Tyranid Prime with Lash Whip ×1, datasheet wargear (no choices), Subterranean Assault (s.tyranid-prime-with-lash-whip.1.default.subterranean-assault) | 75 | 179.2 | 0.0 / 148.1 | 148.1 | -31.1 (-17.3%) |
Tyranid Prime with Lash Whip ×1, datasheet wargear (no choices), Invasion Fleet (Swarming Instincts) (s.tyranid-prime-with-lash-whip.1.default.invasion-fleet-swarming-instincts) | 75 | 183.3 | 0.0 / 152.7 | 152.7 | -30.6 (-16.7%) |
1082 of 1106 forms move.
| Form | Space Marines: pts | Kill β 6 (ranged + melee) | killNC β 6 (ranged / melee) | Kill β 6 with it | Change |
|---|---|---|---|---|---|
Techmarine ×1, datasheet wargear (no choices), Ironstorm Spearhead (s.techmarine.1.default.ironstorm-spearhead) | 55 | 191.6 | 58.3 / 79.1 | 137.4 | -54.2 (-28.3%) |
Techmarine ×1, datasheet wargear (no choices), 1st Company Task Force (s.techmarine.1.default.1st-company-task-force) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
Techmarine ×1, datasheet wargear (no choices), Anvil Siege Force (s.techmarine.1.default.anvil-siege-force) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
Techmarine ×1, datasheet wargear (no choices), Armoured Speartip (s.techmarine.1.default.armoured-speartip) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
Techmarine ×1, datasheet wargear (no choices), Bastion Task Force (s.techmarine.1.default.bastion-task-force) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
Techmarine ×1, datasheet wargear (no choices), Ceramite Sentinels (s.techmarine.1.default.ceramite-sentinels) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
Techmarine ×1, datasheet wargear (no choices), Firestorm Assault Force (s.techmarine.1.default.firestorm-assault-force) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
Techmarine ×1, datasheet wargear (no choices), Fulguris Task Force (s.techmarine.1.default.fulguris-task-force) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
Techmarine ×1, datasheet wargear (no choices), Gladius Task Force (s.techmarine.1.default.gladius-task-force) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
Techmarine ×1, datasheet wargear (no choices), Headhunter Task Force (s.techmarine.1.default.headhunter-task-force) | 55 | 165.1 | 51.8 / 65.8 | 117.5 | -47.6 (-28.8%) |
5517 of 5527 forms move.
synapseAdd (T-611): what one more Synapse source adds to a typical Tyranid list
Per β, Kill-equivalent points per 100 of the form that one more Synapse source adds, for a form with a SYNAPSE member; 0 for every other form and for the Space Marines. When its switch is on, the page drops the Synapse multiplier and adds this to Kill.
- The list: the typical army's Tyranid units (the top-quarter field's 38 Tyranid entries, 121.9 of its 2,000 points, each at the size and copies the lists field it, datasheet wargear, its own abilities, no detachment), scaled to 2,000 points: 16.3 units, 7.28 of them SYNAPSE (the colist's winning lists carry 5.7).
- Coverage: Synapse reaches 6" (armyfx.json). Each source covers a given unit with the same chance c, independently, set so the list's own 7.28 sources hold the round 5 share in Synapse range (75%): 1 − (1 − c)^7.28 = 0.75, c = 0.173. One more source brings a unit into range that wasn't with (1 − c)^7.28 × c = 0.25 × 0.173 = 0.0434. Range-extending rules and where units stand are left out: c is one number for every source and unit.
- Its worth: for each non-SYNAPSE unit of the list the rule reaches (TYRANIDS, listing Synapse), its Kill with the rule's +1 Strength in melee less its Kill without, its melee at its lands (the ledger's mean over its solo forms at that size), for its copies. SYNAPSE units count themselves in range (the ledger's convention: an aura from a keyword reaches others), so they gain nothing. Leadership (three dice for Battle-shock) isn't Kill, and Synaptic Nexus's own Synapse terms are a detachment's, which the list doesn't carry: both left out. The list gains 58.6 points a turn at β 6 (53.5 at β 3, 65.3 at ∞): Genestealers ×10 16.7, Hormagaunts ×20 8.9, Raveners 5.4, Lictor 4.5, Von Ryan's Leapers ×3 3.3; four shooting units lose a hair (−0.18 to −0.004: the kernel spreads their fight differently).
- So: one more source is worth 0.0434 × 58.6 = 2.54 points a turn, 4.23 per 100 for a 60-point source (Warriors ×3) and 1.95 for a 130-point Neurotyrant: about 2% of their Kill, where the multiplier gives them ×2.18 on all of Value.
Hand check (tests/unit/ledgersteps.test.js): the coverage identities; Genestealers' claws into Intercessors with +1 Strength wound on 3+ instead of 4+, 35/36 × 2/3 × 2/3 against 35/108 (×4/3); their gain recomputed from Kill with and without; the Warriors ×3's credit 0.0434 × the list's gain × 100 ÷ 60 at each β; 0 for the Hive Guard and every Space Marine.
Proof: both ledgers stripped of all three step fields are byte-identical to d2cca84; stripped of synapseAdd alone (and the step file's hash), byte-identical to the killNC commit, so condMult and killNC are unchanged.
The ten forms it moves most are all Warriors ×3 (one per detachment, 60 points, +4.23 at β 6):
| Form | Tyranids: pts | Kill β 6 (ranged + melee) | synapseAdd β 6 | Kill β 6 with it | Change |
|---|---|---|---|---|---|
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Invasion Fleet (Swarming Instincts) (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.invasion-fleet-swarming-instincts) | 60 | 254.9 | 4.2336 | 259.1 | +4.2 (1.7%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Ambush Predators or 4 others (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.ambush-predators-5) | 60 | 208.5 | 4.2336 | 212.8 | +4.2 (2.0%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Assimilation Swarm (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.assimilation-swarm) | 60 | 208.5 | 4.2336 | 212.8 | +4.2 (2.0%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Invasion Fleet (Hyper-Aggression) (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.invasion-fleet-hyper-aggression) | 60 | 206.4 | 4.2336 | 210.6 | +4.2 (2.1%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Subterranean Assault (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.subterranean-assault) | 60 | 236.2 | 4.2336 | 240.4 | +4.2 (1.8%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Synaptic Nexus (Synaptic Augmentation) (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.synaptic-nexus-synaptic-augmentation) | 60 | 208.5 | 4.2336 | 212.8 | +4.2 (2.0%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Synaptic Nexus (Goaded to Slaughter) (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.synaptic-nexus-goaded-to-slaughter) | 60 | 208.5 | 4.2336 | 212.8 | +4.2 (2.0%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Unending Swarm (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.unending-swarm) | 60 | 208.5 | 4.2336 | 212.8 | +4.2 (2.0%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Vanguard Onslaught (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.vanguard-onslaught) | 60 | 208.5 | 4.2336 | 212.8 | +4.2 (2.0%) |
Tyranid Warriors with Ranged Bio-Weapons ×3, Auto-equip, Warrior Bioform Onslaught (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.warrior-bioform-onslaught) | 60 | 208.5 | 4.2336 | 212.8 | +4.2 (2.0%) |
492 of 1,106 forms move. By datasheet (each one's form with the most; the credit is one number over the form's points):
| Datasheet (its form with the most) | pts | synapseAdd β 6 | 3 / 12 / ∞ |
|---|---|---|---|
Tyranid Warriors with Ranged Bio-Weapons ×3 (s.tyranid-warriors-with-ranged-bio-weapons.3.auto.ambush-predators-5) | 60 | 4.2336 | 3.8671 / 4.5806 / 4.7163 |
Winged Tyranid Prime ×1 (s.winged-tyranid-prime.1.default.ambush-predators-5) | 65 | 3.908 | 3.5696 / 4.2282 / 4.3535 |
Parasite of Mortrex ×1 (s.parasite-of-mortrex.1.default.ambush-predators-6) | 70 | 3.6288 | 3.3146 / 3.9262 / 4.0426 |
Tyranid Prime with Lash Whip ×1 (s.tyranid-prime-with-lash-whip.1.default.ambush-predators-5) | 75 | 3.3869 | 3.0936 / 3.6645 / 3.7731 |
Tyranid Warriors with Melee Bio-Weapons ×3 (s.tyranid-warriors-with-melee-bio-weapons.3.default.ambush-predators-5) | 75 | 3.3869 | 3.0936 / 3.6645 / 3.7731 |
Broodlord ×1 (s.broodlord.1.default.ambush-predators-6) | 80 | 3.1752 | 2.9003 / 3.4354 / 3.5373 |
Neurolictor ×1 (s.neurolictor.1.default.ambush-predators) | 80 | 3.1752 | 2.9003 / 3.4354 / 3.5373 |
Zoanthropes ×3 (s.zoanthropes.3.default.ambush-predators-6) | 90 | 2.8224 | 2.578 / 3.0537 / 3.1442 |
Tyranid Warriors with Ranged Bio-Weapons ×3 + Winged Tyranid Prime (j.tyranid-warriors-with-ranged-bio-weapons.3.winged-tyranid-prime.auto.ambush-predators-5) | 125 | 2.0321 | 1.8562 / 2.1987 / 2.2638 |
Neurotyrant ×1 (s.neurotyrant.1.default.ambush-predators-5) | 130 | 1.954 | 1.7848 / 2.1141 / 2.1768 |