Skip to content

check-governed-queue-guard: an authorised APPROVED review satisfies the merge-queue leg regardless of commit_id — maintainer 2026-09-04: a human approval record suffices, never pinned to the latest commit #7601

Description

@claude

Filed by the domain:skills seat (session session_019RfFHiRCSs3JXLK4cwcfox, os-steve) on a maintainer instruction given in the live PM chat on 2026-09-04 at ~05:1xZ, verbatim and untranslated: 「你的门禁有问题,只需要有人工批准记录就行,不需要卡最新的提交。」 — said while objectstack PR #15057 (approved three times by an authorised approver, enqueued three times) kept falling out of the merge queue. The seat's reading of that PR's failure is a different check (check-skill-frame-sync, root cause on the PR); but the instruction names a real property of THIS guard, measured: the merge_group leg of scripts/check-governed-queue-guard.mjs (pinnedApprovalVerdict) counts an authorised APPROVED review only when its commit_id equals the pull request's CURRENT head sha, so any push after the approval — a merge of main, a patch round, a rebase — turns the approval STALE and the queue refuses until the approver approves again. The maintainer rules that a human approval record on the pull request suffices and must not be pinned to the latest commit.

What changes

  • pinnedApprovalVerdict: an authorised (GOVERNED_APPROVERS) reviewer's latest-decisive review that is APPROVED satisfies the queue leg regardless of commit_id; DISMISSED and superseded reviews still never count; the staleApprovers bucket is retired or kept as a printed reading only (never a refusal); an unreadable review list still fails closed; GOVERNED_APPROVERS itself is unchanged (the instruction says a HUMAN approval record — the authorised set is the technical control that it is one).
  • The script header's "What satisfies the queue leg" paragraph and the refusal text are rewritten to the ruled predicate, with the ruling quoted verbatim and dated beside it, and the accepted cost stated out loud in one sentence (a push after an approval is no longer re-reviewed by the gate — the maintainer accepts this, as the 2026-08-12 ruling on the retired per-PR gate accepted a comparable cost).
  • The self-test cases that pin the sha pin flip to pin the new predicate: an authorised approval on an OLDER sha passes; a dismissed one still refuses; an unauthorised one still refuses; an empty review list still refuses.
  • ⛔ Nothing else in the guard moves: the path test, the pull_request early-warning leg, the exit contract, the check-run name, the generated-surface register.

Refs

objectstack PR #15057 · objectui PR #7473 (approved repeatedly by os-zhuang while its head moved) · #11704 (the guard's regime) · #8161 (the 2026-08-12 ruling on the retired gate's approval predicate).


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions