Skip to content

[polish] Migrate doctor / bundle / corpus CLI output to rich (spec/35 canonical primitive) #320

@dep0we

Description

@dep0we

Context

PR 1 of the init-wizard arc (#94) locked rich as the framework's canonical operator-facing CLI rendering library (spec/35 1C decision). The wizard uses rich for prompts and table rendering; the rest of the operator-facing CLI surface (doctor, bundle, corpus list/show/query) still uses plain print() with PASS/FAIL strings.

Per CLAUDE.md aesthetic ("the framework should feel like one thing, not a stack of seven libraries glued together"), the CLI surfaces should feel coherent. This issue tracks the migration.

What

Migrate three operator-facing CLI surfaces to rich rendering:

  1. atomic-agents doctor output: render_human currently produces plain-text check results with [PASS] / [FAIL] / [SKIP] / [WARN] badges. Migrate to rich.table.Table with colored status badges. render_json stays unchanged (machine-readable contract).

  2. atomic-agents bundle output: current bundle.py rendering is plain print. Use rich.panel.Panel + colored status for the section-by-section bundle preview.

  3. atomic-agents corpus list/show/query output: current _cmd_corpus_* functions in cli.py use plain print. Use rich.table.Table for list and query, rich.panel.Panel for show.

Each surface can ship as its own small PR or all three bundled. spec/35 already names rich as the canonical primitive; no spec update needed.

Why

Effort

human ~3 days total / CC ~6 hours total (each surface ~1 day human / ~2 hours CC).

Acceptance

  • doctor output uses rich.table.Table with colored status; tests assert rendered output contains expected substrings (using Console(file=StringIO()) capture).
  • bundle output uses rich.panel.Panel.
  • corpus list / show / query use rich.
  • No regressions to --json output paths (still machine-readable).
  • spec/27 (doctor catalogue) updated to note the rendering migration.

Deferred from

PR 1 of #94 office-hours TODO-3 + spec/35 canonical primitive lock: #317

Metadata

Metadata

Assignees

No one assigned

    Labels

    polishOperational nice-to-haves

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions