Context
calibration.py sets a module-level warnings.filterwarnings("ignore") and compute_ivs_vectorized catches bare Exception into NaN. Failed slices are skipped. Convenient, and exactly how data problems become invisible.
Proposal
- Explicit failure semantics:
mode="strict" | "warn" | "lenient" on the ingestion/fit entry points. Strict: bad input raises. Warn (default): current behaviour plus recording. Lenient: filtered and recorded. Nothing disappears silently -- rejected quotes and failed inversions become counts/locations on the fit report.
- Remove the blanket warnings filter; catch only the specific py_vollib exceptions.
Acceptance criteria
- Strict mode raises on the first bad quote/slice with location
- Rejection accounting flows into the fit report in all modes
- No module-level warning suppression remains
Context
calibration.py sets a module-level
warnings.filterwarnings("ignore")and compute_ivs_vectorized catches bareExceptioninto NaN. Failed slices are skipped. Convenient, and exactly how data problems become invisible.Proposal
mode="strict" | "warn" | "lenient"on the ingestion/fit entry points. Strict: bad input raises. Warn (default): current behaviour plus recording. Lenient: filtered and recorded. Nothing disappears silently -- rejected quotes and failed inversions become counts/locations on the fit report.Acceptance criteria