Tactical Reroll
⋯

Tyranids, round 11: the workbench's fixes made permanent, every army (2026-10-02)

From reports/tiers/2026-10-02-tyranids-round11.md , rendered when the site is built.

T-565 (Jordan, 2 Oct, via the design session): round 11 makes the Tyranid workbench's fixes (T-564 and benches 2 to 4) permanent in tools/tiertest.js, each a named switch in o.r11 that the sweep and the bench can turn off, fixes the bugs the investigators found, and runs every army for the first time since the workbench. Jordan's settings: a unit's context is its best legal size (the maths, not the most-listed size); turns alive capped at 5; a CP stays 30 pts. Everything else is round 10's (V10C, the fieldable pool of 1,153 units, frozen cuts). Command: node tools/tiertest.js --r11json <file> (standalone, about 2 min; it injects round 9's inputs as --rawdump does). The report is made from that JSON (reports/tiers/2026-10-02-tyranids-round11.json). Our numbers only; lists counted from grimstat-corpus (CC BY 4.0). A report: no published score changes, but two BSData-reading fixes in docs/bsdata.js do reach the live data (section 5).

In short. Round 11 lifts the Tyranid panel to ρ 0.66 (round 10 0.51). For the first time in eleven rounds, it lifts the Space Marine panel above zero: 0.14, from −0.07. Orks move −0.18 → −0.15. Each panel moves by less than one SE, but they all move the same way. The list-share headline holds or rises: per-army median 0.165 → 0.173, AUC 0.582 → 0.585, ρ among taken units 0.098 → 0.105. It does not reach Jordan's 85% line on the Tyranid table. Within one letter of Auspex: 31 of 44 on the within-army ruler (round 10: 31) and 36 of 44 on Auspex's own shape (round 10: 33; the line is 38). The benches' 38 doesn't transfer, for three reasons. First, bestSize costs: Jordan's best-legal-size rule sends every squad to its largest size, and dropping it alone gives 39 on the shape and ρ 0.70. Second, lends on the best squads with no flat cap make Harvesters Banner leaders (Ripper Swarms S, Auspex B). Third, removing the aura stand-ins costs the Swarmlord. One bug fix matters most outside the Tyranids: effects now use the loadout the damage uses. Alone it moves the Marines −0.07 → 0.10. Desolation Squad drops 92.5 → 9.1, because round 10 multiplied krak-rocket damage by a detachment ratio worked out on frag rockets. The charge-distance claim doesn't hold (section 6): an 11th-edition charge target must be within the charge roll, so no change is needed. Live data: 21 units lose a Stealth, Deep Strike, Scouts or Infiltrators trait that only an enhancement or a leader gives them, Neurogaunts go to 22 models, and Value and the site's letters don't move.

1. Yardsticks: three panels and the list-share headline

ρ: Spearman between our score and the panel's letters (SE: Bonett and Wright's). Within-army ruler: our letters within each army (10% S, 15% A, 25% B, 30% C, the rest D); "same" there is the panel's letters re-cut at that quota (round 8's strict). The panel's own shape: our order over the panel's graded units, cut at the panel's own letter counts (bench 2's yardstick; it tests order alone). The list-share headline is round 10's: over the units some winning list could field, the median of each army's ρ with list share, the AUC for taken against never-taken units, and ρ among taken units. Round 10 rerun on today's data: round 10's code on the data with this round's two BSData fixes (section 5); round 10 as published reproduces exactly on the old data.

