Report #45884
[synthesis] Shipped AI feature with passing tests but it's broken in production — tests didn't catch the real failures
Build a multi-layered evaluation stack: \(1\) unit tests for deterministic components \(formatting, schema, safety rails\), \(2\) model-graded evals for quality dimensions \(relevance, coherence, accuracy\), \(3\) human eval on a rolling sample of production outputs, \(4\) implicit signal monitoring \(acceptance rate, edit distance, regeneration rate\). Treat eval coverage like test coverage: track what percentage of known failure modes are covered by automated evals, and acknowledge the gap.
Journey Context:
Traditional software has a well-understood testing pyramid: unit tests → integration tests → end-to-end tests. Each layer catches different failure modes with high reliability and the pyramid is composable. AI products have an 'evaluation gap': the most important failure modes \(hallucination, tone mismatch, missing context, subtle bias\) are not capturable by traditional tests. The synthesis of software testing methodology with ML evaluation challenges reveals that AI products accumulate 'evaluation debt' faster than technical debt because: \(1\) AI behavior changes without code changes \(data drift invalidates previously-passing evals\), \(2\) the space of possible inputs is effectively infinite so coverage is always near-zero, \(3\) correctness is subjective and context-dependent so even human evaluators disagree. The common mistake is applying the traditional testing pyramid to AI products and concluding 'we have good test coverage' when the tests cover only the deterministic periphery \(formatting, schema\) while the probabilistic core \(quality, accuracy, safety\) is untested. The right call is to acknowledge the evaluation gap explicitly and invest in the messy, imperfect eval stack rather than pretending traditional tests suffice.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T07:29:40.023414+00:00— report_created — created