Skip to main content
Xerg surfaces ten named finding kinds today. Retry, loop, and tool-loop findings can count as confirmed waste when their required structure is present. Other workflow findings are opportunities, and Cursor findings are usage-specific waste or opportunity signals. For the conceptual view of how these categories are meant to be interpreted, see waste taxonomy.

Finding taxonomy

What counts as confirmed waste

Only confirmed waste findings count toward:
  • wasteSpendUsd
  • structuralWasteRate
  • --fail-above-waste-rate
  • --fail-above-waste-usd
Today that includes retry-waste, loop-waste, and Cursor cache-carryover when its billed pattern clears the waste threshold. Opportunity classes roll up into opportunitySpendUsd and are shown as directional savings opportunities.

Provenance fields

Local audit summaries include provenance fields on findings. These fields are intentionally not part of the pushed v2 wire payload yet. signalSource and confidence are separate axes. An observed field can feed a lower-confidence heuristic, and an inferred retry proxy can still be useful while remaining visibly different from an observed failed attempt. Older stored summaries may not have signalSource. Xerg treats that provenance as unknown in local rollups and compare output.

Recommendation objects

When you run xerg audit --json, Xerg includes a ranked recommendations array derived from the findings. The same recommendation objects are part of the v2 push payload and power hosted Optimizations, policies, and MCP recommendation tools.

Current recommendation patterns

| Finding kind | Bucket | Typical action | | --- | --- | | retry-waste | fix_now | add retry backoff or lower retry count | | loop-waste | fix_now | cap iteration depth or add an early exit | | tool-loop | fix_now | break repeated tool-call sequences with a loop guard | | context-outlier | test_next | trim prompt or context size | | context-growth | test_next | summarize or reset context that grows every turn | | idle-spend | test_next | reduce cadence or switch to event-driven work | | candidate-downgrade | test_next | A/B test a cheaper model | | cache-thrash | test_next | stabilize prompt prefixes so cache writes get read back | | cache-carryover | test_next | reset or summarize long Cursor chats | | max-mode-concentration | test_next | reserve max mode for the hardest Cursor turns |

What not to overread

  • Opportunity findings are directional recommendations, not proven waste.
  • signalSource: observed means the decisive input field was present. It does not make an opportunity into confirmed waste.
  • A candidate-downgrade finding is intentionally low-confidence and should be treated as an experiment, not an automatic downgrade order.
  • Cost per outcome only covers runs that carry an outcome signal; audits without any signal report it as unavailable rather than guessing.