Skip to content

ci(coverage): turn on the reporting leg the Gate was already paying for - #1598

Merged
stranske merged 1 commit into
mainfrom
claude/coverage-soft-gate-reporting
Aug 26, 2026
Merged

ci(coverage): turn on the reporting leg the Gate was already paying for#1598
stranske merged 1 commit into
mainfrom
claude/coverage-soft-gate-reporting

Conversation

@stranske

Copy link
Copy Markdown
Owner

What

One line: enable-soft-gate: true on the Gate's reusable-10-ci-python call.

Why

Coverage was already measured here — coverage: true was set. Only the reporting leg was off, because enable-soft-gate defaults to false upstream. So every Gate run computed a coverage number and discarded it: no coverage-trend artifact, no hotspot table, and nothing for Maint Coverage Guard to read.

We were paying the cost of measuring and getting none of the value.

Risk: none

The soft gate runs coverage_trend.py with --soft, which always exits 0. It cannot fail a PR or block a merge. It adds artifacts and a job-summary table.

Numbers

Measured 78.01% from this repo's own Gate payload (2026-08-25), against the floor of 75 already configured here. The first reports pass — this is not a latent red.

Sequencing

Deliberately after stranske/Workflows#3251, #3253 and #3254, which repaired the reporter itself. Before those, an absent baseline rendered as 0.00% and every run displayed a large fake improvement (Delta +78.01%). Turning reporting on beforehand would have manufactured exactly that output here.

🤖 Generated with Claude Code

Coverage was already MEASURED on this Gate (`coverage: true`); only the reporting leg was
off, because `enable-soft-gate` defaults to false in reusable-10-ci-python.yml. So every
Gate run computed a coverage number and then threw it away: no coverage-trend artifact, no
hotspot table, and nothing for Maint Coverage Guard to read.

Report-only by construction. The soft gate runs coverage_trend.py with `--soft`, which
always exits 0, so this cannot fail a PR or block a merge.

Measured 78.01% from this repo's own Gate payload on 2026-08-25, against the floor of 75
already configured here, so the first reports pass and this is not a latent red.

Sequenced deliberately AFTER stranske/Workflows#3251/#3253/#3254, which repaired the
reporter itself: before those, an absent baseline rendered as 0.00% and every run showed a
large fake improvement. Turning reporting on beforehand would have manufactured exactly
that here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 13 minutes.

View limit details

Limit details: You’ve used the included review currently available. Your 71 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5f3af02c-4c6e-4a36-b7dd-92c1b5432a23

📥 Commits

Reviewing files that changed from the base of the PR and between 1556844 and da60498.

📒 Files selected for processing (1)
  • .github/workflows/pr-00-gate.yml

Comment @coderabbitai help to get the list of available commands.

@stranske

Copy link
Copy Markdown
Owner Author

Hold: waiting on template sync.

This turns on the coverage reporting leg. It should land only once this repo has the repaired tools/coverage_trend.py from stranske/Workflows#3251/#3254 — check with:

gh api repos/stranske/Manager-Database/contents/tools/coverage_trend.py --jq .content | base64 -d | grep -c _resolve_baseline

Non-zero means the fix has arrived and this is safe to merge.

Why it matters: the old reporter renders an absent baseline as 0.00% and prints a large fake improvement (Delta +78.01%) every run. Merging first would manufacture exactly the output those upstream PRs removed.

Sync PRs land fleet-wide in batches roughly twice daily (last here: #1597, 2026-08-24T22:16Z), so this is normal latency rather than a stall.

Measured for reference: 78.01%, against the floor of 75 already configured here — so the first reports pass.

@stranske

Copy link
Copy Markdown
Owner Author

Hold released. The repaired reporter has propagated to this repo — BASELINE_KEYS = ("line", "coverage"), _resolve_baseline and foreign_file_count are all present in tools/coverage_trend.py on main.

That was the whole condition: with the old reporter this would have published Baseline 0.00% / Delta +78.01% on every run. It will now report the real comparison, or say not configured honestly if no baseline file exists here.

Merging.

@stranske
stranske merged commit 5c2dee8 into main Aug 26, 2026
15 checks passed
@stranske
stranske deleted the claude/coverage-soft-gate-reporting branch August 26, 2026 00:37
stranske added a commit that referenced this pull request Aug 26, 2026
Without config/coverage-baseline.json, tools/coverage_trend.py reports
baseline_status=absent and computes NO delta, and Maint Coverage Guard has nothing to
compare against -- so a coverage regression here is currently undetectable.

Set at MEASURED CURRENT (78.01%, Gate payload; reporting enabled in #1598), floored to 78, with
warn_drop 1.0 absorbing run-to-run jitter. Deliberately not an aspiration: a baseline
above reality is red on arrival and gets switched off, and one far below it can never
fail. Both failure directions are live in this fleet right now -- Fine-Art-Archive
carries 25 against a real 81.45%, Workflows carries 85 against a real 76.72%.

Keyed `line`: coverage_trend.py and coverage_guard.py both accept `line` or
`coverage`, with `line` taking precedence. That mismatch was itself a live defect
until stranske/Workflows#3251.

This is a ratchet, not a target: raise it as coverage rises.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
stranske added a commit that referenced this pull request Aug 26, 2026
)

Without config/coverage-baseline.json, tools/coverage_trend.py reports
baseline_status=absent and computes NO delta, and Maint Coverage Guard has nothing to
compare against -- so a coverage regression here is currently undetectable.

Set at MEASURED CURRENT (78.01%, Gate payload; reporting enabled in #1598), floored to 78, with
warn_drop 1.0 absorbing run-to-run jitter. Deliberately not an aspiration: a baseline
above reality is red on arrival and gets switched off, and one far below it can never
fail. Both failure directions are live in this fleet right now -- Fine-Art-Archive
carries 25 against a real 81.45%, Workflows carries 85 against a real 76.72%.

Keyed `line`: coverage_trend.py and coverage_guard.py both accept `line` or
`coverage`, with `line` taking precedence. That mismatch was itself a live defect
until stranske/Workflows#3251.

This is a ratchet, not a target: raise it as coverage rises.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@stranske stranske added the verify:compare Runs verifier comparison mode after merge label Sep 2, 2026
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Workflow state fingerprint for Agents Verifier. Do not edit.

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

Labels

verify:compare Runs verifier comparison mode after merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant