Alignment Workspace

a gate checks that cited paths are in the repository

2026-09-01 · settled · DECISIONS.md line 1649

Maintainer ruling: build it. tests/untracked_pointers.py requires every round record's paths, and every rooted citation in a live document that resolves on disk, to be tracked by git rather than merely present. That is exactly the September failure: six rounds sat off main behind a merged badge, and the shared checkout carried them as untracked files, so dead_pointers.py passed locally and failed in CI.

Two things were wrong and both are fixed. No gate distinguished present from committed; this one does, and its self-test reproduces the failure by writing an uncommitted file and checking git does not see it. And tests/run.py ran only the self-tests of both pointer gates, never their real form, which is why the local run could report green against a tree CI would reject — both real forms now run locally.

Verified against a reconstruction of the original bug: an untracked round directory plus a citation to it passes dead_pointers.py and fails this gate with the right message, which names the stacked-merge cause.

Rejected alternative: folding it into dead_pointers.py. "You deleted something" and "you never committed something" call for opposite fixes and deserve different messages.

Touches

Nothing named.

Nodes pointing at it

None.