Run
string
required
Producer-scoped stable run id.At most 200 characters.
string
Opaque project/workspace locator for task-mix stratification (a name or hash, not necessarily a path).At most 500 characters.
run.idis REQUIRED and SHOULD stay stable when the same run is written again.workspaceis an opaque locator (a name or a hash), so consumers can group runs by project without learning a path.- The fields from
taskon are the observation added in 0.3.
Groups
A group is an optional named scope, such as a project or a phase of a run. Groups answer where work is shown; edges answer what work blocks. The two stay independent.string
required
At most 200 characters.
string
Another group id; parent edges must be acyclic.At most 200 characters.
- A group’s
parentMUST name an existing group (E120), and parent links MUST NOT form a cycle (E121). - A node’s
groupMUST name an existing group (E115). A node without a group belongs to the run root.
Nodes
A node is a unit of work whose identity does not depend on any attempt at it.string
required
Stable identity independent of any attempt. Never a runtime locator such as a pane id.At most 200 characters.
string
required
Open set. Recommended vocabulary: impl, review, test, gate, question, docs, ship, plan, ops, task, unknown.
gate marks an acceptance fan-in point. task is a generic task; unknown means the producer cannot determine a more specific kind.At most 100 characters.string
Optional group id; omitted means the run root.At most 200 characters.
string
Producer’s current projection over the node’s attempts. Recommended vocabulary: queued, working, review, blocked, done, failed, rejected, canceled, settled_unverified. Consumers learning from settled runs should trust attempt outcomes over this field.At most 100 characters.
string
The workflow piece id this node executes.At most 200 characters.
object
Present when the node is a gate.
- A node id MUST NOT be a runtime locator, such as a terminal pane id or a process id.
kindis an open set. A gate is a node whose kind isgate, marking a point where acceptance is decided; it needs no separate entity.stateis the producer’s summary of the node’s attempts. A consumer learning from settled runs SHOULD trust attempt outcomes over node state.- From 0.3,
vertexnames the workflow piece the node executes, linking the run graph to its configuration.
Edges
An edge is a directed pair of node ids with a kind.string
required
Source node id (the prerequisite / input / spawner / launcher / producer’s node).At most 200 characters.
string
required
Target node id (the dependent / gate / spawned node / launched node / consumer’s node).At most 200 characters.
string
default:"dep"
dep:
to cannot start before from settles. fan_in: from is a member of gate to’s acceptance input set. spawn: node to was dynamically created by work on from inside the same harness (a Claude Code subagent through the Task tool). launch: work on from started node to as a separate harness session through its CLI (a Bash call running codex exec or claude -p). artifact: an attempt at from wrote the artifact named by artifact and an attempt at to later read it; from_attempt and to_attempt name the two attempts. Other values are accepted, but only dep and fan_in participate in the acyclicity rule.Recommended values (open set): dep, fan_in, spawn, launch, artifact.required
How the edge is known. Required on every v0.2 edge, whoever the producer is: an edge without an evidence tier does not conform.
string
For kind
artifact (required there): the id of the artifact that flowed along this edge. Must name an entry in artifacts.At most 200 characters.string
For kind
artifact (required there, optional elsewhere): the producing attempt id. Must be an attempt at node from and equal to the artifact’s producer.At most 200 characters.string
For kind
artifact (required there, optional elsewhere): the consuming attempt id. Must be an attempt at node to and among the artifact’s consumers.At most 200 characters.Short producer-authored note on what established the edge, e.g.
Task tool_use id matched subagent meta or codex session began 3 s after codex exec in the same workspace.fromandtoMUST name existing nodes (E110, E111).- Every edge MUST carry an evidence
tier, whoever the producer is (E160). An edge read directly from a record the tool keeps isverified; one inferred from timing, text or paths isheuristic; one taken from a session’s own claim isreported. depandfan_inedges together MUST form a directed acyclic graph (E122).spawn,launchandartifactedges record observed lineage and MAY form cycles.- An
artifactedge MUST name an existing artifact (E116, E117) and MUST carryfrom_attemptandto_attempt(E125). They MUST name existing attempts (E123) at the edge’sfromandtonodes (E124);from_attemptMUST be the artifact’s producer andto_attemptone of its consumers (E164). - Edges are optional. A producer that knows only which steps ran writes nodes and attempts and adds edges when it can.