YardstickRound 9 (published)Round 10 (published)Round 10, rerun on today's dataRound 11
Tyranids (Auspex, 44): ρ (SE)0.49 (±0.13)0.51 (±0.12)0.52 (±0.12)0.66 (±0.10)
Space Marines (Tista Minis, 30): ρ (SE)−0.10 (±0.19)−0.07 (±0.19)−0.07 (±0.19)0.14 (±0.19)
Orks (Sprues & Brews, 45): ρ (SE)−0.12 (±0.15)−0.18 (±0.15)−0.19 (±0.15)−0.15 (±0.15)
Tyranids: within one / same, within-army ruler30 / 1931 / 1931 / 1931 / 21
Tyranids: within one / same, the panel's own shape (13/7/13/4/7)36 / 2233 / 2333 / 2336 / 20
Space Marines: within one / same, within-army ruler18 / 817 / 917 / 919 / 9
Space Marines: within one / same, the panel's own shape (4/11/9/6/0)22 / 1123 / 1023 / 1024 / 9
Orks: within one / same, within-army ruler27 / 1027 / 1027 / 1028 / 9
Orks: within one / same, the panel's own shape (3/13/25/3/1)38 / 1538 / 1738 / 1738 / 17
Every unit's list share: pooled ρ0.0770.1570.1570.163
Per-army median ρ with list share0.1130.1650.1390.173
Tyranids' own ρ / its lead over the median0.453 / +0.340.465 / +0.300.460 / +0.320.547 / +0.37
AUC, taken against never taken0.5360.5820.5820.585
ρ among taken units only0.0660.0980.0940.105
S on the frozen cuts (of the fieldable pool)–929291
S share per army against its top-quarter lists: ρ−0.41−0.16−0.06−0.11

Reading it. Round 10 on today's data first, to separate the data fixes from the method. Two BSData fixes (section 5) change round 10's own numbers. Most yardsticks move in the third decimal. The per-army median falls 0.165 → 0.139, because the medians of 27 small per-army ρs are sensitive to which Utility percentiles move. The S-per-army ρ rises −0.16 → −0.06. On top of that, round 11 is the best round yet on all three panels together:

The Tyranid lead over the median grows (+0.32 → +0.37). That is the overfit gauge: the panel we tuned on rises faster than everyone's list share.

