The calibration gate is judged against available headroom, not a fixed absolute gap: recovered = (planted − other) / (1 − other), with a small absolute floor
panel.py calibration gate: headroom = 1 − other; recovered = (planted − other)/headroom. Admit iff recovered >= calibration_min_recovered (default 0.5) AND (planted − other) >= calibration_min_gap (default 0.125, was 0.5). The floor stays because a ratio alone would admit a 4pp gap over a bare arm at 0.95. headroom <= 0 refuses as control_set/no_headroom, a control-SET failure. Both thresholds and the rule name 'headroom-relative-v1' ride in manifest.calibration.
- Current stage
- superseded