- core/doctor.sh: run_doctor_checks() — symlink estable, version.txt, clinfo, vainfo, grupos render/video; salida con print_*, exit code = numero de checks con fallo
- clinfo/vainfo con patron captura-then-parse (clinfo tiene salida enorme: grep -q SIGPIPE-mata la pipe y reportaba falso negativo bajo pipefail — verificado en sistema real con plataforma OpenCL detectada)
- main.sh: dispatch del subcomando ANTES del root check (el doctor es verificacion de usuario, sin root) — requiere el reorden routes/source antes de privilegios (resuelve la causa raiz de O2; el cambio cosmico echo->print_error queda para fase siguiente)