actorA lead states its parent once, and the chain is read from what leads stated
spec:cc-agents.coordination.chainNext rung ready: nothing blocks; it waits only for the author's statement.
Packs: pack:cc-agents-coordination
Design: 3 design entries · 2 pinned declarations · 1 decision
Findings: no errors, no warnings
specs/coordination/chain.sdp.md
No open questions and no blocking questions; implementation binding none, verifier binding none, and expected-outcome oracle none.
Intent
- A lead, the session that started it, and the person watching both.
problem- A session started across a boundary does not know whom to report to, its starter does not know what it left running, and a later reader cannot tell either.
outcome- A lead declares its parent and its part in one call, its parent hears of it, and either side can read the whole chain from the record.
value- Whoever starts a session across a boundary can see that it exists and can tell whether it has gone quiet, and a lead always knows where its result goes.
Behavior
rule.leadJoinsline 28 ·specs/coordination/chain.sdp.md:28- A lead declares itself by calling the join tool with its parent's full session id, a one-line part and, if there is one, where its brief is. This is its first act, and its brief says so.
no example exercises it
rule.joinTellsParentline 29 ·specs/coordination/chain.sdp.md:29- Joining sends the parent one short message that names the lead's session id and part, and the tool result says whether it was delivered. When it was not, the lead says so in its first words to the person.
no example exercises it
rule.rolesFollowParentsline 30 ·specs/coordination/chain.sdp.md:30- A session with no declared parent is a top and a session with one is a lead. No other role exists and no role word is written.
no example exercises it
rule.treeFromEntriesline 31 ·specs/coordination/chain.sdp.md:31- The chain is read from the chain entries of the record. A session named as a parent that never declared, and whose records are on this machine, is shown as a top with no part.
no example exercises it
rule.laterJoinReplacesline 32 ·specs/coordination/chain.sdp.md:32- A second join by the same session replaces the first for display, and the record keeps both.
no example exercises it
rule.reportsArePlainMessagesline 33 ·specs/coordination/chain.sdp.md:33- A lead reports to its parent with ordinary messages to its session id. The plugin adds no report format and no acknowledgement.
no example exercises it
rule.agentsAreNotMembersline 34 ·specs/coordination/chain.sdp.md:34- An agent or a Workflow role never joins a chain and never appears in it: the join tool refuses a call made from an agent or a Workflow role context.
no example exercises it
rule.joinRefusalsline 35 ·specs/coordination/chain.sdp.md:35- The join tool also refuses a session that names itself as its parent. The tree is read so that it terminates when the records hold a cycle, and it flags each cycle it finds rather than drawing it.
no example exercises it
rule.localRecordsOnlyline 36 ·specs/coordination/chain.sdp.md:36- The tree is built from the records available on this machine. A parent whose entries are not here, such as one on another operating system, is shown as an unresolved boundary with its session id, never as a session with no part.
no example exercises it
rule.depthIsShownline 37 ·specs/coordination/chain.sdp.md:37- A lead whose parent is itself a lead is recorded and shown with a notice that the chain has grown a level, and nothing refuses it.
no example exercises it
rule.lastHeardNotAliveline 38 ·specs/coordination/chain.sdp.md:38- The tree states when each session was last heard, from its latest entry, and never states that a session is alive or dead, because the plugin does not poll.
no example exercises it
rule.guidanceShipsline 39 ·specs/coordination/chain.sdp.md:39- The plugin carries the guidance a session needs: when to start a lead, what a brief holds, how to join and report. A project adds only its own boundaries.
no example exercises it
0 unkeyed rules.
Design
toolJoinline 43 ·specs/coordination/chain.sdp.md:43chain_join, with input{ parent: string, part: string, brief?: string }, seen by Claude asmcp__coordination__chain_join.no citation recorded
toolTreeline 44 ·specs/coordination/chain.sdp.md:44chain_tree, with no input, seen asmcp__coordination__chain_tree; it returns the chain of the calling session as text, each session with its full id, parent, part and last heard.no citation recorded
briefHoldsline 45 ·specs/coordination/chain.sdp.md:45- a brief states the root intent in the person's words, the goal of each session between the person and the lead, the rulings that bind the work, the lead's part, how it will know it is done, and the session that receives its result.
Verification · manual
criteria- Start a lead whose brief names the parent's session id. After its join, the parent's
chain_treelists the lead with its part, and the parent's folder holds the join message. - Join with a parent id that no session holds. The tool result says not delivered, and the chain still shows the lead.
- Start an agent inside the lead. It never appears in the chain.
- Join a third session under the lead. The chain shows it with the notice about depth.
- Call the join tool from an agent inside a lead, and join a session under itself. Both are refused and the chain does not change.
- Join A under B and B under A.
/chainterminates and flags the cycle. - Join a lead under a parent whose records are on another machine. The tree shows the parent as an unresolved boundary.
- Start a lead whose brief names the parent's session id. After its join, the parent's
mode- manual
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.coordination.chain: A lead states its parent once, and the chain is read from what leads stated · declared Spec · no satisfying binding
- spec:cc-agents.coordination: Sessions that must message each other leave a record and a place in a chain · declared Spec
- spec:cc-agents.coordination.chain refines spec:cc-agents.coordination · declared — the second thing the plugin adds to the host's messaging
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
- A second session exists only across a boundary one session cannot cross
A second session is started only for one of three boundaries: another operating system, another repository or permission profile, or a part large or long enough to need a context of its own. The sessions started for one piece of work form a chain, in which the top has no parent and every other session is a lead with exactly one parent. A chain has no roles beyond top and lead. Inside a chain a message is a brief down, a report up or a correction down. A message between two sessions of no common chain is allowed, rare and recorded, and it gives neither side a role.
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:cc-agents.coordination: Sessions that must message each other leave a record and a place in a chain
- 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.view: The person sees the chain and the traffic without asking a model
- spec:cc-agents.hq-links: The one tie between this repository's Specs and HQ's design
- spec:cc-agents.coordination.chain decidedBy spec:cc-agents.coordination.boundary-only · declared — fixes the roles to top and lead and the agents out of the chain
- spec:cc-agents.coordination.chain dependsOn spec:cc-agents.coordination.record · declared — a join is a chain entry in the record, and the tree is read from entries
- spec:cc-agents.coordination.chain refines spec:cc-agents.coordination · declared — the second thing the plugin adds to the host's messaging
- spec:cc-agents.coordination.view dependsOn spec:cc-agents.coordination.chain · declared — the view draws the chain
- spec:cc-agents.hq-links dependsOn spec:cc-agents.coordination.chain · declared — answers each session's role and parent
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:cc-agents.coordination · stated defined, floor ready
- dependsOn · spec:cc-agents.coordination.record · stated defined, floor ready
- decidedBy · spec:cc-agents.coordination.boundary-only · stated defined, floor ready
Rested on by
Distance 1
- spec:cc-agents.coordination.view
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: pack:cc-agents-coordination
- spec:cc-agents.hq-links
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
Relations
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| decidedBy · outgoing | A second session exists only across a boundary one session cannot crossspec:cc-agents.coordination.boundary-only · resolves | declared | fixes the roles to top and lead and the agents out of the chain | 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 | a join is a chain entry in the record, and the tree is read from entries | None |
| refines · outgoing | Sessions that must message each other leave a record and a place in a chainspec:cc-agents.coordination · resolves | declared | the second thing the plugin adds to the host's messaging | None |
| dependsOn · incoming | The person sees the chain and the traffic without asking a modelspec:cc-agents.coordination.view · resolves | declared | the view draws the chain | None |
| dependsOn · incoming | The one tie between this repository's Specs and HQ's designspec:cc-agents.hq-links · resolves | declared | answers each session's role and parent | 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.