chrismdp / counting-house-exceptions
Fernwick Air: the exception queue
workflow.yaml
workflow.yaml is AWML 0.6, as it was pushed. The registry draws, checks and fits it converted to AWML 0.8.
awml: "0.6"
title: "Fernwick Air: the exception queue"
description: |
When the orchestrator refuses a write intent, code routes the refusal by its reason code. A hard
no goes to a rep, who explains it to the customer. An out-of-policy but plausible case goes to a
supervisor, who may rebook. A system failure goes to IT. Fernwick Air is fictional.
scopes:
- { id: tokenised, label: "tokenised: Fernwick staff", processing: { anthropic: any } }
- { id: ops, label: "ops: Fernwick staff", processing: none, in: tokenised }
parts:
- { id: refused, kind: trigger, label: "A refusal lands in the exception queue", wait: PT1H }
- { id: queue, kind: context, label: "The exception queue: each refusal with its reason code and booking reference", in: ops, ref: chrismdp/counting-house-live#queue }
- { id: contact, kind: connector, label: "Fernwick's contact centre: email and chat", in: ops, untrusted: true, ref: chrismdp/counting-house-live#contact }
- { id: bookings, kind: connector, label: "Fernwick's booking system, live", in: ops, ref: chrismdp/counting-house-live#bookings }
- { id: route, kind: code, op: sort, label: "Route the refusal by its reason code", in: ops }
- { id: rep, kind: person, op: do, label: "A rep explains the refusal to the customer", in: ops }
- { id: reply, kind: outside, label: "Reply to the customer: Ask", in: ops }
- { id: supervisor, kind: person, op: do, label: "A supervisor rebooks the passenger out of policy, or refuses", in: ops }
- { id: rebook, kind: outside, label: "Rebook the passenger: Ask", in: ops }
- { id: it, kind: person, op: do, label: "IT fixes what failed and runs the saga again", in: ops }
- { id: retry, kind: outside, label: "Retry the rebooking: Ask", in: ops }
lines:
- { from: refused, to: route, kind: start }
- { from: queue, to: route, kind: data }
- { from: route, to: rep, kind: start, label: "[hard no]" }
- { from: contact, to: rep, kind: data, label: the customer's message }
- { from: queue, to: rep, kind: data }
- { from: rep, to: reply, kind: data }
- { from: reply, to: contact, kind: data }
- { from: route, to: supervisor, kind: start, label: "[out of policy but plausible]" }
- { from: queue, to: supervisor, kind: data }
- { from: bookings, to: supervisor, kind: data }
- { from: supervisor, to: rebook, kind: data }
- { from: rebook, to: bookings, kind: data }
- { from: route, to: it, kind: start, label: "[system failure]" }
- { from: queue, to: it, kind: data }
- { from: it, to: retry, kind: data }
- { from: retry, to: bookings, kind: data }