actorThe one tie between this repository's Specs and HQ's design
spec:cc-agents.hq-linksNext rung ready waits on 1 unmet clause:
typed-dependency-targets-are-defined· Every refines, dependsOn, constrainedBy, and decidedBy target states at least defined.- refines · spec:architecture.cc-agents · stated scoped
- dependsOn · spec:architecture.cc-agents · stated scoped
- dependsOn · spec:architecture.inbox · stated scoped
Packs: none
Design: no design entries · no pinned declarations · 2 decisions
Findings: no errors, no warnings
design/links.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding none, and expected-outcome oracle none.
This is the only file in the repository that names an HQ Spec. The public cut of the repository drops design/, and with it every link below, so nothing under specs/, plugin/ or tests/ refers here. Read each rule as: HQ states this, and these Specs answer it.
Intent
- A reviewer who approves this repository's coordination design against HQ's delivered design.
problem- HQ's design is locked and private, this repository's design must read without it, and a reviewer needs to see which of HQ's rules each Spec answers and where it narrows them.
outcome- Every rule of HQ's orchestration that concerns coordination has its answering Spec named in one place, and every difference is stated.
Behavior
rule.inPluginline 57 ·design/links.sdp.md:57- spec:hq.orchestration#rule.genericInPlugin is answered by spec:cc-agents.coordination as a whole, and spec:architecture.cc-agents is the component that carries it.
no example exercises it
rule.nativeMessagingline 58 ·design/links.sdp.md:58- spec:hq.orchestration#rule.nativeMessaging is answered by spec:cc-agents.coordination.record, which adds the lasting record, and spec:cc-agents.coordination.chain, which adds each session's parent. The plugin delivers nothing itself.
no example exercises it
rule.switchesAloneline 59 ·design/links.sdp.md:59- spec:hq.orchestration#rule.coordinationSwitchesAlone and spec:hq.orchestration#rule.relayUntilTrusted are answered by spec:cc-agents.coordination.adoption: coordination is on while the job runner is off.
no example exercises it
rule.boundaryCrossingline 60 ·design/links.sdp.md:60- spec:hq.orchestration#rule.boundaryCrossing, which specifies delivery over the T3 bridge, is not answered: spec:decisions.coordination-native-first leaves that boundary unmeasured, and this design scopes its tree to records on the local machine and shows an external parent as an unresolved boundary. spec:cc-agents.coordination#question.bridge keeps the question open for the owner.
no example exercises it
rule.roleAndParentline 61 ·design/links.sdp.md:61- spec:architecture.inbox, which says cc-agents keeps each session's role and parent, is narrowed by spec:cc-agents.coordination.boundary-only: the only roles are top and lead, and both follow from the parent.
no example exercises it
rule.acceptInboundline 62 ·design/links.sdp.md:62- spec:decisions.coordination-native-first makes every session accept inbound messages a fleet setting that infra owns. spec:cc-agents.coordination.adoption reads that setting and reports which state holds, accept, hold, refuse or the host default, and never writes it.
no example exercises it
rule.boundaryOnlyline 63 ·design/links.sdp.md:63- spec:decisions.coordination-native-first says most work stays in one session and needs no messaging, and spec:cc-agents.coordination.boundary-only states when a second session is needed.
no example exercises it
rule.scanNeedsline 64 ·design/links.sdp.md:64- spec:cc-agents.coordination.record carries what the vault's session scan needs to tell a peer's message from the owner's words: its own full session id, the peer as the host named it, UTC time, verbatim text, the sender's own id as authority on its own entry, the queue result and the receive outcome, and the working directory that assigns an entry to a project.
no example exercises it
rule.complementaryModelsline 65 ·design/links.sdp.md:65- spec:hq.orchestration#rule.complementaryModels is answered by spec:cc-agents.runner: GPT through spec:cc-agents.codex-adapter and every other family through spec:cc-agents.opencode-adapter occupy agent and Workflow roles beside Claude, with no Claude model working on their tasks.
no example exercises it
rule.runnerMovesRelayScriptsline 66 ·design/links.sdp.md:66- spec:hq.orchestration#rule.relayUntilTrusted names the job runner as the successor that must earn trust. spec:cc-agents.relay-job-type is the part that lets Relay's Workflow scripts move over by changing only the agent type, and whether the runner is on or off is a deployment matter that no Spec here states.
no example exercises it
rule.templatesForEndUsersline 67 ·design/links.sdp.md:67- spec:hq.orchestration#rule.templates is answered for end users by spec:cc-agents.model-templates, and a user's own guide is a path in an option. Private and project-specific templates are not answered here.
no example exercises it
rule.contextForPeersUnansweredline 68 ·design/links.sdp.md:68- spec:hq.orchestration#rule.contextForPeers is not answered: the job runner passes a lane its task only, and each harness loads its own skills and instructions as the user configured it.
no example exercises it
rule.sessionScanningline 69 ·design/links.sdp.md:69- spec:hq.orchestration#rule.sessionScanning and spec:hq.orchestration#rule.scanFilters are answered by spec:cc-agents.coordination.session-scanning. The port takes the vault's whole skill
scan-sessions, and from its skillcatch-upwhat extraction needs:owner-extract.py,codex_reader.py,t3_reader.py,generated-text.json,t3-dump.py, andtest_extract.py,test_readers.pyandfixtures/.feed.mjsandcompact.mjsstay out. The vault must not be deleted before this entry is delivered.no example exercises it
rule.notHereline 70 ·design/links.sdp.md:70- The inventory of the earlier orchestration found other generic capabilities that this design does not take up: restart and resume, pull request watching, insight capture, orphan job recovery, transcript digests and model templates. Each needs its own Spec, and none of them is coordination.
no example exercises it
0 unkeyed rules.
Verification · reviewed
criteria- A reviewer reads each rule against the HQ Spec it names and confirms the answering Spec states it.
- A search of
specs/,plugin/andtests/finds no HQ Spec id, organisation, machine, client or person.
mode- reviewed
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:cc-agents.hq-links: The one tie between this repository's Specs and HQ's design · declared Spec · no satisfying binding
- spec:architecture.cc-agents: cc-agents · declared Spec
- spec:hq.orchestration: Orchestration lives in one plugin, apart from infra and HQ · declared Spec
- spec:cc-agents.hq-links refines spec:architecture.cc-agents · declared — the job runner and the coordination design are the parts of this component that exist in this repository
- spec:cc-agents.hq-links refines spec:hq.orchestration · declared — this repository's coordination design answers the rules that HQ's orchestration states
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
- Coordination is built on Claude Code's own messaging, and cc-agents adds only what that lacks
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.
- Generic orchestration moves from infra to cc-agents, and Relay runs jobs until cc-agents earns trust
The inbox, the chain and similar generic orchestration move from infra to cc-agents. Until cc-agents' job runner earns trust it stays off on every machine and Relay runs the harness jobs, while its coordination can already be on. Infra deploys the result to projects as an extension.
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
The diagram as text
- spec:architecture.cc-agents: cc-agents
- spec:architecture.inbox: The inbox
- spec:cc-agents.codex-adapter: GPT runs through the user's Codex, one app-server per turn
- spec:cc-agents.coordination: Sessions that must message each other leave a record and a place in a chain
- spec:cc-agents.coordination.adoption: Coordination switches on alone, and a project takes it up with one setting and its own boundaries
- spec:cc-agents.coordination.boundary-only: A second session exists only across a boundary one session cannot cross
- spec:cc-agents.coordination.chain: A lead states its parent once, and the chain is read from what leads stated
- spec:cc-agents.coordination.record: Messages between sessions this session saw are kept whole, with what is known of who sent them and what came of them
- spec:cc-agents.coordination.session-scanning: A scan reads a project's sessions and traces each direction to its outcome
- spec:cc-agents.hq-links: The one tie between this repository's Specs and HQ's design
- spec:cc-agents.model-templates: Claude reads a model guide that fits the harnesses installed here
- spec:cc-agents.opencode-adapter: Every other family runs through the user's OpenCode service
- spec:cc-agents.relay-job-type: The job agent takes Relay's header and returns Relay's state block
- spec:cc-agents.runner: Other model families run as real Claude Code agents
- spec:decisions.coordination-native-first: Coordination is built on Claude Code's own messaging, and cc-agents adds only what that lacks
- spec:decisions.orchestration-leaves-infra: Generic orchestration moves from infra to cc-agents, and Relay runs jobs until cc-agents earns trust
- spec:hq.orchestration: Orchestration lives in one plugin, apart from infra and HQ
- spec:cc-agents.hq-links decidedBy spec:decisions.coordination-native-first · declared — fixes native messaging and the two things cc-agents adds
- spec:cc-agents.hq-links decidedBy spec:decisions.orchestration-leaves-infra · declared — places the inbox and the chain in cc-agents and keeps the runner off
- spec:cc-agents.hq-links dependsOn spec:architecture.cc-agents · declared — the component that carries the coordination answered here
- spec:cc-agents.hq-links dependsOn spec:architecture.inbox · declared — the component design that the record and the chain fill in
- spec:cc-agents.hq-links dependsOn spec:cc-agents.codex-adapter · declared — GPT occupies a lane beside Claude
- spec:cc-agents.hq-links dependsOn spec:cc-agents.coordination · declared — the tie holds only while the coordination design states what it answers
- spec:cc-agents.hq-links dependsOn spec:cc-agents.coordination.adoption · declared — answers the switch and the job runner's staying off
- spec:cc-agents.hq-links dependsOn spec:cc-agents.coordination.boundary-only · declared — narrows when sessions coordinate at all
- spec:cc-agents.hq-links dependsOn spec:cc-agents.coordination.chain · declared — answers each session's role and parent
- spec:cc-agents.hq-links dependsOn spec:cc-agents.coordination.record · declared — answers native messaging and the lasting record
- spec:cc-agents.hq-links dependsOn spec:cc-agents.coordination.session-scanning · declared — answers the move of session scanning
- spec:cc-agents.hq-links dependsOn spec:cc-agents.model-templates · declared — the end-user templates the runner ships
- spec:cc-agents.hq-links dependsOn spec:cc-agents.opencode-adapter · declared — every other family occupies a lane beside Claude
- spec:cc-agents.hq-links dependsOn spec:cc-agents.relay-job-type · declared — Relay's Workflow scripts move to the job runner by changing the agent type
- spec:cc-agents.hq-links dependsOn spec:cc-agents.runner · declared — the job runner, which answers the provider and template rules below
- spec:cc-agents.hq-links refines spec:architecture.cc-agents · declared — the job runner and the coordination design are the parts of this component that exist in this repository
- spec:cc-agents.hq-links refines spec:hq.orchestration · declared — this repository's coordination design answers the rules that HQ's orchestration states
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:architecture.cc-agents · stated scoped, floor ready
- refines · spec:hq.orchestration · stated defined, floor ready
- dependsOn · spec:architecture.cc-agents · stated scoped, floor ready
- dependsOn · spec:architecture.inbox · stated scoped, floor ready
- dependsOn · spec:cc-agents.codex-adapter · stated ready, floor ready
- dependsOn · spec:cc-agents.coordination · stated defined, floor ready
- dependsOn · spec:cc-agents.coordination.adoption · stated defined, floor ready
- dependsOn · spec:cc-agents.coordination.boundary-only · stated defined, floor ready
- dependsOn · spec:cc-agents.coordination.chain · stated defined, floor ready
- dependsOn · spec:cc-agents.coordination.record · stated defined, floor ready
- dependsOn · spec:cc-agents.coordination.session-scanning · stated defined, floor ready
- dependsOn · spec:cc-agents.model-templates · stated ready, floor ready
- dependsOn · spec:cc-agents.opencode-adapter · stated ready, floor ready
- dependsOn · spec:cc-agents.relay-job-type · stated ready, floor ready
- dependsOn · spec:cc-agents.runner · stated defined, floor ready
- decidedBy · spec:decisions.coordination-native-first · stated defined, floor ready
- decidedBy · spec:decisions.orchestration-leaves-infra · stated defined, floor ready
Rested on by
No Spec rests on this Spec.
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | Coordination is built on Claude Code's own messaging, and cc-agents adds only what that lacksspec:decisions.coordination-native-first · resolves | declared | fixes native messaging and the two things cc-agents adds | None |
| decidedBy · outgoing | Generic orchestration moves from infra to cc-agents, and Relay runs jobs until cc-agents earns trustspec:decisions.orchestration-leaves-infra · resolves | declared | places the inbox and the chain in cc-agents and keeps the runner off | None |
| dependsOn · outgoing | cc-agentsspec:architecture.cc-agents · resolves | declared | the component that carries the coordination answered here | None |
| dependsOn · outgoing | The inboxspec:architecture.inbox · resolves | declared | the component design that the record and the chain fill in | None |
| dependsOn · outgoing | GPT runs through the user's Codex, one app-server per turnspec:cc-agents.codex-adapter · resolves | declared | GPT occupies a lane beside Claude | None |
| dependsOn · outgoing | Sessions that must message each other leave a record and a place in a chainspec:cc-agents.coordination · resolves | declared | the tie holds only while the coordination design states what it answers | None |
| dependsOn · outgoing | Coordination switches on alone, and a project takes it up with one setting and its own boundariesspec:cc-agents.coordination.adoption · resolves | declared | answers the switch and the job runner's staying off | None |
| dependsOn · outgoing | A second session exists only across a boundary one session cannot crossspec:cc-agents.coordination.boundary-only · resolves | declared | narrows when sessions coordinate at all | None |
| dependsOn · outgoing | A lead states its parent once, and the chain is read from what leads statedspec:cc-agents.coordination.chain · resolves | declared | answers each session's role and parent | None |
| dependsOn · outgoing | Messages between sessions this session saw are kept whole, with what is known of who sent them and what came of themspec:cc-agents.coordination.record · resolves | declared | answers native messaging and the lasting record | None |
| dependsOn · outgoing | A scan reads a project's sessions and traces each direction to its outcomespec:cc-agents.coordination.session-scanning · resolves | declared | answers the move of session scanning | None |
| dependsOn · outgoing | Claude reads a model guide that fits the harnesses installed herespec:cc-agents.model-templates · resolves | declared | the end-user templates the runner ships | None |
| dependsOn · outgoing | Every other family runs through the user's OpenCode servicespec:cc-agents.opencode-adapter · resolves | declared | every other family occupies a lane beside Claude | None |
| dependsOn · outgoing | The job agent takes Relay's header and returns Relay's state blockspec:cc-agents.relay-job-type · resolves | declared | Relay's Workflow scripts move to the job runner by changing the agent type | None |
| dependsOn · outgoing | Other model families run as real Claude Code agentsspec:cc-agents.runner · resolves | declared | the job runner, which answers the provider and template rules below | None |
| refines · outgoing | cc-agentsspec:architecture.cc-agents · resolves | declared | the job runner and the coordination design are the parts of this component that exist in this repository | None |
| refines · outgoing | Orchestration lives in one plugin, apart from infra and HQspec:hq.orchestration · resolves | declared | this repository's coordination design answers the rules that HQ's orchestration states | 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.