Skip to content

repo-fleet-hygiene: 869 findings across 6204 lines with no rollup, and one target emitting multiple independent findings #2608

Description

@kyle-sexton

Context: #2597

Problem

The report's presentation contract — repository sections followed by five grouped confidence lists — does not survive contact with a real fleet. It produces a per-item enumeration of what is, operationally, one decision per repository, and it emits the same target more than once when several findings apply to it.

Evidence

One run: 869 findings, 6204 lines, 19 repositories. The bulk categories are 263 reclaimable-worktree, 214 merged-local-branch, and 163 merged-worktree — 74% of all findings in three categories that a reader will act on wholesale, per repository, or not at all.

Duplicate targets are real. …/github-iac/.claude/worktrees/feat+176-work-class-label-axis emits both HIGH locked-worktree and MEDIUM worktree-nested-in-repository. A reader triages the same path twice and, because the two land in different confidence groups, may not notice they are the same path.

The grouped-list contract also has no way to say "this repository is clean" — the question an operator actually asks of a hygiene tool. It answers "here are 869 observations."

Proposed change

  • Aggregate first. Default output is a per-repository rollup table with counts by finding kind, plus a fleet header. Per-item detail moves behind --detail or into a sidecar file.
  • Group findings by target. One entry per path or branch, carrying every applicable finding, rather than one entry per (finding, target) pair.
  • Emit a per-repository verdict lineCLEAN / N candidates / BLOCKED (evidence gap) — and a fleet verdict at the top.
  • Emit machine-readable JSON alongside the human report, so downstream skills and the execution half consume structure instead of parsing prose. This is also the manifest referenced in repo-fleet-hygiene: the plugin reports per-repository facts a sibling already owns, and cannot perform the fleet-wide cleanup it exists for #2597.

The existing rule that a truncation or evidence gap must be reported per repository rather than once globally should be preserved in the rollup: a reader skimming a summary table must still see that a given repository's absent findings prove nothing.

Acceptance criteria

  • A 19-repository fleet produces a report that fits on a screen by default, with detail available on request.
  • No target appears in more than one finding entry.
  • Every repository carries an explicit verdict, including "clean".
  • A JSON artifact is produced and is sufficient input for the execution half.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions