awesome-loop-engineering / examples /enterprise-approval-loop.json
cy0307's picture
Sync awesome-loop-engineering
9ec4919 verified
Raw
History Blame Contribute Delete
2.9 kB
{
"name": "Enterprise approval",
"objective": "Move a permissioned change through its required approvals without a human chasing reviewers, while keeping every gate, approver, and decision on the record.",
"trigger": {
"type": "scheduled",
"cadence_or_event": "Every 1-4 hours during business hours while an approval is open, and when a gate completes or an approver is assigned."
},
"intake": {
"sources": ["change request", "linked diff or runbook", "required gate results", "approver decisions"],
"selection_rule": "Act only on the next unmet required gate or pending approver; never advance while a required gate is unmet."
},
"workspace": {
"isolation": "Read access to approval metadata, gate results, diffs, and policy documents; no merge or access-grant surface.",
"allowed_actions": ["read approval state", "attach sourced evidence", "request reviews", "update status fields"],
"disallowed_actions": ["self-approve", "bypass a gate", "edit policy", "merge or ship the change"]
},
"context": {
"required_files": ["approval policy", "AGENTS.md", "change-management runbook"],
"runtime_sources": ["current gate status", "approver availability", "SLA timers"]
},
"agents": [
{
"role": "Explorer",
"responsibility": "Summarize the change and which gates and approvers still block it."
},
{
"role": "Coordinator",
"responsibility": "Route the request to the next required gate or approver and track SLAs."
},
{
"role": "Reviewer",
"responsibility": "Check that attached evidence satisfies each named policy gate."
},
{
"role": "Judge",
"responsibility": "Decide whether to advance, request changes, or escalate to a human owner."
}
],
"verification": {
"gates": ["every required gate has a recorded pass, fail, or waiver with evidence", "each approval is attributable to a named human", "the change does not advance while any gate is unmet"],
"receipts": ["change request ID", "gate status with evidence links", "approver decisions and conditions", "timestamps"]
},
"state": {
"artifacts": ["approval ledger entry", "gate and approver status record"],
"update_rule": "Record what advanced, what blocked, and why after every run, preserving an immutable audit trail."
},
"budget": {
"max_retries": 3,
"max_runtime_minutes": 240
},
"escalation": {
"conditions": ["approver unresponsive past SLA", "a gate fails", "policy is ambiguous", "a waiver is requested", "regulated data or production access is involved"],
"destination": "Named human owner via the change-management channel"
},
"exit": {
"success": "The change is fully approved with a complete audit trail, or cleanly rejected.",
"stop_without_success": "The loop is blocked on a human decision, a failed gate, or an unresponsive approver."
}
}