Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added

- **`burn plans` honors per-cycle fidelity** ([#108](https://github.com/AgentWorkforce/burn/issues/108)). The list view continues to render every plan even when the cycle slice contains `partial` / `aggregate-only` / `cost-only` turns (no fidelity-based filter — `plans`, like `limits`, is permissive), but now flags low-confidence cycles so a "looks under budget" plan isn't read as authoritative. The text table grows a `confidence` column when at least one plan has any contributing turn missing per-turn input/output token data, marked `low (partial token data)`, and a footer note names the affected plan + lower-bound caveat (e.g. `note: claude-pro: 3 of 412 turns this cycle lack per-turn token data — totals are a lower bound.`). Full-fidelity cycles render exactly as before — no extra column, no footer. `--json` gains a per-plan `usage.fidelity: { confidence, summary }` block carrying the same `FidelitySummary` shape the analyze package emits elsewhere, so machine consumers can render exact counts without re-walking the ledger. `cost-only` source contributions count toward `spentUsd` and mark the cycle low-confidence on the token-coverage axis.
- **`burn waste` honors fidelity** ([#100](https://github.com/AgentWorkforce/burn/issues/100)). The attribution path (and the `--patterns retries|failures|reverts` detectors) now hard-filters the input slice against the coverage flags each detector requires — `attributeWaste` / `aggregateBy*` need `hasToolCalls` + `hasToolResultEvents`; `reverts` additionally needs `hasRawContent` (for `editPreHash` / `editPostHash`); `compaction` is unchanged because its sidecar is independent of `TurnRecord.fidelity`. When *all* turns fall below the prereq, `burn waste` exits non-zero with a message naming the missing prerequisite and the source kinds responsible (`burn waste: 142/142 turns lack tool-call/tool-result coverage required for waste attribution. Sources: codex (per-session-aggregate, missing tool-call records, tool-result events). No waste analysis was performed.`). When *some* turns survive, the text and JSON output gain an "analyzed N of M" coverage notice that names the gap per source. `--json` now carries a `fidelity` block (`{ analyzed, excluded, summary, refused }`) mirroring `summary --json`; `--patterns` JSON additionally exposes a `perDetector` array with each detector's `required` flags and `excludedBySource` breakdown. When `compaction` is in the selection it always runs — its sidecar has no per-turn fidelity requirement — so `--patterns retries,compaction` against an aggregate-only slice produces partial output rather than refusing.

### Changed

Expand Down
Loading