calibration_labels.json: 16 → 24 entry-uri. Toate cele 8 frame-uri dumpate automat de live loop azi (gray×5, dark_green×1, yellow×1, dark_red×1) trec prin validate-calibration cu detector-ul curent (24/24 PASS). scenarios.json: 8 → 11 scenarii: 1. buy_catchup_opposite_rearm_to_sell — REGRESSION pentru bug-ul de azi. Trace real din log: 17:00 catchup dark_green → PRIMED_BUY (synth arm+prime), apoi 17:45 yellow → ARMED_SELL via opposite_rearm. Verifică că dispatch-ul nou emite kind=opposite_rearm și că scheduler-ul se oprește. 2. buy_armed_gray_persist — gray între arm și prime ține ARMED_BUY (reason=persist). Acoperă o ramură FSM neacoperită. 3. buy_primed_gray_cooldown — gray după prime ucide ciclul (reason=cooled, IDLE, scheduler stop). Confirmă semantica M2D că chart-ul tăcut post-prime înseamnă setup expirat. Total: 11/11 scenarii PASS, 238/238 teste (235 + 3 noi scenarii regresie). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
123 lines
3.8 KiB
JSON
123 lines
3.8 KiB
JSON
[
|
|
{
|
|
"path": "calibration/frames/20260420_200002_turquoise.png",
|
|
"expected": "turquoise",
|
|
"note": "BUY arm visible in poll; rgb=(0,253,253)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_072757_turquoise.png",
|
|
"expected": "turquoise",
|
|
"note": "BUY arm via manual /ss; rgb=(0,253,253)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_171501_yellow.png",
|
|
"expected": "yellow",
|
|
"note": "SELL arm event; rgb=(253,253,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_194505_yellow.png",
|
|
"expected": "yellow",
|
|
"note": "SELL arm event; rgb=(253,253,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_194721_yellow.png",
|
|
"expected": "yellow",
|
|
"note": "SELL arm visible in manual /ss; rgb=(253,253,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260418_124645_dark_green.png",
|
|
"expected": "dark_green",
|
|
"note": "BUY prime catchup; rgb=(0,128,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_185102_dark_green.png",
|
|
"expected": "dark_green",
|
|
"note": "BUY prime; rgb=(0,128,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_213706_dark_green.png",
|
|
"expected": "dark_green",
|
|
"note": "BUY prime catchup; rgb=(0,128,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_172104_dark_red.png",
|
|
"expected": "dark_red",
|
|
"note": "SELL prime; rgb=(128,0,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_195701_dark_red.png",
|
|
"expected": "dark_red",
|
|
"note": "SELL prime; rgb=(128,0,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_210905_dark_red.png",
|
|
"expected": "dark_red",
|
|
"note": "SELL prime; rgb=(128,0,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_163303_light_green.png",
|
|
"expected": "light_green",
|
|
"note": "BUY trigger (FIRE); rgb=(0,255,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_214908_light_green.png",
|
|
"expected": "light_green",
|
|
"note": "regression 2026-04-20: BUY trigger visible in poll (original complaint); rgb=(0,255,0) was UNKNOWN under pre-2026-04-21 calibration"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_173004_light_red.png",
|
|
"expected": "light_red",
|
|
"note": "SELL trigger (FIRE); rgb=(255,0,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_175005_gray.png",
|
|
"expected": "gray",
|
|
"note": "idle gray dot via manual /ss; rgb=(128,128,128)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260420_185702_gray.png",
|
|
"expected": "gray",
|
|
"note": "idle gray dot in poll; rgb=(128,128,128)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_164210_gray.png",
|
|
"expected": "gray",
|
|
"note": "2026-04-21 16:42 poll — gray între sesiuni; rgb=(128,128,128)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_164452_gray.png",
|
|
"expected": "gray",
|
|
"note": "2026-04-21 16:44 poll — gray idle; rgb=(128,128,128)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_165209_gray.png",
|
|
"expected": "gray",
|
|
"note": "2026-04-21 16:52 poll — gray idle; rgb=(128,128,128)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_170045_dark_green.png",
|
|
"expected": "dark_green",
|
|
"note": "2026-04-21 17:00 BUY prime catchup (synth arm+prime); rgb=(0,128,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_174502_yellow.png",
|
|
"expected": "yellow",
|
|
"note": "2026-04-21 17:45 opposite_rearm PRIMED_BUY→ARMED_SELL — frame bug regresiv; rgb=(253,253,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_174804_gray.png",
|
|
"expected": "gray",
|
|
"note": "2026-04-21 17:48 gray persist în ARMED_SELL; rgb=(128,128,128)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_220346_dark_red.png",
|
|
"expected": "dark_red",
|
|
"note": "2026-04-21 22:03 SELL prime seara; rgb=(128,0,0)"
|
|
},
|
|
{
|
|
"path": "calibration/frames/20260421_222108_gray.png",
|
|
"expected": "gray",
|
|
"note": "2026-04-21 22:21 gray idle; rgb=(128,128,128)"
|
|
}
|
|
]
|