Each fix alone, on top of round 10 (today's data)

Every yardstick for each switch alone, then all on. Letters moved: against the round-10 rerun, over all 1,153 fieldable units (all-armies letters on the frozen cuts; within-army letters).

RunTyranids ρTyr within one: ruler / shapeTyr same: ruler / shapeMarines ρMarines within one, shapeOrks ρOrks within one, shapePooledMedianAUCTaken ρS per army ρAll-armies letters movedWithin-army letters moved
Round 10, rerun on today's data0.5231 / 3319 / 23−0.0723−0.19380.1570.1390.5820.094−0.060 (0↑ 0↓)0
bannerLendOnly0.6235 / 3625 / 260.0222−0.17370.1290.1370.5670.085−0.02311 (156↑ 155↓)338
bannerModelCount0.5331 / 3320 / 23−0.0723−0.19380.1500.1740.5780.091−0.0754 (24↑ 30↓)65
turnsHarmonic0.5131 / 3419 / 23−0.0921−0.19370.1530.1340.5800.092−0.1760 (30↑ 30↓)79
reArriveAfterKill0.5231 / 3319 / 23−0.0723−0.19380.1570.1390.5830.094−0.060 (0↑ 0↓)0
reArriverGateExempt0.5832 / 3522 / 25−0.0723−0.19380.1600.1390.5840.098−0.065 (2↑ 3↓)6
lendOnBestSquads0.5029 / 3318 / 22−0.0723−0.19380.1580.1380.5850.088−0.0624 (9↑ 15↓)28
stealthSurvival0.5331 / 3318 / 23−0.0823−0.18380.1610.1440.5850.096−0.1247 (24↑ 23↓)55
bestSize0.5229 / 3522 / 24−0.0620−0.17380.1870.2200.6010.103−0.11323 (149↑ 174↓)341
bestLeader0.5631 / 3420 / 210.0123−0.16390.1570.1850.5800.103−0.12226 (101↑ 125↓)242
sameLoadout0.5231 / 3319 / 230.1024−0.14380.1640.1660.5850.102−0.05119 (66↑ 53↓)156
Round 11 (all on)0.6631 / 3621 / 200.1424−0.15380.1630.1730.5850.105−0.11537 (257↑ 280↓)554

All on but one (what each fix adds once the others are in):

RunTyranids ρTyr within one: ruler / shapeTyr same: ruler / shapeMarines ρMarines within one, shapeOrks ρOrks within one, shapePooledMedianAUCTaken ρS per army ρAll-armies letters movedWithin-army letters moved
all but bannerLendOnly0.6228 / 3720 / 220.0923−0.13380.1940.2450.6020.122−0.13409 (185↑ 224↓)424
all but bannerModelCount0.6631 / 3621 / 200.1424−0.15380.1630.1700.5860.104−0.10541 (260↑ 281↓)555
all but turnsHarmonic0.6731 / 3621 / 200.1124−0.13370.1610.1880.5870.092−0.18530 (254↑ 276↓)551
all but reArriveAfterKill0.6631 / 3621 / 200.1424−0.15380.1630.1730.5850.105−0.11537 (257↑ 280↓)554
all but reArriverGateExempt0.5832 / 3522 / 210.1424−0.15380.1580.1730.5840.099−0.11537 (258↑ 279↓)553
all but lendOnBestSquads0.7133 / 3825 / 250.1424−0.15380.1600.1700.5810.112−0.19538 (260↑ 278↓)554
all but stealthSurvival0.6631 / 3621 / 200.1324−0.14380.1570.1700.5820.101−0.09536 (256↑ 280↓)547
all but bestSize0.7033 / 3923 / 210.1922−0.11360.1500.1670.5770.1000.00415 (204↑ 211↓)442
all but bestLeader0.6229 / 3520 / 200.1022−0.14380.1720.1730.5930.097−0.08519 (254↑ 265↓)520
all but sameLoadout0.6430 / 3720 / 190.0322−0.17380.1480.1560.5770.097−0.18553 (258↑ 295↓)569

Which fixes move which panel.

With everything on, taking out sameLoadout costs the Marines most (0.14 → 0.03). Taking out bestSize lifts both (Marines 0.19, Orks −0.11).

2. The Tyranid table: 44 Auspex-graded units

Sorted by Auspex's letter, then name. Round 10 within army: as published. Round 11 on Auspex's shape: our order over the 44 cut 13 S, 7 A, 13 B, 4 C, 7 D. All armies: the frozen cuts (S 92.02, A 77.02, B 49.96, C 20.03) on the final score (the pool percentile of the composite). Hammer, Anvil, Runner, Banner: the four job percentiles in the chosen context (bracketed: a job the unit may not hold). Lists: winning Tyranid lists taking it (grimstat-corpus, CC BY 4.0). What moved: against round 10 rerun, its context, job and the job percentile that moved most.

UnitPtsAuspexRound 10 within armyRound 11 within armyRound 11 on Auspex's shapeRound 11 all armiesFinal scoreHammerAnvilRunnerBannerListsWhat moved
Biovores60SBASB76.423094022 of 23Hammer 13 → 2
Hive Tyrant195SBBSB74.4365621946 of 23its attacks inside a squad; Hammer 50 → 36
Hormagaunts70SSSSS93.12810056013 of 2320 models (was 10); Subterranean Assault (was Unending Swarm); Runner 71 → 56
Hyperadapted Raveners165SCASA82.56268962711 of 23scored as the pair with Raveners; job Hammer → Runner; Runner 23 → 96
Maleceptor180SBCBC26.9337327718 of 23Banner 26 → 71
Neurolictor80SAASA89.5933995817 of 23Banner 31 → 58
Norn Assimilator250SABAB59.4518916565 of 23Banner 11 → 56
Norn Emissary250SABAB61.948901638 of 23Hammer 64 → 48
Raveners125SDASA82.45868962712 of 23joined by Hyperadapted Raveners; job Anvil → Runner; Runner 55 → 96
The Swarmlord210SABSB64.34952199113 of 23its attacks inside a squad; Hammer 58 → 49
Tyrannofex170SBCBC47.684682907 of 23Subterranean Assault (was Crusher Stampede); Anvil 88 → 68
Von Ryan's Leapers55SAASA82.2418394012 of 236 models (was 3); Anvil 62 → 83
Zoanthropes90SCCBC49.7856902016 of 236 models (was 3); joined by Neurotyrant; Runner 50 → 0
Deathleaper80ASSSS92.32033100107 of 23Hammer 38 → 20
Exocrine135ACCCC24.3487134304 of 23Banner 6 → 30
Hive Guard80ACBBB53.086724201 of 236 models (was 3); Runner 58 → 42
Neurotyrant130ABBAB55.51958318717 of 23its attacks inside a squad; Hammer 34 → 19
Pyrovores40ADASA90.623257994 of 23Banner 62 → 99
The Red Terror130ADCBC49.3274885010 of 23Crusher Stampede (was Subterranean Assault); job Hammer → Runner; Runner 50 → 85
Winged Hive Tyrant185ACCBC44.9305728821 of 23job Anvil → Banner; Banner 53 → 82
Haruspex125BCCBC49.4426038853 of 23Assimilation Swarm (was Crusher Stampede); job Anvil → Banner; Banner 3 → 85
Mawloc135BCDCC24.226714702 of 23Hammer 49 → 26
Neurogaunts45BAASA90.58996102 of 2322 models (was 11); Hammer 24 → 8
Old One Eye140BBCBC36.3576936784 of 23its attacks inside a squad; Runner 22 → 36
Parasite of Mortrex70BBBAB56.532988141 of 23Hammer 19 → 3
Psychophage110BBBSB66.4235767915 of 23Assimilation Swarm (was Crusher Stampede); job Anvil → Banner; Banner 8 → 91
Ripper Swarms30BBSSS93.61(0)681001 of 23Banner 82 → 100
Screamer-killer125BBCBC26.7734535203 of 23Runner 25 → 35
Tervigon160BBCBC40.7238032590 of 23Hammer 49 → 23
Trygon140BCDCC21.741694306 of 23Hammer 60 → 41
Tyranid Warriors with Melee Bio-Weapons75BCBAB53.632873454 of 236 models (was 3); Hammer 20 → 32
Tyrant Guard80BCCBC45.134580834 of 23joined by Hive Tyrant; job Anvil → Banner; Banner 0 → 83
Venomthropes55BCBAB56.0105767871 of 23Subterranean Assault (was Synaptic Nexus); job Anvil → Banner; Banner 44 → 87
Carnifexes90CCCBC43.58279004 of 232 models (was 1); joined by Old One Eye; job Anvil → Hammer; Runner 42 → 0
Tyranid Prime with Lash Whip75CACBC34.64317767811 of 23its attacks inside a squad; Hammer 22 → 43
Tyranid Warriors with Ranged Bio-Weapons60CBBAB63.138905171 of 236 models (was 3); Anvil 86 → 90
Tyrannocyte80CDDDD1.717(39)(68)380 of 23job Hammer → Banner; Hammer 40 → 17
Harpy185DDDDD0.422(0)2000 of 23Hammer 46 → 22
Harridan610DDDDD0.930(0)000 of 23Hammer 52 → 30
Hierophant810DCDCD10.824580500 of 23Hammer 48 → 24
Hive Crone170DDDDD0.730(0)2200 of 23Hammer 52 → 30
Mucolid Spores30DDDDD0.00(0)(69)00 of 23Runner 56 → 69
Spore Mines55DDDDD0.00(0)(64)00 of 23Runner 49 → 64
Sporocyst145DDDDD0.314(0)(27)00 of 23Hammer 37 → 14

Counts. Within one letter of Auspex: 31 of 44 on the within-army ruler (round 10: 31), 36 of 44 on Auspex's shape (round 10: 33); the 85% line is 38. The same letter: 21 on the within-army ruler (Auspex re-cut at our quota; 15 as printed), 20 on Auspex's shape. Two or more letters off: on the ruler 13 (Hive Tyrant, Maleceptor, Norn Assimilator, Norn Emissary, The Swarmlord, Tyrannofex, Zoanthropes, Exocrine, The Red Terror, Winged Hive Tyrant, Mawloc, Ripper Swarms, Trygon); on the shape 8 (Maleceptor, Tyrannofex, Zoanthropes, Exocrine, Neurogaunts, Psychophage, Ripper Swarms, Tyranid Warriors with Ranged Bio-Weapons).

What's left, the 13 two letters off on the ruler. Most are Auspex S or A units that we place at B or C:

The ruler's 10% S quota explains half of them. On Auspex's shape only 8 are two off. Three causes stand out:

On Auspex's shape, 8 of Auspex's 13 S are S: Biovores, the Hive Tyrant, Hormagaunts, Raveners, Hyperadapted Raveners, the Neurolictor, the Swarmlord and Von Ryan's Leapers.

3. The Space Marine and Ork panels on their own shapes

PanelShapeRound 10 (published): within one / sameRound 10 rerunRound 11: within one / sameWithin-army ruler, round 11: within one / sameρ, round 10 → 11
Space Marines4/11/9/6/023 / 1023 / 1024 / 9 of 3019 / 9−0.07 → 0.14
Orks3/13/25/3/138 / 1738 / 1738 / 17 of 4528 / 9−0.18 → −0.15

Reading it. The Marines gain one within one on their shape (23 → 24) and lose one same (10 → 9). Their ρ gain comes from the middle of the order:

The Orks hold 38 of 45 within one on their shape. Their shape has 25 B of 45, so almost any order gets 38.

4. S per army, all-armies view

Armies with 10 or more fieldable units. Top-quarter lists: metatrack.json's count of top-quarter tournament lists by army over every month (chapters count apart). ρ between the S share and the top-quarter lists: round 10 rerun −0.06, round 11 −0.11 (round 10 published −0.16).

ArmyUnitsS, round 10 rerunS, round 11S shareTop-quarter lists
Space Marines84141417%1
Genestealer Cults9081011%2
Astra Militarum727710%4
T'au Empire424614%12
Necrons522510%15
Tyranids522510%8
Adepta Sororitas336412%6
Death Guard362411%7
Deathwatch105330%0
Black Templars192316%1
Thousand Sons35139%6
Chaos Space Marines58535%6
Aeldari75434%6
Blood Angels162213%3
Dark Angels161213%2
Space Wolves216210%4
Emperor's Children23229%9
Imperial Knights27027%1
Agents of the Imperium29127%1
World Eaters30327%5
Adeptus Mechanicus34326%9
Orks55424%6
Leagues of Votann22315%5
Adeptus Custodes31213%11
Drukhari37113%1
Chaos Daemons77000%5
Chaos Knights27100%1
Grey Knights26000%3
Ultramarines11100%4

5. What reaches the live site

Two fixes change the data the site is built from (docs/data/rankings.json, docs/data/index.json and the generated pages): the rule links in docs/bsdata.js, and Neurogaunts' size. The tier test's own changes (sections 1 to 4) don't reach the site.

1. Rule links read as a bare unit has them (docs/bsdata.js hiddenBare). A rule link counts only when the unit has it with nothing taken and nothing joined: not hidden by default, and not hidden by a modifier whose condition (scoped to the unit itself) holds in that bare state. Conditions on the force or the roster are the army's choices (a detachment, a game mode), so they don't count. The Lictor's Deep Strike, hidden outside Ambush Predators, stays. Across BSData at the pinned commit, 76 unit rows (a datasheet shared by armies counts in each) lose one or more rules from their rule list (units.json, not published). Each is a rule an attached leader or an enhancement gives:

The engine's Feel No Pain (fnp), Fights First (fightsFirst) and Damaged readings were already default-state, so Defense and the calculator's dice don't change.

What the live data shows differently.

2. Neurogaunts are 11 to 22 models (index.json, rankings.json, the calculator's size list). BSData's Nodebeast is one model, raised to two once the squad has 20 Neurogaunts. bsdata.js read the model's own maximum and missed that raise, so the unit read 21. _raisedByModel now reads it: a model's maximum raised by a count of another model in the unit. Only Neurogaunts change in the whole catalogue. Their points stay 45 for 11 and 90 for the larger size, now at 22 models.

Not changed (wargear costs). bsdata.js reads a unit's own points (its size breakpoints) and none of the option costs. At the pinned commit, BSData prices about 70 options across the armies: weapons such as the Tyrannofex's rupture cannon (+20) and acid spray (+10), the Riptide's ion accelerator (+25), the Gunwagon's zzap gun (+10), and upgrades such as unit enhancements. The best-loadout solver therefore picks a paid weapon at the unit's base price. This is a missing feature, not a misread: pricing it means recording each option's cost in units.json and having docs/loadout.js and the rankings price a squad by its kit, a change to the live Offense of every such unit. So it's documented here and in design/scoring.md's known gaps, and left for a card of its own.

6. The other bug fixes

So the roll must reach the target's distance, not that distance less 2". The claim doesn't hold: our pChg (a roll of at least the gap) is right, and so is the Deep Strike charge (set up more than 8" away, so a 9 is needed, 28%). Card T-566 records this. It has no change to make, and it notes the one difference found: Deep Strike sets up more than 8" away, while V3C.DS places it at 9" for range checks.

7. Method, decisions taken alone, doubts

The switches (o.r11, all on in round 11; R11F names them):

Decided alone:

Doubts: