hands

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.

Planned

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

DutyStatus
Bus identity — hands_send, hands_ask, hands_answerLive The sous is a real agent id (“sous”) on the bus, same as expo or a station.
Escalation hop — hands_escalate wakes itLive Gated on sous.enabled — see “Turning it on” below.
Ticket compositionLive 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 authorityPlanned 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 panelPlanned 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.