Development record
grounds.Vocabulary claimed to be the one copy every gate and every flag description reads, and no surface reads it
grounds.Vocabulary claimed to be the one copy every gate and every flag description reads, and no surface reads it
Found by an unused-export sweep while settling the itd-179 delta nits, not by any of the delta reviews.
grounds.Vocabulary carried the comment "It is the ONE copy every gate and
every flag description reads." Nothing outside package grounds reads it. The
closed set is rendered for refusals by the package-internal vocabularyList,
and every surface spells the three values as literal text instead: four sites
in internal/surface/cli/cli.go, one in internal/core/capture/grounds.go,
plus commands/intent.md and the generated docs/reference/cli/commands.md.
The comment is corrected in the change that found it, so the claim now matches the code. What stays open is the consolidation the claim described.
It is a nitpick because the literals and the closed set agree today. The cost is what a fourth value would take: five edits in code plus the plugin surface and a regenerated reference page, which is the arithmetic a closed set exists to avoid.
grounds.Heading has the same shape one step smaller — the ## Grounds
spelling is a literal in record-lint's remedy string because core/lint does
not import core/grounds. That one is left alone; its comment is narrowed to
what it establishes rather than an import being added for one prose string.
Amended 2026-08-30 after the fix-delta review: the enumeration above MISSES a
copy, and it is the one that matters most. degenerateWords, in the same file
eighty lines below Vocabulary, spells the three tokens again and its own doc
calls it "the vocabulary itself".
Every other copy is a MESSAGE -- a flag description, a usage string, a docs
page. This one is a GATE. Add a fourth token to Vocabulary and forget this
map, and ValidateText silently stops refusing a grounds text made solely of
the new token, while the refusal it declines to raise still says the text only
repeats the vocabulary. So the count is not five edits in code but six, and this
is the one to consolidate first.
Amended again 2026-08-30, and this is the amendment that says stop amending.
The previous amendment claimed the enumeration missed "a copy" and put the count
at six code sites. It is at least SEVEN, plus two doc sites nobody listed:
internal/core/intent/ready.go's groundsRemedy -- live, printed to the
operator by the readiness gate, and whose own doc calls itself "the one spelling
of how a ground is recorded" while four cli.go copies falsify that --
commands/capture.md, and internal/README.md. A tree sweep finds twelve files
carrying a literal spelling.
Do not amend this list again by hand. Three consecutive corrections have each introduced a fresh error, because a prose enumeration of copies cannot fail and so cannot be maintained. The remedy is iss-2608301918362294: make it executable, and decide there what counts as a copy, since the package that defines the tokens legitimately spells them.
Grounds
- pursued: we expect a rendered vocabulary to make its copies unable to disagree, where four hand-corrected enumerations of them each introduced a fresh error
Frontmatter
| id | iss-2608301836222858 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | nitpick |
.abcd/work/issues/resolved/iss-2608301836222858-grounds-vocabulary-is-read-by-no-surface.md
open on GitHub ↗ · commit history ↗
mentions3
- iss-2608301908284034the vocabulary comment says every refusal renders it when two of thirteen do and the drift record omits the one copy that is a gate
- iss-2608301918362294a prose enumeration of where a value is copied cannot be maintained and has now been wrong four times on two different symbols
- itd-179The reasoning behind what was pursued no longer evaporates at the gate — readiness and triage record grounds for the conjecture, not only the decision