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.

json
{
  "id": "publish-approval",
  "action": "publish_report",
  "target": "reviewers",
  "timeout": "1h",
  "onTimeout": "pause"
}
Complete example · JSON / YAML

JSON

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

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: pause

Download JSON · YAML

shell
rippflow controls validate advanced-approval.workflow.yaml --json

Expected: 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.

shell
rippflow operations inspect OPERATION_ID --json
rippflow controls inspect EXECUTION_ID --json

Try 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.

shell
rippflow operations approve OPERATION_ID --input-digest INPUT_DIGEST --tool-version TOOL_VERSION --json
Verified sources

Checked 2026-11-05.

Let's talk

Contact Rippflow

Tell us about your workflows, deployment or pricing.

We'll reply to your email.

Search docs

Search workflows, handlers and operations.