rename: 'rocm doctor' subcommand to 'rocm examine' - #23
Conversation
a3e869b to
e6fd381
Compare
There was a problem hiding this comment.
Pull request overview
This PR renames the rocm doctor inspection surface to rocm examine across the CLI, TUI, MCP/OpenAI tool integrations, docs, and CI/scripts to better reflect the command’s purpose and avoid “doctor” naming collisions.
Changes:
- Renamed user-facing CLI/TUI command surfaces:
doctor→examine(including help text, prompts, and slash-command completions). - Updated MCP/OpenAI tool naming and related Rust types (
DoctorSummary→ExamineSummary, etc.), plus updated scripts/CI smoke paths. - Refreshed documentation and plans to reference
examineinstead ofdoctor.
Reviewed changes
Copilot reviewed 30 out of 30 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/smoke_local.py | Updates local smoke to run/assert rocm examine output. |
| scripts/acceptance-install-upgrade-tui-uninstall.ps1 | Updates acceptance script log naming and calls to rocm examine. |
| README.md | Replaces quick-start “doctor” invocation with “examine”. |
| plans/rocm-cli-remaining-implementation-plan.md | Updates plan references from doctor → examine. |
| plans/rocm-cli-pytorch-engine-spec.md | Updates spec references from doctor → examine. |
| plans/rocm-cli-implementation-plan.md | Updates implementation plan references from doctor → examine. |
| plans/cosmopolitan-runtime-boundary-plan.md | Updates plan/test command references to examine. |
| install.sh | Updates post-install guidance to run rocm examine. |
| install.ps1 | Updates post-install guidance to run rocm examine. |
| docs/wsl.md | Updates section heading and references to rocm examine. |
| docs/ux-guidelines.md | Updates UX guidance text referencing “Doctor” to “Examine”. |
| docs/testing.md | Updates testing instructions and tool-call examples to examine. |
| docs/manual-testing.md | Updates manual test instructions to rocm examine. |
| docs/implementation-completion-audit.md | Updates audit doc references from Doctor → Examine. |
| docs/current-tui-therock-correction-plan.md | Updates doc references from doctor → examine. |
| docs/cosmopolitan-universal-binary-plan.md | Updates universal-binary plan references from doctor → examine. |
| docs/codex-vendoring-plan.md | Updates vendoring plan tool/surface references to examine. |
| docs/automations.md | Updates restricted tool docs wording for doctor_snapshot vs examine. |
| crates/rocm-dash-tui/src/ui/tabs/instances.rs | Renames app state field from doctor_manager → examine_manager in tests. |
| crates/rocm-dash-tui/src/ui/mod.rs | Switches UI overlay wiring and footer label to examine. |
| crates/rocm-dash-tui/src/ui/logs_view.rs | Updates test comment referencing examine re-attach semantics. |
| crates/rocm-dash-tui/src/ui/examine_manager.rs | Introduces/updates examine overlay implementation and tests. |
| crates/rocm-dash-tui/src/ui/command_screen.rs | Updates examples/tests to use examine. |
| crates/rocm-dash-tui/src/app.rs | Renames overlay state/action plumbing to examine. |
| crates/rocm-core/src/lib.rs | Renames summary/inventory types and changes bridge snapshot field to examine. |
| apps/rocmd/src/lib.rs | Renames MCP tool to examine and updates snapshot/tool outputs and guards. |
| apps/rocm/src/tui.rs | Renames TUI surface/logic from doctor → examine, including tool routing and tests. |
| apps/rocm/src/providers.rs | Renames OpenAI tool definition references from doctor → examine. |
| apps/rocm/src/main.rs | Renames clap subcommand + internal rendering/planning/tool logic to examine. |
| .github/workflows/ci.yml | Updates CI host-detection step to run rocm.exe examine. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
e6fd381 to
5e6d633
Compare
Signed-off-by: Roman Inflianskas <Roman.Inflianskas@amd.com>
5e6d633 to
6907bf6
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 30 out of 30 changed files in this pull request and generated 4 comments.
Comments suppressed due to low confidence (1)
apps/rocm/src/tui.rs:451
- If you keep
doctoras a compatibility alias,is_examine_command_inputshould treat bothexamineanddoctoras the same command; otherwise/doctorwon't get the special-case behavior around background examine refresh blocking/deferral.
93bdba6 to
6907bf6
Compare
Review — clean, complete, mergeableReviewed the full diff. It's a disciplined pure rename; every change is a Verified
Advisory notes (non-blocking)
Bottom lineMechanically correct and complete. The only real consideration is merge sequencing with the skill so the catalog isn't calling a command that no longer exists. |
…I300X first)
MI300X ran `install sdk` 9× (once per isolated scenario), each a multi-GB TheRock
cold install, pushing the job past its time cap (~37min, cancelled → no report).
Raising the cap failed twice; the fix is to install the runtime ONCE and share it.
- harness: `use_shared_runtimes()` opts a scenario into a shared runtimes tree by
symlinking its `data/runtimes` at `E2E_SHARED_RUNTIMES_DIR` (only `runtimes/`;
config/services/engines stay isolated). No-op when the env var is unset (local
+ mock runs stay fully isolated — verified mock still 7 pass / 2 xfail). Called
from the "a managed runtime is active" precondition only; the clean-slate
scenarios ("no CLI-managed runtimes", "Installing the SDK") deliberately do NOT
opt in. Active-runtime resolution falls back to most-recently-installed, so a
shared registry is active without touching isolated config.
- ci (e2e-gpu / MI300X only for now): pre-warm ONE runtime SERIALLY in the run
step before the suite (avoids two concurrent scenarios racing installs into the
shared dir), then point E2E_SHARED_RUNTIMES_DIR at it. Validating on MI300X
before propagating to the two Strix jobs.
Relates to task #22; unblocks #23 (same cold-install root cause).
Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
…ail (#23) `rocm serve <model>` with no --engine is recipe-driven, not platform-driven: it resolves the request to the recipe's preferred model+engine, which may differ from what was requested (e.g. a safetensors request resolves to a GGUF recipe on lemonade). The default-engine scenarios hardcoded the requested model in the readiness wait, so they timed out whenever the recipe resolved to a different model — on a lemonade-default host the safetensors request isn't even servable. Wait on the model the CLI actually resolved (parsed from the serve plan) instead of the requested id, via new resolved_model() + ready_substr_for() helpers; also dedup two existing `resolved model:` parses onto resolved_model(). Re-key the Instinct (effective_engine=vllm) xfail from EAI-7333 to EAI-7052: verified on MI300X that the default serve resolves to a GGUF recipe on lemonade, whose Vulkan backend hangs on Instinct (EAI-7052) — the default path doesn't use vLLM at all here, so EAI-7333 was the wrong bug. Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
TEMPORARY: scoped-probe input forwarded to the cucumber harness on the strix-ubuntu job so a dispatch can run just the two serve-default-engine-* scenarios and validate the #23 recipe-aware fix on the lemonade-native Strix path. Empty = full suite. Remove after validation. Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
…23 xfail - expectation.rs: `#[serde(deny_unknown_fields)]` on `Condition`/`XfailEntry` so a typo'd key can't parse to an all-None (unconditionally matching) xfail. - e2e-report: route `scenario_pass_map` through canonical `scenario_passed`; split reconcile's `Missing` — an expected pass/xfail with NO result is now `Absent` (a problem), so a lost-results run reds the platform instead of passing. - model_serving.feature: gate `serve-vllm-default-on-instinct` with `@requires-engine:vllm` (false failure on lemonade-default hosts). - expectations.toml: xfail both `serve-default-engine-*` on effective_engine= lemonade (EAI-7423: first serve runs a backend install that hides the plan line; endpoint dies pre-inference via lemonade Vulkan instability). - ci.yml/nightly.yml: SHA-pin the newly-added actions/upload-artifact@v4 (v4.6.2) and download-artifact@v4 (v4.3.0) per AGENTS.md §6. - chat_steps.rs / mock_server.rs: remove dead step + never-read received_models. - dash_journeys.rs: assert real transitions (theme changes; chat error surfaced as an Error-role turn), not just a non-empty render. Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
…ail (#23) `rocm serve <model>` with no --engine is recipe-driven, not platform-driven: it resolves the request to the recipe's preferred model+engine, which may differ from what was requested (e.g. a safetensors request resolves to a GGUF recipe on lemonade). The default-engine scenarios hardcoded the requested model in the readiness wait, so they timed out whenever the recipe resolved to a different model — on a lemonade-default host the safetensors request isn't even servable. Wait on the model the CLI actually resolved (parsed from the serve plan) instead of the requested id, via new resolved_model() + ready_substr_for() helpers; also dedup two existing `resolved model:` parses onto resolved_model(). Re-key the Instinct (effective_engine=vllm) xfail from EAI-7333 to EAI-7052: verified on MI300X that the default serve resolves to a GGUF recipe on lemonade, whose Vulkan backend hangs on Instinct (EAI-7052) — the default path doesn't use vLLM at all here, so EAI-7333 was the wrong bug. Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
TEMPORARY: scoped-probe input forwarded to the cucumber harness on the strix-ubuntu job so a dispatch can run just the two serve-default-engine-* scenarios and validate the #23 recipe-aware fix on the lemonade-native Strix path. Empty = full suite. Remove after validation. Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
…23 xfail - expectation.rs: `#[serde(deny_unknown_fields)]` on `Condition`/`XfailEntry` so a typo'd key can't parse to an all-None (unconditionally matching) xfail. - e2e-report: route `scenario_pass_map` through canonical `scenario_passed`; split reconcile's `Missing` — an expected pass/xfail with NO result is now `Absent` (a problem), so a lost-results run reds the platform instead of passing. - model_serving.feature: gate `serve-vllm-default-on-instinct` with `@requires-engine:vllm` (false failure on lemonade-default hosts). - expectations.toml: xfail both `serve-default-engine-*` on effective_engine= lemonade (EAI-7423: first serve runs a backend install that hides the plan line; endpoint dies pre-inference via lemonade Vulkan instability). - ci.yml/nightly.yml: SHA-pin the newly-added actions/upload-artifact@v4 (v4.6.2) and download-artifact@v4 (v4.3.0) per AGENTS.md §6. - chat_steps.rs / mock_server.rs: remove dead step + never-read received_models. - dash_journeys.rs: assert real transitions (theme changes; chat error surfaced as an Error-role turn), not just a non-empty render. Signed-off-by: fredespi <fredrik.espinoza@gmail.com>
Summary
Renames the
rocm doctorsubcommand torocm examinethroughout the codebase.examinebetter describes what the command does — it inspects and reports systemstate — and avoids a naming collision with external tooling that uses the "doctor"
convention for different purposes.
Changes
rocm doctor→rocm examine/doctor→/examine"doctor"→"examine"doctor_snapshot→examine_snapshot(enumDoctorSnapshot→ExamineSnapshot), and theCodexBridgeSnapshotpayloadkey
doctor→examineDoctorSummary→ExamineSummary, etc.)doctor_manager.rs→examine_manager.rsCI/smoke/acceptance scripts
Decisions
rocm doctoris a deliberate hard rename — nohidden
doctoralias — so existingrocm doctorinvocations now error. Thecommand is pre-1.0 and the clean break keeps the surface coherent.
examine_snapshotandCodexBridgeSnapshotbelong to therocmd-codex-bridge-v0protocol, which has no stability guarantee yet, so thetool name and payload key were renamed in full rather than aliased.
Test plan
cargo build --workspaceand fullcargo test --workspacepass clean/exa,/ex)cargo fmt --checkandcargo clippy --workspaceclean