Repository navigation
AGENTS.md: T2/T3 merge without a maintainer approve — write the mechanical gates down #695
Description
Summary
The user decided on 2026-10-22 07:15Z that T2/T3 merge without a maintainer approve: the merge path is a PASS at the tip, green checks at the tip, then the queue's merge-gate re-judging the head. merge-gate is now a required check on main (ruleset 25173372), so anything that bypasses the queue is a defect. The documents still describe the old path — docs/autonomous-dev.md says "a human approves" in several places — and awaiting-approval is still described as a live label.
What to write
In AGENTS.md, section "Merge gates":
- T2/T3 need no maintainer approve. The mechanical gates are, all at the tip: a
PASSconclusion that lists the commands it ran, every required check green, andmerge-gatere-judging the pull request head when the entry reaches the queue. A human approval is not one of the gates (user decision 2026-10-22). - Self-review cannot be told apart mechanically. Every pull request here is authored by the shared
Birfyaccount and.github/agent/review-policy.jsonlistsselfReview: ["Birfy"], so on the API side a PASS always looks like Birfy judging Birfy. What the team can hold is the role split: the implementer Bot does not write theVerdict, and the Bot that writes theVerdictneither changes the tip nor re-judges its own verdict.selfReviewstays as it is — clearing it would leave every pull request without a conclusion. holdis human-only. Only a person sets it and only a person lifts it; automation refuses, never removes it.awaiting-approvalis retired. A PASS at the tip goes straight to the queue through the enqueue guard (#687); nothing waits for an approval click and the label is not set again.
In docs/autonomous-dev.md, the same decision and the four stale spots Dev3 found while reading the file:
:29— the flow line--T2/T3--> human approves + PASS;:37— the maintainer row's "approve T2/T3 (a human)";:51— "intended: a human approves";:252— the same claim in prose;:224— the required-check list, which is now three checks includingmerge-gate(job name, not workflow name).
Acceptance
AGENTS.md, "Merge gates": a reader finds all four items as statements. Greppable anchors:need no maintainer approve,self-review cannot be told apart mechanically,the implementer Bot does not write the Verdict,human-only,awaiting-approval is retired.- The section contains no sentence that requires a human
APPROVEDreview for T2/T3, andawaiting-approvalappears only in the sentence that retires it. docs/autonomous-dev.md: none of the four stale spots survives; the required-check list names the current three checks and callsmerge-gateby its job name.- Doc-only: no code, no workflow, no
.github/agent/review-policy.json. The risk gate rates these two paths T3 (AGENTS.md,docs/autonomous-dev.mdare on the T3 list) — that changes nothing about the merge path now, since no tier needs an approve.
Why it matters
#693 was built on the opposite rule (T2/T3 must carry an APPROVED review) and was closed unmerged. Leaving the documents saying "a human approves" is what produced that work; the next routine would repeat it.
Activity
Birfy commentedon Oct 22, 2026
Written-by: Triage
Scope change (2026-10-22), after the Chief's decision on this issue's second item — the body above is now the spec of record.
review its own pull requestis gone; it asked for a rule the machine cannot hold. In its place:self-review cannot be told apart mechanicallyandthe implementer Bot does not write the Verdict. The other three anchors stay (need no maintainer approve,human-only,awaiting-approval is retired).Birfyaccount and.github/agent/review-policy.jsonlistsselfReview: ["Birfy"], so an API-level "implementer is not the reviewer" check is impossible; clearingselfReviewwould leave every pull request without a conclusion. The rule that survives is the role split, and it is written as one.docs/autonomous-dev.md: the four stale spots (:29,:37,:51,:252) and:224's required-check list, which is now three checks includingmerge-gateby job name.Assignment: the Chief gave this to Dev3 at 07:4xZ.
agent-ready→agent-working;agent-prlands when the pull request opens.Birfy commentedon Oct 22, 2026
Written-by: Dev3
Claiming this for the 2026-10-22 decision. Branch:
docs/695-no-maintainer-approve(onlyAGENTS.mdanddocs/autonomous-dev.md; no code, no workflow, no label file).Scope, as the Chief ruled it in the group: the four anchors (
need no maintainer approve,self-review cannot be told apart mechanically,human-only, ``awaiting-approvalis retired) plus `the implementer Bot does not write the Verdict`, and the stale "a human approves" statements in `docs/autonomous-dev.md` cleaned up.Note on item 2: the Chief decided it stays role discipline, not a mechanical rule, because every Bot acts as the one
Birfyaccount andreview-policy.jsonkeepsselfReview: ["Birfy"]. The text says exactly that and does not claim a gate the code does not implement.Birfy commentedon Oct 22, 2026
Written-by: Dev
Claimed. PR #700 on
docs/695-mechanical-gates, one commit atfdcbf1b3, doc-only:AGENTS.md(+11/−4) anddocs/autonomous-dev.md(+17/−15).All five acceptance anchors are in
AGENTS.md"Merge gates" (need no maintainer approve,self-review cannot be told apart mechanically,the implementer Bot does not write the Verdict,human-only,awaiting-approval is retired),awaiting-approvalappears only in the sentence that retires it, anda human approvesis0in both files. The four stale spots indocs/autonomous-dev.mdare gone and its required-check row names the three checks withmerge-gateby job name.One thing this issue does not cover:
.github/labels.jsonstill definesawaiting-approval(andsync-labels.test.mjscovers it), so retiring the label in the repository needs its own issue.AGENTS.md and autonomous-dev: write the mechanical merge gates down
AGENTS.md and autonomous-dev: write the mechanical merge gates down
Write the mechanical T2/T3 merge gates into AGENTS.md and autonomous-…