Adds `atm validate-calibration LABEL_FILE` subcommand that runs the Detector
on a set of labeled PNG frames and reports per-sample PASS/FAIL with top-3
candidate colors and RGB-distance suggestions for failures. Exits 0 on 100%
PASS, 1 on any FAIL, 2 on missing/malformed label file.
- New module src/atm/validate.py with ValidationReport + SampleRecord
dataclasses; reuses Detector.step(frame), does not reimplement color
classification.
- main.py: new `validate-calibration` subparser and _cmd_validate_calibration
handler wired into the dispatch map.
- samples/calibration_labels.json seeded with 3 entries from the 2026-04-17
incident, plus a README describing the schema.
- tests/test_validate.py covers the 3 planned cases: PASS, FAIL w/ top-3
+ suggestion, missing file (graceful error, no traceback).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>