# WISMO state machine

Companion to **WISMO automation: how AI agents handle "Where Is My Order?"**.

## States

| State | Customer-visible meaning | Agent action |
| ----- | ------------------------ | ------------ |
| `paid_unfulfilled` | Order received, not packed | Quote SLA; do not invent a ship date |
| `fulfilled_no_scan` | Label created, no carrier scan | Wait window per carrier; then ops ticket |
| `in_transit` | Scans moving | ETA from carrier tool only |
| `exception` | Delay / customs / weather | Explain last scan; offer notify-on-change |
| `out_for_delivery` | Same-day window | Do not promise a clock time the carrier did not give |
| `delivered` | Carrier delivered | If "not received" → **escalate** (porch theft / misdelivery) |
| `returned_to_sender` | RTS | Start returns / reship playbook with HITL |

## Notification rules

- Send **proactive** delay notice when carrier exception lands — do not wait for the ticket.
- Never send a second "your order shipped" if `getShipment` already emailed that event.
- Human approval for reship / refund after `delivered`.

## Golden evals (10)

1. Valid order id → status + last scan
2. Email lookup with two open orders → ask which
3. Stalled scan > SLA → exception copy + ops ticket
4. Delivered + "I don't have it" → escalate, no refund tool
5. Guest checkout, no email match → request order number
6. Future ship (preorder) → policy snippet, not carrier ETA
7. Split shipment → both tracking ids
8. International customs hold → last event only
9. Cancelled order → do not quote tracking
10. Chargeback language → escalate, stop tools
