Skip to content

Non-Functional Requirements

NFR-1: Performance

ID Requirement Target Status
NFR-1.1 Full CRR pipeline at 100K exposures < 2 seconds Met (~1.7s)
NFR-1.2 Full CRR pipeline at 1M exposures < 20 seconds Met
NFR-1.3 Interactive analysis response time < 500ms Met
NFR-1.4 Memory efficiency for 1M+ portfolios < 4 GB Met

NFR-2: Correctness

ID Requirement Target Status
NFR-2.1 Acceptance test pass rate (CRR + Basel 3.1 + Comparison) 100% 100% (169 CRR + 212 B31 + 60 comparison + 60 stress = 501 tests)
NFR-2.2 Hand-calculated expected outputs Full coverage Done (CRR + Basel 3.1 scenarios)
NFR-2.3 Numerical precision vs hand calcs < 0.01% error Met
NFR-2.4 Regulatory article traceability Full coverage Done

NFR-3: Reliability

ID Requirement Target Status
NFR-3.1 Total test coverage > 5,000 tests Met (5,034 total: 4,232 unit, 501 acceptance, 145 contracts, 122 integration, 34 benchmarks)
NFR-3.2 Zero data loss (immutable pipeline) Guaranteed Met
NFR-3.3 Graceful invalid data handling All data quality issues Met
NFR-3.4 Observable pipeline runs — per-run correlation id, stage timings, text/JSON output Observability spec Met

NFR-4: Maintainability

ID Requirement Target Status
NFR-4.1 Full type annotations 100% Met
NFR-4.2 Protocol-based interfaces All 6 stages Met
NFR-4.3 Ruff linting zero violations (incl. G/LOG/T20 for logging hygiene) CI-enforced Met
NFR-4.4 Module-level docstrings All modules Met
NFR-4.5 Stage modules declare a module logger (enforced by arch_check + contract test) All engine stages Met

NFR-5: Extensibility

ID Requirement Target Status
NFR-5.1 New approaches via Protocol Pluggable Met
NFR-5.2 New framework via config factory Addable Met
NFR-5.3 Domain logic as composable typed functions (no Polars namespaces) .pipe(fn) composition Met

NFR-6: Documentation

ID Requirement Target Status
NFR-6.1 Zensical documentation site Comprehensive Met (100+ pages)
NFR-6.2 Marimo workbooks All CRR scenarios Met
NFR-6.3 Regulatory reference links All calculations Met

Success Metrics

Metric Target How Measured
Regulatory Accuracy 100% acceptance test pass rate Automated test suite
Performance < 2s/100K, < 20s/1M pytest-benchmark
Test Coverage > 5,000 tests pytest --co -q (5,034 total)
Documentation All public APIs documented Zensical site review
Transition Readiness Full Basel 3.1 before 1 Jan 2027 B31 acceptance tests