Three medium vision-manager findings: 1. **`vision_running()` conflated "container absent" with "inspect failed".** A transient docker-socket-proxy hiccup made the manager think vision had stopped, which reset `up_for`/`idle_for` and defeated MAX_UPTIME. Distinguishes: exit 0 → echo true/false; "No such container" → false; else → ERR (loop skips tick). 2. **`crawl_running()` fail-closed where `analysis_enabled()` fail-opens.** A psql `ERR` logged a misleading "RAM mutex" line every tick. Numeric-guard at the call site with a distinct log. 3. **`start_vision` left wedged containers running** on `START_HEALTH_TIMEOUT` expiry — pinned forever in not-ready state. Now `stop_vision` so next tick retries from a clean state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
862 B
862 B