Skip to content

spec(queen): a conflicting bee PR is updated or redone, never stranded #7571

Description

@gHashTag

Context

Measured 2026-10-07 15:51Z (gh pr list --state open --json mergeable,headRefName): 94 of 213 open pull requests conflict with master, 67 of them on queen- branches, the oldest opened 2026-09-21. GitHub runs no required check on a conflicting head, so the reviewer bee never judges it and the merger never merges it. No bee updates its own branch, so every master merge that touches a bee's files strands that pull request for good. tools/queen/pusher.py already counts conflicted_bee_prs; nothing acts on the count.

Boundary

specs/queen/review_valve.t27, gen/c/queen/review_valve.c (generated), one docs/now/ entry. Wiring into the publisher and the supervisor is a separate issue.

Scenarios

  • A bee PR conflicts and fewer than 50 Actions runs are queued: GitHub's update-branch merges master into the head (no force-push).
  • Same, with the queue over 50: wait for the next tick, at most 48 hours.
  • update-branch answers 422 (a real conflict), or the head conflicted again after 2 updates, or it waited 48 hours: close the PR with the reason and release the dispatch, so a fresh bee redoes the issue from current master. This is one of MAX_RELEASES; once those are spent, close.
  • A human branch or a clean PR: not this valve's.

Requirements

  • conflict_step(queen_branch, conflicting, update_failed, updates, hours, releases, queued_runs) -> u8 returning C_NONE / C_WAIT / C_UPDATE / C_REDO / C_CLOSE.
  • Constants CONFLICT_UPDATES = 2, UPDATE_QUEUE_CEILING = 50, CONFLICT_WAIT_HOURS = 48.
  • Step codes are pinned by an invariant, and the wait ends before the policy's 48-hour hold.

Success criteria

  • t27c parse specs/queen/review_valve.t27 exits 0
  • t27c typecheck specs/queen/review_valve.t27 exits 0
  • t27c test-report specs/queen/review_valve.t27 reports vacuous passes 0

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions