Coverage-Untergrenze 85 % in tools/.coveragerc, gegen beobachtete 87,0 % (4.7.2, schließt #10, eröffnet #51)
CI / verify (push) Successful in 57s
Release / release (push) Successful in 38s

Files changed:
- .gitea/workflows/ci.yml
- CHANGES.md
- EVALS.md
- VERSION
- tools/.coveragerc
This commit is contained in:
2026-09-04 19:19:38 +02:00
parent fe55ad2a9c
commit e00eae08e8
5 changed files with 88 additions and 19 deletions
+22 -4
View File
@@ -11,10 +11,27 @@
# measure the stack's tests - so an addopts entry would break the plain
# `pytest -q` that every local run and the CI "Tests" step use.
#
# No `fail_under` yet, on purpose: Gitea #10 sets the threshold in a separate,
# later commit, once the measured number exists to justify it. A threshold
# picked before the number is either too low to bite or too high to survive the
# next honest commit - and the second kind gets lowered rather than earned.
# `fail_under` lives here rather than as a `--cov-fail-under` flag in the CI
# step, so the number sits next to the reasoning that produced it and applies to
# any `--cov` run, not just the one CI happens to write.
#
# 85, against a measured 87.0% (CI run 163, 6498 statements, 975 tests). Gitea
# #10 held this back until the number had been watched: the first measurement
# was 86.9% of 5105 statements over 730 tests (CI run 87), and between the two
# the measured code grew by a quarter and the suite by a third while the quota
# moved a tenth of a point. That stability is what the threshold rests on.
#
# The two points of headroom are not slack. They are the room the report's own
# taxonomy asks for: a new thin Typer wrapper lowers the total without anything
# having got worse, because its logic is tested beside it (see EVALS.md § "How
# much of the stack the suite reaches"). A threshold at the measured number
# would go red on exactly that commit, and a threshold that goes red for a
# non-reason gets lowered rather than earned - which is the failure mode #10
# existed to avoid, arriving from the other side.
#
# What this number does *not* do is close the genuine gaps - provenance_cmd.py,
# migrate_cmd.py, type_resolver.py. It freezes the state that was reached; the
# gaps are their own work, tracked separately.
[run]
source = chemenu
omit =
@@ -23,3 +40,4 @@ omit =
[report]
show_missing = True
precision = 1
fail_under = 85