actorcc-agents:<harness>.spec:cc-agents.mod-layerPacks: none
Design: 5 design entries · 2 pinned declarations · no decisions
Findings: no errors, no warnings
specs/runner/mod-layer.sdp.md
2 open questions and no blocking questions; implementation binding present, verifier binding present, and expected-outcome oracle none.
The mod is plugin/hooks/register.js, loaded by Claude Code's mod standard. It handles agent spawns, turn starts, steps, messages and stops for agent types of this plugin and passes everything else through untouched. It speaks only the sidecar's neutral endpoints and events, and names no harness: the harness is the part of the agent type after cc-agents:.
actorcc-agents:<harness>.problemoutcomevaluequestion.untestedPathsspecs/runner/mod-layer.sdp.md:25agent.spawn catch handler denies an agent the hook could not prepare; the internal progress tool answers "Still working." and is denied to agents that are not ours; a follow-up message to an ended agent starts a new run on the same thread; a step aborted mid-stream interrupts the turn; the turn-complete hook of an agent stopped before its first step asks the sidecar to interrupt it.Decider: delegatedProvisional: The code is as described; tests would pin each path.question.stepLabelspecs/runner/mod-layer.sdp.md:28progress tool call, so a step shows its progress only when it ends, every 20 seconds by default, never token by token.Decider: ownerProvisional: Kept as built; Claude Code buffers output until a step ends.rule.ourTypesOnly line 34 · specs/runner/mod-layer.sdp.md:34cc-agents:<harness> are handled; a spawn, step or message of any other agent passes through untouched.no example exercises it
rule.headerThenCheck line 35 · specs/runner/mod-layer.sdp.md:35model, effort and mode lines ended by a line ---, refuses an unknown key before anything starts, asks the sidecar to check the settings, and starts the subagent with the task alone.no example exercises it
rule.refusalNamesWhy line 36 · specs/runner/mod-layer.sdp.md:36no example exercises it
rule.defaultsAreOptions line 37 · specs/runner/mod-layer.sdp.md:37<harness>Model; a model in the header wins; with neither, the harness's own check decides.no example exercises it
rule.slotBeforeStart line 38 · specs/runner/mod-layer.sdp.md:38no example exercises it
rule.stepsFromEvents line 39 · specs/runner/mod-layer.sdp.md:39progress tool; a step lasts the option stepSeconds, 20 by default and at least 5.no example exercises it
rule.failClosed line 40 · specs/runner/mod-layer.sdp.md:40no example exercises it
rule.reloadReattaches line 41 · specs/runner/mod-layer.sdp.md:41no example exercises it
rule.firstStepWaitsForSpawn line 42 · specs/runner/mod-layer.sdp.md:42no example exercises it
rule.lostTurnEnds line 43 · specs/runner/mod-layer.sdp.md:43no example exercises it
0 unkeyed rules.
sidecarEndpoints line 47 · specs/runner/mod-layer.sdp.md:47/check, /reserve, /release, /register, /start, /events, /steer, /interrupt, /status, /agent, /resume-lookup, each described by the sidecar Spec.no citation recorded
agentType line 48 · specs/runner/mod-layer.sdp.md:48cc-agents:<harness>, where <harness> is also the adapter module's name and the agent file plugin/agents/<harness>.md.no citation recorded
header line 49 · specs/runner/mod-layer.sdp.md:49key: value for model, effort and mode, then a line ---, then the task; a prompt without that shape is the task.progressTool line 50 · specs/runner/mod-layer.sdp.md:50progress that the mod registers at session start; its calls mark a turn still running.ownershipMarker line 51 · specs/runner/mod-layer.sdp.md:51owned-<agent id> in the session's run directory, naming the harness, written at spawn.plugin/tests/mod.test.ts:4plugin/hooks/register.js:9plugin/tests/mod.test.ts:4Copyable 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.
No decision record named.
impl:cc-agents.mod · answers each step of an agent from the sidecar's events, hands back the exact answer, steers and stops, and returns the job state block · plugin/hooks/register.js:9Uses
None.
Runtime observation: not tracked.
Runtime observation: not tracked.
Build attestations: not tracked.
Deployments: not tracked.
Bills of materials: not tracked.
Copyable source; the Studio draws static SVG.
Preferred syntax: flowchart. Chosen syntax: labelled flowchart, preserving exact relations, claims and folds.
Implementing units
impl:cc-agents.mod · plugin/hooks/register.js:9Referencing units
None.
Enabled verifiers: test:cc-agents.mod-suite
Packs: None
Implementing units
impl:cc-agents.mod · plugin/hooks/register.js:9impl:cc-agents.relay-header · plugin/sidecar/relay-header.mjs:9impl:cc-agents.sidecar · plugin/sidecar/server.mjs:12Referencing units
None.
Enabled verifiers: test:cc-agents.mod-suite, test:cc-agents.sidecar-suite
Packs: None
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
Implementing units
impl:cc-agents.mod · plugin/hooks/register.js:9impl:cc-agents.sidecar · plugin/sidecar/server.mjs:12Referencing units
None.
Enabled verifiers: test:cc-agents.mod-suite, test:cc-agents.sidecar-suite
Packs: None
Implementing units
impl:cc-agents.codex · plugin/sidecar/adapters/codex.mjs:15impl:cc-agents.opencode · plugin/sidecar/adapters/opencode.mjs:26impl:cc-agents.sidecar · plugin/sidecar/server.mjs:12Referencing units
None.
Enabled verifiers: test:cc-agents.opencode-suite, test:cc-agents.sidecar-suite
Packs: None
Implementing units
impl:cc-agents.codex · plugin/sidecar/adapters/codex.mjs:15Referencing units
None.
Enabled verifiers: test:cc-agents.sidecar-suite
Packs: None
Implementing units
impl:cc-agents.sidecar · plugin/sidecar/server.mjs:12impl:cc-agents.slots · plugin/sidecar/slots.mjs:16Referencing units
None.
Enabled verifiers: test:cc-agents.sidecar-suite
Packs: None
Implementing units
None.
Referencing units
None.
Enabled verifiers: None
Packs: None
Implementing units
None.
Referencing units
impl:cc-agents.harness-options · plugin/hooks/harnesses.js:5Enabled verifiers: None
Packs: None
Implementing units
impl:cc-agents.machine · plugin/sidecar/machine.mjs:20Referencing units
impl:cc-agents.sidecar · plugin/sidecar/server.mjs:12Enabled verifiers: test:cc-agents.machine-suite, test:cc-agents.sidecar-suite
Packs: None
Implementing units
impl:cc-agents.harness-options · plugin/hooks/harnesses.js:5impl:cc-agents.mod · plugin/hooks/register.js:9Referencing units
impl:cc-agents.sync-templates · scripts/sync-templates.mjs:10Enabled verifiers: test:cc-agents.mod-suite
Packs: None
Implementing units
impl:cc-agents.opencode · plugin/sidecar/adapters/opencode.mjs:26Referencing units
None.
Enabled verifiers: test:cc-agents.opencode-suite
Packs: None
Implementing units
impl:cc-agents.harness-options · plugin/hooks/harnesses.js:5impl:cc-agents.pane · plugin/hooks/pane.js:13Referencing units
None.
Enabled verifiers: test:cc-agents.mod-suite, test:cc-agents.pane-suite
Packs: None
Implementing units
impl:cc-agents.launch · plugin/sidecar/launch.mjs:7impl:cc-agents.sidecar · plugin/sidecar/server.mjs:12Referencing units
None.
Enabled verifiers: test:cc-agents.sidecar-suite
Packs: None
Implementing units
impl:cc-agents.groups · plugin/sidecar/groups.mjs:13impl:cc-agents.guard · plugin/sidecar/guard.mjs:16Referencing units
None.
Enabled verifiers: test:cc-agents.sidecar-suite
Packs: None
| Relation and direction | Other end | Claim | Reason | Exercised keys |
|---|---|---|---|---|
| dependsOn · outgoing | One sidecar per Claude session owns the session's harness turnsspec:cc-agents.sidecar · resolves | declared | every decision of the mod is a request to the session's sidecar | None |
| refines · outgoing | Other model families run as real Claude Code agentsspec:cc-agents.runner · resolves | declared | None | None |
| dependsOn · incoming | The agent's last message is exactly the harness's final answerspec:cc-agents.exact-answer · resolves | declared | the final step is one of the steps the mod answers | None |
| dependsOn · incoming | The job agent takes Relay's header and returns Relay's state blockspec:cc-agents.relay-job-type · resolves | declared | a job is an agent the mod spawns and steps like any other | None |
| dependsOn · incoming | Other model families run as real Claude Code agentsspec:cc-agents.runner · resolves | declared | the layer that speaks to Claude Code | None |
| dependsOn · incoming | A message reaches the running turn at once, and a stop ends the harness turnspec:cc-agents.steering-and-stop · resolves | declared | steering and stopping are hooks of the mod | None |
impl:cc-agents.mod · answers each step of an agent from the sidecar's events, hands back the exact answer, steers and stops, and returns the job state block · plugin/hooks/register.js:9plugin/tests/mod.test.ts:4Runtime observation: not tracked.
Run results: not recorded in the graph.
None.
Composing needs the script.