Summary
Adds a 95% combined coverage floor enforced after unit and integration coverage are merged in CI.
pyproject.toml — adds [tool.coverage.run] and [tool.coverage.report] with fail_under = 95 (also applies to local uv run coverage report)
test.yml — splits the coverage-report job into show + enforce steps; reads fail_under from pyproject.toml so the threshold is defined in one place
README.md — documents the floor and how to check coverage locally
Combined coverage is already at 95%, so this should not require new tests.
Test plan
CI coverage-report job passes on this PR
Enforce step logs the threshold from pyproject.toml and reports "Coverage floor met."
Summary
Adds a 95% combined coverage floor enforced after unit and integration coverage are merged in CI.
pyproject.toml — adds [tool.coverage.run] and [tool.coverage.report] with fail_under = 95 (also applies to local uv run coverage report)
test.yml — splits the coverage-report job into show + enforce steps; reads fail_under from pyproject.toml so the threshold is defined in one place
README.md — documents the floor and how to check coverage locally
Combined coverage is already at 95%, so this should not require new tests.
Test plan
CI coverage-report job passes on this PR
Enforce step logs the threshold from pyproject.toml and reports "Coverage floor met."
Configure fail_under in pyproject.toml and read it in the coverage-report workflow so the threshold stays in one place.
Co-authored-by: Cursor <cursoragent@cursor.com>
Unit and integration jobs each produce partial coverage; pytest-cov reads fail_under from pyproject.toml unless overridden with --cov-fail-under=0.
Co-authored-by: Cursor <cursoragent@cursor.com>
Clarify that unit and integration jobs skip the floor check because they only produce partial coverage.
Co-authored-by: Cursor <cursoragent@cursor.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Adds a 95% combined coverage floor enforced after unit and integration coverage are merged in CI.
pyproject.toml — adds [tool.coverage.run] and [tool.coverage.report] with fail_under = 95 (also applies to local uv run coverage report)
test.yml — splits the coverage-report job into show + enforce steps; reads fail_under from pyproject.toml so the threshold is defined in one place
README.md — documents the floor and how to check coverage locally
Combined coverage is already at 95%, so this should not require new tests.
Test plan
CI coverage-report job passes on this PR
Enforce step logs the threshold from pyproject.toml and reports "Coverage floor met."
Test Coverage Report:
Enforce 95% combined coverage floor in CIto Enforce 90% combined coverage floor in CI