Development record
2026-08-30 — itd-179 round-5: the ISSUE ledger's grounds become APPEND-ONLY, as a `## Grounds` body section mirroring the intent half, and the frontmatter `grounds:` scalar is retired (16 committed records migrated in the same change). A scalar is SET, so a resolve or wontfix silently destroyed the conjecture a promote recorded — on the ledger's mainline sequence, since fourteen resolved records carry `promoted_to` — and the result still reported success (iss-2608301657354776). Rejected: refusing a transition that would overwrite a non-empty grounds, as the record proposed; promote, resolve AND wontfix all REQUIRE grounds, so the refusal would make a promoted issue impossible to resolve. Rejected: last-write-wins declared as a chosen tradeoff, because `intent/grounds.go` already argues the opposite for the same data — the earlier conjecture is precisely what a later reader checks the outcome against. One-canonical-primitive: the record form (heading, section reader, append, readability check) moved to `core/grounds`, and the generic markdown-body machinery under it to a new leaf `core/mdrecord`, so both record families share ONE definition rather than holding two. Rejected: leaving the form in `core/intent` and having capture call it, which is one implementation but puts an issue-record body parser behind the intent package's door. The retired key is TOLERATED in `issueschema.Known`, not refused: a refusal makes capture SKIP the record, and a record invisible to every surface while it still sits in the ledger is worse than a value nothing reads — the record lint's `record_schema` blocks the misplacement and names the section instead.
2026-08-30 — itd-179 round-5: the ISSUE ledger's grounds become APPEND-ONLY, as a ## Grounds body section mirroring the intent half, and the frontmatter grounds: scalar is retired (16 committed records migrated in the same change). A scalar is SET, so a resolve or wontfix silently destroyed the conjecture a promote recorded — on the ledger's mainline sequence, since fourteen resolved records carry promoted_to — and the result still reported success (iss-2608301657354776). Rejected: refusing a transition that would overwrite a non-empty grounds, as the record proposed; promote, resolve AND wontfix all REQUIRE grounds, so the refusal would make a promoted issue impossible to resolve. Rejected: last-write-wins declared as a chosen tradeoff, because intent/grounds.go already argues the opposite for the same data — the earlier conjecture is precisely what a later reader checks the outcome against. One-canonical-primitive: the record form (heading, section reader, append, readability check) moved to core/grounds, and the generic markdown-body machinery under it to a new leaf core/mdrecord, so both record families share ONE definition rather than holding two. Rejected: leaving the form in core/intent and having capture call it, which is one implementation but puts an issue-record body parser behind the intent package's door. The retired key is TOLERATED in issueschema.Known, not refused: a refusal makes capture SKIP the record, and a record invisible to every surface while it still sits in the ledger is worse than a value nothing reads — the record lint's record_schema blocks the misplacement and names the section instead.
Frontmatter
| id | dcn-2608300000000016 |
|---|---|
| type | decision |
| date | 2026-08-30 |
.abcd/work/decisions/dcn-2608300000000016-itd-179-round-5-the-issue-ledger-s.md
open on GitHub ↗ · commit history ↗
mentions2
- iss-2608301657354776a resolve or wontfix replaces the grounds scalar so the conjecture a promote recorded is silently destroyed
- 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