Fit distance→confidence knots from same/different identified pairs (+ match_decisions when present)
calibrate_confidence uses fitted JSON when present; otherwise legacy empirical curve
Scripts: fit_confidence_calibration.py, rescore_face_quality.py (sharpness backfill without re-detect)
Docs: docs/FACE_CONFIDENCE_CALIBRATION.md; tests in tests/test_confidence_calibration_phase3.py
Test plan
pytest tests/test_confidence_calibration_phase3.py (+ Phase 1/2) with --noconftest
CI green
After merge on DEV: rescore_face_quality.py (dry-run then full); optional fit_confidence_calibration.py --dry-run
## Summary
- Fit distance→confidence knots from same/different identified pairs (+ `match_decisions` when present)
- `calibrate_confidence` uses fitted JSON when present; otherwise legacy empirical curve
- Scripts: `fit_confidence_calibration.py`, `rescore_face_quality.py` (sharpness backfill without re-detect)
- Docs: `docs/FACE_CONFIDENCE_CALIBRATION.md`; tests in `tests/test_confidence_calibration_phase3.py`
## Test plan
- [x] `pytest tests/test_confidence_calibration_phase3.py` (+ Phase 1/2) with `--noconftest`
- [ ] CI green
- [ ] After merge on DEV: `rescore_face_quality.py` (dry-run then full); optional `fit_confidence_calibration.py --dry-run`
Support distance→confidence knots from identified pairs and match_decisions, keep legacy curve until a knots file is applied, and re-score face quality without re-detecting.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
match_decisionswhen present)calibrate_confidenceuses fitted JSON when present; otherwise legacy empirical curvefit_confidence_calibration.py,rescore_face_quality.py(sharpness backfill without re-detect)docs/FACE_CONFIDENCE_CALIBRATION.md; tests intests/test_confidence_calibration_phase3.pyTest plan
pytest tests/test_confidence_calibration_phase3.py(+ Phase 1/2) with--noconftestrescore_face_quality.py(dry-run then full); optionalfit_confidence_calibration.py --dry-run