Bug Description
run_doctor() in install.sh (~line 615) treats any non-empty readiness.blockers as installation failure:
if [[ "${blockers}" -eq 0 ]]; then
log_ok "doctor reports ready"
...
else
log_fail "doctor reports NOT ready"
... FAILED_CHECKS+=("${line}") ... return 1
fi
On a partially-supported compositor this misclassifies a capability gap as an install failure. Real-world case from #76 (@larpedd's labwc/wlroots box, Aug 6 log): every step the installer owns had succeeded — binary built, AT-SPI enabled, /dev/uinput r/w, all portals ok — yet the run ended FAIL doctor reports NOT ready / install.sh aborted (exit 1) purely because the compositor lacks a window-management protocol.
#77 reworked the diagnostics side (capability map, precise blocker strings) but left run_doctor's all-or-nothing classification untouched, so the next unsupported platform hits it identically. --skip-doctor exists but predates #77 and is never suggested near the failure.
Expected Behavior
Distinguish blockers the installer can act on from platform capability gaps. A run where all install-owned steps succeeded should exit 0 (or a distinct code) with a clear "installed OK; N capabilities unavailable on this compositor: …" summary — or at minimum point at --skip-doctor.
Environment
Bug Description
run_doctor()ininstall.sh(~line 615) treats any non-emptyreadiness.blockersas installation failure:On a partially-supported compositor this misclassifies a capability gap as an install failure. Real-world case from #76 (@larpedd's labwc/wlroots box, Aug 6 log): every step the installer owns had succeeded — binary built, AT-SPI enabled,
/dev/uinputr/w, all portalsok— yet the run endedFAIL doctor reports NOT ready/install.sh aborted (exit 1)purely because the compositor lacks a window-management protocol.#77 reworked the diagnostics side (capability map, precise blocker strings) but left
run_doctor's all-or-nothing classification untouched, so the next unsupported platform hits it identically.--skip-doctorexists but predates #77 and is never suggested near the failure.Expected Behavior
Distinguish blockers the installer can act on from platform capability gaps. A run where all install-owned steps succeeded should exit 0 (or a distinct code) with a clear "installed OK; N capabilities unavailable on this compositor: …" summary — or at minimum point at
--skip-doctor.Environment
main(2026-08-09)