Skip to content

v0.3.0 — 10 audit categories, statistical rigor

Choose a tag to compare

@aidless aidless released this 10 Jul 14:20
· 63 commits to main since this release

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.10 emits 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.10 with p < 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,
    \caption should appear BELOW \includegraphics.
  • Caption content (MED, opt-in): each caption must mention at least
    one of the per-paper c9_figure_keywords.
  • Figure referenced (MED): every \label{fig:...} must be
    referenced by \ref / \autoref / \cref in 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

  1. 10 audit categories (C1..C10) — closes the v0.3.0 vision.
  2. 176 unit tests pass (was 122 in v0.2.0). Test counts: C8 +18,
    C9 +16, C10 +20.
  3. 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).
  4. 3 new per-paper opt-in configs: c8_claimed_effects,
    c9_figure_keywords, c10_reproducibility_claims. Empty list
    disables the corresponding sub-checks.
  5. §12 + §13 engineering notes document the design rationale
    (~1100 lines in engineering_notes_verify_template.md).
  6. Bug 6 anchor refresh — paper_configs.py Paper 5's
    c2_section_pattern now 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 caught

c8_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.