ci(coverage): measure and report coverage on the Gate, matching ci.yml - #556
Conversation
The Gate carried `coverage: false` and `enable-soft-gate: false` while ci.yml has had `coverage: true` all along. That split was never a decision: `git log -S` traces the Gate's `false` to the M0-001 scaffolding commit that created the workflow, so it is a template default that nobody revisited -- not a considered trade-off like stranske/Counter_Risk's, which carries an explicit "PR Gate is optimized for fast feedback" rationale. The capability is already proven here: this repo's ci.yml payload measures 87.48% over 10,805 statements, so turning it on for the Gate exposes a number that already exists rather than asking for new work. Report-only. coverage_trend.py runs with --soft and always exits 0, so this cannot fail a PR or block a merge; it adds the trend artifact, the hotspot table, and something for Maint Coverage Guard to read. coverage-min set to 80 to match ci.yml. Without it the Gate silently falls back to the reusable workflow's default of 70, so the two surfaces would report different verdicts about the same repository. At 87.48% this reports a pass rather than arriving red. Sequenced AFTER the repaired reporter reached this repo -- verified that main's tools/coverage_trend.py carries BASELINE_KEYS and _resolve_baseline (stranske/Workflows#3251, #3254). Before that, an absent baseline rendered as 0.00% and every run displayed a large fake improvement. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Workflow source neededPR #556 needs either a linked GitHub issue or one valid non-issue Workflow Source before PR metadata automation can manage it safely. Please do one of:
Once a valid source is present, this warning will not be reposted. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour. 📝 WalkthroughWalkthroughThe Gate workflow now measures Python coverage with an 80% soft threshold and non-blocking reporting. The repository also ignores the local ChangesCoverage gate
Local cache exclusion
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This change enables non-blocking coverage reporting and aligns the Gate threshold with the repository’s existing CI settings; no actionable merge-blocking risk remains after normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Workflow state fingerprint for Agents Gate Followups. Do not edit. |
|
Workflow state fingerprint for Agents Verifier. Do not edit. |
What
coverage: trueandenable-soft-gate: trueon the Gate, pluscoverage-min: '80'to matchci.yml.Why this is drift, not a decision
The Gate carried
coverage: falsewhileci.ymlhas hadcoverage: trueall along.git log -Straces the Gate'sfalseto the M0-001 scaffolding commit that created the workflow — a template default nobody revisited.Compare
stranske/Counter_Risk, which carries an explicit rationale in the commit that set it ("PR Gate is optimized for fast feedback. Full coverage enforcement runs on main"). That one is judgement and is being left alone. This one isn't.The capability is already proven here
This repo's own
ci.ymlpayload measures 87.48% over 10,805 statements. Turning it on for the Gate exposes a number that already exists — it asks for no new work.Risk: none
coverage_trend.pyruns with--softand always exits 0. It cannot fail a PR or block a merge. It adds the trend artifact, the hotspot table, and something for Maint Coverage Guard to read.Why
coverage-minis setWithout it the Gate silently falls back to the reusable workflow's default of 70, while
ci.ymluses 80 — two surfaces reporting different verdicts about the same repository. At 87.48% this reports a pass rather than arriving red.Sequencing
Deliberately after the repaired reporter reached this repo — verified that main's
tools/coverage_trend.pycarriesBASELINE_KEYSand_resolve_baseline(stranske/Workflows#3251, #3254). Before that, an absent baseline rendered as0.00%and every run displayed a large fake improvement.🤖 Generated with Claude Code
Summary by CodeRabbit
Tests
Chores