Source: founder dogfood UX report. Guiding principle: a permission tool must clearly identify which copy of itself is guarding the user.
Problem
agent-sudo doctor (agent_sudo/doctor.py::run_doctor) ran six green OK checks while a stale v0.5.5 snapshot was guarding the user. It never noticed the running code was behind the source, nor that the running install differed from the configured workspace/source. doctor is the first thing a confused user runs; it stayed silent on the one thing that mattered.
Proposed
Add DoctorChecks that WARN on:
- Stale snapshot — running version < newest install detected by inventory.
- Editable source drift — running as editable, but the imported package path doesn't match the configured/expected source.
- Runtime != expected source — the configured workspace / client config points at a different install than the one actually running.
Each WARN names the running copy and the expected one, and points to agent-sudo inventory for the full picture.
Reuses
- Self-identity primitive (running version + install type + source path).
agent_sudo/inventory.py::build_inventory classification (STALE / VERSION DRIFT) — call it, don't reimplement.
agent_sudo/context.py for configured workspace/source.
Acceptance
- New non-required WARN checks (never break
doctor_exit_code for normal dev setups, but surface clearly).
- Tests for stale, drift, and mismatch scenarios.
- Docs updated.
Effort: M · Risk: Low–Medium.
Source: founder dogfood UX report. Guiding principle: a permission tool must clearly identify which copy of itself is guarding the user.
Problem
agent-sudo doctor(agent_sudo/doctor.py::run_doctor) ran six green OK checks while a stale v0.5.5 snapshot was guarding the user. It never noticed the running code was behind the source, nor that the running install differed from the configured workspace/source.doctoris the first thing a confused user runs; it stayed silent on the one thing that mattered.Proposed
Add
DoctorChecks that WARN on:Each WARN names the running copy and the expected one, and points to
agent-sudo inventoryfor the full picture.Reuses
agent_sudo/inventory.py::build_inventoryclassification (STALE/VERSION DRIFT) — call it, don't reimplement.agent_sudo/context.pyfor configured workspace/source.Acceptance
doctor_exit_codefor normal dev setups, but surface clearly).Effort: M · Risk: Low–Medium.