Tactical Reroll
⋯

The pooled readable model, version 2: design/jobs.md's variables (T-704)

From reports/tiers/2026-10-05-readable-model-v2.md , rendered when the site is built.

5 Oct 2026. Discovery, not adoption: no ledger value, setting, letter or page moves. Version 1 (reports/tiers/2026-10-05-readable-model.md) is unchanged and reproducible (tools/readable.js --v1). The units, pairs, model, shrinkage, bootstrap, controls and the frozen snapshot (d8b5a1bb14, inputs hash c5e7d85b43f8) are version 1's. Only the variables are new: design/jobs.md's priorities 1 to 25 (T-707), five interactions and seven saturation ranks. Track A is step 34b (wCarry 0).

Tournament list share is the second target, for discovery only. It comes from grimstat-corpus (https://github.com/N041M/grimstat-corpus, CC BY 4.0): 487 11th-edition lists from 30 events, 27 June to 26 September, published by their players and tournament organisers on MiniHeadQuarters. We read counts only. List share is never in a letter.

In plain English

What was fitted.

Does version 2 learn more than version 1? No. It reshuffles where the signal is found, but no more of it transfers.

| | Army mean, 16 | 15 (no Tyranids) | Every pair pooled | |---|---:|---:|---:| | Track A | 61.9 | 60.1 | 62.5 | | Version 1 | 60.1 | 59.5 | 58.5 | | Version 2 | 59.8 | 58.9 | 59.7 | | Version 2, main effects only | 59.7 | 58.6 | 60.2 | | Burst alone | 58.2 | 57.4 | 59.6 | | Version 2 + Epic Hero and Psyker (version 1's flags) | 61.9 | 61.1 | 60.6 | | Version 2 + Track A's Value | 60.4 | 59.4 | 60.3 |

What reviewers appear to value. Each figure is the weight per army-SD (β) with its 95% bootstrap interval and the share of 200 bootstraps above 0. Burst shares its credit with the four target-class Bursts, which correlate with it at 0.7 to 0.9, so read the damage block together.

Where reviewers and players differ (the same model on list share; read as leans):

Which armies differ (the clearest deviations; the placebo's clears 0 in none of the 16):

Read with care.

How it's done.

The coefficients: reviewers and list share side by side

Pairwise logistic, shared across the armies, each variable standardised within its army (one army-SD). β with its 95% bootstrap interval (200 draws of units within armies) and the share of draws above 0. Burst, version 2's nearest to Kill, shares its credit with the four target-class Bursts (correlation 0.7 to 0.9 within armies), so its own β is small and ratios to it are unstable; read the β themselves (the JSON keeps the ratios). Reviewers: λβ 300, λδ 30. List share (grimstat-corpus, CC BY 4.0; discovery only): λβ 300, λδ 300. "Armies same sign": armies where β + the army's deviation has the shared sign, of those where the variable varies. A flag's median within-army SD is beside it (having the flag ≈ β ÷ SD).

VariableKindReviewers β [95%]Reviewers P(β > 0)Armies same signList share β [95%]List share P(β > 0)Median within-army SD
Burst+0.02 [+0.01, +0.04]100%12/16+0.03 [+0.00, +0.06]99%0.70
Anti-tank+0.05 [+0.03, +0.06]100%16/16+0.03 [+0.00, +0.07]99%1.09
Anti-elite+0.04 [+0.02, +0.05]100%16/16+0.04 [+0.01, +0.06]100%1.08
Horde clearing+0.03 [+0.01, +0.05]100%14/16+0.04 [+0.01, +0.07]98%1.16
Durability per point−0.02 [−0.03, +0.01]14%12/16−0.03 [−0.07, +0.02]17%0.47
OC per point, kept steady+0.02 [−0.00, +0.03]97%12/16+0.07 [+0.04, +0.10]100%0.57
Unlocks a squad+0.01 [−0.01, +0.03]84%10/16+0.04 [+0.01, +0.08]100%3.04
Forward deployment+0.02 [−0.00, +0.04]91%12/15+0.04 [−0.01, +0.08]96%0.34
Reserves and Deep Strike+0.04 [+0.01, +0.06]100%14/16+0.04 [+0.00, +0.09]98%0.45
Hard to target+0.02 [−0.00, +0.04]94%11/13+0.06 [+0.01, +0.10]99%0.25
Can be Hidden+0.03 [+0.01, +0.05]100%13/16+0.05 [+0.01, +0.09]100%0.49
Melee delivery−0.00 [−0.02, +0.02]54%9/16+0.02 [−0.02, +0.06]89%0.42
Threat range+0.00 [−0.02, +0.02]48%9/16−0.00 [−0.04, +0.04]39%0.47
Fly−0.04 [−0.06, −0.01]1%13/15−0.03 [−0.07, +0.02]10%0.35
Cheap activations−0.01 [−0.03, +0.00]5%11/16−0.01 [−0.03, +0.02]30%0.23
Holding power+0.02 [−0.00, +0.03]97%11/16+0.06 [+0.03, +0.10]100%0.64
Army-rule enabler+0.03 [+0.02, +0.05]100%7/9+0.05 [+0.01, +0.09]100%0.39
Engine, measured+0.02 [−0.00, +0.04]95%5/8+0.02 [−0.03, +0.06]75%0.35
Transport+0.00 [−0.02, +0.02]50%8/14−0.02 [−0.06, +0.02]13%0.75
Slot competition (siblings)−0.01 [−0.04, +0.01]13%10/13+0.02 [−0.04, +0.06]70%0.04
Battle-shock pressure−0.01 [−0.02, +0.01]15%3/6+0.00 [−0.04, +0.05]53%0.84
Command points+0.03 [+0.00, +0.05]99%12/14+0.09 [+0.04, +0.12]100%1.00
Character hunting+0.01 [+0.00, +0.03]99%11/16+0.02 [−0.00, +0.06]96%0.66
Action-doer−0.00 [−0.02, +0.02]42%9/16+0.03 [−0.01, +0.06]92%1.80
VP denial−0.00 [−0.02, +0.02]55%9/16+0.00 [−0.03, +0.04]51%0.64
Mitigation and recursion+0.00 [−0.03, +0.03]63%10/16+0.02 [−0.02, +0.07]83%0.11
List dependence+0.01 [−0.02, +0.04]86%10/15+0.06 [+0.01, +0.10]100%0.09
Screening−0.00 [−0.02, +0.01]30%9/16+0.03 [−0.01, +0.06]94%0.21
Points (relative to its army)+0.01 [−0.01, +0.03]89%10/16−0.00 [−0.03, +0.02]42%0.51
× Delivery × melee damageinteraction−0.02 [−0.04, +0.01]6%11/16−0.01 [−0.05, +0.03]34%0.89
× Leader × squad (the squad's side)interaction+0.00 [−0.02, +0.03]74%8/16+0.10 [+0.06, +0.14]100%2.78
× Durability × OCinteraction+0.02 [−0.00, +0.05]94%13/16+0.05 [+0.00, +0.09]98%0.77
× Transport × riderinteraction+0.01 [−0.01, +0.03]90%9/13+0.00 [−0.04, +0.04]49%1.58
× Burst × Soakinteraction−0.00 [−0.03, +0.02]48%8/16+0.01 [−0.04, +0.05]60%1.05
Saturation: anti-tank ranksaturation+0.02 [−0.00, +0.04]97%12/16+0.03 [−0.01, +0.07]91%0.18
Saturation: anti-elite ranksaturation+0.02 [−0.01, +0.03]94%12/16+0.01 [−0.04, +0.05]66%0.18
Saturation: horde-clearing ranksaturation+0.03 [+0.01, +0.04]100%13/16+0.02 [−0.03, +0.05]75%0.18
Saturation: character-hunting ranksaturation−0.01 [−0.03, +0.01]21%9/16−0.02 [−0.06, +0.02]21%0.18
Saturation: cheap-activation ranksaturation−0.03 [−0.04, −0.01]0%15/16−0.04 [−0.06, −0.00]1%0.19
Saturation: screening ranksaturation+0.00 [−0.02, +0.02]50%9/16+0.01 [−0.03, +0.04]70%0.18
Saturation: action-doer ranksaturation−0.03 [−0.04, −0.01]0%16/16−0.04 [−0.06, +0.00]3%0.19
Placebo (random)+0.01 [−0.01, +0.04]83%11/16+0.04 [−0.01, +0.08]91%0.97

Where armies differ (reviewers): per army, the size of its deviations (root mean square of δ over the variables) and its largest deviations whose bootstrap interval leaves 0 (at most four, |δ| ≥ 0.03). Calibration: the placebo's deviation clears 0 in 0 of 16 armies.

ArmyDeviation sizeLargest clear deviations (shared → this army)
Space Marines0.086× Durability × OC +0.02 → +0.16; Anti-elite +0.04 → +0.18; Horde clearing +0.03 → +0.17; Screening −0.00 → +0.12
Tyranids0.078Fly −0.04 → −0.19; Forward deployment +0.02 → +0.16; Anti-tank +0.05 → +0.18; Command points +0.03 → +0.15
World Eaters0.058Anti-elite +0.04 → +0.17; Can be Hidden +0.03 → +0.16; Fly −0.04 → −0.15; Horde clearing +0.03 → +0.14
Astra Militarum0.058Action-doer −0.00 → −0.14; Anti-tank +0.05 → +0.16; Durability per point −0.02 → +0.09; Cheap activations −0.01 → −0.11
Genestealer Cults0.057Melee delivery −0.00 → −0.11; Saturation: cheap-activation rank −0.03 → −0.13; Saturation: action-doer rank −0.03 → −0.13; OC per point, kept steady +0.02 → +0.11
Dark Angels0.055Fly −0.04 → +0.12; Durability per point −0.02 → −0.15; Engine, measured +0.02 → +0.11; Threat range +0.00 → +0.08
Orks0.046Army-rule enabler +0.03 → +0.12; List dependence +0.01 → −0.07; Points (relative to its army) +0.01 → +0.09; Saturation: anti-tank rank +0.02 → +0.09
Death Guard0.042Reserves and Deep Strike +0.04 → +0.17; × Delivery × melee damage −0.02 → +0.09; Threat range +0.00 → −0.08; Action-doer −0.00 → +0.05
Blood Angels0.039Fly −0.04 → +0.03; Command points +0.03 → −0.04; Screening −0.00 → −0.06; × Delivery × melee damage −0.02 → +0.03
Adeptus Mechanicus0.036Durability per point −0.02 → +0.04
Thousand Sons0.035Character hunting +0.01 → −0.05; List dependence +0.01 → +0.08; Army-rule enabler +0.03 → +0.09; × Delivery × melee damage −0.02 → +0.04
Drukhari0.035Action-doer −0.00 → +0.08; Saturation: anti-elite rank +0.02 → +0.05
Leagues of Votann0.035Saturation: screening rank +0.00 → −0.08; × Leader × squad (the squad's side) +0.00 → +0.08; Screening −0.00 → −0.07; Threat range +0.00 → +0.06
Agents of the Imperium0.034Mitigation and recursion +0.00 → −0.09; Melee delivery −0.00 → +0.08; Durability per point −0.02 → −0.09; Saturation: cheap-activation rank −0.03 → −0.10
Emperor's Children0.030Saturation: anti-tank rank +0.02 → +0.08; Saturation: character-hunting rank −0.01 → +0.04
Space Wolves0.028× Leader × squad (the squad's side) +0.00 → −0.05

Leave one army out: version 2 against version 1 against Track A

Fitted on 15 armies (shared coefficients only, λβ chosen inside the 15), the 16th army's order predicted and scored on its consensus pairs; Track A's Value on the same pairs (ties wrong). Version 1 is the same pipeline on version 1's 25 variables. Tyranids: Track A was tuned on them.

Army (11e lists)Consensus pairsTrack AVersion 1Version 2v2 − v1v2 − Track ABurst alonev2 main effects onlyv2 + Epic Hero, Psykerv2 + Track A's Value
Tyranids (3)75789.268.672.1+3.6−17.069.776.473.874.0
Space Marines (2)190463.359.965.3+5.4+2.068.463.965.865.7
Adeptus Mechanicus (1)32271.457.150.3−6.8−21.159.052.553.452.2
Agents of the Imperium (1)22356.564.164.1+0.0+7.665.061.066.462.3
Astra Militarum (1)131967.955.659.4+3.9−8.558.861.957.460.0
Blood Angels (1)12461.355.630.6−25.0−30.641.933.944.434.7
Dark Angels (1)232553.651.449.8−1.5−3.851.550.649.550.8
Death Guard (1)47655.055.051.5−3.6−3.652.952.754.852.7
Drukhari (1)20758.061.464.3+2.9+6.364.358.963.864.3
Emperor's Children (1)19169.658.663.4+4.7−6.362.861.363.463.9
Genestealer Cults (2)12754.366.165.4−0.8+11.052.858.367.763.0
Leagues of Votann (1)10561.048.660.0+11.4−1.051.457.154.361.9
Orks (1)60663.569.574.4+5.0+10.965.774.176.773.8
Space Wolves (1)14050.757.156.4−0.7+5.753.665.756.455.7
Thousand Sons (1)30938.265.055.0−10.0+16.841.453.767.652.8
World Eaters (3)21976.767.674.0+6.4−2.772.174.075.378.1
Army mean, 1661.960.159.8−0.3−2.158.259.761.960.4
Army mean, 15 (no Tyranids)60.159.558.9−0.6−1.157.458.661.159.4
Every pair pooled935462.558.559.7+1.2−2.859.660.260.660.3

Version 2 beats Track A in 7 of 16 armies (version 1: 6), and version 1 in 8 of 16. Without the placebo column: army mean 60.0. Beside Track A's Value, version 2 beats Track A alone in 9 of 16 armies.

The scrambled-letter control

Letters permuted among each army's graded units (all its lists together), 20 seeds, through the identical leave-one-army-out pipeline, version 2's variables.

Version 2 (army mean)Track A on the same scrambled pairs
Real letters59.861.9
Scrambled, mean of 2050.249.9
Scrambled, range45.7 – 55.046.2 – 54.7

Scrambled seeds at or above the real letters' 59.8: 0 of 20.

The placebo column (random per unit): β +0.01 [−0.01, +0.04], 0 armies with a deviation clear of 0.

List share, held out (discovery only)

The same model on 11th-edition list share (pairs: one unit taken by 2 or more lists more than the other; armies with 5+ tournament lists). grimstat-corpus (https://github.com/N041M/grimstat-corpus, CC BY 4.0); counts only.

Army (tournament lists)Share pairsTrack AVersion 1Version 2
Tyranids (27)108579.866.066.5
Space Marines (33)243263.763.070.0
Adeptus Mechanicus (18)33663.157.150.9
Astra Militarum (17)120862.368.470.9
Blood Angels (14)13148.143.545.8
Dark Angels (28)203354.663.258.7
Death Guard (19)46061.351.561.5
Drukhari (14)20548.350.757.6
Emperor's Children (24)20758.548.859.4
Genestealer Cults (5)15668.668.655.8
Leagues of Votann (15)12458.147.654.8
Orks (27)80462.871.675.9
Space Wolves (12)15155.048.353.0
Thousand Sons (9)26344.970.768.8
World Eaters (16)34968.559.367.9
Army mean59.858.661.2

The variables (version 2: design/jobs.md priorities 1 to 25, T-707)

KeyNameKindDefinition
burstBurstmainlog(1 + points finished in one activation of its natural mode, per 100 of its points; form.burst.value, T-644)
antiTankAnti-tankmainlog(1 + Burst into monsters, vehicles and aircraft with the typical army's characters attached; form.prefer.tank, T-655)
antiEliteAnti-elitemainlog(1 + Burst into heavy and elite infantry, cavalry and beasts; form.prefer.elite)
antiHordeHorde clearingmainlog(1 + Burst into chaff; form.prefer.horde)
toughDurability per pointmainlog(1 + Soak): the geometric mean of shooting and melee Soak at β 6 (enemy points per 100 of its points to remove it)
ocOC per point, kept steadymainlog(1 + OC per 100 points × P(2D6 ≥ its Leadership), so a unit likely to fail Battle-shock holds less)
unlockUnlocks a squadmaina leader's package: its best joined form's Value × points less the squad's and the leader's own solo Values × points (same detachment, same squad size), per 100 of the leader's points, signed log; 0 for non-leaders
forwardForward deploymentmainInfiltrators or Scouts (1/0)
reservesReserves and Deep StrikemainDeep Strike, an arrival rule of its own, or an arrival way in the ledger other than Scouts and Infiltrators (rapid ingress, tunnels, reserves, aerial seeding...) (1/0)
elusiveHard to targetmainLone Operative or Stealth (1/0)
hideCan be Hiddenmainevery member Infantry, Beasts or Swarm, so it may be Hidden in terrain when it hasn't fired (form.mission.hide) (1/0)
landsMelee deliverymainthe charge model's landing chance × the melee share of its raw Kill (0 for a pure shooter)
reachThreat rangemainlog(1 + inches): melee share × (Move + 7, + 3.5 with an advance-and-charge rule) + ranged share × (Move + longest range)
flyFlymainthe Fly keyword (1/0); part of jobs.md's reach recipe
bodiesCheap activationsmainlog(1 + 100 ÷ its points at its smallest size)
holdHolding powermainlog(1 + OC per 100 points × (1 − the chance the typical army finishes it in one enemy turn, form.life.q))
engineArmy-rule enablermaintools/armyrules.json names it a giver or extender of its army's rule, or a carrier where under half the army carries it (1/0)
engineMEngine, measuredmainlog(1 + the friends' Kill it adds at β 6: Synapse coverage (form.synapseAdd) plus support effects (form.supportfx.kill)); 0 where unmeasured
transportTransportmainlog(1 + models it carries)
rivalSlot competition (siblings)mainthe strongest pull of a better sibling datasheet (one family by name): tools/rivals.js likeness × gap (how much better per point, capped at twice), 0 to 1
shockBattle-shock pressuremainlog(1 + the ledger's Battle-shock line, points a game per 100 of its points, step 34)
cpCommand pointsmainlog(1 + 30 points a CP × 100 ÷ its points) when it carries a CP-gain rule of its army (tools/characters.json cpGain, cpStack, by rule name); else 0
antiCharCharacter huntingmainlog(1 + Burst into characters with the typical army's leaders attached, alone reachable only by Precision; form.prefer.char)
actorAction-doermainlog(1 + max(0, an action's price − the ranged Kill it forgoes) per 100 of its points) for a unit that can act; the price: the action lines' mean VP over the field's primary mix × points a VP (2,000 ÷ 65)
denialVP denialmain−log(1 + kill-card VP it hands over when destroyed × points a VP, per 100 of its points): Grievous Blow at 13+ models, Bring It Down per W10+ model, Assassination for a character (+1 at W4+), No Prisoners for every unit; each at 4.5, 4.5, 3, 2.5 VP × cards live (2 in 3)
recoverMitigation and recursionmainlog of the Soak it gains from its own effects: heal ÷ exposed (soakfx, Tyranids and Space Marines), × 6 ÷ (FNP − 1), × 1.2 with a heal or spawn rule
dependsList dependencemainlog(its best detachment's Value ÷ the median detachment's), solo forms
screenScreeningmainlog(1 + 100 ÷ its points at its smallest size × min(1, enemy points to remove that size ÷ 100, about one enemy unit)): units per point that cost an activation to clear
pointsPoints (relative to its army)mainlog points of its Track A form; standardised within the army
ixDeliverMelee× Delivery × melee damageinteractionz(landing chance) × z(log(1 + raw melee Kill)): big claws that also get there
ixLeaderSquad× Leader × squad (the squad's side)interactiona squad's best package with any leader: the joined Value × points less both solo Values, per 100 of the squad's points, signed log; 0 for a unit no leader joins
ixDurOC× Durability × OCinteractionz(durability) × z(OC kept steady)
ixTransportRider× Transport × riderinteractiona transport's best rider's need: log(1 + rider Value × melee share × (1 − its landing chance)); 0 for a non-transport
ixBurstSoak× Burst × Soakinteractionz(Burst) × z(durability): trades up
satTankSaturation: anti-tank ranksaturation1 ÷ its rank in its army by anti-tank Burst (0 if none)
satEliteSaturation: anti-elite ranksaturation1 ÷ its rank by anti-elite Burst
satHordeSaturation: horde-clearing ranksaturation1 ÷ its rank by horde Burst
satCharSaturation: character-hunting ranksaturation1 ÷ its rank by character Burst
satBodiesSaturation: cheap-activation ranksaturation1 ÷ its rank by units per 100 points
satScreenSaturation: screening ranksaturation1 ÷ its rank by screening
satActorSaturation: action-doer ranksaturation1 ÷ its rank by action-doing (0 for a unit that can't act)
placeboPlacebo (random)maina seeded random normal per unit: should come out at 0