Spec Studio

Open questions

Recipe 20, the open-question register.

  • 36 open questions.
  • 1 blocking question.
  • 35 non-blocking questions.
  • 1 deferral.
  • 0 blocking questions without a trigger.
  • 20 Specs with questions.
  • 1 Spec with blocking questions.
  • 0 malformed entries.
36 of 36 shown

HQ's private context stays in one place and stays clean · scoped

spec:hq.context

  • blocking · deferral · question.clientMaterial · How is client material handled, project by project: what is screened, and where?Decider: ownerTrigger: infra deploys per-project settings

One adapter module per harness, behind one contract · ready

spec:cc-agents.adapter-contract

  • non-blocking · question.capKeyMeaning · CONTRACT.md says the cap key names the account a turn spends, while the code keys Codex by one machine-wide bucket named codex and OpenCode by opencode:<provider>, which does not identify distinct accounts.Decider: ownerProvisional: The key is whatever capFor returns; nothing establishes credential identity.
  • non-blocking · question.extraArguments · The sidecar also passes options to check for a job and options and log to the turn constructor, which CONTRACT.md does not list; OpenCode ignores them.Decider: delegatedProvisional: The contract grows an options argument described by the Relay-compatible job type.
  • non-blocking · question.olderDescription · Early reports describe a four-method adapter without preparation and reaping; the current contract and code add both.Decider: delegatedProvisional: Only the current contract is described here.

GPT runs through the user's Codex, one app-server per turn · ready

spec:cc-agents.codex-adapter

  • non-blocking · question.fakeAppServer · These behaviours are exercised against a fake app-server that speaks Codex's protocol; a real Codex is exercised only by the live suite under tests/live, which runs outside the graph and outside the gate.Decider: ownerProvisional: The unit evidence stands for the protocol; the live suite remains the check against a real Codex.
  • non-blocking · question.perAccount · The README calls the Codex cap per account, while the adapter keeps a single machine-wide bucket named codex whose default is the machine's share.Decider: ownerProvisional: Described here as a machine-wide bucket; no account identity is established.

Sessions that must message each other leave a record and a place in a chain · defined

spec:cc-agents.coordination

  • non-blocking · question.bridge · Should messages that cross an operating system boundary by a route outside the host's own messaging be recorded and joined to a chain, and how does a lead on another operating system reach its parent's tree?Decider: ownerLinks: spec:cc-agents.coordination.recordProvisional: This release's tree covers records on the local machine only, and an external parent is shown as an unresolved boundary. Cross-operating-system delivery remains outside this release. The existing cross-machine route stays until a separate bounded measurement shows how a join and a report cross it. No distributed service is built.

Messages between sessions this session saw are kept whole, with what is known of who sent them and what came of them · defined

spec:cc-agents.coordination.record

  • non-blocking · question.clientText · Should the record hold the full text of messages in a project whose material is confidential?Decider: ownerLinks: spec:cc-agents.coordination.adoptionProvisional: Yes, because attribution needs the text. The record stays on the machine where the session ran, and recordText set to metadata for a project replaces the text with its length and hash.
  • non-blocking · question.correlation · Can a received entry be joined to the sender's sent entry?Decider: delegatedProvisional: No claim is made. Attribution may be unknown or ambiguous. Before a stronger claim is written, it is shown with two peers sending identical text, an ordinary agent message and a resumed session, and no identifier is inserted into any message.
  • non-blocking · question.auditGrade · Does the owner need crash-proof durability, an audit-grade log?Decider: ownerProvisional: No. The record is observational with stated coverage limits, and a stronger write path waits until someone requires it.

A scan reads a project's sessions and traces each direction to its outcome · defined

spec:cc-agents.coordination.session-scanning

  • non-blocking · question.language · Should the scan's scripts stay in Python or move to the plugin's Node?Decider: delegatedProvisional: They stay in Python, on the standard library alone, because their tests exist and a port should change as little as it can. The plugin's own runtime stays Node.

The person sees the chain and the traffic without asking a model · defined

spec:cc-agents.coordination.view

  • non-blocking · question.pane · Does the chain need a pane beside the chat?Decider: delegatedProvisional: No. The status line and the command are enough for a chain of a top and a few leads, and the existing pane stays about agents.

A cap on concurrent turns holds across every Claude session on the machine · ready

spec:cc-agents.cross-session-slots

  • non-blocking · question.harnessWideCap · The caps option also accepts a bare harness name, which the code applies to every key of that harness not named itself; no test pins that fallback.Decider: delegatedProvisional: As built.

The agent's last message is exactly the harness's final answer · ready

spec:cc-agents.exact-answer

  • non-blocking · question.endNotes · An interrupted turn ends with a note that it was interrupted, and a completed turn that returned no text ends with a note saying so; both are built and no test pins their wording.Decider: delegatedProvisional: The notes are as built.

The plugin installs from a marketplace, updates by version and changes nothing global · defined

spec:cc-agents.installation

  • non-blocking · question.invisibleToTheGraph · The marketplace, the manifest and the install script are JSON and shell, so no anchor binds them and the graph derives neither implemented nor has-verifier here; the install test run is npm run test:install.Decider: ownerProvisional: The Spec stays at defined until a node test asserts the manifest and options, which would carry a test anchor and the documented realization.
  • non-blocking · question.linuxClaim · The README says Linux was not tried live, while a smoke run proved basic execution there; the sentence is broader than the evidence.Decider: ownerProvisional: Basic execution on Linux is evidenced, and the pane and the machine guard under load there are not.

