Decision

Never guess a stopping distance

Automated braking uses only measured track lengths and refuses on unmeasured track. Automation's one invariant is that a train never passes the end of its authority, and where a beam is fitted, the beam breaking is what stops it.

Status
accepted
Decided
Affects
Layout Orchestration

Context

Occupancy is block-level: a train confirmed in a block could be anywhere inside it. Braking runs open-loop, from a commanded speed step, with no speed measurement. To stop a train at a point, the orchestrator has to know how much track there is to stop in.

Decision

Braking distance is worst-case and measured. It’s the sum of the intermediate blocks’ measured lengths, from the exit of the train’s confirmed block to the entry of its target. Any block in that stretch without a measured length refuses the run outright, naming the block.

The pathfinder’s default 1000mm block length is explicitly not reused. Guessing a cost to steer a route search is fine, since the worst outcome is a slightly worse route. Guessing a stopping distance is a collision if the guess is short.

Automation, added later (#7), builds on this with one invariant:

A train under automation never passes the end of its authority.

Consequences

Source: docs/braking.md B4 and docs/automation.md A1, A2.