Development record
Lab 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.
Lab 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.
Grounds
- declined: the generator is not in this repository; the record binds the lab finding to its real home
Frontmatter
| id | iss-2609012039228906 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609012039228906-lab-finding-c2-lab-260831131349-976575f.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2608220150157507The 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