← Writing

Omar Bohsali

Beyond Chat Scrollback: Storing Plans and Agent Runs in One XML Tree

Why plans in Jira and execution in ephemeral chat windows drift apart, and how project.xml keeps tasks, dependencies, and sub-agent transcripts in one place.

fractalfractal lives at fractal123.com.fractal$open https://fractal123.com$
Fractal OS reading and updating a shared project.xml document from the command line and MCP server.

When an engineering team adopts coding agents, the work splits across two places that do not talk to each other. The plan lives in an issue tracker written for weekly standups; the actual execution lives in ephemeral terminal scrollback on three different laptops.

Within two days, nobody knows which acceptance criteria were actually verified, which files an agent read before making a change, or why a task stalled on turn nineteen.

One tree for humans and agents

In Fractal OS, the project plan and the execution log live in the same DOM (project.xml)11. Because project.xml is a strict tree, agents can query it with XPath (//task[@status=‘in-progress’]) instead of burning thousands of tokens reading prose status updates.. Every <task> node owns its work-breakdown number, its upstream dependencies, its verification <outcome> criteria, and the exact <session> runs that modified the repository:

<task id="codemovie-service" wbs="1.4" status="completed" assigned-agent="omarish-agy">
  <title>Extract svgterm into packages/svgterm and apps/codemovie</title>
  <outcome id="oc-k8s-ready" status="met">
    <criterion status="met">Stateless HTTP rendering at /demos/ and /demos/&lt;slug&gt;.svg</criterion>
    <criterion status="met">Zero-drift golden transcript verification in CI</criterion>
  </outcome>
  <session id="run-codemovie-7b2f" model="gemini-3.1-pro"
           turns="14" read-calls="19" edit-calls="11" status="completed" />
</task>

Querying execution history instead of guessing

Because sub-agents log their steps directly into the task node as they work, a lead engineer never has to ask an agent to summarize what it did. You can inspect the tree directly—or query across runs to see which tasks required human intervention, which files triggered the most re-reads, and where critical-path dependencies are blocked.

cqcq, run as a suite over a codebase.cq$cq srclint$
Running cq alongside Fractal OS to verify structural invariants before marking a task outcome met.

When the plan is a data structure that both humans and models can mutate atomically, coordination stops being a meeting and becomes an invariant you can check in milliseconds.