outcomeCoordination is built on Claude Code's own messaging, and cc-agents adds only what that lacks
spec:decisions.coordination-native-firstNext rung ready: nothing blocks; it waits only for the author's statement.
Packs: none
Design: no design entries · no pinned declarations · no decisions
Findings: no errors, no warnings
specs/decisions/coordination-native-first.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding none, and expected-outcome oracle none.
Intent
- Decide what sessions coordinate through once the inbox leaves infra.
Decision
context- The fleet's inbox is cmux's agent messages, a thin wrapper and a naming convention. It was chosen on 28 October because SendMessage was held across permission modes and left no record. cmux delivers only when a turn ends, so a session holding a long turn reads nothing, and it reaches no Desktop session. The cc-agents work never built coordination: its brief of 24 October names native messaging plus a tiny mod as the option to try first, and no implementation exists.
decision- Most work stays in one session with its agents and Workflows, and needs no messaging. Where work must cross a boundary inside one operating system, sessions find and message each other through Claude Code's own cross-session messaging, with every session accepting inbound messages. cc-agents adds only what that lacks: a lasting record of every message, and each session's place in a chain. Between operating systems, a message crosses through the T3 MCP route.
rationale- Hard to reverse: every project's coordination will rest on this, and the skills will teach it. Surprising without context: almost nothing the fleet calls the inbox gets moved, because the platform now provides it. A real trade-off: depending on one vendor's feature and its defaults, against owning a transport that delivers later and reaches less. Tested on Claude Code 2.1.314 on 30 October: with inbound messages accepted, a message arrived mid-turn in both permission pairings, a mod's send woke an idle session, and a mod saw every message on both sides. Without the setting the message was held and dropped.
alternatives- Keep cmux: it delivers only at a turn's end, needs a wrapper to avoid dead tabs, and ties coordination to one terminal on one operating system.
- A local MCP service with register, list, send, inbox and wait: it keeps its own log but cannot wake an idle session.
- Agent teams: a team belongs to one session, and agents on other harnesses cannot be teammates.
consequences- Accepting inbound messages is a fleet setting, so infra owns it. It widens nothing, because cmux messages already reach every permission mode.
- The inbox wrapper, the wait loops' inbox check and the restart's queue forwarding retire with cmux delivery.
- The M1's engineering service in OrbStack is not a native peer of HQ on bare metal. That boundary is part of HQ's isolation, so it is crossed on purpose and not closed.
- Not measured yet: reach across machines, which native messaging routes through Remote Control, and the OrbStack boundary itself.
Verification
Verifier bindings
No verifier binding recorded.
Design view
Requirement drawing
- Declared verifying examples: no declared verifying example.
- Satisfying or referencing units: no recorded binding.
- Test or oracle bindings: no recorded binding.
Arrows: refines (declared).
The diagram as text
- spec:decisions.coordination-native-first: Coordination is built on Claude Code's own messaging, and cc-agents adds only what that lacks · declared Spec
- spec:hq.orchestration: Orchestration lives in one plugin, apart from infra and HQ · declared Spec
- spec:decisions.coordination-native-first refines spec:hq.orchestration · declared — settles what coordination is built from once it leaves infra
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred and chosen syntax: requirementDiagram; exact refines, satisfies and verifies, with claim words in nodes and per-edge comments.
Decisions
No decision record named.
Runtime
No implementation neighborhood recorded.
Runtime observation: not tracked.
Evidence
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Impact
- E2: decidedBy · declared — settles what coordination is built from
The diagram as text
- spec:decisions.coordination-native-first: Coordination is built on Claude Code's own messaging, and cc-agents adds only what that lacks
- spec:hq.orchestration: Orchestration lives in one plugin, apart from infra and HQ
- spec:decisions.coordination-native-first refines spec:hq.orchestration · declared — settles what coordination is built from once it leaves infra
- spec:hq.orchestration decidedBy spec:decisions.coordination-native-first · declared — settles what coordination is built from
Mermaid source
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Rests on
- refines · spec:hq.orchestration · stated defined, floor ready
Rested on by
Distance 1
- spec:hq.orchestration
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:hq-roadmap
Distance 2
- spec:decisions.orchestration-leaves-infra
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:hq.infra
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:hq-roadmap
Distance 3
- spec:decisions.isolated-infra-manages-hq
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:hq.context
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:hq-roadmap
Distance 4
- spec:decisions.client-material-deferred
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:hq.assistant
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:hq-roadmap
- spec:hq.environment
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:hq.isolation
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
Distance 5
- spec:hq.engineering-environment
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:hq.session-handoff
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:hq-roadmap
Distance 6
- spec:decisions.design-locked-by-projection
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:hq.delivery-planning
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:hq-roadmap
Distance 7
- spec:decisions.sdp-holds-the-plan
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
Distance 8
- spec:hq.headquarters
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
Distance 9
- spec:architecture.assistant
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.cc-agents
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.claude-harness
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.environments
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.hq
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.hq-plan
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.inbox
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.infra
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.kontrapunkt
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.relay
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.sdp
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:architecture.t3-code
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:decisions.hq-starts-engineering
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:decisions.recovery-closed
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:decisions.separate-repositories
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
- spec:hq.model
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| refines · outgoing | Orchestration lives in one plugin, apart from infra and HQspec:hq.orchestration · resolves | declared | settles what coordination is built from once it leaves infra | None |
| decidedBy · incoming | Orchestration lives in one plugin, apart from infra and HQspec:hq.orchestration · resolves | declared | settles what coordination is built from | None |
Bindings
Implementation binding: none
Design reference: none
Verifier binding: none
Expected-outcome oracle: none
Runtime observation: not tracked.
Run results: not recorded in the graph.
Findings
None.
Composing (0)
Composing needs the script.