Documentation / Advanced
Approve the exact operation
Approval is a stateful gate bound to an action, target and immutable operation input—not a boolean supplied by a handler.
Pause before publication
Choose a gate ID, action, target, timeout and timeout action. Expiry/rejection must not silently approve the operation. Review the pending input and tool version before deciding.
{
"id": "publish-approval",
"action": "publish_report",
"target": "reviewers",
"timeout": "1h",
"onTimeout": "pause"
}Complete example · JSON / YAML
JSON
{
"name": "advanced-approval",
"version": "1.0.0",
"lanes": {
"inline": {
"mode": "sync_lambda",
"target": "lambda://local-inline"
}
},
"phases": {
"work": {
"service": "hello",
"lane": "inline",
"scope": "root",
"terminal": true
}
},
"controls": {
"gates": [
{
"id": "publish-approval",
"action": "publish_report",
"target": "reviewers",
"timeout": "1h",
"onTimeout": "pause"
}
]
}
}YAML
name: advanced-approval
version: 1.0.0
lanes:
inline:
mode: sync_lambda
target: lambda://local-inline
phases:
work:
service: hello
lane: inline
scope: root
terminal: true
controls:
gates:
- id: publish-approval
action: publish_report
target: reviewers
timeout: 1h
onTimeout: pauserippflow controls validate advanced-approval.workflow.yaml --jsonExpected: ok: true. This checks the contract; deployment/enforcement is separate.
Review before a mutation
Use the installation’s authorized operator workflow to approve or reject. Operation approval binds to the input digest and tool version; changed input needs a new approval. A gate approval and a tool-operation approval are distinct contracts.
rippflow operations inspect OPERATION_ID --json
rippflow controls inspect EXECUTION_ID --jsonTry a local contract first
The CRM dry-run validates an approval-required manifest without changing a CRM record. Pausing/resuming a real gate needs a configured installation and the appropriate role. The public Controller is still a demo.
Approve only after review
Authorized mutation: replace both placeholders with the values returned by operation inspection. The docs checks do not submit this approval.
rippflow operations approve OPERATION_ID --input-digest INPUT_DIGEST --tool-version TOOL_VERSION --json