Skip to content

feat: show a concise checklist by default in doctor - #382

Merged
Brian Krabach (bkrabach) merged 2 commits into
mainfrom
feat/doctor-checklist
Oct 26, 2026
Merged

Brian Krabach (bkrabach) merged 2 commits into
mainfrom
feat/doctor-checklist

Conversation

@bkrabach

@bkrabach Brian Krabach (bkrabach) commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Replace the roughly 90-line default technical report from amplifier doctor with a short checklist for people. The checklist distinguishes settings-read status from collection limits, treats absent optional settings as optional, and states that AI connections and running sessions were not tested. It does not claim that Amplifier is healthy or working. It gives a clear next step: describe the problem and ask for the CLI doctor agent.

--verbose retains the original technical report. JSON remains unchanged, including when combined with --verbose. This is a presentation-only follow-up to #380: no settings changes, repairs, new network activation, automatic probes, or model calls.

Example

Synthetic example; no host details:

Amplifier doctor
Configuration report collected

User settings (global): Read
Project settings: No entries
Local settings: Not present (optional)
AI connections and running session: Not tested
Effective settings were not resolved.
No settings were changed.
These results do not confirm Amplifier is working.
Next: Tell Amplifier what went wrong and ask for the CLI doctor agent.
Technical details: amplifier doctor --verbose (review before sharing).

Compatibility and verification

The collector and original technical renderer are byte-identical to the base. JSON schema, collection behavior, privacy boundaries, startup dispatch, ownership enforcement, agent, and skill are unchanged. JSON takes precedence over --verbose; output is byte-identical with and without that flag. Exit codes remain 0 for complete collection, 1 for partial/refused collection, and 2 for invalid arguments.

The intentional compatibility change is the default text presentation. Use --verbose for the former technical text or --format json for structured consumers. Neither collection completion nor a readable settings file establishes effective configuration or live health.

Local verification before the Windows-newline test follow-up:

  • Focused and integration: 267 focused doctor/entry-point/agent/shell-completion tests passed; 13 integration tests passed.
  • Full local suite is not green: candidate 2,949 passed and 122 failed; independent base 2,893 passed with the same 122 failed IDs and causes. There were no new failed IDs and 56 additional passing cases. Of the shared failures, 121 concern provider-source normalization/fetching while GitHub DNS was unavailable; one is a concurrency assertion after two provider-resolution thread errors. These unrelated failures were not fixed or deselected.
  • Installed package and terminal: a non-editable wheel outside the checkout passed all four entry routes: generated console, package module, legacy module, and actual installer-generated legacy console. Checks covered complete/partial/refused/ownership-override cases, new flags, JSON, exit codes, and the existing safety probe. Actual clean and malformed-settings PTY output fit at 80x24 and 120x28, with a 12-line default example and maximum width of 70 columns. Unsupported diagnostic YAML syntax is a collection limit, not a claim that runtime-valid settings are broken.
  • Static and independent review: Ruff 0.15.5 passed for all six changed Python files; Python 3.11 AST syntax and git diff --check passed. Independent read-only source/privacy/UX review passed across all seven changed files. Public examples and fixtures are synthetic. No full type-check gate or universal health claim is asserted.
  • Passivity boundary: the raw strict syscall harness reported false, not an all-process zero-attempt pass. Python bootstrap attempted denied bytecode-cache writes before first package access: three per console route and 15 for the legacy module, matching same-interpreter python -c/python -m controls in paths and counts. No application-owned writes, network calls, subprocess spawns, or persistent changes were observed; each process had one initial exec. Interpreter startup remains outside the application passivity guarantee.

To verify, run the doctor, entry-point, agent, and shell-completion tests; run the full suite and POSIX integration selection; and run the installed-wheel check through the existing CI workflow. Compare default text, --verbose, JSON with and without --verbose, and complete/partial/refused exit codes.

Windows newline follow-up

The original CI run reported four doctor JSON assertion failures in each Windows job: Click captured native CRLF, while the tests expected LF. This test-only follow-up uses os.linesep and explicit UTF-8 encoding in the two existing tests. The same complete/partial/refused cases, exit-code checks, and exact expected JSON content remain; explicit byte-for-byte parity with and without --verbose is also asserted. No production code changed. Local static checks and an isolated Click 8.3.1 capture smoke passed; they are not Windows execution proof.

Final verification

Remote CI run 40348471733 passed on revised head e136d9a063a2af2fda4aad53b14a17f4cb568f12: all eight jobs succeeded, covering Ubuntu, macOS, and Windows on Python 3.11/3.12 and both POSIX integration jobs. The Ubuntu/Python 3.11 installed-wheel and generated legacy-launcher step also succeeded. The CLA check passed on the same head. Both Windows jobs passed with the native-newline assertions; no production code or CI exclusions were added by that follow-up.

Local verification used Linux ARM64/Python 3.11 and is not Windows or macOS proof. The historical local-suite and interpreter-bootstrap limitations above remain unchanged. The agent and skill are unchanged; this presentation-only change makes no new live-model reliability claim.

Show a short fixed-copy checklist by default and retain the original technical report with --verbose. Keep diagnostic collection, JSON output, and exit codes unchanged. Extend safety, installed-wheel, entry-point, and completion coverage.

Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
Generated with Amplifier

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
@bkrabach
Brian Krabach (bkrabach) merged commit 72a972d into main Oct 26, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants