v1.31.0 — Runtime Contract Closure
Runtime Contract Closure
Closes the remaining auth, coupling, and extraction-readiness gaps.
Dashboard Authentication
/dashboardnow requires API key (header or?key=query param)- Unauthenticated access → minimal login page (no HTML leak)
Public API Discipline
- Settlement service no longer accesses
._storageprivate attribute - Archival API uses
get_storage_for_archival()public method ControlPlaneStateServiceexposes settlement + archival public methods
Extraction Readiness
OperatorReportServicegetssettlement_serviceat construction time- No post-init private attribute mutation in orchestrator
Stats
- 1631 tests pass, 4 skipped
- 14 deployment contract tests (4 new)
Full Phase 4 Summary (v1.25.1 → v1.31.0)
| Version | Focus |
|---|---|
| v1.25.1 | Production hardening (rate limits, persistence, cache) |
| v1.26.0 | CI invariants, retention, policy migration |
| v1.27.0 | Operator REST API + archival |
| v1.28.0-1 | Dashboard + settlement foundation + regression fixes |
| v1.29.0 | Settlement workflow closure (persistence, retry, dashboard) |
| v1.30.0 | Deployment contract hardening (deny-by-default, config) |
| v1.31.0 | Runtime contract closure (auth, public API, extraction) |