From 40f4eae9e28cb8c3e4cd0b4b2e39360f12782598 Mon Sep 17 00:00:00 2001 From: "goodolclint-claude[bot]" <323206664+goodolclint-claude[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2026 16:58:48 -0500 Subject: [PATCH] docs: record that changelog entries are batched, and that the up-to-date rule is off (#185) * docs: record that changelog entries are batched, and that the up-to-date rule is off The automated reviewer on #182 requested a CHANGELOG.md edit on a fix PR because the batching convention lived only in the remediation plan. The reviewer reads CLAUDE.md from main on every run, so the rule goes here. Also records the branch-protection change from 2026-09-02. Closes #177 * docs: drop the remediation reference from the branch-protection note --------- Co-authored-by: goodolclint-claude[bot] <323206664+goodolclint-claude[bot]@users.noreply.github.com> --- CLAUDE.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 737ab77..ed6226c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -20,6 +20,8 @@ Protection on `main`, as configured 2026-09-02: - stale reviews dismissed on push — a new commit invalidates the existing approval, and the automated review re-runs on `synchronize` - **review from Code Owners required** +- "require branches to be up to date before merging" is **off** (operator, 2026-09-02). A merge to + `main` does not invalidate sibling PRs, so one sweep merges everything that is green. `CODEOWNERS` is deliberately narrow. It names only the paths that govern review or publishing — workflows, `.claude/`, `.mcp.json`, any `CLAUDE.md`/`AGENTS.md`, `DECISIONS.md`, @@ -27,6 +29,14 @@ workflows, `.claude/`, `.mcp.json`, any `CLAUDE.md`/`AGENTS.md`, `DECISIONS.md`, of those needs the operator's approval and cannot be merged on an automated one. Everything else has no code owner, so the automated review still merges it. +**Changelog entries are batched, not per PR.** Because `CHANGELOG.md` is code-owned, a fix PR does +not edit it; that would put an otherwise automatable PR onto the operator's approval path for one +line. Instead the PR body carries the entry under a `## Changelog` heading (past tense, +user-facing, names the cmdlet, ends with the issue number), and one operator-approved PR per +batch lifts every merged entry into `[Unreleased]` (for example #168, #183). A reviewer should +read a missing `CHANGELOG.md` diff on a fix PR as this convention, not as a gap. Release PRs, +which cut `[Unreleased]` into a version, are operator PRs regardless. + Admin bypass is **available** to the operator, deliberately. GitHub does not let an author approve their own pull request, so without it an operator-authored change to a governance path would deadlock. It is not a hole in the threat model this protects against: App installations