Feature: Coverage threshold enforcement The project enforces a minimum 96.5% code coverage threshold. This feature validates that the coverage configuration and nox session are properly set up to enforce this requirement. @tdd_issue @tdd_issue_4227 Scenario: Coverage threshold is configured at 96.5% in noxfile Given the noxfile.py exists When I parse the COVERAGE_THRESHOLD constant from noxfile.py Then the coverage threshold should be 96.5 Scenario: Coverage report session uses fail-under flag Given the noxfile.py exists When I read the coverage_report session source from noxfile.py Then the session should contain a fail-under argument matching the threshold Scenario: Coverage run configuration has branch coverage enabled Given the pyproject.toml exists When I parse the coverage run configuration from pyproject.toml Then branch coverage should be enabled Scenario: Coverage run configuration measures src directory Given the pyproject.toml exists When I parse the coverage run configuration from pyproject.toml Then the source list should include "src" Scenario: Coverage data file is stored under build directory Given the pyproject.toml exists When I parse the coverage run configuration from pyproject.toml Then the data file should be under the build directory Scenario: Coverage HTML report directory is under build Given the pyproject.toml exists When I parse the coverage html configuration from pyproject.toml Then the html directory should be under the build directory Scenario: Coverage XML report path is under build Given the pyproject.toml exists When I parse the coverage xml configuration from pyproject.toml Then the xml output should be under the build directory Scenario: CI workflow coverage job references nox session Given the CI workflow file exists When I parse the coverage job from the CI workflow Then the coverage job should run nox -s coverage_report Scenario: CI workflow coverage job depends on unit_tests Given the CI workflow file exists When I parse the coverage job from the CI workflow Then the coverage job should depend on unit_tests Scenario: Coverage report session emits CI-parseable summary on success Given the noxfile.py exists When I read the coverage_report session source from noxfile.py Then the session should emit a COVERAGE OK summary line Scenario: Coverage report session emits CI-parseable summary on failure Given the noxfile.py exists When I read the coverage_report session source from noxfile.py Then the session should emit a COVERAGE FAILED summary line