[0.35.0] - 2026-04-28
Added
burn summarysurfaces per-cell fidelity (#136). The (model | provider) table now distinguishes a literal0from "no source data" inside individual cells: a token-field cell whose every contributing turn omitted the field renders as—, and a cell whose contributing turns are mixed (some reported, some omitted) renders the value with a trailing*plus a single footer note (* partial coverage: N of M turns omitted per-turn token data). Full-fidelity slices print no marker and no footer, so the common all-Claude case looks identical to before. Records emitted beforeTurnRecord.fidelityexisted (pre-#41 ledgers) are treated as best-effort full and never trigger the marker.--jsonoutput replaces the barefidelity: FidelitySummaryblock withfidelity: { summary, perCell }, whereperCell.cells[]carries per-(model|provider) per-field{ known, missing }counters and apartialflag — the same shape pattern the sibling fidelity PRs (#135 / #133 / #134 / #132) already emit.- Codex ingest persists compaction events. The Codex passive ingest path now appends parser-emitted compactions through the existing ledger compaction writer, so
burn waste --kind compactioncan see Codex context compactions with the same event shape Claude uses. burn waste --patterns opencode-skill-recallandopencode-skill-pruning(#54). Two new pattern kinds gated to OpenCode sessions:opencode-skill-recalldetects repeated skill invocations with the same name (content is not deduplicated), andopencode-skill-pruningtracks skill results that ride in the cache indefinitely (prune-protected by OpenCode's compaction). Both render as tables in text mode and appear in--jsonoutput.burn diagnosealso renders the new pattern types for per-session diagnosis.burn waste --patterns opencode-system-prompt(#54). Estimates the fixed prefix tax (system prompt + skill catalog) on the first turn of an OpenCode session by subtracting the first user message size fromcacheCreate. Renders a table showing prefix tokens, user message tokens, estimated system prompt tokens, riding turns, and total cost.
Changed
burn run <harness>consolidates the spawn-wrappers (#154). The three top-level verbsburn claude,burn codex, andburn opencodeare folded into a singleburn run <claude|codex|opencode>subcommand, dispatched through aHarnessAdapterregistry atpackages/cli/src/harnesses/. Adding a new harness is a one-file addition + one-line registration — no driver changes, no help-block edits. The unified driver also emits a uniform[burn] <name> ingest: N sessions (+M turns)report line across all three harnesses (previously claude printed a per-file[burn] ingested ... turns from <file>line).
Removed
- Legacy
burn claude/burn codex/burn opencodeverbs (#154). The standalone harness verbs are removed in favor ofburn run <name>. Callers must migrate to the new dispatcher. burn rebuild-index(#151). The standalone subcommand has been dropped — it was a thin alias forburn rebuild --indexwith identical behavior. Runburn rebuild --indexinstead.