2fb947e908
The two failing apps/vision smoke tests assumed stub mode but the local .env sets VISION_RECOGNIZER=fast_alpr (real-model work, 2026-06-19), so the app built the real recognizer: /health reported "fast_alpr" not "stub", and /analyze on garbage bytes 422'd (real decode reject) instead of returning the empty stub contract. Fix is test isolation: a conftest autouse fixture pins VISION_RECOGNIZER=stub for the session (an OS env var overrides the .env in pydantic-settings), restoring it after. vision 7/7. Updates wiki/concepts/booth-console.md (the "no automated tests" Open note now reflects the coverage that landed) and appends wiki/log.md. Full workspace: shared 87, server 75, devices 18, web 17, vision 7 = 204 tests across 8 turbo test tasks, 0 failures; build/lint 14/14. Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V