Skip to content

obs: evolve the size-report PR comment into a quiet quality-delta comment + metric history on main #1424

Description

@thymikee

Part of #1412 (Track C). Depends on the repo-health snapshot issue.

Context

scripts/size-report.mjs already does the right thing: one marker-tracked sticky comment, updated in place. Evolve it into the single quality-delta surface instead of adding new bots. Hard requirement from the maintainer: do not drown people in information.

Deliverables

  • Main-branch history: on every push to main, append the repo-health snapshot to a JSONL store (artifact chain, dedicated branch, or gh-pages — pick one and justify briefly in the PR).
  • PR comment (evolved size-report): shows ONLY rows whose delta vs the main baseline crosses a per-metric threshold (size bytes, changed-line coverage, ratchet values, new fallow suppressions, slow-test budget breaches, redundant-edge count). When nothing crosses, the entire comment collapses to one line: "No notable quality deltas."
  • Every shown row links the owning gate/fix command (e.g. a suppression row points at .fallowrc.json and the finding).
  • Thresholds live in one config block; the comment never exceeds ~20 lines — overflow summarizes ("+3 more, see job summary").

Acceptance

  • One sticky comment per PR, updated in place (reuse COMMENT_MARKER machinery).
  • A PR with no notable deltas produces the one-line form.
  • History survives force-push-free main flow and is queryable by commit sha.

Review amendments (2026-07-27)

  • Specify fork-PR behavior explicitly: fork PRs have no secrets and read-only tokens — degrade to job-summary output (no comment) rather than failing.
  • Serialize concurrent main-history writes: two merges racing must not lose an entry (workflow concurrency group, or compare-and-swap on the history ref with one retry). State the chosen mechanism in the PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions