The worked example, happening live
capability-per-parameter-cpp-glm-20260915c, a director at 9h18m on runtime 0.226.0. Its headline result — a pre-registered stake refuted with a paired cluster bootstrap — needed an independent check, so at 06:50:18Z the director spawned an opencode Task subagent on the same host to re-score the arms from raw generations.
That checker has since reproduced three of four arms exactly (12B n=1350 acc=0.4222, base 0.1593, multi exact) and found, diagnosed and explained the fourth as a staleness artifact (g4 fresh 0.2970 n=1350 against the claimed 0.2978 n=1340, ten late-arriving rows). It is the verification the result stands on.
Runtime has no idea it exists.
| where |
what it shows |
spawn-journal.jsonl |
spawned count unchanged at 69. No entry. |
root-stream.jsonl |
last event 06:50:18Z. Silent for the checker's entire life. |
result.json / blobs |
nothing; the checker has no outRef, no trace, no spend record |
opencode's own opencode.db |
152 parts and counting — the complete transcript, in harness scratch |
An operator reading Runtime's records sees a root that went quiet for half an hour. What actually happened is the most important half-hour of the run.
Why this is not the same as #1244
#1244 is a Runtime child whose transcript dies at teardown — Runtime knows the child existed and loses its contents. This is different and worse: Runtime never learns the work happened at all. There is no id to attach a receipt to, no spend to meter, and no settle to hang a reason on. The recursion the supervisor believes it is observing (69 children, 33 settled) is not the recursion that ran.
It also silently breaks two properties the stack advertises:
- Replay. Rehydrating this run reconstructs a tree in which the result's verification never occurred.
- Budget conservation. The checker's tokens were spent through the director's own harness session, so they land in the root's own-inference total rather than as a child's reservation. The pool is not wrong, but "what did this run spend on verification" is unanswerable.
Why a director does it anyway
It is the cheapest correct move available. A Runtime child runs in a sandbox and could not see pursuits/…-glm-20260915b/workspace, where the generations being re-scored live; a same-host harness subagent can. The director reasoned exactly this, in its own words: "The checker must see the glm-b workspace paths — a fresh Task subagent on this host (independent context, did not produce the result) fits the contract."
So this is not misbehaviour to prompt away. The placement the director needed — an independent worker with access to the root's local filesystem — is one Runtime does not offer, so it stepped outside the substrate to get it.
Ask, in preference order
- A same-host worker placement. If Runtime could place a child on the root's own host with the root's workspace visible, this work would be a normal child with a journal entry, a blob and a spend record, and no one would need to leave the substrate.
- Failing that, record the departure. A harness that spawns its own subagents should surface them as at least a journal note with a count and a token total, so the record says "work happened here that I did not supervise" instead of showing silence.
- At minimum, document that
spawned counts Runtime children only, and that a root's own-inference spend may include an unbounded amount of unsupervised subagent work.
Related: #1244 (dropped child transcripts), #1247 (reconciliation never recovers; fleet yield), #1245 (a sandbox-placed root cannot use its coordination tools).
🤖 Generated with Claude Code
The worked example, happening live
capability-per-parameter-cpp-glm-20260915c, a director at 9h18m on runtime 0.226.0. Its headline result — a pre-registered stake refuted with a paired cluster bootstrap — needed an independent check, so at 06:50:18Z the director spawned an opencode Task subagent on the same host to re-score the arms from raw generations.That checker has since reproduced three of four arms exactly (12B
n=1350 acc=0.4222, base0.1593, multi exact) and found, diagnosed and explained the fourth as a staleness artifact (g4fresh0.2970 n=1350against the claimed0.2978 n=1340, ten late-arriving rows). It is the verification the result stands on.Runtime has no idea it exists.
spawn-journal.jsonlspawnedcount unchanged at 69. No entry.root-stream.jsonlresult.json/ blobsoutRef, no trace, no spend recordopencode.dbAn operator reading Runtime's records sees a root that went quiet for half an hour. What actually happened is the most important half-hour of the run.
Why this is not the same as #1244
#1244 is a Runtime child whose transcript dies at teardown — Runtime knows the child existed and loses its contents. This is different and worse: Runtime never learns the work happened at all. There is no id to attach a receipt to, no spend to meter, and no settle to hang a reason on. The recursion the supervisor believes it is observing (69 children, 33 settled) is not the recursion that ran.
It also silently breaks two properties the stack advertises:
Why a director does it anyway
It is the cheapest correct move available. A Runtime child runs in a sandbox and could not see
pursuits/…-glm-20260915b/workspace, where the generations being re-scored live; a same-host harness subagent can. The director reasoned exactly this, in its own words: "The checker must see the glm-b workspace paths — a fresh Task subagent on this host (independent context, did not produce the result) fits the contract."So this is not misbehaviour to prompt away. The placement the director needed — an independent worker with access to the root's local filesystem — is one Runtime does not offer, so it stepped outside the substrate to get it.
Ask, in preference order
spawnedcounts Runtime children only, and that a root's own-inference spend may include an unbounded amount of unsupervised subagent work.Related: #1244 (dropped child transcripts), #1247 (reconciliation never recovers; fleet yield), #1245 (a sandbox-placed root cannot use its coordination tools).
🤖 Generated with Claude Code