Decision Statuses
Gate gives the runtime a small decision vocabulary: execute, wait, revise, replan, or stop.
Execution rule
Execute a governed action only on allow or approved. Treat every other state as a control signal, never as permission to execute.
Status table
| Status | Meaning | Runtime behavior |
|---|---|---|
allow | Automatic policy allow. | Execute the exact proposed tool call. |
reject | Automatic policy reject. | Do not execute. Replan or stop. |
pending_review | A human-review thread is open. | Persist the returned thread_id, wait, poll, or resume from a callback. |
changes_requested | A reviewer supplied feedback on the current proposal. | Revise the proposed action and send a guarded revision.{taskID}.{threadID} event on the same thread. |
approved | The reviewer approved the current proposal. | Execute only after required signed-approval checks succeed. |
rejected | The reviewer rejected the current proposal. | Do not execute. Replan or stop. |
Requested changes stay on the same review thread
When polling returns changes_requested, use the reviewer message as feedback, produce a revised proposal, and POST a revision event to the same task and thread. Gate reevaluates the revision while preserving the review history.
{
"event_type": "revision.task-123.THR-A1B2C3D4",
"event_summary": "Revised after reviewer feedback",
"payload": {
"revision": {
"revision_id": "rev-002",
"tool_name": "issue_refund",
"subject": "Review issue_refund",
"request_payload": { "amount": 250 }
}
}
}A revision requires a unique revision_id, tool_name, subject, and request_payload. Duplicate, stale, or no-longer-pending revisions return 409.
Identifiers
| ID | Use |
|---|---|
task_id | Your runtime-controlled grouping ID. Reuse is supported across multiple decision requests. |
thread_id | Gate-generated identifier for one exact human-review request. Prefer it for polling and revisions. |
revision_id | Your unique identifier for one revision inside a review thread. |
Recommended branch behavior
Stop execution on unknown status, API failure, missing required approval proof, invalid or consumed token, or timeout. The HTTP request succeeding is not itself permission to execute.