The recorder was silenced inside a subagent, so everything a worker decided died with
its transcript. Measured on one session: 728 agent entries, all the orchestrator's,
while three workers ran roughly 180 tool calls and left two traces — both inside
messages the orchestrator had retyped by hand. A worker's final report was therefore
the single point of failure for its entire session's reasoning.
Not a lane in the orchestrator's journal, and not left to the report. Its OWN, at
`<session>/agents/<agent-id>/.journal`.
The word that decides it is PERSISTENT. A one-shot worker's record helps only somebody
else, but an agent kept alive and resumed across dispatches has the same compaction
problem the orchestrator has — what it did survives and what it decided does not. A
journal does for it precisely what it does for the orchestrator, and it had been built
for one participant in a system designed around several.
Keyed on the AGENT because a subagent's payload carries the PARENT's session id, so
filing by session would have mixed every worker's entries into the orchestrator's with
no way to tell them apart. That is the property the tests hold hardest.
And readable, since a record nothing can read back is half a feature: `journal agents`
names the workers of this session that kept one, and how much each said. The
orchestrator reading a worker's reasoning is then a deliberate act rather than an
accident of storage — available when somebody goes looking, rather than spilled into
the record where it would drown what they came to find.