Development record
an unclosed comment or fence anywhere in an issue record blinds every grounds triage route permanently and promote orphans a draft per attempt
an unclosed comment or fence anywhere in an issue record blinds every grounds triage route permanently and promote orphans a draft per attempt
Found by the itd-179 delta review. BRANCH-INTRODUCED, verified: the same inputs
succeed at d1731004.
The readback guard masks the WHOLE record, frontmatter included, and
mdrecord.Mask runs an unclosed <!-- or an unclosed fence to end of file --
correctly, per CommonMark and per its own doc. That is safe for a hand-authored
intent record. It is not safe for an ISSUE record, whose body is verbatim
operator prose that Capture never validates.
So an ordinary sentence bricks the record. Captured text containing an unclosed comment marker is written happily, and then every grounds-bearing route refuses, permanently:
resolved: grounds refused: the appended grounds entry does not read back
(0 entries after the append, expected 1); nothing written
Three consequences, in order of severity:
- The record can never leave
open/. Resolve, wontfix and promote all refuse, so there is no triage path at all. Only a hand edit of the committed file clears it. Promotemints before it appends, so each attempt ORPHANS A DRAFT. The reviewer ran it three times and got itd-1, itd-2, itd-3, with the draft counter climbing each time, and the repair command the message names (abcd capture promote iss-N --intent itd-1) fails identically.- The message blames the wrong text. The operator's grounds entry is innocent; the fault is a construct elsewhere in the record. It sends them to rewrite the one thing that is fine. That is this cycle's standing class again, now as a misattribution rather than a false mechanism.
Reachable through frontmatter the tool itself writes, not only through the body:
--found-at "internal/core/lint (the <!-- marker scan)" at capture time, and
--resolution "... strips the <!-- abcd-review marker ..." at resolve time,
because transition sets the note BEFORE it appends.
Nothing in-tree is bricked today -- zero committed records carry <!-- -- so
the class is forward-facing.
Remedy has two halves and both are needed. The refusal must DIAGNOSE rather than
misattribute: Mask already knows which line opened the span, so name that line
and that construct. And Promote must establish that the append can succeed
before it mints, or a permanent refusal leaks one orphan draft per attempt.
Grounds
- pursued: we expect a locked record to be diagnosable from its refusal alone, and a refusal that can never succeed to leave no residue behind it
Frontmatter
| id | iss-2608301803423101 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | critical |
.abcd/work/issues/resolved/iss-2608301803423101-an-unclosed-comment-or-fence-anywhere-in.md
open on GitHub ↗ · commit history ↗
mentions7
- dcn-26083000000000202026-08-30 — itd-179 delta close: body scope does NOT close consequence A, and the record says so. An unclosed opener in the BODY still masks the body, so an appended entry still cannot read back and every triage route still refuses — verified by a test that stayed red at the body-scope commit and only passed at the next one. What makes that survivable is the other two halves: the refusal names the opener's line and construct instead of the grounds operand, and promote dry-runs the append against the pre-flight bytes so a deterministic refusal mints nothing (iss-2608301803423101). Rejected: refusing every record carrying an unclosed opener, which would refuse writes that succeed — a `## Grounds` section ABOVE the opener takes the entry perfectly well. Rejected: a file-relative line number in the refusal, because the triage verbs append after setting their note field and the number would name a line the unwritten record on disk does not have; the number is body-relative and the opener's text is quoted beside it.
- iss-2608301805069999the grounds writer judges the whole file while the reader judges the body so a frontmatter Grounds comment makes triage report success and record nothing
- iss-2608301908270888an unclosed comment or fence in an issue body still locks the record out of every triage verb and no open record tracks it
- itd-1Every Intent Has Acceptance Criteria; Every Audit Verifies Them
- itd-2In-Session Subagent Dispatch — the Default Host-Delegated Oracle
- itd-3abcd Loads Its Own Rules On Demand
- 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