generated from docs/capabilities.yaml (text) — edit the YAML, never this list
- Approval binding: An approval is bound to the exact action; a mutated or replayed one is refused.
- One effect, once: One logical effect happens at most once, across threads, processes and hosts.
- Unknown is not failed: An unknown outcome is AMBIGUOUS, never FAILED, and blocks a blind retry.
- Fail closed: An unknown action, a missing policy or a missing principal is denied.
- Authority and delegation: With authority on, every principal needs a grant, and delegation cannot widen one.
- Receipts: Every executed action leaves a portable JSON receipt of who, what and outcome.
- Per-action policy: One YAML file decides allow, approve or deny per action and argument.
- Operator CLI: Approve, deny, resolve, inspect and count from the shell, against any store.
- MCP gateway: Every guarantee in front of an MCP tool server, with no agent changes.
- Reconciliation: A reconcile hook asks the remote what happened and resolves an AMBIGUOUS effect.
- Webhook approvals: Approval requests go to a webhook, such as Slack, and the answer comes back.
- OpenTelemetry export: One span per action, one span event per step; argument values are opt-in.
- Consumed identity: A principal comes from a verified header or JWT; CTRLRun issues nothing.
- Runtime delegation: A principal narrows its own grant at runtime; one revocation cuts the chain.
- Observe mode: Records what enforcement would have blocked, blocks nothing, and counts it.
- Verify: Runs the guarantee catalogue against your policy and store; N/A is not a pass.
- The verified badge: A GitHub Action and a badge that means the declared guarantees pass.
- Framework adapters: An approval routed through the framework's own interrupt; never a second path.
- Runs on one host or many: SQLite on one host, Postgres across hosts, the same guarantees either way.
- Postgres store: The same store on Postgres, graded by the suite written for SQLite.
- Versioned schema: Migrations run at open, forward only, and an unknown schema is refused.
- Recovery on restart: A dead worker's effect stays AMBIGUOUS until a human or a hook resolves it.
- Receipt chain: Each receipt carries the hash of the one before; alteration is detected and named.
- Policy versioning: Every receipt names the policy hash and version that decided it.
- Control registry: Name the house controls an action satisfies, and receipts cite them.
- Data scope: Label arguments by data class and condition a rule on the labels present.
end generated
