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 |
The workflow
Section titled “The workflow”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
Maturity: built from the flagship steps
Section titled “Maturity: built from the flagship steps”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.
Use it
Section titled “Use it”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