Skip to content

v0.8.0 — the trust release

Choose a tag to compare

@Mormolykos Mormolykos released this 19 Jul 17:01

Never judge the wrong number, never be un-greppable.

Canonical record contract

Adapters are now the ONLY place log columns map to canonical keys — exact-name matching, never substring. eval_loss can no longer be mistaken for training loss; unknown columns (e.g. grad_accum) are dropped instead of misjudged. --map CANON=COLUMN overrides the table when your logs are weird, and doctor prints column provenance for generic logs (COLUMNS: loss<-'train_loss').

Stable rule IDs

Every finding now carries a permanent ID — TP-DIVERGE, TP-DEAD-RUN, TP-ZERO-LR, TP-STEP-CLIFF, … — documented in RULES.md (what fires it, the threshold, and what it does NOT mean).

⚠️ BREAKING for text-parsers: output lines now include the ID ([FAIL] TP-DIVERGE: ...). Parse --json instead — that is what it is for. Preflight IDs renamed to TP-PRE-*.

Honest PASS

TP-PASS now states which check groups actually ran and which were skipped for lack of data: "Ran: loss-shape, divergence, dead-run, grad-norm, lr. Skipped (no data): timing." The tool no longer implies stability of anything it did not measure.

Machine-readable output

--json on epoch / doctor / compare: one JSON document — schema_version: 1, trainproof_version, full reports with rule IDs, worst verdict. Exit codes unchanged.

Also

  • HF adapter now captures eval_loss records (no rule uses them yet — that is the next release).
  • New README section: For AI coding agents — if your agent checks training projects, trainproof doctor . --json is built for it.
  • 52 tests passing. No rule threshold changes; all gallery verdicts identical to v0.7.