GA blocker (Bucket A3 in audit)
Several LuCLI commands return an empty string when no Wheels server is detected, printing a red message via `out()` but exiting with code 0. MCP clients and automation scripts cannot distinguish "command succeeded with no output" from "command failed because server is down".
Recent PRs (#2211, #2214, #2215, #2223) fixed silent-exit paths in `wheels new` and `wheels doctor`, but these commands were missed.
Evidence
Each returns `""` after an `out(...red)` call without throwing.
Fix
Acceptance
- `wheels routes` with no server → exit 1, clear error.
- `wheels reload`, `wheels test`, `wheels console` same.
- Existing silent-exit coverage in `cli/tests/specs/e2e/` extended to catch regressions.
Refs: GA audit doc
GA blocker (Bucket A3 in audit)
Several LuCLI commands return an empty string when no Wheels server is detected, printing a red message via `out()` but exiting with code 0. MCP clients and automation scripts cannot distinguish "command succeeded with no output" from "command failed because server is down".
Recent PRs (#2211, #2214, #2215, #2223) fixed silent-exit paths in `wheels new` and `wheels doctor`, but these commands were missed.
Evidence
Each returns `""` after an `out(...red)` call without throwing.
Fix
Acceptance
Refs: GA audit doc