The mod answers an agent's steps from the sidecar and never calls a model · ready

spec:cc-agents.mod-layer

  • non-blocking · question.untestedPaths · Built but not exercised by any test: a spawn that asks to be a team teammate is denied; the agent.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.
  • non-blocking · question.stepLabel · The steps hand over through an internal progress 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.

Claude reads a model guide that fits the harnesses installed here · ready

spec:cc-agents.model-templates

  • non-blocking · question.refusesNothing · The README says the templates refuse nothing, while two quality templates still say never to use Opus on search; the correction waits with the source the templates are generated from.Decider: ownerProvisional: The templates are described as data copied from their source; the prohibition is that source's to remove.
  • non-blocking · question.syncUntested · The sync script copies only the cost and quality variations, refuses a file that names a private word before it writes anything, and stamps each copy with its source; no test exercises it.Decider: delegatedProvisional: Described as built; a test would pin the refusal.

Every other family runs through the user's OpenCode service · ready

spec:cc-agents.opencode-adapter

  • non-blocking · question.pollingCost · Reading the transcript once a second means text arrives a paragraph at a time and each read is a process; a streaming transport that needs a stored pairing credential was not adopted.Decider: ownerProvisional: Polling stays, and the adapter holds no credential.
  • non-blocking · question.fakeService · These behaviours are exercised against a fake OpenCode service; a real service is exercised only by the live scripts under tests/live, outside the graph and the gate.Decider: ownerProvisional: The unit evidence stands for the protocol; the live scripts remain the check against a real service.
  • non-blocking · question.yoloRefused · OpenCode refuses the mode yolo, which the Relay-compatible job header accepts for every backend, so a Kimi, Grok or ZCode job that states yolo is refused by the check; no test pins that pairing.Decider: ownerProvisional: Described as built.

The session's agents, their caps and the machine are always in view · ready

spec:cc-agents.pane

  • non-blocking · question.untriedSurfaces · The Desktop band, the VS Code extension and Linux were not tried in a real session; the pane is verified against scripted status answers and mod mounts only.Decider: ownerProvisional: Only the surfaces the tests mount are claimed.

The job agent takes Relay's header and returns Relay's state block · ready

spec:cc-agents.relay-job-type

  • non-blocking · question.endedBlocks · The block of a job that was cancelled or failed, with state cancelled or failed and an error line, and a relative add-dir refused, are built and no test pins them.Decider: delegatedProvisional: As built.
  • non-blocking · question.writeNotYolo · Relay's job defaulted to a sandbox-free mode, while this agent defaults to write and runs without a sandbox only when the header states yolo.Decider: ownerProvisional: Write by default, with a note in the state block, as built.
  • non-blocking · question.ignoredKeys · The keys fast, grok-home and kimi-home are accepted and ignored with a note, and the notes' wording is not pinned by a test.Decider: delegatedProvisional: Accepted and ignored, as built.
  • non-blocking · question.opencodeBackendsAndYolo · Backends kimi, grok and zcode run on OpenCode, which refuses yolo, so a job that states yolo on those backends is refused by the check; no test pins that.Decider: ownerProvisional: Described as built.

Other model families run as real Claude Code agents · defined

spec:cc-agents.runner

  • non-blocking · question.teams · Agent-team teammates are refused by design for now, and the question of whether they should ever be supported is deferred.Decider: ownerProvisional: A foreign agent runs as a subagent only; the mod denies a spawn that asks to be a teammate.
  • non-blocking · question.nativeGrok · Grok runs through OpenCode only; a native adapter for it was left for later.Decider: ownerProvisional: Every family other than GPT goes through the OpenCode adapter.

One sidecar per Claude session owns the session's harness turns · ready

spec:cc-agents.sidecar

  • non-blocking · question.idleExit · The sidecar also exits two minutes after its last turn and its last waiting spawn, refuses a second concurrent turn for the same agent, and fails a turn whose preparation fails without running it; no test pins any of the three.Decider: delegatedProvisional: Both are as built.
  • non-blocking · question.insideTheProcess · The README says the agents run inside the Claude Code process, while the code runs them in a detached sidecar and separate harness processes whose lifetime is tied to the host.Decider: ownerProvisional: The code is the truth; the README sentence needs a correction in the documents.

A guard ends the groups a harness turn started and it has seen, even when the sidecar is killed · ready

spec:cc-agents.work-containment

  • non-blocking · question.detachedBeforeScan · A process that leaves the guard's group and is reparented to the system between two scans is in no record, so the guard neither ends it nor counts it. Should the guarantee grow to cover it?Decider: ownerProvisional: No. The guarantee covers the guard's group and the groups a scan recorded; a descendant that detaches and is orphaned within one scan interval, two seconds by default, escapes cleanup and accounting. Covering it needs a code change, such as a process-tree watcher or an operating-system containment feature, and none is made here.

Infra delivers configuration by projection, under HQ's plan · defined

spec:hq.infra

  • non-blocking · question.rollbackPoint · Where did infra's orchestration trouble start, at the takeover of PR #13 where Kimi K3.1 replaced Opus 5.5 or earlier, and which earlier delivery does infra's tooling roll back to?Decider: owner
  • non-blocking · question.takeover · Is HQ ready to take over infra, and what must hold first?Decider: owner

HQ hands a settled piece to a detailed session · defined

spec:hq.session-handoff

  • non-blocking · question.sessionModels · Which harness and models does a detailed session run on?Decider: delegatedProvisional: The session's lead chooses per task, under the orchestration aspect's rules.
Composing (0)

Composing needs the script.