Menu

#346 fix(cli): standardize diagnostic severity prefixes

closed
nobody
None
2026-08-18
2026-08-11
Anonymous
No

Originally created by: floze-the-genius

Pull Request

Slice

  • Repo: doberman-core
  • Feature / Slice: [#344] — one CLI message-severity vocabulary
  • Plan reference: issue [#344]

What this PR does

  • Prefixes all eight audited fatal CLI diagnostics with error: while preserving their existing exit codes and stdout/stderr channels.
  • Extends focused coverage for denial, unknown elevation, and missing optional-dependency paths.
  • Documents the error: / warning: / note: vocabulary in the README, CLI reference, and changelog.

Fixes [#344].

Tests added (run in CI)

  • Focused changed-path suite: 25 passed.
  • Full suite: 2,571 passed, 5 skipped, 1 failed locally; the sole failure is the unchanged real-plugin discovery harness, which reproduces on current main with the same ModuleNotFoundError: No module named doberman.
  • Ruff check and format check.
  • Markdown link check: 25 files.
  • Import contracts: 2 kept, 0 broken.
  • Parity generator check and git diff --check.
  • Built sdist and wheel; verified the clean wheel environment reports version 0.17.1 and includes bundled roles without the enterprise package.

Public-release safety (doberman-core only)

  • [x] Contains nothing from the not-allowed list: no enterprise/hosted code, no proprietary detection, no customer data, no secrets, no commercial-license code
  • [x] Core still builds/tests/runs with NO enterprise package installed

Security checklist

  • [x] Fails closed on error / uncertainty
  • [x] No secret, full file, or unredacted prompt logged or committed
  • [x] Any guardrail/learning change is raise-only (N/A: message prefixes only)
  • [x] Every BLOCK/AUTH carries reason codes + a human explanation (N/A: no decision-path change)
  • [x] doberman-core does not import doberman_enterprise

Edge cases covered / Deviations from plan / Risks introduced

  • Missing textual and dashboard dependencies retain their original install hints and exit 1, now with the same fatal prefix.
  • No machine-readable output, command behavior, or exit code changes.

AI assistance

This contribution was prepared with Codex assistance.

Related

Tickets: #344

Discussion

  • Anonymous

    Anonymous - 2026-08-11

    Originally posted by: fu351

    @floze-the-genius, welcome to Doberman. You turned the CLI's mixed failure wording into one clear vocabulary while preserving exit codes, output channels, and machine-readable schemas. Extending the focused tests and documenting the convention in both the README and CLI reference made this a complete change rather than a string-only sweep.

    I added one mechanical fix on your branch before merge. The original audit list missed doctor's non-zero failure summary, so it still printed a bare "critical check(s) not healthy" line and contradicted the new documented rule. Commit 5362289 adds the error: prefix without moving the line from stdout and locks it in test_cli_doctor.py.

    This is your first merged contribution here. If the project is useful to you, a star would mean a lot. Come say hello in the Discord too: https://discord.gg/Sfy5XGNqty

    For a next step, [#330] (level-3) is a good fit. It is another bounded, mutation-checked test task, this time proving the gitignored-data deletion gate through the MCP proxy. Thanks for the careful first contribution.

     

    Related

    Tickets: #330

  • Anonymous

    Anonymous - 2026-08-11

    Ticket changed by: fu351

    • status: open --> closed
     
  • Anonymous

    Anonymous - 2026-08-18

    Originally posted by: fu351

    @floze-the-genius Consistent severity prefixes are the kind of fix nobody notices because everything simply reads right now. Thanks for that.

    Quick community roll-call: are you in the Doberman Discord? If yes, drop your handle here (or DM me there) so I can match the GitHub side of your work to your Discord name. If not, you're warmly invited: https://discord.gg/Sfy5XGNqty

     

Log in to post a comment.