flow.purchase
Why provenance, never truth (INV-028)
- intent.a-confirmed-order-is-a-promise
Once an order reads CONFIRMED the customer has been told it will be fulfilled, so nothing downstream may quietly leave it in that state without paying.
docs/decisions/0004-order-confirmation.md#Decision
Outcomes and what checks them (INV-027)
- purchase.confirmed →
order=confirmed
◐ checked assert.purchase.confirms-order - purchase.rejected →
order=rejected
no check declared
Assertions
- ◐ likely assert.purchase.confirms-order
a validated order reaches CONFIRMED and emits order.created
flow.retry-payment
Why provenance, never truth (INV-028)
- no Intent declares why this Flow exists
Outcomes and what checks them (INV-027)
- none declared
Assertions
- ○ uncertain assert.retry.scheduled
pending payments are retried on a daily off-peak schedule
flow.inventory
Why provenance, never truth (INV-028)
- no Intent declares why this Flow exists
Outcomes and what checks them (INV-027)
- inventory.reserved →
inventory=reserved
no check declared
Assertions
- ◐ likely assert.inventory.reserves
order.created reserves stock
flow.notification
Why provenance, never truth (INV-028)
- no Intent declares why this Flow exists
Outcomes and what checks them (INV-027)
- notification.sent →
notification=sent
no check declared - notification.failed →
notification=failed
no check declared
Assertions
- ◐ likely assert.notification.sends
order.created sends a customer notification, which may fail independently
flow.payment
Why provenance, never truth (INV-028)
- no Intent declares why this Flow exists
Outcomes and what checks them (INV-027)
- payment.success →
payment=paid
no check declared - payment.failed →
payment=failed
no check declared
Assertions
- ◐ likely assert.payment.gateway-v2
payment is routed to gateway v2 when {"tenant": "a"} - ◐ likely assert.payment.gateway-v1
payment is routed to gateway v1 when {"tenant": "b"} - ◐ likely assert.payment.charges-gateway
processing a payment charges the gateway and reaches PAID - ◐ likely assert.payment.human-review
a fraud score above 80 routes to a human analyst before payment
Parallel branches are drawn as the absence of a
next arrow, not as a fork construct (INV-021). Arrows are
next; every other relationship is listed under its node.