Skip to main content

The governed lifecycle

RStack enforces this operating model on every run:
No phase can be skipped. No implementation begins without plan approval. No task is claimed DONE without evidence.

Required controls

Approval gates

RStack uses sdlc_approve to record explicit human decisions:
Approvals are written to .rstack/runs/<run_id>/approvals.json and referenced in traceability. The recorded approver is the resolved identity (git config or RSTACK_USER), not a placeholder.

Enforce policy & manager roles

For team use you can require specific approvals in every mode (including express) and restrict who may approve, via .rstack/policy.json plus the RSTACK_APPROVAL_TOKEN / RSTACK_MANAGER_USERS settings. The moment a gate blocks, every configured notification channel is paged. See Approvals & Policy for the full model.

Protected actions

RStack blocks these commands during governed runs unless a matching approval exists:
To allow a protected action:
Or set the environment variable:

Team roles and tool permissions

Validators are intentionally read-only. They review builder output, check tests, and write validation.json — but cannot modify source files.

Evidence requirements

A task is only considered complete when all of the following exist:
builder.json minimum structure:
validation.json minimum structure:

Project-local overrides

Teams can override or extend the default packaged assets under:
Local overrides take precedence over the package defaults, allowing teams to customize the governance model without forking the core package.