# Validation Strategy

Validation is split into two layers.

## Deterministic validation suite

`tests/validation/` contains scenario fixtures for:

- bond pricing and accrued-interest edge cases
- callable and floating-rate analytics
- curve conversions and calibration
- portfolio analytics and ETF workflows
- engine scheduler and reactive flows

## External-reference corpus

`tests/test_validation_corpus.py` consumes `tests/fixtures/golden/validation_corpus.json`.

- The corpus is local and deterministic.
- It records the upstream repository, branch, commit, and generation date in fixture metadata.
- It is intentionally small and focused on high-value pricing and portfolio workflows.
- Accepted divergences are documented inline in the fixture when the Python implementation deliberately optimizes for internal coherence rather than exact path-by-path reproduction.

## Tolerances

- Tight scalar tolerances are used for deterministic bond and curve cases.
- Exact or near-exact `Decimal` tolerances are used for many portfolio aggregates.
- Wider explicit tolerances are reserved for model-driven workflows such as callable OAS and floating-rate discount-margin checks.
