Development record
There is no way to change text in a file the private name-guard blocks
The private banlist's entry-14 refuses every commit touching
ACKNOWLEDGEMENTS.md on this machine, whatever the change is. The guard is
doing its job — the file carries a name that must not be published — but it
blocks the file rather than the offending text, so a change that removes text,
or edits a paragraph nowhere near the protected name, is refused exactly as a
change that would leak it.
That is the gap: a correct edit to a guarded file currently has no path at all. The edit sits in the working tree or it does not happen.
What raised it
The maintainer asked for the ## Inspirations lead sentence to be removed
("Ideas and methodologies that shaped the design — not code abcd depends on."),
which renders on /references/ as the paragraph above the inspiration entries.
The edit was made, refused by the guard, and — on the maintainer's instruction
— reverted. The sentence stands. The guard was not weakened and no workaround
was attempted.
What a fix has to provide
A way to land a reviewed change to a guarded file WITHOUT weakening the guard. Candidates, none chosen:
- Anchor the entry so it matches only the protected occurrence rather than the
file, which
.abcd/.work.local/NEXT.mdalready records as the outstanding step forentry-14(add# abcd-banlist: keyedto the private names file). - Scan the DIFF rather than the file, so a change that neither adds nor keeps the protected text passes.
- An explicit, recorded per-commit acknowledgement for a change a human has read.
The first is the smallest and is already written down; the second is the one that generalises, because it makes the guard's question the right one — does this change publish the name — rather than a proxy for it.
Remedy grounds (2026-09-29)
- Why: the record's three candidates, each with its change; the ruling is unanswered and none is picked. The keyed store format the body proposes to adopt already ships (internal/core/banlist/banlist.go), so the first candidate is an operator act on the private list alone. No answer lets an added occurrence through.
- Rejected: parsing git diff --cached text for the diff-scoped answer; the committed hook reads blobs because diff text left four ways to stage a banned name (internal/core/ahoy/defaults/pre-commit), and a count comparison between blobs keeps that property.
Frontmatter
| id | iss-2608231237300997 |
|---|---|
| type | issue |
| lifecycle | open |
| severity | minor |
.abcd/work/issues/open/iss-2608231237300997-no-way-to-edit-a-file-the-private-name.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2608271804178239filename-slug agreement is unenforced across the record stores and two records have drifted: superseded itd-47's frontmatter slug embeds the foreign handle spc-12 (now a live unrelated spec) and its H1 carries the same stale prefix, and iss-2608231237300997 is the single ledger record whose filename slug disagrees with its frontmatter slug. Fix the two instances (frontmatter+H1 edit for itd-47; rename to the frontmatter slug for the iss record, id unchanged) and close the class: capture validateInvariants and the record-lint schema check filename id but never slug.