Skip to content

Risk-tiered approval

A person rates the change as low, medium, or high risk. Low goes straight to a pull request, medium needs a senior sign-off, and high needs a team lead within 48 hours.

Template tiered-escalation
Works on A git repository, cloned into an isolated Docker sandbox
Where a person acts What is the risk level of this change? — a person chooses a path, waiting up to 2h
Senior developer sign-off required — a person approves or rejects, waiting up to 24h
Team lead sign-off required — a person approves or rejects, waiting up to 48h

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_riskDecision>"What is the risk level of this change?<br/><small>person: decision</small>"]
  n_seniorApproval>"Senior developer sign-off required<br/><small>person: approval</small>"]
  n_openPR["Open PR"]
  n_leadApproval>"Team lead sign-off required<br/><small>person: approval</small>"]
  n_terminateRejected(["Failed<br/><small>rejected</small>"])
  n_terminateTimedOut(["Timed out"])
  n_done(["Done"])
  n_validate --> n_implement
  n_implement --> n_riskDecision
  n_riskDecision -->|"timed out"| n_seniorApproval
  n_riskDecision -->|"Low risk (docs, config, typos)"| n_openPR
  n_riskDecision -->|"Medium risk (logic, new APIs)"| n_seniorApproval
  n_riskDecision -->|"High risk (auth, payments, migrations)"| n_leadApproval
  n_seniorApproval -->|"approved"| n_openPR
  n_seniorApproval -->|"rejected"| n_terminateRejected
  n_seniorApproval -->|"timed out"| n_terminateTimedOut
  n_openPR --> n_done
  n_leadApproval -->|"approved"| n_openPR
  n_leadApproval -->|"rejected"| n_terminateRejected
  n_leadApproval -->|"timed out"| n_terminateTimedOut
  class n_riskDecision,n_seniorApproval,n_leadApproval gate

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/tieredEscalation.ts.

© 2026 Jorge Barnaby

Source-available under FSL-1.1-MIT

Source on GitHub

Built with Astro and Starlight