Defining Loops
Loop Library
Canonical loop definitions
Loop Engine currently ships these canonical definitions from loops/:
| Loop ID | Domain | States | Terminal states | Business metrics |
|---|---|---:|---:|---:|
| scm.procurement | scm | 8 | 2 | 3 |
| scm.replenishment | scm | 5 | 2 | 2 |
| crm.lead_qualification | crm | 6 | 2 | 2 |
| finance.invoice_collection | finance | 6 | 2 | 2 |
| support.ticket_resolution | support | 6 | 2 | 2 |
| erp.purchase_approval | erp | 6 | 2 | 2 |
Featured definition: scm.procurement
1id: scm.procurement2version: 1.0.03domain: scm4description: >5 Purchase order lifecycle from requisition through receipt and settlement.6states:7 - id: OPEN8 - id: PO_CONFIRMED9 - id: RECEIPT_SCHEDULED10 - id: RECEIVED11 - id: INVOICE_MATCHED12 - id: SETTLED13 isTerminal: true14 - id: CANCELLED15 isTerminal: true16 - id: DISPUTED17 isError: true18initialState: OPEN19transitions:20 - id: confirm_po21 from: OPEN22 to: PO_CONFIRMED23 allowedActors: [human, automation, ai-agent]24outcome:25 id: po_settled26 description: Purchase order fully settled with matched invoice and inventory updated27 valueUnit: po_settled28 measurable: trueRaw files:
Contributing a loop definition
- Add YAML under
loops/{domain}/{name}.yaml - Validate with
pnpm validate-loops - Include a concrete
outcome - Add
businessMetricswhen measurable - Prefer at least one non-human actor option (
automation,system, orai-agent) where domain-appropriate
See Contributing for full workflow.
Naming conventions
- Loop ID:
{domain}.{noun}(for examplescm.procurement) - State IDs:
SCREAMING_SNAKE_CASE - Transition IDs:
snake_caseverbs (for exampleconfirm_po,receive_goods)