Skip to content

feat(cli): replace Completed-in with Vetted summary line - #141

Merged
Alberto-Codes merged 5 commits into
mainfrom
feat/cli-21-1-default-output-overhaul
Feb 26, 2026
Merged

feat(cli): replace Completed-in with Vetted summary line#141
Alberto-Codes merged 5 commits into
mainfrom
feat/cli-21-1-default-output-overhaul

Conversation

@Alberto-Codes

Copy link
Copy Markdown
Owner

The check command previously printed only Completed in Xs to stderr, giving no indication of what was checked or whether findings existed. First-time users had to enable verbose mode or parse exit codes to understand results. This replaces that line with a branded summary: Vetted N files [checks] — summary. (Xs).

  • Add format_summary() to reporting.py with zero-findings and findings branches, em dash separator, and category breakdown
  • Replace Completed in Xs in check() with format_summary() call on stderr; build checks list dynamically (griffe omitted when not installed)
  • Remove No findings. verbose-only stdout message — summary line on stderr covers this unconditionally
  • Add 14 new tests: 9 for format_summary, 2 for conditional griffe, 2 for stderr independence of --format/--output, 1 CLI wiring test for findings-present path

Test: uv run pytest

feat(cli): replace Completed-in with Vetted summary line on check command

chore(cli): code review fixes for story 21.1


PR Review

Checklist

  • Self-reviewed my code
  • Tests pass (uv run pytest) — 841 pass
  • Lint passes (uv run ruff check .)
  • Types pass (uv run ty check)
  • Breaking changes use ! in title and BREAKING CHANGE: in body

Review Focus

  • format_summary in reporting.py — new public function, verify em dash and category breakdown
  • check() in cli.py lines 614-623 — dynamic checks list and findings flattening
  • AC4 was rewritten during code review: zero-files path intentionally keeps "No Python files to check." (better UX than "Vetted 0 files")

Related

  • Story: _bmad-output/implementation-artifacts/21-1-default-output-overhaul.md
  • Epic: CLI UX improvements (Epic 21)

…mand

The `check` command now prints an unconditional summary line to stderr:
`Vetted N files [checks] — no findings. (Xs)` or with finding counts.
Replaces the old `Completed in Xs` line. Griffe is conditionally included
in the check list based on installation. The verbose-only `No findings.`
stdout message is removed — the summary line on stderr covers it.
- Rewrite AC4 to match existing (better) UX for zero-files case
- Update AC-to-Test Mapping with design decision rationale
- Add CLI wiring test for summary line with findings present
- Fill Code Review section and update sprint status to done
@Alberto-Codes
Alberto-Codes marked this pull request as ready for review February 26, 2026 20:18
Copilot AI review requested due to automatic review settings February 26, 2026 20:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR improves the docvet check UX by replacing the uninformative Completed in Xs stderr line with a branded, information-rich summary (Vetted N files [checks] — … (Xs)), and updates unit tests and workflow artifacts to match.

Changes:

  • Added format_summary() in src/docvet/reporting.py to produce a stable one-line run summary (including findings breakdown).
  • Updated check() in src/docvet/cli.py to emit the new summary line on stderr and build the checks list dynamically (omit griffe when not installed).
  • Updated/expanded unit tests to validate the new summary output and removed the verbose-only No findings. stdout message.

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/docvet/reporting.py Adds format_summary() and updates docstrings for the new summary behavior.
src/docvet/cli.py Replaces Completed in with format_summary() output and passes a dynamic checks list into output handling.
tests/unit/test_reporting.py Adds unit coverage for format_summary() formatting branches and invariants.
tests/unit/test_cli_timing.py Updates timing regex assertions and adds tests for summary formatting/conditional check listing.
tests/unit/test_cli.py Updates CLI assertions/helpers to ignore the new summary line and removes No findings. expectations.
_bmad/bmm/workflows/... (multiple) Updates workflow templates/checklists to include “Documentation Impact” verification steps.
_bmad-output/planning-artifacts/epics-cli-ux.md Adds/records epic planning content for CLI UX improvements.
_bmad-output/implementation-artifacts/sprint-status.yaml Updates sprint/epic tracking status entries.
_bmad-output/implementation-artifacts/21-1-default-output-overhaul.md Adds the story artifact documenting requirements, mapping, and implementation notes for 21.1.

Comment thread tests/unit/test_cli_timing.py Outdated
Comment thread src/docvet/cli.py
Comment thread src/docvet/cli.py Outdated
Comment thread src/docvet/reporting.py
Comment thread tests/unit/test_cli.py Outdated
- Strengthen stderr tests: assert summary on result.stderr, absent from
  result.stdout (mix_stderr removed in Click 8.2; use attributes directly)
- Fix docstring: "unconditionally" → "when files are found" (zero-files
  exits early without summary, per AC4 revision)
- Fix _non_timing_lines case bug: filter before lowercasing so
  startswith("Vetted ") matches correctly
@Alberto-Codes
Alberto-Codes merged commit 18db009 into main Feb 26, 2026
8 checks passed
@Alberto-Codes
Alberto-Codes deleted the feat/cli-21-1-default-output-overhaul branch February 26, 2026 20:30
Alberto-Codes added a commit that referenced this pull request Feb 26, 2026
🤖 I have created a release *beep* *boop*
---


##
[1.5.0](v1.4.0...v1.5.0)
(2026-02-26)


### Features

* **cli:** add --quiet flag and dual-register --verbose on check
subcommand ([#144](#144))
([206ab22](206ab22))
* **cli:** add --verbose and --quiet flags to individual subcommands
([#145](#145))
([ba1bbd5](ba1bbd5))
* **cli:** replace Completed-in with Vetted summary line
([#141](#141))
([18db009](18db009))
* **cli:** replace Completed-in with Vetted summary line on check
([18db009](18db009))
* **config:** suppress overlap warnings for default warn-on values
([#143](#143))
([384a44a](384a44a))


### Bug Fixes

* **cli:** correct --quiet flag docs and harden griffe quiet test
([#146](#146))
([bf1ca08](bf1ca08))
* **cli:** resolve verbose/quiet dual-resolution ordering in check
([206ab22](206ab22))
* **cli:** suppress verbose header for single-check subcommands
([ba1bbd5](ba1bbd5))
* **config:** update overlap warning docs and strengthen AC3 test
([384a44a](384a44a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
@codecov-commenter

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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.

3 participants