[0.34.0] - 2026-04-27
Added
burn limitshonors fidelity on its 5-hour forecast (#105). The forecast still consumes every windowed turn — partial / aggregate-only / cost-only data still contributes to the running token total — butburn limitsnow classifies the contributing slice viasummarizeFidelityand surfaces a binaryhigh/lowconfidence flag. Text mode appends aforecast: low-confidence (N of M contributing turns lack per-turn token data)notice when at least one contributing turn is missing per-turn token coverage; full-fidelity windows print no notice.--jsonoutput gains aforecast.fidelityblock carrying theconfidenceflag and the underlyingFidelitySummary.--watchre-evaluates confidence on each tick so the flag flips as fresher full-fidelity turns land.
Changed
burn comparehonors fidelity (#95). The aggregate now defaults to theusage-onlyfloor: turns whose fidelity isaggregate-only,cost-only, orpartialare excluded so a session with mixed fidelity can't silently bias the cost/turn or one-shot rate of full-fidelity peers from the same model. Records emitted beforeTurnRecord.fidelityexisted (pre-#41 ledgers) still pass for backward compatibility. New flags:--fidelity <class>(any offull | usage-only | aggregate-only | cost-only | partial) overrides the floor;--include-partialis shorthand for--fidelity partialand includes every turn — both invalid combinations exit 2 with a clear message. Coverage notes gain anexcluded N turns below <class> fidelity (… aggregate-only, … cost-only, … partial)line whenever the gate dropped anything, the JSON output gains a top-levelfidelityblock ({ minimum, excluded, summary }) computed against the unfiltered slice, and per-model totals render—instead of$0.00when a model survived the filter with zero turns. When fidelity filtering is active (the default)burn comparefalls back to the in-memoryqueryAllpath so the gate is correctly applied;--include-partial(or--fidelity partial) reuses the archive's grouped SQL path from #88.