Skip to content

Cycle 16: Health v2 Report — opt-in Git column + --filter stranded/paused - #71

Merged
belarusian merged 1 commit into
mainfrom
build16/report-git-column
Aug 20, 2026
Merged

Cycle 16: Health v2 Report — opt-in Git column + --filter stranded/paused#71
belarusian merged 1 commit into
mainfrom
build16/report-git-column

Conversation

@belarusian

Copy link
Copy Markdown
Owner

Summary

Surfaces the merged Health v2 building blocks (Cycle 14 read_gitstate/GitState, Cycle 15 classify_health_v2) in the status report.

  • fleet/report.pyrender_portfolio(healths, git_states=None): an opt-in 7th Git column appended at the end (after Health). git_states=None (default) is byte-identical to the 6-column form. New _fmt_git helper: - when clean, unmerged:<b1>+<b2> / unpushed:<n> / combined with ,.
  • fleet/cli.pystatus now always renders the Git column (sourced via read_gitstate per project) and --filter accepts the two v2-only classes stranded/paused (selected with classify_health_v2 over the project's git state). The v1 classes keep their exact meaning; the health column stays v1 (full v2 wiring is Cycle 17).

Tests

  • tests/test_report.py +7: 6-column byte-identical, 7-column header/separator, clean -, unmerged:, unpushed:, combined, missing-name default, empty-input 7-column row.
  • tests/test_cli.py +2: --filter stranded selects exactly the stranded project; status always shows the Git column. Existing status expected-computations updated to pass _git_states(root) (tmp projects are not git repos → every Git cell is -). test_cli_open_issues_always_zero unchanged (Git appended at end, open_issues still index 4).

Gate

pytest tests/ -q → 142 passed (was 133); ruff check fleet/ clean; mypy fleet/ --ignore-missing-imports clean.

Closes #67, #68, #69, #70

render_portfolio gains an optional git_states param that appends a 7th
Git column (unmerged:<b1>+<b2> / unpushed:<n> / - when clean); the
default (git_states=None) is byte-identical to the 6-column form.

cli status now always renders the Git column (sourced via read_gitstate)
and --filter accepts the two v2-only classes stranded/paused (selected
with classify_health_v2 over the project's git state); the v1 classes
keep their exact meaning and the health column stays v1.

Tests: +7 report (Git column formats, clean/missing/empty), +2 cli
(--filter stranded, Git column present). Gate green (142 passed, ruff,
mypy).

Closes #67, #68, #69, #70
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.

Cycle 16: render_portfolio opt-in Git column (TICKET-060)

1 participant