Test datasets
The golden set as a living asset: composition, sourcing from production, preventing rot, and treating eval data as versioned code.
Your eval is only as good as its dataset. In LLMOps the golden set stops being a static file you wrote once and becomes a living asset that grows from production, guards against rot, and is versioned like code — because the reliability gap moves, and a frozen eval set slowly stops describing reality.
Composition: coverage over volume
- Routine cases — the bread-and-butter inputs. Your regression canaries; if these break, everyone notices.
- Boundary cases — the judgment calls you argued about. Where quality is actually decided.
- Adversarial cases — injection, abuse, malformed input. Security regressions hide here (you built these instincts in Agentic AI and Securing AI).
- Failure archive — every real production failure, immortalized as a case. This is the section that makes the set live: your bugs can't recur silently once they're in the eval.
- 50–200 cases is plenty for a single feature. Coverage of the archetypes beats raw count — a balanced 60 outperforms a lopsided 500.
Sourcing from production (the flywheel)
The best eval cases are the ones that actually broke. The loop: production logs (Module 3) surface a failure → you add it to the golden set with its correct output → the eval now guards against it forever → you fix it → the fix is verified and protected. Every incident is a permanent regression test. Teams that run this flywheel find their eval set converging on exactly the hard cases their users produce; teams that hand-write cases forever keep getting surprised.
Fighting rot
- Stale expected-outputs. When the feature's correct behavior legitimately changes (a new policy, a new format), the gold answers must change too — or the eval fails correct outputs. Tie the set to a version and review it when behavior changes on purpose.
- Distribution drift. If production traffic shifts (a new product line, a new user segment) and the set doesn't, your green scorecard describes a system nobody's using anymore. The production-sourcing flywheel is the fix — the set should smell like last month's traffic.
- Overfitting. Tuning until exactly your cases pass memorizes the set. Holdouts and continuous refresh from production keep it honest.
Version it (golden/v3.jsonl), review changes to it in PRs (a changed gold answer is a behavior decision worth a second pair of eyes), and never edit it to make a failing run pass — that's deleting the test because the code is broken. The golden set's integrity is the integrity of every number you report.