Skip to content

docs(adr): ADR-012, pin the index to the records, correct three stale rules - #142

Merged
chrispezza merged 1 commit into
mainfrom
claude/governance-records
Oct 12, 2026
Merged

chrispezza merged 1 commit into
mainfrom
claude/governance-records

Conversation

@chrispezza

Copy link
Copy Markdown
Contributor

What

  • ADR-012. Bouncer does not label or gate this repository's own records, tests or policy. Says what stands in instead (a check that names its decision, a visible second edit, the pull request), that platform enforcement is main is unprotected: require a PR and green CI before merging #74 and is not on, and leaves the user's own policy file open as The gate's own policy file can be edited from inside a gated session, and seatbelt says nothing #141.
  • The index is pinned to the files. test/docs.test.ts now fails when a record has no row in docs/adr/README.md, when a row has no file, when numbers skip or repeat, or when the index's status starts with a different word than the file's own Status line.
  • Failure text names the rule. The mode, subcommand and version assertions now print which rule they hold and the edit that satisfies it. package-lock.json is checked as one of the four version places; CLAUDE.md listed it and nothing read it.
  • Three stale sentences in CLAUDE.md. "This repository does not delete branches" and "neither is on today" were false (delete_branch_on_merge is true; main still has no protection and no rulesets, checked 2026-10-12). The calibration-key rule now says what has been allowed since 2026-09-19.

Why

An audit of how this repository's decisions are enforced found the index, the ADR status lines and several CLAUDE.md rules held by nothing, and three sentences that described the platform wrongly. No check here blocks a merge, so what a failing test prints is the one place a decision reaches an agent that never opened the record.

Cost

Docs and tests only. No version bump, bin/bouncer.cjs unchanged, so the paired bench step skips. Adds 27 string assertions over committed files, a few milliseconds. No attack surface added.

Verified

npm test: 36 files, 1506 tests pass. npm run typecheck clean. The index test was mutation-checked by changing one status cell and reading the message.

🤖 Generated with Claude Code

…tale rules

ADR-012 records that bouncer does not label or gate this repository's own
records, tests or policy, and what stands in instead: a check that names
the decision it holds, a visible second edit, and the pull request.

test/docs.test.ts now pins docs/adr/README.md to the files: one row per
record, numbers contiguous, and the index's status starting with the same
word as the file's own Status line. The mode, subcommand and version tests
say in their failure text which rule they hold and what edit satisfies it.
The lockfile's version is now checked too; CLAUDE.md listed it as one of
the four places and nothing read it.

CLAUDE.md: "this repository does not delete branches" and "neither is on
today" were false since delete_branch_on_merge was turned on, and the
calibration-key rule did not say what has been allowed since 2026-09-19.

Docs and tests only: no bump, bin/bouncer.cjs unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chrispezza
chrispezza merged commit 822af27 into main Oct 12, 2026
2 checks passed
@chrispezza
chrispezza deleted the claude/governance-records branch October 12, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant