Skip to content

ci(coverage): turn on the reporting leg, and record that the 85% target is already met - #2243

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

ci(coverage): turn on the reporting leg, and record that the 85% target is already met#2243
stranske merged 2 commits 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

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

The finding worth reading

This repo's Gate config carries:

coverage-min: "60" # Target: 85% - tracking issue to be created

Measured from its own coverage payload on 2026-08-25: 86.25%.

The 85% target is already met — and has been, invisibly, for as long as reporting was off. A number nobody publishes cannot show you that you already succeeded.

Risk: none

coverage_trend.py runs with --soft and always exits 0. It cannot fail a PR or block a merge.

What this change does NOT do

The floor stays at 60. Raising it is a gate change and belongs with the baseline work, not with turning reporting on — doing both at once would mean shipping a new red without ever having seen a green report.

Sequencing

Deliberately after stranske/Workflows#3251, #3253 and #3254, which repaired the reporter. Before those, an absent baseline rendered as 0.00% and every run showed a large fake improvement.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 57 minutes.

View limit details

Limit details: You’ve used the included review currently available. Your 84 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: 12809de3-5303-475e-9f72-9c7d1a690260

📥 Commits

Reviewing files that changed from the base of the PR and between 67d4bb2 and ccba0ed.

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

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

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d7c42ccf32

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/pr-00-gate.yml
@stranske

Copy link
Copy Markdown
Owner Author

Hold: merge order matters.

This must land after sync PR #2244, which carries the repaired tools/coverage_trend.py from stranske/Workflows#3251/#3254.

Why: this PR turns on the coverage reporting leg. Until #2244 lands, this repo still has the old reporter, which renders an absent baseline as 0.00% and prints a large fake improvement (Delta +86.25%) on every run. Merging this first would manufacture exactly the misleading output those upstream PRs removed.

No conflict between them — #2244 touches other workflows plus tools/, this touches pr-00-gate.yml only. It is purely a sequence.

#2244 is waiting on its Maint 71 delivery seal, which is normal: sync PRs merge fleet-wide in batches roughly twice a day (last: 2026-08-24T22:16Z). Nothing is stuck.

Measured for reference: this repo is at 86.25%, against its configured floor of 60 — and the # Target: 85% in that same line is already met.

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 (86.25%, Gate payload; reporting enabled by the held PR #2243), floored to 86, 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 (86.25%, Gate payload; reporting enabled by the held PR #2243), floored to 86, 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

Copy link
Copy Markdown
Owner Author

Updated: the floor now moves in this PR too, 60 -> 86.

The first commit here said the floor was deliberately left at 60 because raising one is a gate change that belongs with the baseline work rather than with the PR that first turns reporting on. #2245 has since set config/coverage-baseline.json at measured current, so that precondition is satisfied.

Folded in rather than opened as a second PR because it touches this same file and would have conflicted.

The line also carried # Target: 85% - tracking issue to be created against a measured 86.25% — the target was already met, and had been for as long as reporting was off. That comment is removed with the change; leaving it would point a reader at work that does not exist.

Still held from merge. This repo is the last one without the repaired reporter — its sync PR #2244 is blocked on canary_baseline_evidence_json, whose accepted sources are no-change confirmations, and this repo has a pending change. Merging before the reporter lands would publish a fake Delta +86.25% on every run, which is the output stranske/Workflows#3251 existed to remove.

@stranske
stranske force-pushed the claude/coverage-soft-gate-reporting branch from d7c42cc to 3c41d5a Compare August 26, 2026 03:45
@stranske

Copy link
Copy Markdown
Owner Author

Closer lane update (2026-08-26): prerequisite sync #2244 merged at 2026-08-26T07:47:49Z; main now carries the repaired tools/coverage_trend.py with _resolve_baseline. Scoped automation-retry hold cleared. Resolving the P1 review thread as the named sequencing dependency is satisfied.

Next: rebase this branch onto current main if needed, then proceed with merge/disposition once Gate + required checks report green on head.

stranske and others added 2 commits August 26, 2026 02:49
…et is already met

Only the REPORTING leg was off here: `coverage` defaults to true upstream, but
`enable-soft-gate` defaults to false, so the Gate computed a coverage number on every run
and discarded it -- no trend artifact, no hotspot table, and nothing for Maint Coverage
Guard to read.

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

Measured 86.25% from this repo's own coverage payload on 2026-08-25. The floor here is 60
with the comment "Target: 85% - tracking issue to be created" -- that target is ALREADY
MET, and has been, invisibly, for as long as reporting was off. A number nobody publishes
cannot show you that you already succeeded.

The floor stays at 60 in this change. Raising it is a gate change and belongs with the
baseline work, not with turning reporting on; doing both at once would mean shipping a new
red without ever having seen a green report.

Sequenced deliberately AFTER stranske/Workflows#3251/#3253/#3254, which repaired the
reporter: before those an absent baseline rendered as 0.00% and every run showed a large
fake improvement.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Folded into this PR rather than opened separately, because a second PR would touch the same
file and conflict with this one.

The Gate carried `coverage-min: "60" # Target: 85% - tracking issue to be created` while
measured coverage is 86.25%. Two things wrong with that line at once: the target it calls
untracked was ALREADY MET, and the floor sat 26 points below reality, so it reported a pass
on every input and could not have failed if coverage fell by a quarter. A number nobody
publishes cannot tell you that you already succeeded.

Sequenced deliberately, and the precondition is now met. The first commit on this branch
said the floor was being left at 60 because raising a floor is a GATE change that belongs
with the baseline work, not with the PR that first turns reporting on. #2245 has since set
config/coverage-baseline.json at measured current, so that condition is satisfied and the
floor moves here.

86 rather than 86.25 leaves the jitter tolerance where it belongs -- in the guard's
warn_drop of 1.0 -- and matches the baseline file, so the soft gate's Status line and Maint
Coverage Guard's comparison agree about this repo.

The stale comment is removed with it. Leaving "tracking issue to be created" beside a met
target would keep pointing a reader at work that does not exist.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@stranske
stranske force-pushed the claude/coverage-soft-gate-reporting branch from 3c41d5a to ccba0ed Compare August 26, 2026 07:49
@stranske
stranske merged commit a7c3df9 into main Aug 26, 2026
40 checks passed
@stranske
stranske deleted the claude/coverage-soft-gate-reporting branch August 26, 2026 08:43
@stranske stranske added the verify:compare Runs verifier comparison mode after merge label Aug 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Workflow state fingerprint for Agents Verifier. Do not edit.

@stranske

Copy link
Copy Markdown
Owner Author

Closer disposition (2026-08-26): Agents Verifier compare mode completed with verdict skipped — no acceptance criteria or linked source issue on this coverage-infrastructure PR. Fingerprint-only state is terminal; no Provider Comparison PASS is expected. Chain finalized by closer batch sweep; no issue-closure debt remains.

Workflow run: https://github.com/stranske/Portable-Alpha-Extension-Model/actions/runs/32949241184

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