|
| 1 | +# FU-P9-T2-2 Validation Report |
| 2 | + |
| 3 | +**Task:** FU-P9-T2-2 — Add troubleshooting guidance for stale uvx cache/process versions |
| 4 | +**Date:** 2026-02-14 |
| 5 | +**Verdict:** PASS |
| 6 | + |
| 7 | +## Summary |
| 8 | +Implemented troubleshooting and setup documentation updates for stale `uvx` runtime/process scenarios after upgrades, including concrete diagnosis commands, explicit `--refresh` recovery path, and warning about concurrent wrapper processes masking upgrades. |
| 9 | + |
| 10 | +## Deliverables Completed |
| 11 | +- Updated `docs/troubleshooting.md` with a dedicated stale-runtime section including: |
| 12 | + - symptom/cause/fix narrative, |
| 13 | + - port/PID/version diagnostics, |
| 14 | + - `uvx --refresh --from 'mcpbridge-wrapper[webui]' ...` recovery, |
| 15 | + - explicit note about multiple concurrent wrapper processes. |
| 16 | +- Updated `docs/cursor-setup.md` with a one-time `--refresh` config pattern for post-upgrade recovery. |
| 17 | +- Updated `README.md` with runtime process version verification snippet and refresh command. |
| 18 | + |
| 19 | +## Acceptance Criteria Validation |
| 20 | +1. Troubleshooting docs include symptom/cause/fix for stale behavior after upgrade. |
| 21 | + - **PASS** — Added section: `"Uptime still shows 1h 0m 0s" or behavior is unchanged after upgrade` in `docs/troubleshooting.md`. |
| 22 | +2. Docs include explicit diagnostic commands for port/PID/version validation. |
| 23 | + - **PASS** — Added `lsof`, `ps`, and interpreter-based `importlib.metadata` version checks. |
| 24 | +3. Recovery guidance includes `uvx --refresh --from mcpbridge-wrapper[webui] ...` and restart instructions. |
| 25 | + - **PASS** — Added exact command and restart/reload guidance in troubleshooting and Cursor setup docs. |
| 26 | +4. Docs clearly mention multiple concurrent wrapper processes can mask upgrades. |
| 27 | + - **PASS** — Added explicit warning in troubleshooting section. |
| 28 | +5. Validation report records local repro and confirms refreshed process resolves stale behavior. |
| 29 | + - **PASS** — Local repro captured below with stale vs refreshed runtime evidence. |
| 30 | + |
| 31 | +## Local Reproduction Evidence |
| 32 | +```text |
| 33 | +stale_pid=8069 |
| 34 | +stale_version=0.3.2 |
| 35 | +stale_uptime_samples=3600,3600 |
| 36 | +refresh_pid=53176 |
| 37 | +refresh_version=0.3.3 |
| 38 | +refresh_uptime_samples=0.4,2.4 |
| 39 | +``` |
| 40 | + |
| 41 | +Interpretation: |
| 42 | +- Stale listener on port 8080 remained on `0.3.2` and returned fixed uptime. |
| 43 | +- Refreshed start used `0.3.3` and returned increasing uptime. |
| 44 | + |
| 45 | +## Quality Gates |
| 46 | +- `pytest` — **PASS** (345 passed, 5 skipped) |
| 47 | +- `ruff check src/` — **PASS** |
| 48 | +- `mypy src/` — **PASS** |
| 49 | +- `pytest --cov` — **PASS** (96.62% total, threshold 90%) |
| 50 | + |
| 51 | +## Notes |
| 52 | +- Test runs reported non-fatal warnings about occupied local ports (`8080`/`9090`) in background Web UI thread tests; suite still passed and coverage remained above threshold. |
0 commit comments