Skip to main content
Invoke: /feature-pr AB#1234 · Side effects: push + open PR, gated · Reads: verify-report.md
The most consequential phase — acts only on explicit human approval, and never merges.

Preconditions

If verify-report.md’s verdict is NOT READY, this phase stops rather than pushing or opening a PR over unmet acceptance criteria. push_to_remote and open_pull_request are both never_autonomous — a vague or silent reply is not approval.

What it does

  1. Pushes the branch (never plain --force; --force-with-lease only if a rebase is unavoidable and approved). Polyrepo: pushes each touched repo’s branch to its own remote.
  2. Opens one PR per touched repo, via gh pr create (GitHub) or az repos pr create (Azure Repos — gh does not work there). The body carries a summary, the AC checklist with each item’s verify status, test results, and the link-back reference in both title and body.
  3. Polyrepo cross-linking: opens every repo’s PR first (a PR’s URL doesn’t exist beforehand), then edits each body to link its siblings — so the full AC set is legible across all the PRs.
  4. Only if governance.gates.before_workitem_update was approved, moves the work item’s tracker state (e.g. to “In Review”) via the connected MCP.

Do not

Never merges — shipflow opens the PR, humans review and merge. Never touches deploys, releases, or production; all of that is downstream of the PR.

Output

Every PR’s URL, title, branch, and link-back reference; confirmation of sibling cross-links in polyrepo; whether the tracker state was updated. The flow is done when every touched repo’s PR is open, linked, cross-linked, and carries its checklist and test results.