Skip to content

Approve before the pull request opens

Implements and tests the change, then holds it until a person approves. Nothing becomes visible to reviewers on GitHub until someone has signed off inside the run.

Template approve-before-pr
Works on A git repository, cloned into an isolated Docker sandbox
Where a person acts Approve implementation before opening PR — a person approves or rejects, waiting up to 24h
Waits on systems CI result, up to 4h

Drawn from the template spec at build time. Bookkeeping nodes that only record status are left out; amber nodes are where a person acts.

flowchart TD
  n_validate["Validate"]
  n_implement["Implement"]
  n_runTests["Run tests"]
  n_approve>"Approve implementation before opening PR<br/><small>person: approval</small>"]
  n_openPR["Open PR"]
  n_terminateRejected(["Failed<br/><small>rejected</small>"])
  n_checkApprovalLimit{"Check approval limit?"}
  n_terminateTimedOut(["Timed out"])
  n_waitForCI[/"Wait for CI<br/><small>waits up to 4h: CI result</small>"/]
  n_approvalFix["Approval fix"]
  n_checkCI{"Check CI?"}
  n_terminateCITimedOut(["Timed out<br/><small>ci timed out</small>"])
  n_done(["Done"])
  n_validate --> n_implement
  n_implement --> n_runTests
  n_runTests --> n_approve
  n_approve -->|"approved"| n_openPR
  n_approve -->|"rejected"| n_terminateRejected
  n_approve --> n_checkApprovalLimit
  n_approve -->|"timed out"| n_terminateTimedOut
  n_openPR --> n_waitForCI
  n_checkApprovalLimit -->|"yes"| n_terminateRejected
  n_checkApprovalLimit -->|"no"| n_approvalFix
  n_waitForCI -->|"received"| n_checkCI
  n_waitForCI -->|"timed out"| n_terminateCITimedOut
  n_approvalFix --> n_runTests
  n_checkCI -->|"yes"| n_done
  n_checkCI -->|"no"| n_done
  class n_approve gate
  class n_waitForCI wait

Ships as a built-in template and reuses the engineering steps the flagship flow runs. This particular arrangement of them is not separately exercised end to end against a real repository. See product overview §8.

Every built-in template is seeded into the workflow library and can be cloned, edited on the visual canvas, and versioned — see architecture for the node types. The spec lives in packages/shared/src/workflow/templates/approveBeforePr.ts.

© 2026 Jorge Barnaby

Source-available under FSL-1.1-MIT

Source on GitHub

Built with Astro and Starlight