feat(grammar)!: the run segment, last, and the position is the argument #9
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/the-run-segment"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The rule was prose, and the slot was taken
The convention named a "run qualifier" three times (
CONVENTION.md§ env, § 6, § 14) and defined it nowhere — whilequalifieris a single token already carrying real refinements. A rehearsal of the data lake produced one name twice:So the run is its own segment, last:
A rehearsal is a from-scratch realisation of an environment beside the real one: its resources keep that environment's own
env— a faithful copy of production saysprd— and the run tells two realisations apart.Why last, and not where the ADR wrote it
env(ADR-010 decision 5)targetsits — decodable only because a run holds a digit and a target code does not. An argument that expires in silence.ADR-010 wrote "after env" before the
targetsegment existed at that position.Three lints, all mutation-tested
The shape is fixed in the registry (
grammar.run_regex:r+ three hex digits) so the segment is recognised without being counted from either end. The lints refuse a shape a location code matches, a shape the two-digit index matches, and no shape at all.Two things it refuses, deliberately
The compact style refuses rather than dropping the run. 8 characters on a Proxmox SDN object, 5 eaten by the prefix: emitting the name without its run would hand two realisations one name on the one platform where the name is all there is. Consequence recorded in the README's known limits — those objects cannot be rehearsed today, they need a shorter shape or a second node.
A run outside the shape is refused by the module and by the policy, both reading the registry, so the two cannot disagree about what a run looks like.
One bug this found in passing
decode()reads the run first, because the segment is last: taking the index or the location before it hands them the run's token. Measured here — the location vanished from a rehearsed name until this was fixed. That is how a tail segment added without touchingdecodesilently loses the two below it.Verification
make checkgreen. The prose that said "a run qualifier" now names the segment, in all four places.🤖 Generated with Claude Code