@echo off REM ============================================================ REM FAR-ZONE HAND-OFF 2 -- the clip-measured gates (28/08/2026) REM Steps 1, 2 and 3 of design doc 7_FarZone_Detection_BallID.md REM section 5, BRIEF 28/08 (hand-off 2). REM REM Why this run happens: REM Unit tests can prove the two-band association and the rack REM geometry on synthetic input, but three acceptance numbers REM only exist in the footage: ball 5 wedged in the far right REM pocket of shot_02, the 0.5 s hole in the cue track of REM shot_05 against the far cushion, and which shots are break REM racks. This driver measures those three on the SHIPPED REM analyze front end and reports PASS/FAIL against the REM thresholds the design doc fixed. It tunes nothing. REM REM Input clips: the ones the probe already cut on 28/08 with the REM worker's own cut_clip, so these frames are the frames the REM analyze job read: REM D:\poolcoach\out_probe_farzone_20260828\clips\shot_*.mp4 REM Same corners as run A2b (14/08) and every regeneration since: REM [[527.5,869.7],[1380.1,864.0],[1232.3,278.5],[673.0,272.8]] REM REM CPU environment: poolcoach-cv-env carries torch 2.12.1+cpu, REM so there is no CUDA to fall back to. Expect a couple of REM minutes for the five clips at imgsz 960. REM REM Nothing is written except farzone_gates.json next to the REM clips. D:\Khoa luan is never opened. REM REM No app and no Redis has to be running: the driver loads YOLO REM itself and imports scripts\cv_worker.py only for the shipped REM constants, clip_frame_wh and comp_homography_cls. REM ============================================================ setlocal set PYTHONUTF8=1 set PYTHONDONTWRITEBYTECODE=1 set POOLCOACH_CV_DEVICE=cpu set POOLCOACH_APP_ROOT=D:\poolcoach\poolcoach-app set POOLCOACH_GATE_CLIPS=D:\poolcoach\out_probe_farzone_20260828\clips set POOLCOACH_GATE_OUT=D:\poolcoach\out_probe_farzone_20260828 set PY=D:\poolcoach\poolcoach-cv-env\Scripts\python.exe "%PY%" "D:\poolcoach\launchers\check_farzone_gates.py" echo [check-farzone-gates] exit code %ERRORLEVEL% endlocal