Docs · Guides
The sous
The one you talk to: composes a recipe into tickets, grades progress back against it, and is the expo’s first escalation hop.
Designed whole, running as a wide slice
The sous role is fully designed, and most of it runs today: it has a real bus identity, takes escalations, and composes tickets onto the rail’s queue. Sign-off authority and the operator-primary panel are not wired yet.
The table below marks each duty. Nothing on this page describes the intended design as if it were already live — the fastest way to lose trust in a docs page is having a reader discover the gap by trying something that isn’t there yet.
What’s live, what isn’t
| Duty | Status |
|---|---|
| Bus identity — hands_send, hands_ask, hands_answer | Live The sous is a real agent id (“sous”) on the bus, same as expo or a station. |
| Escalation hop — hands_escalate wakes it | Live Gated on sous.enabled — see “Turning it on” below. |
| Ticket composition | Live The sous calls hands_delegate without to — the ticket lands on the rail’s queue unassigned, and draining that queue onto stations is the expo’s half. (The expo, conversely, must name a station: composition and assignment are the two roles’ halves of the rail.) |
| Sign-off authority | Planned hands_task_update’s state: "done" has no role gate tying it to the sous specifically. Review gating meanwhile lives with the cdc — the quality role that rules on plans and returned work. |
| Operator-primary panel | Planned The greeting, rail report, needs-you, and to-do sections the sous is meant to own still live in the expo skill. |
Why a dedicated pane at all
Even in its current phase, running the sous as its own loop (/loop /hands:sous) means an escalation from the expo reaches a real wake instead of a desktop notification and a hope. If you’re the one operating that pane, an escalation just becomes a message in the conversation you’re already in — no second hop to arrange.
The role’s three duties
Three duties from the original design — the first two live, the third still ahead:
- —Composition — takes a recipe and decomposes it into tickets that ladder up to it, composed onto the rail’s queue for the expo to assign.
- —Escalation — the expo’s first hop for a judgment call it can’t make itself; resolves it or brings it to you.
- —Sign-off — grades a ticket, and eventually a recipe, against its own stated criteria.
Turning it on
sous.enabled in hands.config.json defaults to false — a kitchen with no sous pane running shouldn’t have hands_escalate waking an identity nobody’s listening as. Set it to true once you’re actually running /loop /hands:sous in a dedicated pane.