Repository navigation
v0.6.0 — Judge calibration, parallel reps, audit hardening
What's new
- Judge calibration (#145) — new
simpleaudit.calibrationmodule.label()collects human severity labels in the terminal;calibrate()scores a judge's stored verdicts against human labels or a judge from a different model family, with Wilson intervals, bias, a confusion table and severe misses. A same-family reference is refused unlessallow_same_family=True.leaderboard(),save()andlist_calibrations()included. - Agreement statistics (#145) —
simpleaudit.stats.gwet_ac(Gwet's AC1/AC2) andkrippendorff_alpha. Reports print the reference level counts, AC2 and alpha side by side; the leaderboard ranks by AC2, which stays reliable when most scenarios pass. - Parallel repetitions (#143) —
AuditExperiment(max_parallel_reps=N)runs independent reps ofrun_scenario_repsconcurrently (4 reps: 26 s → 7 s). Default 1 keeps the old behaviour. - Tracing evidence for the judge (#144) — OTLP spans keep
status_messageandexceptionevents.summarize_for_judgeshortens long values instead of cutting the span from the front, so every attribute stays visible, and showsstatus: ERROR/exception:lines for failed spans. Newmax_chars_per_valuekeyword.
Fixes and hardening (#143)
26 audit passes over grading, judges, targets, experiment caching, tracing and docs, each fix with a regression test.
- Security: credentials redacted across span attributes and names, header text, reprs and truncated JSON, provider key formats, tool events and URLs, while the judge still sees the evidence it grades. OTLP auth fails closed. The auditor no longer inherits the judge's key across providers.
- Grading: verdict parsing and severity normalisation hardened (think tags, stray keys, off-ladder values, contradictions, duplicate checklist entries).
SingleTurnAuditorandModelAuditorgrade the same input the same way. Blank auditor probes are retried undermax_retries. - Experiment cache: content-based fingerprints (judge logic, scenario text, dates, attachment bytes). Edited scenarios re-run; old runs are kept as
.stale; resume re-runs only errored scenarios. - Clients:
ModelAuditor.aclose(); owned HTTP clients are closed after each syncrun()and each experiment rep. - Tracing: 16 MiB body cap on the HTTP and gRPC receivers; lowercase OTLP ids.
Behaviour changes
rejudge()now records the new judge in the result metadata and keeps the original underrejudged_from(previously it kept the source file's judge).- Single-turn transcripts carry the documents' text on the user turn.
- Result JSONs add
error_phase,parse_errorandscenario_metadata;ModelStabilityReport.to_dict()addsn_ungraded. - The adaptive-settings sidecar is renamed
adaptive-settings.json; saved files use the normal umask mode.
Process
Development now happens on dev; main only takes pull requests from dev for releases.
Full changelog: v0.5.1...v0.6.0