• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wwu-mmll / confound_corrected_cpm / 35615129980
88%
main: 88%

Build:
Build:
LAST BUILD BRANCH: develop
DEFAULT BRANCH: main
Ran 21 Sep 2026 03:04PM UTC
Jobs 1
Files 37
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 Sep 2026 02:51PM UTC coverage: 87.395% (+0.3%) from 87.058%
35615129980

push

github

NilsWinter
Fix: permutation test reported undefined models as maximally significant

Found by Nils immediately after Phase 9 landed. Running without covariates
still produced p-values for every model, and not harmless ones: the
covariates/full/residuals/increment rows all came out at exactly
1/(n_perms+1) -- the permutation floor, the most significant p-value the test
can report -- for models that do not exist.

The mechanism is the same one Phase 9 fixed in the classification metrics, in
a different file. Those rows are NaN placeholders in cv_results_summary.csv.
Every comparison against NaN is False, so the count of permutations beating the
observed value came out 0, and the +1 correction turned that into the smallest
possible p-value instead of no p-value at all.

_calculate_group_p_value now returns NaN when the observed statistic or the
whole null is undefined. p_values.csv keeps the same shape as
cv_results_summary.csv -- NaN placeholders, consistent with fill-don't-reshape
-- and ReportDataLoader.load_p_values / load_permutations filter them out for
the report, like the other loaders already did.

Root cause of my missing it: two paths read the same results. I filtered the
one through ReportDataLoader and left PermutationManager, which reads
cv_results_summary.csv directly via ResultsManager.load_cv_results. That is the
recurring shape of every silent bug in this package.

Also fixes a fragile assertion I wrote in the Phase 9 tests: it searched the
raw report HTML for "nan", which matches inside the base64 of any embedded
figure. It now strips data URIs first.

Three regression tests, all verified to fail against the unfixed code.
Suite 312 -> 315.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

10 of 10 new or added lines in 2 files covered. (100.0%)

83 existing lines in 9 files now uncovered.

2503 of 2864 relevant lines covered (87.4%)

0.87 hits per line

Coverage Regressions

Lines Coverage ∆ File
58
76.92
0.22% src/cccpm/reporting/section_builders.py
5
94.79
-0.08% src/cccpm/reporting/data_loader.py
5
93.0
0.29% src/cccpm/validation.py
4
96.9
0.1% src/cccpm/results_manager.py
3
96.05
0.38% src/cccpm/cpm_analysis.py
3
97.92
-0.39% src/cccpm/models/linear_model.py
3
77.27
1.08% src/cccpm/reporting/data_insights.py
1
98.28
0.03% src/cccpm/reporting/html_report.py
1
98.99
0.07% src/cccpm/scoring.py
Jobs
ID Job ID Ran Files Coverage
1 35615129980.1 21 Sep 2026 03:04PM UTC 37
87.4
GitHub Action Run
Source Files on build 35615129980
  • Tree
  • List 37
  • Changed 10
  • Source Changed 10
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35615129980
  • ac5eda44 on github
  • Prev Build on develop (#35611611867)
  • Next Build on develop (#35718134144)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc