Tactical Reroll
⋯

The allocation rule and the reference battle (T-569 step 3), and the field's lenses

From reports/tiers/2026-10-03-allocation.md , rendered when the site is built.

node tools/allocate.js (tests: tests/unit/allocate.test.js, and the lens test in tests/unit/field.test.js). A report for the tier work; nothing here reaches the site. BSData 374f505, corpus 570b8c6, the top-quarter field from tools/field.js (build/field/states.json, 630 units, 2,002 points). No panel was read; no tier test was run.

What was built

The tests (all pass)

TestResult
β = ∞, one round, the sheet's numbers through the kernel and the battle: each unit's choice is the sheet's best target54 of 54 units, two sample pairings both ways (the four k = 4 medoid lists: Space Wolves against Astra Militarum, Drukhari against Necrons)
No target ever loses more than it has300 random turns × 6 β (0 to ∞), saturation forced; the field's five-round battle at β 6
Conservationeach gun's shares plus its lost share sum to one (1e-9); Δ is exactly the fire received; total landed never above every gun at its best
Two guns, two targets by hand (β = 1)first choices 2/7, 5/7 and 6/11, 5/11; target 1 (4 wounds) saturated: shares 22/107 and 42/107, spill 85/107 and 65/107; target 2 loses 810/107; one pass, nothing lost. A gun reaching only the saturated target loses 0.6; at β = ∞ the spill goes to the next best
Anti-tank into chaff while hulls remainfour lascannons against 9 × 20 Termagants, a Rhino and a Land Raider (reach off): 0.25% to 0.93% into chaff over five rounds at β 6 (β 3: 12% to 24%; β 0: 87%)
Interface: stored cells against the live kernelidentical wounds left and shares, three rounds, both pairings (1,000+ cells stored, read back from JSON)
β sweep at 3, 6, 12below; the chaff share falls as β rises

The β sweep (the field's battle, reach on; agreement on the sample pairings, reach off)

βGame-plan agreement(sheet on wounds at π)Anti-tank fire into chaff, round 1over five roundsRound 1 fire lost to saturation
335/54 (65%)43/541.30%0.62%0%
633/54 (61%)41/540.32%0.14%0%
1232/54 (59%)40/540.04%0.02%0%
∞32/54 (59%)40/540%0%75%

Chaff is 4.8% of the field's points. Agreement is measured on the matrix's own volleys; the sheet counts whole models slain with cover and half range on and takes the better of shooting and fighting, the matrix counts wounds at points per wound (question 6) with neither and both halves together. On the matrix's convention (the sheet re-scored as wounds removed × points per wound) agreement rises to 74% to 80%; the rest is cover, half range and the summed halves. The battle destroys about 1,890 of 2,002 points in five rounds at β 6 (528, 666, 403, 202, 93): no terrain flatters shooting, as section 11 warned.

The lenses (3 Oct): the k = 4 split as compositions

v1 runs on one meta state, the whole top-quarter field: the clustering found one stable state, and the lists are a continuum (silhouettes 0.12 to 0.23), not separate kinds. The four states of the turned-down split are lenses by composition, not membership: each state's class shares re-weight the whole field (each class's units multiplied alike), so a lens holds the field's 2,002 points and exactly that mix. Names provisional; Jordan names them.

LensComposition (points; field share, multiplier)Anti-tank into chaff, round 1, β 6
heavy infantryheavy infantry 43% (19%, ×2.23), character 19% (16%, ×1.16), light vehicle 12% (14%, ×0.86), elite infantry 12% (13%, ×0.92), cavalry and beasts 8% (7%, ×1.11)0.24%
armourheavy vehicle 45% (13%, ×3.37), elite infantry 14% (13%, ×1.03), light vehicle 12% (14%, ×0.82), character 11% (16%, ×0.67), heavy infantry 9% (19%, ×0.47), monster 6% (12%, ×0.54)0.06%
mixedlight vehicle 30% (14%, ×2.07), elite infantry 24% (13%, ×1.75), character 16% (16%, ×0.99), chaff 13% (5%, ×2.77), cavalry and beasts 6% (7%, ×0.87), monster 5% (12%, ×0.45)0.51%
monstersmonster 39% (12%, ×3.30), character 19% (16%, ×1.18), heavy infantry 15% (19%, ×0.76), cavalry and beasts 13% (7%, ×1.92)0.28%

Timing

Pool and profiles 0.17 s; the field's volley tables 2.2 s (1,358 groups × 630 targets, 348,080 cells); one five-round battle both ways 0.75 s; the whole command 9 s.

Decided alone

Doubts

For the supervisor

design/decisions.md entry (paste-ready):

3 Oct: the allocation rule and the reference battle (T-569 step 3); one meta state for v1, lenses by composition

  • Built: tools/allocate.js: the soft best-target kernel (β, saturation and spill over five passes, then lost and reported), reach (12" band, half range, Lone Operative, the charge, AIRCRAFT), the reference battle (five simultaneous rounds, fluid targets); the matrix read through one interface, so T-568 step 4's stored layers drop in unchanged (tested). Lenses in tools/field.js.
  • One meta state for v1. The top quarter holds one stable state; lists are a continuum (silhouettes 0.12 to 0.23). The k = 4 split becomes four lenses defined by composition, not membership: each state's class shares re-weight the whole top-quarter field (heavy infantry 43%; armour, heavy vehicles 45%; mixed, light vehicles 30% and chaff 13%; monsters 39%), a synthetic skew that is stable across refreshes and explainable in one line. Names provisional; Jordan names them.
  • Numbers: β = ∞ reproduces the game-plan sheet's best targets 54/54 on its own numbers; the matrix's choices agree with the sheet 61% at β 6 (74% to 80% on the matrix's own damage convention); anti-tank fire into chaff 0.32% of round one at β 6 (1.30% at β 3, 0.04% at β 12). β stays 6, to be fitted.
  • Proposed convention, for Jordan to confirm, applied from the next run: a meta state counts only if its mean per-state Jaccard over 5 seeds is at least 0.6 and the split's silhouette is at least 0.25 (below that no split is worth showing as a state).
  • Next: step 4, X as a marginal entrant (H_t, the mirror, S_t, F^−X), with layer one's delivery in place of the placeholder track.

design/scoring.md changelog line (paste-ready):

3 OctT-569 step 3, a report only, live scores unchanged: tools/allocate.js, the allocation kernel (σ ∝ ρ × R × (v ÷ v*)^β, β 6 swept at 3, 6 and 12; saturation scales a target's incoming fire to R ÷ Δ and respreads the freed share over each gun's open targets, five passes, then lost; β = ∞ spills to the best open target), reach (a 12" depth band, half-range shares for Rapid Fire and Melta, Lone Operative within 12", the charge as 2D6 against the gap, no melee into AIRCRAFT without FLY; a placeholder track of 24" closing by Move until delivery is wired) and the reference battle (five simultaneous rounds, fluid targets at points per wound). One meta state for v1; the k = 4 split as four lenses re-weighting the whole field to each state's class composition (tools/field.js lensField). Report: reports/tiers/2026-10-03-allocation.md.