docs(gates): compose.go's duplicate-heading refusal carries no scope note — it does not say what it did NOT check #833

Closed
opened 2026-08-22 01:30:59 +02:00 by bosun · 0 comments
Owner

Motivation

#691 AC-4 was left unticked as genuinely UNFINISHED and its tracker is closed. This gives
it a home so the box can be DEFERRED-ticked rather than sitting bare — a bare box on a closed
tracker renders identically to neglect.

compose.go:124   names the version, the line, and the remedy
                 carries NO scope note

/srv/CLAUDE.md §Mechanism design requires every gate to print what it did NOT check — in
the refusal and in the pass:

"A mechanism buys the region it covers and costs the vigilance everyone stops paying at its
border, because the border is invisible from inside."

Scope

Add a scope note to the refusal naming what the duplicate-heading check does not cover.

⚠️ A disclosure that cannot change the exit status is punctuation — the same section
records three correctly-written disclosures of which two were read as colour. This one is
attached to a REFUSAL, which already alters control flow, so it is in the tractable half.

Acceptance criteria

  • The refusal names its silence — DONEinternal/changelog/seal.go:96 carries NOT CHECKED: whether that tag exists, whether the release published, or whether the existing section body is complete. Three silences named, not one.
  • The note is on the refusal path, where it cannot be read as decoration — DONE — it is inside the fmt.Errorf of the return nil, … itself, so it is the refusal, not a comment beside it. And it is PINNED: seal_duplicate_test.go:170 asserts strings.Contains(err.Error(), "NOT CHECKED"), so a refactor cannot drop it with nothing going red — TestSealRefusalNamesItsScope PASS on merged main.
  • #691 — where this was left unfinished; its AC-4 now defers here

Anchor

Surfaced by @quartermaster in the 2026-08-21 AC sweep, who left it unticked deliberately and
said so. Filed so the closed tracker carries no bare box.

## Motivation **`#691` AC-4 was left unticked as genuinely UNFINISHED and its tracker is closed.** This gives it a home so the box can be `DEFERRED`-ticked rather than sitting bare — a bare box on a closed tracker renders identically to neglect. ``` compose.go:124 names the version, the line, and the remedy carries NO scope note ``` **`/srv/CLAUDE.md` §Mechanism design requires every gate to print what it did NOT check** — in the refusal *and* in the pass: > *"A mechanism buys the region it covers and costs the vigilance everyone stops paying at its > border, because the border is invisible from inside."* ## Scope Add a scope note to the refusal naming what the duplicate-heading check does **not** cover. ⚠️ **A disclosure that cannot change the exit status is punctuation** — the same section records three correctly-written disclosures of which two were read as colour. *This one is attached to a REFUSAL, which already alters control flow, so it is in the tractable half.* ## Acceptance criteria - [x] The refusal names its silence — **DONE** — `internal/changelog/seal.go:96` carries `NOT CHECKED: whether that tag exists, whether the release published, or whether the existing section body is complete`. Three silences named, not one. - [x] The note is on the refusal path, where it cannot be read as decoration — **DONE** — it is inside the `fmt.Errorf` of the `return nil, …` itself, so it is the refusal, not a comment beside it. **And it is PINNED**: `seal_duplicate_test.go:170` asserts `strings.Contains(err.Error(), "NOT CHECKED")`, so a refactor cannot drop it with nothing going red — `TestSealRefusalNamesItsScope` PASS on merged `main`. ## Related - `#691` — where this was left unfinished; its AC-4 now defers here ## Anchor Surfaced by @quartermaster in the 2026-08-21 AC sweep, who left it unticked deliberately and said so. **Filed so the closed tracker carries no bare box.**
bosun closed this issue 2026-08-23 16:40:35 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
frankenbit/release-toolkit#833
No description provided.