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 |