02-decision-reach-units.md · non-normative

Decision — a Reach is a distance in tiles

Taken 2026-09-09. Binding. The owner put the question and delegated the answer, as with 01-decision-turn-model.md. This document records the evidence, the decision, what it changes, and what it does not, so that neither half is re-litigated from memory.

The decision. Every Reach in 12-economy.md §13 is a number of tiles of open ground. The supply fill stays a cost-limited Dijkstra expansion, and it converts a Reach to a cost budget by multiplying by the foot entry cost of Plains — 4 in 01-game-rules.md's movement-cost table. EC-1675 states it; EC-1680 spends it; EC-1590's Town 8 / City 12 / Metropolis 18, the Railhead's +8 and EC-1600's Depot 10 keep the numbers they always had.


The question

EC-1600 gives an emplaced Depot Reach 10. EC-1590 gives a city Reach 8, 12 or 18 by class. EC-1680 spends a Reach as a movement-cost budget over the terrain table, evaluated for a canonical foot class (EC-1580).

The cheapest land tile in the game costs 4 for foot. So "Reach 10" is either ten tiles or two and a half, and the two readings differ by a factor of four in every direction on the map.

The evidence

Measured, on the shipped generator, before the change — every seat's own fill, two seeds per size:

capital Reach Supplied radius Extended radius nearest neutral city Isolated tiles to cross EC-1740 cost
Town 8 2 tiles 3 tiles 14 tiles 11 100% of maxStrength — fatal
City 12 3 tiles 4 tiles 14 tiles 10 75%
Metropolis 18 4–8 tiles 6–13 tiles 8–14 tiles 0–5 0–30%

A seat's entire supply network on a Standard map was 24 tiles out of 7,488 — 13 Supplied and 11 Extended. On every shipped size, no city lay within Reach 10 of any capital. A Town-capital seat could not reach a single city alive: 11 tiles of Isolated ground at an infantry's two tiles a turn is six isolated turns, and EC-1740's schedule (5, 15, 30, 50, 75, 100 cumulative) kills a unit in six.

That is the observable signature the project had already recorded and attributed elsewhere: on a 200-turn Standard game, 116 SupplyCut against 111 UnitLost, 100 units built, and zero combat — essentially every unit built died of isolation. Eight successive changes to the Constraint Floor's movement policy were measured and reverted against it, because no rule about when a unit turns back can change a subtraction.

Two requirements in §13 already read Reach as tiles, and both are arithmetically false under the cost reading:

Nothing but the mechanism of EC-1680 read Reach as cost, and the mechanism never stated a magnitude. The document's other radius — the Academy's "Chebyshev 12" (EC-470) — is stated in tiles, at a comparable magnitude.

And the design intent is explicit in the section's own preamble: supply is "the brake that makes distance cost something", and EC-1590's rationale describes an offensive tempo tied to a governing tempo — "you cannot leapfrog: taking the next city forward does not extend your network until you have spent thirteen turns and an administrator making it yours". That presupposes a player who can take the next city forward. A 24-tile network on a 7,488-tile map is not a brake; it is an off switch.

Why the conversion, and not one of the alternatives

Restate the numbers as costs (Town 32, City 48, Metropolis 72, Depot 40). Equivalent in behaviour, and rejected: it leaves every figure in §13 four times larger than the geography it describes, so a reader divides by a constant to picture the map, and EC-1670's and EC-2210's sentences still need rewriting to be true. The numbers 8, 12, 18 and 10 are the geography; the cost is an implementation unit.

Make the fill a Chebyshev radius. Rejected outright: it deletes EC-1580's canonical foot class, EC-1700's water discounts, and the whole of "the question supply answers is is there a road home". Terrain would stop mattering to supply, which is the mechanic's only purpose.

Leave it and treat the AI's failure as an AI problem. Rejected on the measurement: it is arithmetic in two rules documents, and no ninth movement rule can fix it.

The conversion constant is named as the foot entry cost of Plains rather than as the literal 4, because 01-game-rules.md owns the cost table and 12-economy.md owns Reach. In the core it is OPEN_GROUND_STEP in economy/supply.ts, a constant rather than a lookup into the loaded terrain set: a mod that repriced Plains would otherwise silently redraw every supply envelope in the game, and a set with no tile named Plains would have nothing to read. A test asserts the shipped set's open ground still costs it, so a divergence fails rather than drifts.

What it changes

The geography, measured after the change:

capital Reach Supplied radius Extended radius Isolated tiles to the nearest city EC-1740 cost
Town 8 8–13 tiles 12–21 tiles 0–2 0–5%
Metropolis 18 20–26 tiles 20–39 tiles 0 0

A Standard seat's network goes from 24 tiles to 283–626. The first ring of neutral cities is reachable with at most one isolated turn, holding it still requires Integration 50 or a Depot, and the Depot chain of EC-1660 and EC-1670 becomes the instrument its rationale describes — ten tiles a hop, eighty tiles in eight.

Rough ground still shortens the envelope, in proportion to what it costs to cross: a Town's eight open tiles is two tiles of marsh. That is the brake, applied to the geography its authors wrote.

Every state hash in the project moved that could. Measured rather than assumed: 18 of the 33 corpus games re-emitted and 15 are byte-identical — the unmoved fifteen are the idle and victory-track games, whose units stand on or beside their own cities and were Supplied under either reading. Both committed containers moved (reference-game.elc 23203b39e11fcb4a → bde4bbed93e19821, first-finish.elc 96309774477791f3 → c621568d3dd7da33), their logs and initial.bin untouched; the two CLI pins follow them. The AR-960 reference hash did not move — the determinism fixture is the harness's own mini-engine and never runs a fill.

What it does not change

What is still open after it


Built from source 47fa2827eff0 · VERSION.json