campaign/.kapso/. kapso trace
reads it back after the fact, without the agent that ran it, and lays the
evidence out so a reader can answer six questions from the record alone:
what won, why, what was voided and on what evidence, what was rejected
and why, what it cost, and whether it is safe to merge.
partial with the reason
(the phase it is in, the error it failed with, no status yet, or waiting
on you with the count of requests); follow a live one with
kapso watch. A directory with no
.kapso/ inside is not a campaign and is refused by name.
The sections
Each attempt lists its sessions in the order they ran: the ideation of
its iteration, the implementation on its branch, the verification and the
judge. A session has one line per run the host made for it, a resumed or
retried session two or more; the line carries how the run ended
(
success, error, timeout, paused for a session the inbox stopped,
refused for an answer the model’s safeguards refused), its duration,
its cost, its turns, the tools it used, the gates it called, the hooks
that fired and how many denied, the delegates it asked; a run that
resumed the session says why (retry: tags missing on a judge’s second
run). An attempt the budget left unjudged says so on its judge line.
OTHER SESSIONS holds the sessions that belong to no attempt: the
harness setup, the engine’s own inference sessions, and a node still in
flight. LESSONS is one entry per source served, with who
read which cards and which the judge found load-bearing per node;
SESSIONS FAILED lists every run that ended error, timeout or
refused, and names the kinds of which every run failed.
One attempt in full
--json always carries all of it; --branch
is how the text shows it.
The data
--json prints what Kapso.trace(path).data holds, and
TraceView(data) renders the same text again from it. A script or a
skill reads the keys as pinned:
started, ended,
duration_seconds, deadline_seconds (the deadline the run was
launched with: its room under the budget or its configured timeout;
null without one), model, cli_session_id, exit, error,
retry_reason (set on a run that resumed the session: tags missing
for the judge’s retry),
cost_usd (this run’s share of the host’s cumulative figure),
cost_cumulative, turns, usage (the host’s token counts), tools
(by name), gates (by server, by tool), hooks (each with its event,
name, decision and reason, a hook that blocked a tool call included;
null where the host reports none),
delegates (each with its name, status, usage and report; on Codex the
collaboration calls, by verb), host_errors, files_changed (the files
the session wrote through its editing tools, relative to its directory;
a file written by a shell command shows in the branch’s diff instead),
last_message. The delivered candidate’s files_changed are the files
its branch changed against the seed, from the diff.
Where each file lives
verification/<branch> and feedback/<branch> for its verifier and its
judge, ideation/iter<n>/<member> for the ideation of iteration n,
difficulties/<branch> for the reconstruction of what an attempt lost,
harness_setup for the setup session, and engine/<role>/<n> for the
engine’s own inference sessions (the repo-memory bootstrap, the commit
messages), which belong to no attempt. The trace joins the sessions to
their attempts by these labels (a node records the iteration that made
it, and every node of an iteration shares its ideation session) and the
pull log’s events by the session the gate served.
Related
Run and watch
The live view while it runs
Review the result
The Solution and the record
Use a harness
What a session is staged with
CLI reference
Every flag of kapso trace
pip install leeroo-kapso · Every page as plain text: llms.txt.