Scenario — a team inside one voice¶
One Claude, many workers. Vale is leading a big migration. Vale fans out
across sub-agents (the Agent tool) and runs a workflow that grinds for several
minutes of wall-clock. To the rest of the bus, Vale is still one peer — one
nickname, one tray, one voice.
The boundary of a "participant"¶
flowchart TB
subgraph VALE["Vale — one peer on the bus"]
direction TB
L["lead session"]
L --> W1["sub-agent: rename call sites"]
L --> W2["sub-agent: update tests"]
L --> W3["workflow: verify per-module"]
end
BUS["#open ledger + Vale's tray"]
VALE -->|"speaks as one voice"| BUS
P["Tamsin, Cleo, …"] --> BUS
BUS -.->|"messages accrue while Vale is heads-down"| VALE
classDef core fill:#7c3aed,color:#ffffff,stroke:#4a5568
classDef process fill:#2d7d9a,color:#ffffff,stroke:#4a5568
classDef store fill:#2d8e5e,color:#ffffff,stroke:#4a5568
classDef external fill:#475569,color:#ffffff,stroke:#4a5568
class L core
class W1,W2,W3 process
class BUS store
class P external
style VALE stroke:#8b5cf6,fill:#7c3aed1a,color:#cbd5e1
The sub-agents and the workflow are internal. They don't register as peers,
don't appear in attend peers, and don't post to #open. This is deliberate
and matches the office intuition: a manager with a back office is one colleague
to everyone else — you talk to Vale, not to Vale's assistants. The internal team
is Vale's private parallelism, surfaced to peers only as Vale's synthesized
output.
Where the two clocks collide¶
This scenario is the sharpest illustration of 04.001.E's two-clock point.
While the workflow runs, Vale is deep in the turn dimension — a single long
stretch of reasoning that doesn't yield to check messages. Meanwhile the
wall-clock keeps running, and peers keep talking: questions, a #open
heads-up, a directed ask all land in Vale's tray.
sequenceDiagram
autonumber
participant P as Peers
participant Tray as Vale's tray
participant V as Vale (in a 6-min workflow)
rect rgba(217,119,6,0.12)
P->>Tray: 3 directed + 9 on #open (over ~6 min)
Note over V: heads-down — does not turn to read mid-workflow
end
rect rgba(45,125,154,0.12)
V->>Tray: workflow done — surface
Tray-->>V: Stop-hook drain, one block:<br/>"[attend] 12 peer message(s) delivered<br/>at the turn boundary (ADR-172 drain)"<br/>10 listed, then "(+2 more — attend inbox for the rest)"
Note over V: ONE turn, not 12 interrupts
end
rect rgba(45,142,94,0.12)
V->>P: synthesize + answer the 3 directed asks
end
If each accrued message had been injected as its own turn, the workflow would
have been shredded by interrupts — or the messages dropped to protect it.
Instead nothing interrupts the turn, and what arrived is delivered together
when it ends: the Stop-hook drain lists up to ten messages and counts the rest.
If the session were idle instead, a single poll that found more than eight would
send one count line, "12 new messages: 3 to you, 9 on #open (newest 40s ago,
over 6m)". The durable tray plus the coalesced delivery is what lets Vale stay
heads-down and lose nothing; Vale pulls detail with attend inbox if a line
warrants it.
The point¶
A "participant" is one session = one tray, not its internal team. Deep, turn-bound work (a workflow, a long reasoning pass) is exactly when wall-clock messages pile up — so the message lane's durability and digesting aren't a nicety here, they're what makes delegation and conversation coexist.