Development record
2026-08-17 — The attribution gate's list-container fence limit is ACCEPTED as a
2026-08-17 — The attribution gate's list-container fence limit is ACCEPTED as a standing residual (iss-270, wontfix), not deferred. A fence opened inside a first-level list item sits at column 2 (ordered: column 3), under the matcher's absolute three-space limit, so it is read as document-level and a footer inside that span is stripped although the forge renders it as an ordinary paragraph. All three remedies are worse than the hole: tracking container context means a markdown block parser inside a bash gate; refusing to strip from any document containing a list marker is safe by construction but would disable the fence concession in almost every real body here, reverting iss-268 in practice while appearing to keep it; and forcing openers to column 0 was tested by the security review and LEAKS, because under-recognising an opener is not conservative — markdown then closes its block at a line the matcher treats as the opener, shifting the whole span. Acceptance is defensible because the gate's defended property is untouched: it exists for a footer a tool appends BY DEFAULT (itd-91, 78 pull requests), a tool appends last, and footer-last is caught whatever precedes it — fuzzed at 0 violations in 2400 differential bodies against a real CommonMark parser. This shape needs a body CONSTRUCTED AROUND the footer, which the design already declines to defend, and such an author would delete the footer instead. Pinned in the corpus for bulleted and ordered items so a change is visible. Rejected: all three remedies above; and leaving the record open, which would invite the indent-relaxing "fix" that widens the hole. Reopen only if the gate is asked to defend against a deliberate author — a different design.
Frontmatter
| id | dcn-2608170000000004 |
|---|---|
| type | decision |
| date | 2026-08-17 |
.abcd/work/decisions/dcn-2608170000000004-the-attribution-gate-s-list-container.md
open on GitHub ↗ · commit history ↗
mentions3
- iss-268The attribution gate cannot be written about in a fenced code block. GENERATED_RE is anchored to line start, so any line inside a markdown code fence that begins with the banned footer shape is refused exactly as a real footer would be -- and a fence is the natural way to document a shape. Pre-existing, not introduced by iss-262: the plain `Generated with [tool](url)` form was already refused inside a fence; iss-262 extends that to the emphasised forms. Hit live on the iss-262 PR itself, whose first body quoted the footer in a fence and failed the gate it tightens. The current convention is to quote the shape mid-sentence instead, which the corpus pins with two accept cases, but that makes the one document most likely to show the shape -- the change that tightens the rule -- the one least able to show it. Options: (a) keep the convention and document it in AGENTS.md so the next author does not rediscover it through a red CI leg; (b) teach the gate fence state, which costs real complexity in a bash security check and opens an evasion route, since a footer wrapped in a fence would go unflagged while still rendering as visible text; (c) accept as-is. Needs a deliberate ruling rather than a same-PR patch.
- iss-270The attribution gate's fence handling reads a fence's indent in ABSOLUTE columns, but CommonMark measures the three-space opener limit relative to the enclosing container. That diverges in BOTH directions inside a list item, and the dangerous direction is the one this record originally stated backwards.
- itd-91A Project Declares Once How It Wants AI Acknowledged — And Every Commit, PR, And Record Follows