You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Isotonic calibrator: pool tied covariates before PAVA.src/aura/calibration.py
did not pre-pool equal confidence values, so on duplicate covariates the fit was not
L2-optimal (e.g. returned 0.5 instead of 0.333 on a [0,1,0] tie). Now pre-pools
ties before the pool-adjacent-violators pass. The paper's published ECE/AUC are unchanged — real-data ties shift ECE by < 1e-6, below the reported 4-dp
precision, and the figure reproduce-checks still pass bit-exactly. Regression test added.
Added
Public API surface exported from aura.__init__: IsotonicConfidenceCalibrator, conformal_prune_certificate, certified_lod_plan, and related symbols.
CLI error boundaries: main() wraps dispatch, emitting aura: error: … with exit 1
on bad input (AURA_DEBUG=1 re-raises); glTF .bin buffer round-trip decode test.
matplotlib/imageio/pillow moved to the dev extra; CI installs .[dev].
Changed
Certified LOD — Bonferroni over the non-trivial levels only (tighter, still valid).
The certified LOD ladder (src/aura/lod.py) previously split α over all K levels
(α' = α/K = 0.025), but the full-keep (f = 1.00) level is a deterministic
statement (ε = 0, nothing pruned, no interval) that consumes no error budget. By the
union bound only the R = K−1 = 3non-trivial random levels need correcting, so α' = α/R = α/3 ≈ 0.0333. This is strictly tighter — the family-wise 1−α = 0.9
guarantee is unchanged, but every non-trivial ε_k shrinks slightly (e.g. Truck@10% 0.3342 → 0.3340, Room@10% 0.4432 → 0.4429). Regenerated outputs/lod_certified.json
through experiments/lod_certified_eval.py; all 16 bounds still hold (12 non-trivial
4 trivial) on the disjoint eval halves, zero violations. Propagated to the paper
(Table 6, Fig 9, family-wise paragraph), README, docs/P4_CERTIFIED_LOD.md, REPRODUCE.md,
the certified_lod publication gate (now checks α' = α/R), and the LOD unit tests.