Skip to content

Raise CI coverage gate 75 → 85 (v0.21 E7)#116

Merged
pengfei-threemoonslab merged 1 commit into
mainfrom
feat/v021-coverage-threshold-85
May 23, 2026
Merged

Raise CI coverage gate 75 → 85 (v0.21 E7)#116
pengfei-threemoonslab merged 1 commit into
mainfrom
feat/v021-coverage-threshold-85

Conversation

@pengfei-threemoonslab
Copy link
Copy Markdown
Contributor

Summary

Round-4 architecture-review item E7: bump the CI coverage gate from --cov-fail-under=75 to --cov-fail-under=85 in both .github/workflows/ci.yml and .github/workflows/release.yml. No source change. Aggregate coverage on current main measures 88.09% (re-confirmed locally on this branch), so the gate is +10pp tighter with ~3pp headroom for day-to-day movement.

The bump is a "free signal" upgrade — the gate moves closer to actual signal without forcing any test additions to land it. It catches the next time a refactor lands materially less-covered code without corresponding tests.

Why now

  • Round-3 review (v0.19) flagged: "Coverage threshold still 75% — bump is essentially free (actual 87.87%)."
  • Round-4 review (v0.20, current main) confirmed: actual coverage is now 88.09%; threshold is still 75%.
  • Two reviews of headroom proven on main; time to lock the floor closer to actual.

What changed

  • .github/workflows/ci.yml:48--cov-fail-under=7585
  • .github/workflows/release.yml:37 — same bump so the release path cannot bypass the tighter floor
  • CHANGELOG.md — Unreleased entry documenting the bump
  • No src/ change

Per-file coverage is not enforced — only the aggregate. Adding a lower-covered module is fine as long as the aggregate stays ≥ 85%.

Verification

  • python -m pytest --cov=agents_shipgate --cov-report=term-missing --cov-fail-under=85 -q exits 0; coverage 88.09%
  • python -m ruff check . clean
  • No source under src/ touched

Headroom note

With the threshold at 85 and actual at 88.09%, a single refactor could theoretically drop coverage by 3pp before the gate fires. If that becomes a recurring problem in practice, the next move is per-file thresholds (or --cov-fail-under-per-file), not lowering the aggregate.

🤖 Generated with Claude Code

Round-4 review item E7: "Threshold bump to 85% (free signal — actual
is 87.87%)". Actual aggregate coverage on current `main` measures
88.09% (re-confirmed locally), so the gate is +10pp tighter with ~3pp
headroom for day-to-day movement. No source change needed to land;
the gate is simply closer to the actual signal.

Changes:
- ``.github/workflows/ci.yml`` line 48: ``--cov-fail-under=75`` -> ``85``
- ``.github/workflows/release.yml`` line 37: same bump so the release
  path cannot bypass the tighter floor
- ``CHANGELOG.md`` Unreleased entry documenting the bump

The bump catches the next time a refactor lands materially
less-covered code without corresponding tests. Per-file coverage is
not enforced; teams adding lower-covered modules must keep the
aggregate >= 85.

Verification:
- ``python -m pytest --cov-fail-under=85 -q`` exits 0; coverage 88.09%
- ``python -m ruff check .`` clean
- No source under ``src/`` touched

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@pengfei-threemoonslab pengfei-threemoonslab merged commit bf59939 into main May 23, 2026
1 check passed
@pengfei-threemoonslab pengfei-threemoonslab deleted the feat/v021-coverage-threshold-85 branch May 23, 2026 05:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant