Development record
The machine-local private name-guard blocked a commit on the entry its hook reports as entry-14: the unanchored pattern matches inside an unrelated academic author's surname in rendered bibliography content (the site prototype), a false positive that keeps the behavioural spec out of the shared tree. The fix site is the generator, not the file: the pattern sits inside the generated abcd-sources block of the private-names store ("do not edit between markers" — a hand-anchored edit is overwritten by the next sources sync), so the sources-sync that emits the block must word-boundary-anchor every short name pattern it writes at emit time. Until that ships the prototype lives in the local scratch tier and the plan documents the detour (decision confirmed 2026-08-22: status quo, no guard weakening, no hand-edits to the generated block; the prototype is committed into research/abcdev-site/ in a follow-up once the anchoring lands). Fix the detector, not the finding
The machine-local private name-guard blocked a commit on the entry its hook reports as entry-14: the unanchored pattern matches inside an unrelated academic author's surname in rendered bibliography content (the site prototype), a false positive that keeps the behavioural spec out of the shared tree. The fix site is the generator, not the file: the pattern sits inside the generated abcd-sources block of the private-names store ("do not edit between markers" — a hand-anchored edit is overwritten by the next sources sync), so the sources-sync that emits the block must word-boundary-anchor every short name pattern it writes at emit time. Until that ships the prototype lives in the local scratch tier and the plan documents the detour (decision confirmed 2026-08-22: status quo, no guard weakening, no hand-edits to the generated block; the prototype is committed into research/abcdev-site/ in a follow-up once the anchoring lands). Fix the detector, not the finding
Grounds
- pursued: a generated sources block carries only neighbour-bounded patterns, so the entry-14 false positive cannot recur; shown wrong if a pattern sync-banlist emits matches inside a longer word
Frontmatter
| id | iss-2608220150157507 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2608220150157507-private-banlist-unanchored-pattern-false.md
open on GitHub ↗ · commit history ↗
Referenced by1
- iss-2608221342509869the private name-guard blocks every commit touching ACKNOWLEDGEMENTS.md because a pre-existing citation in HEAD matches an unanchored pattern; two credits (the layout algorithm, the screenshot tooling) are held as local patches until the anchoring fix landsblocks
mentions2
- dcn-26082200000000052026-08-22 — Website decision interview (nine questions, all ruled): retired
- iss-2609012039228906Lab finding C2 (lab-260831131349-976575f): the generated `abcd-sources` block in the per-machine private banlist store is written by two writers with different ideas of the file's format. abcd scaffolds the store with the keyed declaration on line 1 (the private stub in internal/core/ahoy/banlist_scaffold.go and the header in internal/core/banlist/private.go); the user-scope sources sync script — invoked from commands/consult.md and not part of this repository — then appends bare one-field pattern lines between its fences, which the keyed parser correctly refuses by line number (the fail-safe held, and the bare `abcd banlist` render already reports the format and the malformed line numbers). The lab's reading that one writer leaves both the declaration and the bare lines was inaccurate: two writers, one file. The fix is in the sync script (emit KEY-tab-PATTERN lines, or the declaration itself), outside this repository; the only in-repo touch point is a caveat in commands/consult.md. Cross-link: iss-2608220150157507 is the same writer's other defect (unanchored short patterns) and stays open. Store entries are never quoted here — shapes only.