# RigDoctor — Roadmap (DRAFT v0.2) Phased so the seed use case (capturing the RTX 3070 crash / black-screen events) is solved early, before the broader "tool for all Linux gamers" work. Stack: Python 3 + Qt/PySide6; Ubuntu + NVIDIA first; `.deb` distribution (see `DECISIONS.md`). ## Phase 0 — Workspace & spec *(done)* - [x] Create repo + docs scaffold - [x] Settle the foundational decisions D1–D11 (name, language, platform/GPU priority, MVP scope, trigger model, packaging, scope-of-action, GUI/tray) - [x] Lock the MVP scope (M1 + M3 + M4, NVIDIA-only) ## Phase 1 — MVP: capture *this* crash (Essential bundle, NVIDIA-only, CLI) - [x] M1 sensor core (NVIDIA via nvidia-smi + hwmon for CPU/RAM/NVMe), stdlib-only - [x] M3 crash-capture logger (JSONL, fsync per sample, GPU-lost detection, size rotation) - [x] Manual trigger mode (`rigdoctor record run/start/stop/status`); `systemd --user` service + other trigger modes in Phase 4 (`run` is already the service entrypoint) - [x] M4 health report (Xid/panic/OOM/MCE/AER/thermal scan + SMART + driver-mismatch + journald-persistence + live temps, suggested fixes only — D9; GPU-firmware verify deferred) - [x] `record report` post-crash summary (peak temps/power per subsystem, events, last N samples) - **Exit criteria:** user can run it during gaming and, after a freeze/black-screen, see the last readings + a plausible cause. ## Phase 2 — Live monitor (terminal) - [ ] M2 TUI dashboard (current/min/max, grouped, throttle highlighting) - [ ] M8 basic alerting (overheat/throttle/GPU-lost notifications) ## Phase 3 — Diagnostics breadth - [ ] M5 system inventory + exportable report - [ ] M6 gaming environment checks (suggest-only) - [ ] SMART integration (smartmontools if present) ## Phase 4 — Desktop UI & installer - [ ] M10 desktop GUI (PySide6: dashboard, log browser, report viewer, logger controls) - [ ] M11 tray / menu-bar applet (QSystemTrayIcon: live M1 readouts + Run Diagnostic + supporting actions — D13) - [ ] Guided diagnostic session (pick game → focused M3 capture → M4 scan → findings), shared by tray/GUI/CLI - [ ] Logger trigger modes: always-on + game-launch (D12 — wrapper first: `rigdoctor wrap %command%` + global Steam compat-tool; zero-config watcher (Steam RunningAppID + /proc) and GameMode hook follow) - [~] M9 interactive installer — *done:* distro/GPU detection + optional-dependency install (`rigdoctor install`, GUI Setup tab); **user-local `install.sh` + self-extracting `.run`** (no-root venv install, handles python3-venv prereq, CI-built). *Pending:* module-selection config + `systemd --user` service enable + trigger-mode pick. - [ ] `.deb` packaging (D8) declaring per-bundle deps incl. python3-pyside6 for Desktop UI ## Phase 5 — Breadth (later) - [ ] AMD GPU support in M1 (Steam Deck / Radeon) - [ ] Intel GPU best-effort - [x] M13 auto-update (D18) — launch-time version check (GUI sidebar) + no-root self-update apply (`rigdoctor update` / sidebar button → authenticated pip upgrade), token-gated. Restart-after-update is manual for now. - [ ] (Later, separate milestone) Optional auto-apply of suggested fixes behind explicit consent — currently out of scope (D9) ## Phase 6 — Session sharing / remote assist (M12, D16) Escalating ladder, built in order: - [ ] Tier 1: `share export` — diagnostic bundle (inventory + recent log + report); B opens it in RigDoctor. One-way, safest. - [x] Tier 2: live read-only view — `rigdoctor share serve` (stdlib HTTP, token-gated: sensors + health + inventory). Remote = user-chosen tunnel; GUI controls still to add. - [x] Tier 3: host-consented interactive terminal — a real PTY shell shared over the relay (own `pty`, pyte-rendered guest), off by default; host reads along + can type (sudo). > **Out of scope:** stress/repro module (D7); multi-distro support and packaging beyond > Ubuntu/apt + `.deb` (D15) — a thin seam is kept but not built out. > **Dropped:** stress / repro module (D7) — not on the roadmap.