T-564 (Jordan's rule, 2 Oct, via the design session: no more every-army runs until the Tyranid table is within one letter of Auspex for 85% of its 44 graded units, 38 of 44). The raw table: node tools/tiertest.js --rawdump tyranids (reports/tiers/2026-10-02-tyranids-raw.json and .csv, about 35 s); composed by node tools/tierbench.js (tools/tierbench.js, 13 ms a run, 31 ms to read the table). One switch per residual report's finding (reports/tiers/2026-10-02-residuals-1.md to -3.md). Letters are the within-army view (top 10% S, 15% A, 25% B, 30% C, the rest D over the 52 Tyranids). A report: nothing here changes a published score.
The check. With every switch off, compose reproduces round 10 (T-563) exactly: all 52 Tyranids' composite, tie key, within-army letter and final score are identical to the run that wrote the table (difference 0), every other army's composite too (largest difference 0), and the published round-10 JSON's letters and composites (to its 2 decimals) agree for all 52.
In short. Baseline: 31 of 44 within one letter (70%). All ten switches on: 30 (68%), against the 85% line of 38. No combination of the ten gets there: the best subset reaches 36 (82%). Four switches move the yardsticks alone: bannerLendOnly (35 within one, ρ 0.51 → 0.64: the Lash Whip Prime A → C, Pyrovores D → B, Hyperadapted Raveners C → B), reArriverGateExempt (32, ρ 0.57: Raveners and the Red Terror D → B), bestLeader (ρ 0.56: Raveners D → C as the pair) and auraToNeighbours (ρ 0.55, the Maleceptor 83 → 91, no letter). bestSize is the one that costs: every unit's largest squad lives longer, so most monsters and small squads lose ground to hordes at full size (Neurogaunts A → S, 20 letters move; within one 31 → 29), and dropping it from the all-on run gives 34 (77%, ρ 0.76). turnsHarmonic barely moves Neurogaunts in round 10 (97.5 → 96.5): round 9's survival gate, which it was found against, is gone, and the harmonic mean lowers every horde together. With all ten on, 14 units remain two or more letters off; section 3 starts each one's investigation.
1. Yardsticks
Within one: our within-army letter and Auspex's at most one letter apart. Same letter on our ruler: Auspex's letters re-cut at the within-army quota (round 8's strict). Raw: the same letter as printed. ρ: Spearman between our tie key and Auspex's order (SE: Bonett and Wright's). Tyranid list share: ρ with the share of the 23 winning lists. Letters moved: Tyranid within-army letters that change against the baseline (Auspex's letter in brackets).
| Run | Within one (of 44) | Same, our ruler | Raw same | ρ (SE) | Tyranid list share ρ | Letters moved |
|---|---|---|---|---|---|---|
| Baseline (round 10) | 31 (70%) | 19 | 14 | 0.51 (±0.12) | 0.46 | none |
bannerLendOnly alone | 35 (80%) | 26 | 13 | 0.64 (±0.10) | 0.43 | 10: Biovores B→A (S), Hierophant C→D (D), Hyperadapted Raveners C→B (S), Old One Eye B→C (B), Pyrovores D→B (A), Ripper Swarms B→A (B), Screamer-killer B→C (B), Tyranid Prime with Lash Whip A→C (C), Winged Hive Tyrant C→B (A), Winged Tyranid Prime A→B |
bannerModelCount alone | 31 (70%) | 19 | 14 | 0.54 (±0.12) | 0.48 | 2: Haruspex C→B (B), Ripper Swarms B→C (B) |
turnsHarmonic alone | 31 (70%) | 19 | 14 | 0.51 (±0.12) | 0.45 | 4: Gargoyles S→A, Haruspex C→B (B), Screamer-killer B→C (B), Tyranid Prime with Lash Whip A→S (C) |
reArriveAfterKill alone | 31 (70%) | 19 | 14 | 0.51 (±0.12) | 0.46 | none |
bestSize alone | 29 (66%) | 21 | 10 | 0.51 (±0.12) | 0.45 | 20: Barbgaunts C→B, Carnifexes C→B (C), Genestealers C→B, Hive Guard C→B (A), Lictor S→A, Maleceptor B→C (S), Neurogaunts A→S (B), Norn Emissary A→B (S), Old One Eye B→C (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Ripper Swarms B→C (B), Screamer-killer B→C (B), Toxicrene B→C, Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Venomthropes C→B (B), Winged Hive Tyrant C→D (A), Zoanthropes C→B (S) |
bestLeader alone | 31 (70%) | 20 | 11 | 0.56 (±0.12) | 0.53 | 6: Carnifexes C→B (C), Raveners D→C (S), Ripper Swarms B→C (B), Screamer-killer B→C (B), Winged Hive Tyrant C→D (A), Zoanthropes C→B (S) |
reArriverGateExempt alone | 32 (73%) | 22 | 12 | 0.57 (±0.11) | 0.53 | 6: Hyperadapted Raveners C→D (S), Raveners D→B (S), Ripper Swarms B→C (B), Screamer-killer B→C (B), The Red Terror D→B (A), Winged Hive Tyrant C→D (A) |
auraToNeighbours alone | 31 (70%) | 19 | 14 | 0.55 (±0.12) | 0.49 | none |
spawnShare75 alone | 31 (70%) | 19 | 14 | 0.52 (±0.12) | 0.47 | 2: Biovores B→A (S), Norn Emissary A→B (S) |
offTableSurvival alone | 31 (70%) | 19 | 14 | 0.52 (±0.12) | 0.47 | 2: The Red Terror D→C (A), Winged Hive Tyrant C→D (A) |
| All ten on | 30 (68%) | 21 | 13 | 0.71 (±0.09) | 0.57 | 29: Barbgaunts C→B, Biovores B→A (S), Broodlord C→B, Carnifexes C→B (C), Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hive Tyrant B→C (S), Hyperadapted Raveners C→A (S), Neurogaunts A→S (B), Neurotyrant B→C (A), Norn Emissary A→B (S), Old One Eye B→D (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→A (S), Screamer-killer B→C (B), The Red Terror D→A (A), The Swarmlord A→B (S), Toxicrene B→C, Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Tyrannofex B→C (S), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
Leave one out (all on but one switch; the next round's starting points):
| Run | Within one (of 44) | Same, our ruler | Raw same | ρ (SE) | Tyranid list share ρ | Letters moved (against the baseline) |
|---|---|---|---|---|---|---|
all but bannerLendOnly | 30 (68%) | 23 | 10 | 0.65 (±0.10) | 0.63 | 29: Barbgaunts C→B, Biovores B→A (S), Broodlord C→B, Carnifexes C→B (C), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hive Tyrant B→C (S), Hyperadapted Raveners C→A (S), Lictor S→A, Neurogaunts A→S (B), Neurotyrant B→C (A), Norn Assimilator A→B (S), Norn Emissary A→B (S), Old One Eye B→C (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Raveners D→A (S), Ripper Swarms B→C (B), Screamer-killer B→C (B), Tervigon B→C (B), The Red Terror D→A (A), The Swarmlord A→B (S), Toxicrene B→C, Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyrannofex B→C (S), Von Ryan's Leapers A→B (S), Winged Hive Tyrant C→D (A), Zoanthropes C→B (S) |
all but bannerModelCount | 30 (68%) | 21 | 13 | 0.72 (±0.09) | 0.58 | 29: Barbgaunts C→B, Biovores B→A (S), Broodlord C→B, Carnifexes C→B (C), Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hive Tyrant B→C (S), Hyperadapted Raveners C→A (S), Neurogaunts A→S (B), Neurotyrant B→C (A), Norn Assimilator A→B (S), Norn Emissary A→B (S), Old One Eye B→D (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→A (S), Screamer-killer B→C (B), The Red Terror D→A (A), Toxicrene B→C, Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Tyrannofex B→C (S), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
all but turnsHarmonic | 30 (68%) | 22 | 12 | 0.72 (±0.09) | 0.59 | 30: Barbgaunts C→B, Biovores B→A (S), Broodlord C→B, Carnifexes C→B (C), Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hive Tyrant B→C (S), Hyperadapted Raveners C→A (S), Neurogaunts A→S (B), Neurotyrant B→C (A), Norn Assimilator A→B (S), Norn Emissary A→B (S), Old One Eye B→C (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→A (S), Screamer-killer B→C (B), Tervigon B→C (B), The Red Terror D→A (A), Toxicrene B→C, Trygon C→D (B), Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
all but reArriveAfterKill | 30 (68%) | 21 | 13 | 0.71 (±0.09) | 0.57 | 29: Barbgaunts C→B, Biovores B→A (S), Broodlord C→B, Carnifexes C→B (C), Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hive Tyrant B→C (S), Hyperadapted Raveners C→A (S), Neurogaunts A→S (B), Neurotyrant B→C (A), Norn Emissary A→B (S), Old One Eye B→D (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→A (S), Screamer-killer B→C (B), The Red Terror D→A (A), The Swarmlord A→B (S), Toxicrene B→C, Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Tyrannofex B→C (S), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
all but bestSize | 34 (77%) | 22 | 13 | 0.76 (±0.07) | 0.61 | 17: Biovores B→S (S), Carnifexes C→B (C), Gargoyles S→A, Hierophant C→D (D), Hive Guard C→D (A), Hyperadapted Raveners C→A (S), Old One Eye B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→A (S), Screamer-killer B→C (B), The Red Terror D→A (A), The Swarmlord A→B (S), Tyranid Prime with Lash Whip A→D (C), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
all but bestLeader | 31 (70%) | 22 | 15 | 0.69 (±0.09) | 0.48 | 25: Barbgaunts C→B, Biovores B→A (S), Broodlord C→D, Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hyperadapted Raveners C→B (S), Neurogaunts A→S (B), Neurotyrant B→C (A), Old One Eye B→C (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→C (S), Screamer-killer B→C (B), The Red Terror D→A (A), Toxicrene B→C, Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Venomthropes C→B (B), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
all but reArriverGateExempt | 32 (73%) | 24 | 12 | 0.63 (±0.10) | 0.46 | 21: Barbgaunts C→B, Biovores B→A (S), Broodlord C→B, Carnifexes C→B (C), Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Neurogaunts A→S (B), Old One Eye B→C (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→C (S), Screamer-killer B→C (B), Toxicrene B→C, Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
all but auraToNeighbours | 30 (68%) | 21 | 13 | 0.69 (±0.09) | 0.55 | 29: Barbgaunts C→B, Biovores B→A (S), Broodlord C→B, Carnifexes C→B (C), Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hive Tyrant B→C (S), Hyperadapted Raveners C→A (S), Maleceptor B→C (S), Neurogaunts A→S (B), Neurotyrant B→C (A), Norn Emissary A→B (S), Old One Eye B→D (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→A (S), Screamer-killer B→C (B), The Red Terror D→A (A), The Swarmlord A→B (S), Toxicrene B→C, Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
all but spawnShare75 | 30 (68%) | 21 | 13 | 0.70 (±0.09) | 0.55 | 27: Barbgaunts C→B, Broodlord C→B, Carnifexes C→B (C), Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hive Tyrant B→C (S), Hyperadapted Raveners C→A (S), Neurogaunts A→S (B), Neurotyrant B→C (A), Old One Eye B→D (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→A (S), Screamer-killer B→C (B), The Red Terror D→A (A), The Swarmlord A→B (S), Toxicrene B→C, Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Tyrannofex B→C (S), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
all but offTableSurvival | 30 (68%) | 22 | 12 | 0.72 (±0.09) | 0.55 | 27: Barbgaunts C→B, Biovores B→A (S), Broodlord C→B, Carnifexes C→B (C), Deathleaper S→A (A), Genestealers C→B, Hierophant C→D (D), Hive Guard C→B (A), Hive Tyrant B→C (S), Hyperadapted Raveners C→A (S), Neurogaunts A→S (B), Neurotyrant B→C (A), Old One Eye B→D (B), Parasite of Mortrex B→C (B), Psychophage B→C (B), Pyrovores D→C (A), Raveners D→A (S), Screamer-killer B→C (B), The Red Terror D→C (A), The Swarmlord A→B (S), Toxicrene B→C, Tyranid Prime with Lash Whip A→D (C), Tyranid Warriors with Melee Bio-Weapons C→B (B), Tyranid Warriors with Ranged Bio-Weapons B→A (C), Von Ryan's Leapers A→B (S), Winged Tyranid Prime A→C, Zoanthropes C→B (S) |
Every combination (all 1024 subsets of the ten switches, 10 s): the most within one is 36 of 44 (82%), 20 subsets reach it; none reaches 38. The best eight by within one, then ρ. A diagnostic, not a pick: choosing switches by their fit to Auspex is tuning on the panel (design/decisions.md's rule); each still needs its own reason and the clean panels.
| Switches on | Within one | Same, our ruler | ρ |
|---|---|---|---|
bannerLendOnly, bestLeader, reArriverGateExempt, auraToNeighbours, spawnShare75 | 36 (82%) | 25 | 0.77 |
bannerLendOnly, reArriveAfterKill, bestLeader, reArriverGateExempt, auraToNeighbours, spawnShare75 | 36 (82%) | 25 | 0.77 |
bannerLendOnly, bestLeader, reArriverGateExempt, auraToNeighbours | 36 (82%) | 25 | 0.76 |
bannerLendOnly, reArriveAfterKill, bestLeader, reArriverGateExempt, auraToNeighbours | 36 (82%) | 25 | 0.76 |
bannerLendOnly, bannerModelCount, bestLeader, reArriverGateExempt, auraToNeighbours, spawnShare75 | 36 (82%) | 25 | 0.76 |
bannerLendOnly, bannerModelCount, reArriveAfterKill, bestLeader, reArriverGateExempt, auraToNeighbours, spawnShare75 | 36 (82%) | 25 | 0.76 |
bannerLendOnly, bannerModelCount, bestLeader, reArriverGateExempt, auraToNeighbours | 36 (82%) | 25 | 0.76 |
bannerLendOnly, bannerModelCount, reArriveAfterKill, bestLeader, reArriverGateExempt, auraToNeighbours | 36 (82%) | 25 | 0.76 |
2. The 44 graded units, baseline and all on
Gap: Auspex's letter minus ours in letters (negative: we rate it lower). Context: the one compose picked with every switch on.
| Unit | Pts | Auspex | Baseline (composite) | Gap | All on (composite) | Gap | Job, all on | Context, all on |
|---|---|---|---|---|---|---|---|---|
| Biovores | 60 | S | B (92.4) | −2 | A (97.5) | −1 | Runner | Subterranean Assault, reserves |
| Hive Tyrant | 195 | S | B (90.6) | −2 | C (88.4) | −3 | Banner | Crusher Stampede, walk, own attacks inside Tyrant Guard |
| Hormagaunts | 70 | S | S (98.7) | 0 | S (100.0) | 0 | Anvil | Subterranean Assault, reserves, 20 models |
| Hyperadapted Raveners | 165 | S | C (63.1) | −3 | A (96.0) | −1 | Runner | Subterranean Assault, deep, as the pair with Raveners |
| Maleceptor | 180 | S | B (83.2) | −2 | B (92.2) | −2 | Anvil | Crusher Stampede, walk |
| Neurolictor | 80 | S | A (97.2) | −1 | A (97.2) | −1 | Runner | Invasion Fleet, walk |
| Norn Assimilator | 250 | S | A (93.6) | −1 | A (94.5) | −1 | Anvil | Assimilation Swarm, walk |
| Norn Emissary | 250 | S | A (93.6) | −1 | B (94.5) | −2 | Anvil | Subterranean Assault, walk |
| Raveners | 125 | S | D (61.1) | −4 | A (96.0) | −1 | Runner | Subterranean Assault, deep, joined by Hyperadapted Raveners |
| The Swarmlord | 210 | S | A (96.3) | −1 | B (94.4) | −2 | Banner | Crusher Stampede, walk, own attacks inside Tyrant Guard |
| Tyrannofex | 170 | S | B (90.2) | −2 | C (90.2) | −3 | Hammer | Crusher Stampede, walk |
| Von Ryan's Leapers | 55 | S | A (93.9) | −1 | B (93.9) | −2 | Runner | Synaptic Nexus, walk |
| Zoanthropes | 90 | S | C (65.2) | −3 | B (90.5) | −2 | Hammer | Subterranean Assault, walk, 6 models |
| Deathleaper | 80 | A | S (97.9) | +1 | A (97.9) | 0 | Runner | Subterranean Assault, walk |
| Exocrine | 135 | A | C (78.8) | −2 | C (81.9) | −2 | Anvil | Crusher Stampede, walk |
| Hive Guard | 80 | A | C (72.8) | −2 | B (93.3) | −1 | Hammer | Subterranean Assault, walk, 6 models |
| Neurotyrant | 130 | A | B (86.4) | −1 | C (89.9) | −2 | Hammer | Subterranean Assault, walk, as the pair with Zoanthropes |
| Pyrovores | 40 | A | D (61.6) | −3 | C (85.2) | −2 | Banner | Assimilation Swarm, walk |
| The Red Terror | 130 | A | D (55.2) | −3 | A (97.3) | 0 | Runner | Crusher Stampede, rearrive |
| Winged Hive Tyrant | 185 | A | C (62.7) | −2 | C (82.8) | −2 | Banner | Crusher Stampede, deep |
| Haruspex | 125 | B | C (81.8) | −1 | C (85.1) | −1 | Anvil | Crusher Stampede, walk |
| Mawloc | 135 | B | C (78.8) | −1 | C (81.9) | −1 | Anvil | Crusher Stampede, deep |
| Neurogaunts | 45 | B | A (97.5) | +1 | S (99.5) | +2 | Anvil | Subterranean Assault, reserves, 21 models |
| Old One Eye | 140 | B | B (85.8) | 0 | D (79.5) | −2 | Anvil | Crusher Stampede, walk, own attacks inside Carnifexes |
| Parasite of Mortrex | 70 | B | B (85.9) | 0 | C (85.9) | −1 | Runner | Subterranean Assault, deep |
| Psychophage | 110 | B | B (83.2) | 0 | C (84.6) | −1 | Anvil | Crusher Stampede, walk |
| Ripper Swarms | 30 | B | B (82.4) | 0 | B (92.5) | 0 | Banner | Assimilation Swarm, deep |
| Screamer-killer | 125 | B | B (82.4) | 0 | C (82.4) | −1 | Hammer | Subterranean Assault, reserves |
| Tervigon | 160 | B | B (87.8) | 0 | B (90.8) | 0 | Anvil | Crusher Stampede, walk |
| Trygon | 140 | B | C (77.7) | −1 | C (79.8) | −1 | Anvil | Crusher Stampede, deep |
| Tyranid Warriors with Melee Bio-Weapons | 75 | B | C (79.3) | −1 | B (93.1) | 0 | Anvil | Warrior Bioform Onslaught, reserves, 6 models |
| Tyrant Guard | 80 | B | C (65.7) | −1 | C (84.6) | −1 | Banner | Subterranean Assault, reserves, joined by The Swarmlord |
| Venomthropes | 55 | B | C (66.4) | −1 | C (87.9) | −1 | Anvil | Synaptic Nexus, reserves, 6 models |
| Carnifexes | 90 | C | C (81.4) | 0 | B (92.0) | +1 | Hammer | Subterranean Assault, reserves, joined by Old One Eye |
| Tyranid Prime with Lash Whip | 75 | C | A (97.4) | +2 | D (64.9) | −1 | Banner | Subterranean Assault, reserves, own attacks inside Hormagaunts |
| Tyranid Warriors with Ranged Bio-Weapons | 60 | C | B (86.4) | +1 | A (94.9) | +2 | Anvil | Subterranean Assault, reserves, joined by Tyranid Prime with Lash Whip |
| Tyrannocyte | 80 | C | D (40.2) | −1 | D (40.2) | −1 | Hammer | Invasion Fleet, deep |
| Harpy | 185 | D | D (46.1) | 0 | D (46.1) | 0 | Hammer | Subterranean Assault, walk |
| Harridan | 610 | D | D (52.4) | 0 | D (52.4) | 0 | Hammer | Subterranean Assault, reserves |
| Hierophant | 810 | D | C (63.3) | +1 | D (66.1) | 0 | Anvil | Crusher Stampede, walk |
| Hive Crone | 170 | D | D (51.5) | 0 | D (51.5) | 0 | Hammer | Subterranean Assault, walk |
| Mucolid Spores | 30 | D | D (0.0) | 0 | D (0.0) | 0 | Hammer | no detachment, walk |
| Spore Mines | 55 | D | D (0.0) | 0 | D (0.0) | 0 | Hammer | no detachment, walk |
| Sporocyst | 145 | D | D (36.9) | 0 | D (36.9) | 0 | Hammer | Subterranean Assault, reserves |
3. The gaps of two letters or more, all on
14 units. For each, its chosen raw row beside its three nearest Tyranid peers (the same best job with every switch on, nearest in points), and each raw quantity as a ratio to the peers' median: the explainer's logic (T-563), inside the army (the bench holds every Tyranid context; other armies only as the pool). The quantity furthest from the peers comes first.
Hive Tyrant (195 pts in this context; Auspex S, ours C, composite 88.4, best job Banner, 6 of 23 lists). Peers: Winged Hive Tyrant (185 pts, C), The Swarmlord (210 pts, B), Tyrant Guard (290 pts, C).
- damage per 100 pts into MEQ: 89.6 against 92.0, 152, 165 (×0.59 the peers' median)
- damage per 100 pts into GEQ: 69.5 against 77.5, 109, 140 (×0.64 the peers' median)
- lent (pts): 376 against 152, 503, 263 (×1.41 the peers' median)
Tyrannofex (170 pts in this context; Auspex S, ours C, composite 90.2, best job Hammer, 7 of 23 lists). Peers: Hive Crone (170 pts, D), Harpy (185 pts, D), Sporocyst (145 pts, D).
- OC: 6.80 against 0.00, 0.00, 0.00 (×14.6 the peers' median)
- damage per 100 pts into heavy vehicles: 403 against 116, 87.7, 43.1 (×4.55 the peers' median)
- hits to destroy (special): 288 against 72.0, 72.0, 120 (×3.98 the peers' median)
Exocrine (135 pts in this context; Auspex A, ours C, composite 81.9, best job Anvil, 4 of 23 lists). Peers: Mawloc (135 pts, C), Old One Eye (140 pts, D), Trygon (140 pts, C).
- lent (pts): 12.0 against 0.00, 220, 0.00 (×2.20 the peers' median)
- damage per 100 pts into TEQ: 216 against 120, 99.0, 192 (×1.79 the peers' median)
- damage per 100 pts into MEQ: 193 against 121, 91.6, 161 (×1.59 the peers' median)
Maleceptor (180 pts in this context; Auspex S, ours B, composite 92.2, best job Anvil, 8 of 23 lists). Peers: Tervigon (160 pts, B), Old One Eye (140 pts, D), Trygon (140 pts, C).
- hits to destroy (small arms): 323 against 576, 558, 252 (×0.58 the peers' median)
- damage per 100 pts into TEQ: 159 against 57.2, 99.0, 192 (×1.60 the peers' median)
- lent (pts): 71.8 against 119, 220, 0.00 (×0.63 the peers' median)
Neurogaunts (90 pts in this context; Auspex B, ours S, composite 99.5, best job Anvil, 2 of 23 lists). Peers: Barbgaunts (110 pts, B), Venomthropes (110 pts, C), Termagants (110 pts, S).
- damage per 100 pts into MEQ: 37.9 against 180, 108, 214 (×0.22 the peers' median)
- damage per 100 pts into GEQ: 99.4 against 355, 189, 471 (×0.28 the peers' median)
- damage per 100 pts into TEQ: 25.3 against 89.1, 72.2, 166 (×0.29 the peers' median)
Neurotyrant (320 pts in this context; Auspex A, ours C, composite 89.9, best job Hammer, 17 of 23 lists). Peers: Screamer-killer (125 pts, C), Sporocyst (145 pts, D), Hive Crone (170 pts, D).
- OC: 9.00 against 3.00, 0.00, 0.00 (×19.0 the peers' median)
- lent (pts): 43.4 against 20.7, 0.00, 0.00 (×5.34 the peers' median)
- hits to destroy (anti-tank): 28.7 against 7.48, 5.98, 7.03 (×3.88 the peers' median)
Norn Emissary (250 pts in this context; Auspex S, ours B, composite 94.5, best job Anvil, 8 of 23 lists). Peers: Norn Assimilator (250 pts, A), Maleceptor (180 pts, B), Tervigon (160 pts, B).
- lent (pts): 3.77 against 42.4, 71.8, 119 (×0.17 the peers' median)
- damage per 100 pts into GEQ: 194 against 74.2, 81.9, 90.9 (×2.36 the peers' median)
- hits to destroy (mortal): 16.3 against 8.00, 8.17, 8.00 (×1.97 the peers' median)
Old One Eye (140 pts in this context; Auspex B, ours D, composite 79.5, best job Anvil, 4 of 23 lists). Peers: Trygon (140 pts, C), Exocrine (135 pts, C), Mawloc (135 pts, C).
- lent (pts): 220 against 0.00, 12.0, 0.00 (×23.0 the peers' median)
- hits to destroy (small arms): 558 against 252, 252, 252 (×2.21 the peers' median)
- damage per 100 pts into TEQ: 99.0 against 192, 216, 120 (×0.52 the peers' median)
Pyrovores (40 pts in this context; Auspex A, ours C, composite 85.2, best job Banner, 4 of 23 lists). Peers: Ripper Swarms (30 pts, B), Winged Tyranid Prime (65 pts, C), Tyranid Prime with Lash Whip (75 pts, D).
- lent (pts): 38.4 against 41.9, 157, 203 (×0.29 the peers' median)
- turns alive: 1.14 against 1.00, 0.52, 0.55 (×2.05 the peers' median)
- damage per 100 pts into GEQ: 12.1 against 4.32, 5.43, 28.1 (×2.03 the peers' median)
The Swarmlord (210 pts in this context; Auspex S, ours B, composite 94.4, best job Banner, 13 of 23 lists). Peers: Hive Tyrant (195 pts, C), Winged Hive Tyrant (185 pts, C), Tyrant Guard (290 pts, C).
- lent (pts): 503 against 376, 152, 263 (×1.88 the peers' median)
- damage per 100 pts into MEQ: 152 against 89.6, 92.0, 165 (×1.65 the peers' median)
- damage per 100 pts into GEQ: 109 against 69.5, 77.5, 140 (×1.40 the peers' median)
Tyranid Warriors with Ranged Bio-Weapons (195 pts in this context; Auspex C, ours A, composite 94.9, best job Anvil, 1 of 23 lists). Peers: Termagants (110 pts, S), Barbgaunts (110 pts, B), Venomthropes (110 pts, C).
- damage per 100 pts into heavy vehicles: 159 against 145, 31.9, 18.6 (×4.85 the peers' median)
- damage per 100 pts into light vehicles: 233 against 209, 62.0, 36.1 (×3.72 the peers' median)
- damage per 100 pts into TEQ: 327 against 166, 89.1, 72.2 (×3.64 the peers' median)
Von Ryan's Leapers (55 pts in this context; Auspex S, ours B, composite 93.9, best job Runner, 12 of 23 lists). Peers: Biovores (60 pts, A), Lictor (60 pts, S), Parasite of Mortrex (70 pts, C).
- damage per 100 pts into GEQ: 141 against 34.6, 56.4, 23.2 (×3.98 the peers' median)
- damage per 100 pts into MEQ: 97.5 against 32.4, 68.6, 17.7 (×2.95 the peers' median)
- OC: 3.00 against 1.00, 1.00, 1.00 (×2.33 the peers' median)
Winged Hive Tyrant (185 pts in this context; Auspex A, ours C, composite 82.8, best job Banner, 1 of 23 lists). Peers: Hive Tyrant (195 pts, C), The Swarmlord (210 pts, B), Tyrant Guard (290 pts, C).
- lent (pts): 152 against 376, 503, 263 (×0.42 the peers' median)
- hits to destroy (special): 90.0 against 180, 180, 252 (×0.50 the peers' median)
- damage per 100 pts into MEQ: 92.0 against 89.6, 152, 165 (×0.61 the peers' median)
Zoanthropes (190 pts in this context; Auspex S, ours B, composite 90.5, best job Hammer, 16 of 23 lists). Peers: Carnifexes (320 pts, B), Hive Guard (160 pts, B), Tyrannocyte (80 pts, D).
- hits to destroy (elite): 18.0 against 65.0, 54.0, 18.0 (×0.34 the peers' median)
- lent (pts): 19.0 against 0.00, 0.00, 25.6 (×2.90 the peers' median)
- hits to destroy (small arms): 108 against 1062, 216, 180 (×0.50 the peers' median)
4. Null columns, inert parts and what each switch leaves out
Null in the raw table (written as null, never estimated):
ctx.kit: one loadout, the listed default wargear; other loadouts need the loadout solver inside the engine (tools/loadout.js's job), so every row islisted.lend.shock: tiertest.js's debuffPts sums the debuff and the Battle-shock tests into one number, so it sits inlend.debuff.lend.spawn: a spawn is Runner's (run.spawn: the spawned unit's Runner base and its share of the game on the table), not points lent.reachandholdare null where the unit has no position track;mostListedSizeandmostListedLeaderwhere no winning list takes it;htd,xandinRangeare rounded to 4 to 6 figures (the engine's own job raws,ham,anv,ban,T,Tuand the Runner parts, are full precision, which is what makes the baseline exact).
Inert knobs (in the config, with no effect yet): price.shock and price.debuff (one lend column, above); anvil.form (only round 10's OC-turns form) and curve (only the percentile; the log-ratio curve matters only for weighted sums inside a job, which round 10 doesn't have). fire.w reaches Anvil's turns alive and Runner's survival but not Hammer (its turns alive are inside the engine's delivery); target.w and hammer.peak recompute Hammer from the damage vectors (4 figures), scaled by the engine's own lift for the Norns' chosen-unit branch.
No switch is inert. What each one leaves out:
bannerLendOnly,bannerModelCount: banner.js's leader multiplier is recomputed for all 313 characters in the pool (tools/banner.js's onSquad withlendOnlyormodels; its report is unchanged), and only the change is applied (today's banner.js output differs slightly from the tracked 2026-10-02-banner.json that round 10 read). The leader's own attacks go to Hammer from the "inside" rows: its delivery with the joined pair's turns alive; its Anvil and Runner stay its own.turnsHarmonic: Anvil's turns alive and its Battle-shock share, for every unit in the pool; Hammer and Runner keep the engine's turns (the residual report: switching Hammer's as well cost the Marine panel 0.18).reArriveAfterKill,offTableSurvival: the Red Terror is the only fight-phase re-deployer in tierfx.json.reArriverGateExempt: Raveners and the Red Terror (tierfx.json'srearrive); arrival data is Tyranid-only.bestSize,bestLeader: Tyranids only; the pool keeps its listed sizes and no pairs. A larger size scales damage and durability per model (no wargear re-allocation per N models) and keeps the smallest size's transport test. A pair's Banner is the squad's plus the leader's own lending other than its leader multiplier (now inside the pair's Hammer and Anvil); BSData's canJoin decides the 15 pairs.auraToNeighbours: the Maleceptor (−1 to hit), Venomthropes and Zoanthropes (defensive auras from the coverage data), on their two most co-listed squads; their Banner keeps the same lend (counted in both, as the residual report's M3 did).spawnShare75: Biovores only (the one spawner with a plan).
5. Method
- Layer 1.
node tools/tiertest.js --rawdump tyranidsruns round 10 (round 9's inputs, as--explaindoes on its own; about 35 s), then scores every Tyranid in every context tyrRun tries (no detachment and each of the 10 detachments it tries, the Norns' two branches) at every datasheet size and with every leader BSData lets join it, and each leader's attacks inside each squad it can join: 1,318 context rows, each with its ways in. It checks the listed contexts reproduce round 10's composite (all 52 do) and adds every pool unit's chosen context (1,153 rows), from which compose rebuilds the percentiles. Outputs: build/tier-raw-tyranids.json (git-ignored), reports/tiers/2026-10-02-tyranids-raw.json and reports/tiers/2026-10-02-tyranids-raw.csv (one line per unit, context and way in, for a spreadsheet). Most-listed sizes: reports/tiers/2026-10-02-tyranids-sizes.json (counts from grimstat-corpus, CC BY 4.0). - Layers 2 to 4.
compose(raw, config)in tools/tierbench.js: the job raws under the config and switches, the pool's percentiles, each row's best way (job5's rule: best allowed job + steps, the tie key), each Tyranid's best context, the within-army letters, the final score on the frozen cuts, the yardsticks.node tools/tierbench.js --checkcompares the baseline with round 10 unit by unit;--fix a,b,--all,--config file.json,--json out.json. - Peers in section 3 are Tyranids only (the explainer's own-army step); the all-armies peers need the pool's ways in, which the table holds but the report doesn't use yet.