Skip to content

feat(queen): a bee branch merges only on the Queen's accept at its head - #5422

Merged
gHashTag merged 1 commit into
masterfrom
feat/queen-publish-verdict-gate
Oct 1, 2026
Merged

gHashTag merged 1 commit into
masterfrom
feat/queen-publish-verdict-gate

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 1, 2026

Copy link
Copy Markdown
Owner

Closes #5421

Owner's rule (2026-10-01): once the Queen approves no person is needed — her accept is the merge; the one thing that must hold is that she checked.

tools/queen/publish.py used to publish every queen-* branch and arm --auto --squash without her verdict (249 merged, 17 armed). Now:

case before after
she accepted the branch head published, armed published, armed with --match-head-commit
she accepted, bee pushed again published, armed refused: "accepted an older head"
send-back / escalate / no verdict published, armed not published; an armed PR is disarmed
board unreadable or no verdict field n/a exit 2, nothing published, nothing disarmed

Self-test: 15 shapes (9 for the gate).

Order: merge after gHashTag/BrowserOS#517 is deployed. Before that, the board carries no verdict and this exits 2 by design, so the publisher pauses. No bee work gets merged unchecked in the meantime.

Known limit: the board reads the last 7 days of dispatches, so an older accept is invisible and its PR is disarmed. That fails closed.

🤖 Generated with Claude Code

…accept at its head (Closes #5421)

Owner's rule, 2026-10-01: once the Queen approves, no person is needed -
her accept is the merge; the one thing that must hold is that she checked.

Until now the publisher opened a pull request for every queen-* branch and
armed --auto --squash on it without asking her: 249 merged, 17 armed, none
gated on a verdict. Now:

- it reads /queen/public-board and publishes a branch only when her verdict
  is `accept` AND the commit she judged is the branch head (or that head's
  parent, when the head is only the docs/now commit this tool adds);
- it arms auto-merge with --match-head-commit, so a push after the accept
  cannot ride through on it;
- on open queen-* pull requests it arms the accepted ones and disarms every
  armed one she has not accepted at its head;
- when the board is unreadable, or carries no verdict field yet (server not
  deployed), it exits 2 and touches nothing - fail closed.

Self-test: 15 shapes, 9 of them for the gate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-01 12:43:54 UTC

Summary

Status Count
Total Open PRs 49
PRs with Failing Checks 46
PRs with All Checks Green 3
READY 3
FAILING 46
PENDING 0
NO CHECKS YET 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=403499176a5d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit ff91200 into master Oct 1, 2026
27 of 30 checks passed
gHashTag added a commit that referenced this pull request Oct 2, 2026
…er bee gates every merge (#5525) (#5526)

* The Queen only manages: the publisher never arms auto-merge, a reviewer bee gates every merge

Owner's rule of 2026-10-02 overrides "the Queen's accept IS the merge"
(2026-10-01, #5422). tools/queen/publish.py still opens a pull request for
a head she accepted, but no longer runs gh pr merge --auto; its reconcile
pass only disarms auto-merge on open queen-* pull requests. --self-test
parses the module's own syntax tree and fails on any gh pr merge argv that
is not --disable-auto.

auto-merge-ready-prs.yml now merges only pull requests carrying the
bee-reviewed label, applied after the head commit. The Queen's verdict is
not a merge trigger.

Closes #5525

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* review(#5525): date the head by its arrival; self-test sees tuple argvs and gh api merges

Reviewer bee's fixes to #5526.

- auto-merge-ready-prs.yml: `committedDate` is when a commit was made, not
  when it reached the branch, so a commit made before the bee-reviewed label
  and pushed after it passed the gate unreviewed. The head's time is now the
  latest of its committer date, the first check run started on it and the
  last head_ref_force_pushed event. Every read fails closed.
- publish.py --self-test: also reads tuple argvs and gh api merge routes
  (/pulls/N/merge, enablePullRequestAutoMerge, mergePullRequest). Five
  planted regressions each turn it red; two of them (tuple, REST) passed
  before.

Census: quiet "named a path but not quiet" 150 -> 155, re-blessed. The
merger step now names three more GitHub API paths (commits/<sha>,
commits/<sha>/check-runs, issues/<n>/events) and #5526 itself added the
first three; none is in a quiet shape ("steps in a quiet shape" stays 31).

Refs #5525

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

queen: a bee branch merges only on the Queen's accept at its head

1 participant