ADR-0001: Runtime Switching First
Status: accepted
Context
Dubnium needs to move between interactive desktop behavior and headless compute behavior. NixOS specialisations may eventually provide stronger separation, but they require reboot-mediated workflows and would slow down early validation.
Decision
Use runtime switching first. Implement mode changes through a local reconciliation loop using systemd targets, services, slices, guards, and post-action observation.
Do not introduce NixOS specialisations in v1.
Consequences
- Rebootless switching can be validated early.
- The observer and guard layer must be conservative.
- GPU release reliability becomes a live risk.
- Specialisations remain an escalation path if runtime switching proves too brittle.
Escalation Criteria
Reconsider specialisations or reboot-mediated compute if:
- display GPU release remains unreliable after bounded iteration
- compute promotion frequently lands in degraded or ambiguous states
- desktop restoration is unreliable
- kernel/module settings diverge materially between modes