Skip to content

fix(cli): show review lane count in kanban stats output - #29082

Open
Dusk1e wants to merge 1 commit into
NousResearch:mainfrom
Dusk1e:fix/kanban-stats-include-review-lane-text
Open

fix(cli): show review lane count in kanban stats output#29082
Dusk1e wants to merge 1 commit into
NousResearch:mainfrom
Dusk1e:fix/kanban-stats-include-review-lane-text

Conversation

@Dusk1e

@Dusk1e Dusk1e commented May 20, 2026

Copy link
Copy Markdown
Contributor

What & Why

hermes kanban stats (text mode) prints a per-status breakdown, but the
hardcoded status list omits review:

for k in ("triage", "todo", "scheduled", "ready", "running", "blocked", "done"):

board_stats() already returns a count for every non-archived status
(GROUP BY status), so the data is present — it's just dropped on the way
to the terminal. Result: any task sitting in the review lane is invisible
in the human-readable report, the printed totals don't reconcile with
list --status review, and the text path silently disagrees with
stats --json (which still shows it).

review is a first-class, dispatchable lane (workers move tasks into it for
the reviewer agent), so its count belongs in the summary.

Fix

Add review to the display order (between blocked and done):

for k in ("triage", "todo", "scheduled", "ready", "running", "blocked", "review", "done"):

One line, behavior-only, backward compatible.

How to test

  1. Create a task and move it to review.
  2. hermes kanban stats → the By status: block now lists review with the
    correct count, matching stats --json.

Added regression test test_run_slash_stats_text_includes_review_lane in
tests/hermes_cli/test_kanban_cli.py: it asserts the text output shows
review 1 and that it agrees with the JSON path. Verified the test fails
without the fix
and passes with it.

Platforms

Pure CLI output formatting — platform-independent. tests/hermes_cli/test_kanban_cli.py: 47 passed.

@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard comp/plugins Plugin system and bundled plugins labels May 20, 2026
@teknium1

teknium1 commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Thanks for the focused regression fix. Current main still omits review from the plain-text _cmd_stats() display order at hermes_cli/kanban.py:2421, while board_stats() groups every non-archived status at hermes_cli/kanban_db.py:8413-8417 and review remains a valid, dispatchable status (hermes_cli/kanban_db.py:102, hermes_cli/kanban_db.py:7568-7590).

The proposed order matches the dashboard's existing status columns at plugins/kanban/dashboard/plugin_api.py:150-152. The regression test uses the shared run_slash("stats") path, and the submitted patch applies cleanly against current main with git apply --check.

Automated hermes-sweeper review.

@teknium1 teknium1 added sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-contained Sweeper blast radius: contained — one narrow path / opt-in / few users labels Jul 13, 2026

@GottZ GottZ 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.

This was generated by AI during triage.

Summary

Two PRs address the same plain-text stats omission: both add review to _cmd_stats() so counts already produced by board_stats() are displayed, with regression coverage that places a task in review and checks the rendered count.

Related pull requests

  • #29082 related — (+25/-1) — keep open with a salvage path: the diff adds the missing review entry to the plain-text status tuple and tests both the text count and agreement with stats --json. This is the earlier implementation, and the maintainer-bot keep-open verdict confirms that current main still omits the row at hermes_cli/kanban.py:2421; relative to #51424, its additional salvageable value is the explicit text-versus-JSON parity assertion.
  • #51424 [closed] duplicate — (+30/-1) — remain closed as duplicate of #29082: it makes the identical one-line renderer change and adds equivalent regression coverage in a different test module. Although it received a non-contributor APPROVED review, contributors briandevans and alt-glitch documented that #29082 is the earlier PR for the same fix, so the closed PR remains relevant as corroborating implementation and test evidence rather than a separate solution.

Duplicates

#51424 duplicates #29082: both add review to the same _cmd_stats() status tuple and test that plain-text stats report a review task count.

Suggested consolidation

Keep #29082 open with a salvage path: retain its focused renderer change and regression test, particularly the assertion that plain-text output agrees with stats --json. Keep #51424 closed as a duplicate of #29082; its diff does not contain a distinct fix that warrants a separate PR.

Complex graph

flowchart LR
    classDef open fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a
    classDef merged fill:#dcfce7,stroke:#15803d,color:#14532d
    classDef closed fill:#e5e7eb,stroke:#6b7280,color:#1f2937
    classDef unverified fill:#f3f4f6,stroke:#9ca3af,color:#374151
    classDef best stroke-width:3px,stroke:#b45309
    classDef target stroke-width:3px,stroke:#4338ca
    subgraph Dup29082 ["PRs duplicating each other"]
        P29082["PR #29082 (open)"]
        P51424["PR #51424 (closed)"]
    end
    class P29082 open
    class P51424 closed
    class P29082 target
    click P29082 "https://github.com/NousResearch/hermes-agent/pull/29082"
    click P51424 "https://github.com/NousResearch/hermes-agent/pull/51424"
Loading

Graph: solid arrow = fixes / best fix, dashed arrow = partial or unverified (see edge label); boxed group = PRs duplicating each other; amber border = best fix; indigo border = target; gray node = closed (state tag in the node label).

Cross-PR triage: Reviewed 2 pull requests and 0 issues in this complex. Each diff was read against this issue; Assessment working set: 4 kB of PR diffs, 5 kB of issue/PR text, 2 kB of discussion (4 comments), 0 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/cli CLI entry point, hermes_cli/, setup wizard comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have sweeper:blast-contained Sweeper blast radius: contained — one narrow path / opt-in / few users sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants