T-529, for T-523 (Jordan, 1 Oct (Pacific), via the design session). Made by node tools/archetypes.js. A report, not the site: nothing here changes a published score or page.
In short
Yes, five and five is a little too simple, but not in the way expected. Three findings:
- The biggest gap is on the defence side: nothing tests Feel No Pain properly. Adding a mortal-wounds attacker (wounds that ignore saves and invulnerable saves, where only Feel No Pain helps) is the best single change. Agreement with what players take rises from 0.119 to 0.136, and 196 units change letter on maths alone (115 with today's meta lift). It values Death Guard, Custodes and anything else with Feel No Pain, and stops a high invulnerable save from carrying a unit by itself.
- The winning lists bring big things with invulnerable saves, not plain tanks. 15% of their points are in big vehicles and monsters with a 4++ or 5++, against 8% in heavy vehicles without. Swapping our heavy vehicle for a big target with a 4++ (T11, W18, 3+) keeps five columns and lifts agreement a little (0.123). Adding it as a sixth column without the swap lowers agreement (0.108), because it double-counts anti-tank.
- Weighting by the meta makes agreement worse, not better (0.088 either way). The winning lists put 38% of their points into Terminator-like units and only 3% into light infantry. But weighting the targets that way rewards anti-elite specialists the lists don't take for that. Equal weights describe a unit's range, which is what the letter should say. Keep them equal.
Also measured:
- Tough horde (T5, 5+): a small gain as a sixth target (0.130). Swapped in for GEQ it changes little (0.117).
- Cover: scoring every target in cover lifts agreement (0.134) and moves 175 letters. That fits an edition that leans to melee and durability. It's a big change, so test "half the targets in cover" before adopting anything.
- Half range: no change in agreement (0.119), and 100 letters move. Leave it off.
Recommendation:
- Targets (6): GEQ, MEQ, TEQ, light vehicle, a big target with a 4++ in place of today's heavy vehicle, and a tough horde.
- Attackers (6): today's five plus a mortal-wounds attacker.
- Weights: equal.
- Agreement: 0.147, the best of every set tried (today 0.119), with 295 letters changed (183 with the meta lift).
- The cost: the unit pages' Offense and Defense tables each grow by one column (still fits at 390px with the current chips). The calculator's five stand-ins (app.js
STAND_INS) change too: the Land Raider stand-in becomes a Knight-class target, and a tough-horde stand-in (Ork Boyz) is added. tools/targets.js and STAND_INS must change together, with the Rankings column labels and i18n keys. That's a build card of its own once Jordan picks the set.
Not done: the agreement with the community tier list (T-524 can't read one from this environment); share of winning lists stands in for it. A precision (character-sniping) attacker isn't added: our Defense scores a unit on its own, where precision changes nothing; it belongs in T-527's Banner method, where a character's survival in its squad is scored.
How it was tested
Every one of 1161 non-Legends units is scored the same way under each candidate set: Offense (wounds removed per 100 pts into each target, the better of shooting and melee, ev.js) and Defense (hits to destroy it per 100 pts from each attacker), each a percentile over the units, Value their mean, the letter from Value and with today's meta lift. Default wargear throughout, so the sets are compared like for like (the published scores use each target's best squad, so this baseline differs a little from the tier list). "Changed" counts units whose letter differs from this baseline. ρ is Spearman's correlation of Value with the share of winning lists (1105 units some 5 or more lists could field). The community list (T-524) couldn't be read from this environment, so list share stands in for it.
The candidates:
- Big target, 4++: T11 Sv3+ 4++ W18 (Knights, Daemon Princes, wraith constructs, big monsters).
- Tough horde: 10 × T5 Sv5+ W1 infantry (Ork- and Nurgle-style bodies).
- Mortal wounds: D2 wounds that ignore saves and invulnerable saves (Devastating Wounds, mortal wounds); Feel No Pain still counts.
- A precision attacker (sniping characters) isn't added: our Defense scores a unit on its own, so precision changes nothing there; it matters for a character joined to a squad, which T-527's Banner method is the place to model.
Results
| Set | Letters changed (maths only) | Letters changed (with the meta lift) | ρ with list share |
|---|---|---|---|
| Today's five and five (baseline) | 0 | 0 | 0.119 |
| + big target with a 4++ | 85 | 54 | 0.108 |
| + tough horde | 110 | 59 | 0.130 |
| + mortal-wounds attacker | 196 | 115 | 0.136 |
| + all three (7 targets, 6 attackers) | 226 | 132 | 0.136 |
| 7 and 6, weighted by the winning lists | 241 | 133 | 0.089 |
| Today's five and five, weighted by the winning lists | 248 | 140 | 0.088 |
| Swap GEQ for the tough horde | 49 | 28 | 0.117 |
| Swap the heavy vehicle for the big 4++ target | 82 | 47 | 0.123 |
| Swap GEQ for the tough horde, + mortal-wounds attacker | 191 | 108 | 0.133 |
| Recommended: heavy vehicle → big 4++ target, + mortal-wounds attacker | 219 | 131 | 0.138 |
| Recommended, + tough horde (6 targets, 6 attackers) | 295 | 183 | 0.147 |
| Targets in cover | 175 | 100 | 0.134 |
| Within half range | 100 | 54 | 0.119 |
What the winning lists field and carry
Target classes by the points winning lists put into units of that kind (lists taking the unit × its points); attacker classes by the attacks of the weapons in the units they take (lists × attacks × models; every weapon on the datasheet counts, a rough proxy for the loadouts taken).
| Target class | Share of winning lists' points |
|---|---|
| GEQ-like (light infantry) | 3% |
| MEQ-like | 12% |
| TEQ-like (3+ wounds or 2+) | 38% |
| Light vehicles and monsters | 21% |
| Heavy vehicles and monsters | 8% |
| Big ones with a 4++ or 5++ | 15% |
| Tough hordes (T5, 5+ or worse) | 1% |
| Attacker class | Share of winning lists' attacks |
|---|---|
| Small arms | 22% |
| Special | 23% |
| Plasma-class (D2 or AP-2) | 37% |
| Elite (D3) | 3% |
| Anti-tank (S10+ or D6) | 7% |
| Devastating Wounds | 6% |
Lenses (T-531): the same units through different metas
A lens is a set of weights over the targets and attackers. Value, and so the letter, recomputes from the stored cells. Seven lenses over the seven targets and six attackers tested here (letters from the maths bands on each lens's Value):
| Lens | What it weighs | S | A | B | C | D |
|---|---|---|---|---|---|---|
| Even | every target and attacker the same | 67 | 194 | 350 | 292 | 258 |
| Current meta | what the winning lists field and carry (July to September) | 50 | 243 | 301 | 300 | 267 |
| Monster mash | big things: vehicles, monsters, Knights | 67 | 221 | 314 | 291 | 268 |
| Horde | bodies: light infantry and tough hordes | 69 | 206 | 315 | 308 | 263 |
| Elite infantry | Marines and Terminators | 60 | 180 | 380 | 296 | 245 |
| Armour | tanks and big targets with invulnerable saves | 79 | 204 | 314 | 288 | 276 |
| Mortal wounds heavy | the enemy ignores saves: Feel No Pain is king | 90 | 184 | 318 | 306 | 263 |
How far a unit's letter travels across the seven lenses: the same letter in all 301, one letter apart 590, two 263, three 7, four (S in one, D in another) 0.
S in one lens, C or D in another (5 units; the first 15 by list share):
| Unit | Army | Pts | Even | Current meta | Monster mash | Horde | Elite infantry | Armour | Mortal wounds heavy | Lists |
|---|---|---|---|---|---|---|---|---|---|---|
| Kroot Farstalkers | T'au Empire | 75 | B | C | B | S | B | B | A | 7% |
| Venomthropes | Tyranids | 55 | A | B | B | S | A | C | A | 4% |
| Shadowsword | Astra Militarum | 375 | B | A | S | C | B | S | C | 0% |
| Shadowsword | Genestealer Cults | 375 | B | A | S | C | B | S | C | 0% |
| Barbgaunts | Tyranids | 55 | A | C | B | S | A | B | A | 0% |
What the lenses show, and the design (T-531)
Letters move, but "S in one meta, D in another" doesn't happen with these lenses. Across the seven:
- 590 units move one letter, 263 move two, 7 move three, and none go from S to D;
- 301 keep the same letter.
The reason is that Value is half Defense, and a target lens only re-weights Offense. For a meta lens to move letters as far as Jordan expects, it has to re-weight both sides together. A monster-heavy meta also brings the guns that kill monsters, so the lens should shift the attackers too: anti-tank and mortal wounds up, small arms down. Under V2's jobs the letter comes from a unit's best job, so a lens that lifts one job can carry a unit further than it does here. The mockup should show a V2 letter, not today's.
Precompute wide, weight late.
- Data: rankings.json already holds each unit's damage into each target (
off, ranged and melee) and hits to destroy from each attacker (def). Storing the recommended set (six targets, six attackers) adds about 25 KB gzipped to today's 343 KB. Storing twelve targets and eight attackers, room for more lenses, adds about 66 KB. - Compute: a lens is two weight vectors. The browser re-percentiles each column, takes the weighted means, ranks again and hands out the quotas. Measured in Chromium with the CPU slowed 4× (a mid-range phone) for 1,241 units: 24 ms at five and five, 35 ms at twelve and eight, well under the 100 ms target. Node does it in 5 to 7 ms.
- No rebuild to change a lens. Offense, Defense, the jobs, the composite, the quotas and the letter all follow from the stored cells. The job demand that splits the quotas comes from the same lists that set the lens's weights, so it's lens-dependent too.
The lenses.
- Built-in:
- Current meta is the default and what the static pages and Google see. Its weights come from the winning lists' points by target class and attacks by weapon class, refreshed daily with the corpus.
- Even keeps today's weights, for continuity.
- Skews: Monster mash, Horde, Elite infantry, Armour, Mortal wounds heavy.
- Last month's meta, for a before and after.
- Each lens has a line saying what it weighs, and its weights show on a tap.
- Custom: sliders, or "from these lists": paste an opponent's lists, or pick winning lists or a tournament, and the weights come from them. It's saved on the device in a new
hre.lens.v1key, added to CLAUDE.md when built. A link carries the lens (?lens=), so a shared tier page reproduces it. It's a candidate supporter perk later (our software, allowed by the rules), and free while memberships are off.
Where a lens applies.
- Tier list and faction pages: letters and job tags re-rank live. A lens chip sits by the title, and a line under a unit whose letter differs says "S in the current meta · B against hordes", so a moving letter never looks like a bug.
- Unit pages: the job bars and the Banner table re-weight.
- The calculator's stand-ins stay fixed. They're for running a matchup, and a shared calculator link must mean the same next week. The lens shows which stand-ins it weighs most instead.
- Static HTML always shows Current meta, with one canonical lens for search engines. Other lenses are client-side only.
A lens page. A section of /meta/ (or /meta/lens/) shows the current weights as bars and their change since last month ("big targets with invulnerable saves up 6 points"). That's a Monday paragraph in itself.
Risks.
- Moving letters: the chip and the line above, and the canonical lens on static pages.
- File size: the figures above.
- CPU: measured above.
- Lenses that disagree with the lists: the "Current meta" weighting lowered agreement with list share in this test (0.088 against 0.119). The lens should be a tool for a question ("what's good against hordes?"), with the default staying the one that best predicts what wins. Re-test the default when T-524's community list can be read.
+ big target with a 4++: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Tyrannofex | Tyranids | 170 | A → S |
| C'tan Shard of the Nightbringer | Necrons | 360 | B → A |
| Knight Valiant | Imperial Knights | 400 | B → A |
| Be'lakor | Chaos Daemons | 390 | C → B |
| Brôkhyr Iron-master | Leagues of Votann | 70 | A → S |
| Zephyrim Squad | Adepta Sororitas | 75 | B → C |
| Corsair Skyreavers | Aeldari | 75 | C → D |
| Corsair Skyreavers | Drukhari | 75 | C → D |
+ tough horde: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Scourges with Shardcarbines | Drukhari | 75 | D → C |
| Venomthropes | Tyranids | 55 | B → A |
| Barbgaunts | Tyranids | 55 | B → A |
| Ghazghkull Thraka | Orks | 300 | A → B |
| Cronos | Drukhari | 55 | B → A |
| Cultist Firebrand | Chaos Daemons | 45 | D → C |
| Cultist Firebrand | Chaos Knights | 45 | D → C |
| Cultist Firebrand | Chaos Space Marines | 45 | D → C |
+ mortal-wounds attacker: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Ynnari Archon | Aeldari | 85 | B → C |
| Wraithknight with Ghostglaive | Aeldari | 380 | B → C |
| Astraeus | Space Marines | 525 | B → C |
| Ghazghkull Thraka | Orks | 300 | A → B |
| Avatar of Khaine | Aeldari | 250 | A → B |
| Stormsurge | T'au Empire | 375 | B → C |
| Khorne Lord of Skulls | Chaos Space Marines | 450 | B → C |
| Telemon Heavy Dreadnought | Adeptus Custodes | 225 | B → C |
+ all three (7 targets, 6 attackers): the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Canoptek Scarab Swarms | Necrons | 40 | B → A |
| Archon | Drukhari | 80 | B → C |
| Ynnari Archon | Aeldari | 85 | B → C |
| Wraithknight | Aeldari | 385 | C → D |
| Wraithknight with Ghostglaive | Aeldari | 380 | B → C |
| Kairos Fateweaver | Chaos Daemons | 305 | B → C |
| Kairos Fateweaver | Thousand Sons | 305 | B → C |
| Hormagaunts | Tyranids | 70 | B → A |
7 and 6, weighted by the winning lists: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Sicarian Infiltrators | Adeptus Mechanicus | 75 | B → C |
| Assault Intercessor Squad | Space Marines | 75 | B → C |
| Reiver Squad | Space Marines | 75 | B → C |
| Barbgaunts | Tyranids | 55 | B → C |
| Blood Claws | Space Wolves | 135 | A → B |
| Knight Crusader | Imperial Knights | 395 | C → B |
| Defiler | Death Guard | 300 | B → A |
| Zephyrim Squad | Adepta Sororitas | 75 | B → C |
Today's five and five, weighted by the winning lists: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Barbgaunts | Tyranids | 55 | B → C |
| Blood Claws | Space Wolves | 135 | A → B |
| Assault Intercessor Squad | Space Marines | 75 | B → C |
| Reiver Squad | Space Marines | 75 | B → C |
| Witchseekers | Adeptus Custodes | 50 | B → C |
| Harridan | Tyranids | 610 | D → C |
| Sicarian Infiltrators | Adeptus Mechanicus | 75 | B → C |
| Fellgor Beastmen | Chaos Daemons | 60 | B → C |
Swap GEQ for the tough horde: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Sternguard Veteran Squad | Black Templars | 85 | B → C |
| Ratlings | Astra Militarum | 60 | C → D |
| Troupe Master | Aeldari | 75 | C → D |
| Troupe Master | Drukhari | 75 | C → D |
| Palatine | Adepta Sororitas | 50 | C → D |
| The Visarch | Aeldari | 80 | B → C |
| Serberys Raiders | Adeptus Mechanicus | 60 | C → D |
| Rogue Trader Entourage | Agents of the Imperium | 75 | A → B |
Swap the heavy vehicle for the big 4++ target: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Wolf Priest | Space Wolves | 70 | D → C |
| Dark Apostle | Chaos Daemons | 65 | C → B |
| Dark Apostle | Chaos Space Marines | 65 | C → B |
| Toxicrene | Tyranids | 120 | A → S |
| Lokhust Heavy Destroyers | Necrons | 50 | C → B |
| Callidus Assassin | Agents of the Imperium | 100 | C → D |
| Field Ordnance Battery | Astra Militarum | 90 | C → B |
| Field Ordnance Battery | Genestealer Cults | 90 | C → B |
Swap GEQ for the tough horde, + mortal-wounds attacker: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Archon | Drukhari | 80 | B → C |
| Wraithknight with Ghostglaive | Aeldari | 380 | B → C |
| Avatar of Khaine | Aeldari | 250 | A → B |
| Ghazghkull Thraka | Orks | 300 | A → B |
| Daemon Prince of Tzeentch with wings | Thousand Sons | 170 | A → B |
| Astraeus | Space Marines | 525 | B → C |
| Hand of the Archon | Drukhari | 115 | D → C |
| Telemon Heavy Dreadnought | Adeptus Custodes | 225 | B → C |
Recommended: heavy vehicle → big 4++ target, + mortal-wounds attacker: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Wraithknight with Ghostglaive | Aeldari | 380 | B → C |
| Ynnari Archon | Aeldari | 85 | B → C |
| Wraithknight | Aeldari | 385 | C → D |
| Krootox Riders | T'au Empire | 45 | C → B |
| Khorne Lord of Skulls | Chaos Space Marines | 450 | B → C |
| Knight Castellan | Imperial Knights | 425 | B → C |
| Canoptek Scarab Swarms | Necrons | 40 | B → A |
| Heretic Astartes Daemon Prince with wings | Chaos Space Marines | 180 | B → C |
Recommended, + tough horde (6 targets, 6 attackers): the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Ghazghkull Thraka | Orks | 300 | A → B |
| Kroot Farstalkers | T'au Empire | 75 | B → A |
| Wraithknight with Ghostglaive | Aeldari | 380 | B → C |
| Archon | Drukhari | 80 | B → C |
| Voidsmen-at-Arms | Agents of the Imperium | 50 | C → B |
| Canoptek Scarab Swarms | Necrons | 40 | B → A |
| Field Ordnance Battery | Astra Militarum | 90 | C → B |
| Field Ordnance Battery | Genestealer Cults | 90 | C → B |
Targets in cover: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Leman Russ Executioner | Astra Militarum | 145 | A → B |
| Leman Russ Executioner | Genestealer Cults | 145 | A → B |
| Goliath Truck | Genestealer Cults | 75 | A → B |
| Hernkyn Pioneers | Leagues of Votann | 80 | B → C |
| Razorshark Strike Fighter | T'au Empire | 160 | B → C |
| Crisis Fireknife Battlesuits | T'au Empire | 100 | B → C |
| Mek Gunz | Orks | 55 | B → C |
| Ironkin Steeljacks with Heavy Volkanite Disintegrators | Leagues of Votann | 80 | S → A |
Within half range: the biggest moves
| Unit | Army | Pts | Letter |
|---|---|---|---|
| Kataphron Breachers | Adeptus Mechanicus | 150 | D → B |
| Caladius Grav-tank | Adeptus Custodes | 210 | B → A |
| Chaos Land Raider | World Eaters | 220 | B → S |
| Forgefiend | World Eaters | 140 | B → A |
| Chaos Predator Destructor | World Eaters | 130 | C → B |
| Lokhust Heavy Destroyers | Necrons | 50 | C → B |
| Skorpius Dunerider | Adeptus Mechanicus | 75 | B → A |
| Sternguard Veteran Squad | Space Marines | 100 | C → B |