# calibration — Calibration Corpus ## Purpose Corpus persistent, auto-suficient pentru clasificarea culorilor și regresia FSM. Sursa de adevăr pentru ce „vede" detectorul. ## Ownership `frames/`, `calibration_labels.json`, `scenarios.json`. ## Local Contracts - **`frames/`** — PNG raw `{ts}_{color}.png` scrise **automat** de live loop la fiecare schimbare de culoare. Filename = culoarea detectată, **poate fi greșită**. Nu trata filename-ul ca ground truth. - **`calibration_labels.json`** — ground truth **manual**. Gate offline pentru `atm validate-calibration`. Pui culoarea pe care ai văzut-o TU pe chart, nu cea din filename. - **`scenarios.json`** — secvențe FSM pentru `tests/test_scenarios_regression.py`. ## Work Guidance **Workflow după sesiune:** review frame-urile noi din `frames/` → adaugi entry-uri în `calibration_labels.json` cu culoarea reală → rulezi validate-calibration. ### Palette gotcha (recalibrare 2026-04-21) Indicatorii M2D pictează cele patru culori bright la saturație near-pure: turquoise `(0,253,253)`, yellow `(253,253,0)`, light_green `(0,255,0)`, light_red `(255,0,0)`. Dacă Tk-wizard eșantionează un pixel ușor desaturat, clasificatorul întoarce `UNKNOWN` (distanță > tolerance=60) → FSM nu vede trigger → stuck în PRIMED → scheduler polls la infinit. **Mereu** rulează validate-calibration după recalibrare. Config activ: vezi `configs/current.txt`. ## Verification ```bash atm validate-calibration calibration/calibration_labels.json # color gate offline pytest tests/test_scenarios_regression.py -v ``` ## Child DOX Index (none — leaf)