Skip to content

chore: hold the coverage gate at 100% - #79

Merged
tschm merged 6 commits into
mainfrom
chore/coverage-gate-100
Aug 12, 2026
Merged

chore: hold the coverage gate at 100%#79
tschm merged 6 commits into
mainfrom
chore/coverage-gate-100

Conversation

@tschm

@tschm tschm commented Aug 12, 2026

Copy link
Copy Markdown
Member

Coverage is already 100%, so this raises the gate to match it. No tests were added,
because there is nothing uncovered to add them for.

Name                             Stmts   Miss Branch BrPart  Cover
src/cvx/quadprog/__init__.py         5      0      0      0   100%
src/cvx/quadprog/_base.py           26      0      2      0   100%
src/cvx/quadprog/_pdas.py          108      0     28      0   100%
src/cvx/quadprog/_qr.py             57      0     12      0   100%
src/cvx/quadprog/_setup.py          34      0     18      0   100%
src/cvx/quadprog/_solve.py         106      0     26      0   100%
src/cvx/quadprog/_steps.py          52      0     16      0   100%
src/cvx/quadprog/_structure.py      28      0      8      0   100%
src/cvx/quadprog/_sweep.py          87      0     18      0   100%
src/cvx/quadprog/_threads.py       104      0     38      0   100%
TOTAL                              607      0    166      0   100%
1131 passed

The change

python.mk defaults COVERAGE_FAIL_UNDER to 90. That is the right floor for a repo
climbing towards coverage; here it permitted ten points of silent regression. The root
Makefile — repo-owned, and already where MKDOCS_EXTRA_PACKAGES,
LICENSE_IGNORE_PACKAGES and the mutation override live — now sets it to 100.

Placed before include .rhiza/rhiza.mk, so python.mk's ?= sees it already defined,
and written as = rather than ?= for the reason the LICENSE_IGNORE_PACKAGES block
directly below documents: a ?= against a variable the template already defines is a
silent no-op.

Verified — pytest-cov's summary line changes from Required test coverage of 90% reached
to Required test coverage of 100% reached, which is what proves the override actually
reaches the flag.

No workflow passes COVERAGE_FAIL_UNDER on the command line, so nothing overrides this
in CI.

Also corrected

A comment in pyproject.toml claimed the gate was "90%", set by pytest.ini, over "all
three modules". All three parts were wrong: it is set via COVERAGE_FAIL_UNDER (not
pytest.ini), it is now 100, and the package has been ten modules for a while.

What this does and does not buy

It is a ratchet against untested code arriving — nothing more. Line-and-branch coverage
says every line ran, not that any assertion would have noticed if it misbehaved. make mutation is the gate that asks the second question, and it remains the more informative
one for a numerical package.

🤖 Generated with Claude Code

Copilot AI lite review requested due to automatic review settings August 12, 2026 18:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR tightens the project’s test coverage enforcement by raising the coverage fail-under threshold to match the repo’s current 100% coverage, and updates related documentation comments to reflect how the gate is configured.

Changes:

  • Set COVERAGE_FAIL_UNDER = 100 in the root Makefile so the Rhiza python.mk coverage gate enforces 100%.
  • Updated pyproject.toml commentary to reflect the gate source (COVERAGE_FAIL_UNDER) and the current module count.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
Makefile Overrides template default coverage threshold to enforce 100% coverage.
pyproject.toml Updates explanatory comments about how coverage/test-layout expectations are enforced.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread pyproject.toml
Comment on lines +168 to +170
# provided here by the coverage gate instead, which the root Makefile sets to 100%
# via COVERAGE_FAIL_UNDER, and which the suite meets at 100% of statements *and*
# branches across all ten modules -- a stronger check than the presence of a file
Comment thread Makefile
Comment on lines +11 to +14
# python.mk defaults COVERAGE_FAIL_UNDER to 90. That is a sensible floor for a repo
# climbing towards coverage; here it is ten points of silent regression, because all
# 607 statements and 166 branches across the ten modules are covered today. A gate
# below the actual number does not measure anything -- it only says when to panic.
@tschm
tschm merged commit fea8aee into main Aug 12, 2026
60 checks passed
@tschm
tschm deleted the chore/coverage-gate-100 branch August 13, 2026 08:12
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.

2 participants