ADR 0008: OAI CU/DU Function And Standards Baseline
Status
Accepted
Context
The subprojects/ran_replacement/ track is not meant to become a thin operator wrapper around another runtime.
Without an explicit baseline, "OAI CU/DU replacement" can degrade into something much weaker:
- a lifecycle wrapper that still depends on OAI for the real function
- a protocol adapter that does not truly own the target behavior
- a lab demo that works only because standards-sensitive behavior is deferred
- a parity claim that is really only configuration or orchestration parity
The repository needs a stronger statement of intent:
- the replacement track must implement the relevant
CU/DUfunctions for the declared target profile - the external protocol behavior must be standards-correct for the declared scope
- the target is still narrow and milestone-bound, not a blanket claim of universal parity
Decision
Use the operator-visible OAI NR CU/DU function set for the declared target profile as the replacement baseline, and require standards-correct behavior at the declared external interfaces.
For milestone 1 this means:
- the replacement track must own the
CU-CP,CU-UP, andDUresponsibilities needed to complete the declaredn79target-profile path - the declared target-profile function chain includes:
- cell bring-up
- RU readiness and sync gate
- UE access path sufficient for
RACH,RRC setup, registration, PDU session establishment, and ping - control and user-plane progression required for the declared end-to-end path
- the declared external interfaces must be standards-correct for the supported profile:
NGAPF1-CF1-UE1APGTP-U
- internal implementation does not need to resemble OAI source layout
- internal BEAM versus native ownership remains a separate decision from functional parity
Allowed Temporary Deviations
Temporary deviations are allowed only when all of the following hold:
- they are limited to
shadowor explicitlyexperimentalprofile states - they are declared before implementation in docs, ADRs, or task notes
- they are surfaced in
precheck,plan,verify, or incident artifacts - they preserve an explicit rollback target
- they do not claim standards parity for unsupported interfaces or unsupported procedure classes
For milestone 1, allowed temporary deviations include:
- narrow target-profile support instead of broad feature parity
- additive management adapters for observability and deploy flow
- staged ownership where some families remain
shadowbeforecutover - external infrastructure ownership for timing, sync, or host capabilities that the replacement stack does not itself implement
Consequences
Positive:
- "replacement" now means real functional ownership, not orchestration-only ownership
- standards claims become reviewable against named interfaces
- attach-plus-ping success is tied to explicit function ownership
- task planning can separate true parity work from operator tooling work
Negative:
- implementation scope is stricter than a lifecycle-wrapper project
- standards-sensitive verification work must begin earlier
- narrow milestone language becomes more important to avoid overclaiming
Alternatives Considered
- Treat OAI only as an operational reference and not a functional baseline: rejected because replacement would remain ambiguous.
- Treat only attach success as the goal without explicit standards language: rejected because success could hide protocol shortcuts or non-portable behavior.
- Require full broad parity before any milestone claim: rejected because the repository needs a narrow, real-lab first proof target.