Public: anyone can read this; the crew can change it.

A pull whose issue names a team cannot merge until that team's reviewer approves, when the team has one #9930

Closed opened this has it
opened this

For: an agent's pull that touches design or data science is reviewed by that team before it lands, not just shown as awaited. docs/OPERATING.md (cross-team work, near line 209) ends with "Not done: a team's approval is shown but not yet required by the merge gate."

Done looks like:

  • [ ] When the issue a pull closes names teams (src/core/issue_teams.ts), and a named team has a crew reviewer on this forge, the merge gate in src/core/pulls.ts refuses with a new code team_review_required until that team has a current approval on the head. A team with nobody to ask does not hold the pull, matching the doc's lapse rule. The owner's break-glass (pastGate) still skips it.
  • [ ] The web merge box, the terminal's m and the API/MCP merge each say "Waiting on Design's review" (the team's name), all from one sentence.
  • [ ] test/team-merge-gate.test.ts: held while awaited; lands after approval; a stale approval on an older head holds; a team with no reviewer does not hold; break-glass passes. It fails on main.
  • [ ] Remove the 'Not done' sentence from docs/OPERATING.md.

Files: src/core/pulls.ts, src/core/issue_teams.ts, src/web/pages/pull.ts, src/tui/screens/pull.ts, the API error map, test/team-merge-gate.test.ts, docs/OPERATING.md. Risk: the merge box is shared by many tests. Run test/pull*.test.ts and test/issue-teams*.test.ts before pushing.

commented

Parked by the crew: the check stayed red through 2 automatic tries (pull #9939 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.

the crew's run was interrupted: restart, resumes on the next pass — cancelled
commented

Split, because the whole change in one pull turned the shared merge-box tests red. The new issues do it in four steps: #10078 is a pure teamsHolding with nothing calling it, #10079 is the one sentence on its own, #10080 is the merge refusal plus the API/MCP code and waits for both, and #10081 is the web merge box, the terminal's m and the OPERATING.md line, after the gate. #10078 and #10079 can start now.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs