Repository navigation
v0.3.0 — 10 audit categories, statistical rigor
v0.3.0 — 10 audit categories, statistical rigor
TLDR. Closes the v0.3.0 vision: all 10 audit categories (C1–C10) are implemented. Three new categories — C8 (statistical-power), C9 (figure-caption), C10 (reproducibility) — bring scientific-rigor checks alongside the long-standing stylistic-rigor checks.
176 tests pass, 12/12 meta-test bugs caught, 27 commits since v0.1.1.
🔬 What's new
C8 — Statistical-power audit
For each c8_claimed_effects entry (per-paper opt-in config), the auditor:
- Re-derives Cohen's d from the matching
\begin{tabular}row.
A mismatch|d_actual - d_claimed| > 0.10emits a HIGH finding. - Computes post-hoc power via
Φ(|d|·√(n/2) − z_{α/2}).
Below 0.50 → underpowered (MED, recommend n×4).
Above 0.99 with small claimed d → suspiciously overpowered (MED). - Scans for "significantly different" claims in the body.
Missing p-value within 200 chars → MED.
Internally inconsistent (d < 0.10withp < 0.001) → MED.
C9 — Figure-caption audit
Four sub-checks (sub-checks 1, 2, 4 always run; sub-check 3 opt-in):
- Caption exists (HIGH): figure without
\caption{...}is undocumented. - Caption placement (MED): per IEEE/ACM/TMLR convention,
\captionshould appear BELOW\includegraphics. - Caption content (MED, opt-in): each caption must mention at least
one of the per-paperc9_figure_keywords. - Figure referenced (MED): every
\label{fig:...}must be
referenced by\ref/\autoref/\crefin the body.
C10 — Reproducibility audit
Three sub-checks (sub-checks 1, 3 always run; sub-check 2 opt-in):
- Availability statement (HIGH if absent, MED if future-tense):
the paper must say where the code/data can be obtained. - Statement consistency (MED, opt-in via
c10_reproducibility_claims):
SOTA claim coupled with "we do not release" is flagged. - Reproducibility metadata (LOW): missing hyperparameters, random
seed, hardware spec, or library version.
📋 Highlights
- 10 audit categories (C1..C10) — closes the v0.3.0 vision.
- 176 unit tests pass (was 122 in v0.2.0). Test counts: C8 +18,
C9 +16, C10 +20. - 12/12 meta-test bugs caught — every category now has a
regression-injection test that re-introduces a specific bug and
asserts that the targeted test fails (catches the regression). - 3 new per-paper opt-in configs:
c8_claimed_effects,
c9_figure_keywords,c10_reproducibility_claims. Empty list
disables the corresponding sub-checks. - §12 + §13 engineering notes document the design rationale
(~1100 lines inengineering_notes_verify_template.md). - Bug 6 anchor refresh —
paper_configs.pyPaper 5's
c2_section_patternnow correctly accepts\subsection{Statistical Protocol}(not just\section{Power analysis}).
📦 Upgrade from v0.2.0
git clone https://github.com/aidless/tmaudit.git
cd tmaudit
git checkout v0.3.0
pip install -e .[dev]
python gen_verify_scripts.py --paper 1 # regenerate per-paper verify
python _check_all_regressions.py # confirm 12/12 caughtc8_claimed_effects, c9_figure_keywords, and c10_reproducibility_claims
are now part of CHECKS_CONFIG. Empty defaults are written for Papers 2/4;
example entries exist for Papers 1/3/5 (C8) and Papers 1/5 (C9 / C10).
See RELEASE_NOTES_v0.3.0.md for the full release notes and
CHANGELOG.md for the commit-by-commit history.