Architecture Decision Records¶
This section records the standing architecture decisions that shape SCPN Control. Each record names the decision, the reason for it, the alternatives that were considered, and the consequences for code, tests, validation, and public claims.
| ADR | Decision | Applies to |
|---|---|---|
| ADR-0001 | Keep CONTROL as a controller-facing facade with explicit module and repository boundaries. | src/scpn_control/{scpn,core,control,phase,studio}, sibling SCPN repositories. |
| ADR-0002 | Use Python for orchestration and Rust/PyO3 for bounded hot paths. | Python package, scpn-control-rs, optional native dispatch. |
| ADR-0003 | Select algorithms by evidence tier and keep broad solver development upstream or external. | Physics facades, control solvers, validation reports. |
| ADR-0004 | Treat validation artefacts as claim-admission inputs, not supporting prose. | validation/, docs/physics_traceability.md, generated reports. |
| ADR-0005 | Separate public user APIs from internal planning, coordination, and claim-governance surfaces. | Package exports, CLI, docs, Studio surfaces, internal TODOs. |
The ADRs are public documentation. Internal roadmap targets, coordination notes,
and unresolved TODO detail remain in ignored docs/internal/ and monorepo
.coordination/ surfaces.