github AgentWorkforce/burn analyze-v0.41.0
@relayburn/analyze@0.41.0

4 hours ago

[0.41.0] - 2026-04-28

Added

  • Content-sidecar enrichments for the four waste-pattern detectors (#57). When DetectPatternsOptions.contentBySession is supplied, detectPatterns now populates four optional fields that make detector reports significantly more actionable: RetryLoop.errorSignature? (leading error line shared across retried tool_results, or the first attempt's signature with " (signatures diverged)" appended when they don't all match), FailureRun.errorSignatures? (one { tool, firstLine } entry per distinct tool, in first-seen order), CompactionLoss.lostWork? ({ files, bashCount, editCount, readCount } aggregated across the window between the previous compact_boundary and this one), and EditRevertCycle.samplePreview? (truncated old_string/new_string previews for both anchor edits, capped at ~200 chars per field). Detectors fire identically when content is not supplied — only the enrichment fields are absent, honoring the spec's graceful-degradation contract for content.store=hash-only sessions. The findings.ts adapters fold these fields into WasteFinding.title / WasteFinding.detail so they surface in burn waste and burn diagnose --json.
  • WasteFinding / WasteAction structured envelope (#56). Introduces a common shape — { kind, severity, sessionId, title, detail, estimatedSavings, actions } — that wraps every detector result in PatternsResult (RetryLoop, FailureRun, CompactionLoss, EditRevertCycle, EditHeavySession, SkillRecallDup, SkillPruningProtection, SystemPromptTax). New exports: findingsFromPatterns(result) to roll the whole PatternsResult into a single severity-ranked list, plus per-detector adapters (retryLoopToFinding, failureRunToFinding, compactionLossToFinding, editRevertToFinding, editHeavyToFinding, skillRecallDupToFinding, skillPruningProtectionToFinding, systemPromptTaxToFinding) and sortFindings. Severity is tiered off usdPerSession (≥ $0.50 high, ≥ $0.05 warn, else info); edit-heavy is capped at warn since its cost overlaps retry/revert findings. WasteAction is a closed union (paste / command / file-content) so a future burn waste --apply can drive a confirmation-gated apply pipeline against typed actions instead of scraping strings. The narrow per-detector result types remain exported for downstream consumers that want them.

Don't miss a new burn release

NewReleases is sending notifications on new releases.