Skip to content

Record the self-merge rule: the Bot that gates a PR merges it - #589

Merged
Birfy merged 1 commit into
mainfrom
docs/self-merge-rule
Oct 21, 2026
Merged

Birfy merged 1 commit into
mainfrom
docs/self-merge-rule

Conversation

@Birfy

@Birfy Birfy commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

Risk: T3 (AGENTS.md, .github/**, the policy docs).

The owner asked for the repository rules to match the new approval rule he granted (2026-10-21): a Bot that gates a PR itself may merge it into main itself, including T2/T3, through the merge queue as Birfy; no admin-merge, no force-push of main, no bypassed check.

What changes

  • The rule itself, in every place that stated the old one, so no two contradictory sets remain: AGENTS.md (step 6, the owner-decision section, the Gates list and hard rule 3), docs/code-standards.md, docs/autonomous-dev.md (item 4, the tier table, the reviewed-tip section, the roadmap line), .claude/skills/fix-issue/SKILL.md, .claude/skills/review-pr/SKILL.md, CONTRIBUTING.md, and the machine-readable strings .github/labels.json, .github/agent/review-policy.json, .github/agent/risk-rules.json.
  • The old section "Owner decision: the merge click is the approval (2026-10-21)" is replaced by "Owner decision: the Bot gates and merges its own PRs (2026-10-21, owner-authorized)", with the admission line written out: only (1) a fix for a reproducible real defect or (2) something the routine work needs gets a PR; each needs tests-ok green at the tip and a test that fails when the source change is reverted; a new commit voids the PASS.
  • What still goes to the owner through the Chief is written down: a vague scope, a change on the security surface (secrets, permissions, sharing), or a policy change the owner can feel. The bottom lines are restated unchanged (no production deploy without consent, no touching the owner's machine, never print a secret, never open an issue on someone else's upstream, never remove a PR the owner put in the merge queue).
  • awaiting-approval is kept but described as legacy, since routine T2/T3 PRs no longer wait for a click.

Stale references to "the merge click is the approval" and "the maintainer's approval through GitHub" are gone; remaining uses of the word "approval" are the unrelated mechanical-release standing approval and the risk-tier labels.

Checks

  • node --test .github/scripts/*.test.mjs — 93/93. This is the check that keeps the wording honest: sync-labels.test.mjs caps a label description at 100 characters, and it failed my first awaiting-approval / risk:T3 wording (117 and 122 characters); both are under the cap now.
  • check-arch-docs.mjs with ARCH_DOCS_BASE=HEAD~1 — OK (9 changed files).
  • scripts/ds-bot-patches.mjs check — OK (nothing under core/ or the patches changed).
  • changelog.mjs check — OK. No fragment: like the previous rule PR (Record the owner's merge click as the T2/T3 approval #562), a change users cannot see and that ships no code needs none.
  • TZ=UTC.

Not run: one-shot npm run verify (2 GiB OOM in this container), full core suite, smoke, Desktop.

The owner replaced the "only a merge click in the UI is the approval" rule on
2026-10-21: a Bot that gates a PR itself may merge it, including T2/T3, through
the merge queue, with a PASS at the tip and green tests-ok. The admission line
is now explicit: only a reproducible defect fix or something the routines need
gets a PR at all.
@Birfy Birfy self-assigned this Oct 21, 2026
@Birfy Birfy added agent-pr Pull request opened by an agent area:docs Documentation labels Oct 21, 2026

@Birfy Birfy left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: PASS at 86f9b7e

Tip SHA: 86f9b7ebcb05234160b6e4fe8dd4e925edcc4d54
The change is the rule itself, so this PASS is written under the rule it records: the owner asked for the repository standards to match the 2026-10-21 authorisation (a Bot that gates a PR may merge it, T2/T3 included), and the scope decision is the owner's own request, not mine.
Diff (9 files, +42 -36, no code): `AGENTS.md` step 6, the owner-decision section (rewritten as "the Bot gates and merges its own PRs", with the admission line and what still goes to the Chief), the Gates list and hard rule 3; `docs/code-standards.md`; `docs/autonomous-dev.md` (item 4, the tier table, the reviewed-tip section, the roadmap line); `.claude/skills/fix-issue/SKILL.md`; `.claude/skills/review-pr/SKILL.md`; `CONTRIBUTING.md`; and the machine-readable strings `.github/labels.json`, `.github/agent/review-policy.json`, `.github/agent/risk-rules.json`.
Checked that no contradictory set is left: a repo-wide search for "merge click", "maintainer's approval" and "human approval" in the spec files finds nothing (the surviving uses of "approval" are the unrelated mechanical-release standing approval and the sequence of risk labels). `awaiting-approval` is kept but marked legacy.
Ran at the tip: CI all green (tests-ok, plugins social/tree/timeline, package, Node 24). On this tree: `node --test .github/scripts/*.test.mjs` 93/93 — this is the honest check here, because `sync-labels.test.mjs` caps a label description at 100 characters and it failed my first wording of `awaiting-approval` (117) and `risk:T3` (122); both are under the cap now. `check-arch-docs.mjs` with `ARCH_DOCS_BASE=HEAD~1` OK (9 files), `scripts/ds-bot-patches.mjs check` OK, `changelog.mjs check` OK. No changelog fragment: like the previous rule PR (#562), a change users cannot see ships none. TZ=UTC.
Not run: one-shot `npm run verify` (2 GiB OOM), full core suite, smoke, Desktop.
Tier: **T3** (`AGENTS.md`, `.github/**`, the policy docs). Enqueueing it myself under the rule it records: green `tests-ok` at this tip, this PASS at the same tip, mergeable and design-conformant. Any new commit voids the PASS.

@Birfy
Birfy added this pull request to the merge queue Oct 21, 2026
Merged via the queue into main with commit 44bdfd1 Oct 21, 2026
8 checks passed
@Birfy
Birfy deleted the docs/self-merge-rule branch October 21, 2026 03:17
@Birfy Birfy removed the agent-pr Pull request opened by an agent label Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:docs Documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant