diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72d0638..0a9699a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,12 @@ jobs: # run as part of the main Test step below. - name: Test - run: python -m pytest --cov=agents_shipgate --cov-report=term-missing --cov-fail-under=75 + # v0.21 (E7): bumped from 75 → 85. Actual aggregate coverage on + # current main is ~88%, so the gate is +10pp tighter with ~3pp + # headroom for day-to-day movement. The bump catches the next + # time a refactor lands materially less-covered code without + # a corresponding test pass. + run: python -m pytest --cov=agents_shipgate --cov-report=term-missing --cov-fail-under=85 - name: Build package run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d8b3973..b5e15b1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,10 +31,12 @@ jobs: python -m pip install "uv==0.11.7" - name: Lint and test + # v0.21 (E7): coverage threshold bumped from 75 → 85, matching + # CI gate so release cannot bypass the tighter floor. run: | python -m ruff check . python -m compileall -q src tests - python -m pytest --cov=agents_shipgate --cov-report=term-missing --cov-fail-under=75 + python -m pytest --cov=agents_shipgate --cov-report=term-missing --cov-fail-under=85 - name: Build package run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 8307066..95e309c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## Unreleased +- **v0.21 — CI coverage gate raised from 75% → 85% (E7 from round-4 review).** + Both `.github/workflows/ci.yml` and `.github/workflows/release.yml` now + pass `--cov-fail-under=85`. Aggregate coverage on `main` at the time of + the bump is ~88%, so the gate is +10pp tighter with ~3pp headroom for + day-to-day movement. The bump catches the next time a refactor lands + materially less-covered code without corresponding tests. No source + change required to land — the gate is simply closer to the actual + signal. Per-file coverage is not enforced; the aggregate floor only + rises in step with what's already proven on `main`. + - **v0.20 — third-party adapter entry-point discovery (E4 from round-3 review).** Opens the same extension surface for adapters (input loaders) that M5 already opened for check plugins. Discovery is gated by the existing