Spec Studio

A lead states its parent once, and the chain is read from what leads stated

spec:cc-agents.coordination.chainUse Case / Behavior · featuredefined floor ready

Next 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
actor
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.leadJoins line 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.joinTellsParent line 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.rolesFollowParents line 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.treeFromEntries line 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.laterJoinReplaces line 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.reportsArePlainMessages line 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.agentsAreNotMembers line 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.joinRefusals line 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.localRecordsOnly line 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.depthIsShown line 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.lastHeardNotAlive line 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.guidanceShips line 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
toolJoin line 43 · specs/coordination/chain.sdp.md:43
chain_join, with input { parent: string, part: string, brief?: string }, seen by Claude as mcp__coordination__chain_join.

no citation recorded

toolTree line 44 · specs/coordination/chain.sdp.md:44
chain_tree, with no input, seen as mcp__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

briefHolds line 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_tree lists 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. /chain terminates 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.
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.
Requirement drawing for spec:cc-agents.coordination.chain

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
Relations of spec:cc-agents.coordination.chain
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

Rested on by

Distance 1

Relations

Relation and directionOther endClaimReasonExercised keys
decidedBy · outgoingA second session exists only across a boundary one session cannot cross
spec:cc-agents.coordination.boundary-only · resolves
declaredfixes the roles to top and lead and the agents out of the chainNone
dependsOn · outgoingMessages 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.record · resolves
declareda join is a chain entry in the record, and the tree is read from entriesNone
refines · outgoingSessions that must message each other leave a record and a place in a chain
spec:cc-agents.coordination · resolves
declaredthe second thing the plugin adds to the host's messagingNone
dependsOn · incomingThe person sees the chain and the traffic without asking a model
spec:cc-agents.coordination.view · resolves
declaredthe view draws the chainNone
dependsOn · incomingThe one tie between this repository's Specs and HQ's design
spec:cc-agents.hq-links · resolves
declaredanswers each session's role and parentNone

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.