pub enum DesignAssuranceLevel {
A,
B,
C,
D,
E,
}Expand description
Design Assurance Level per DO-178C.
§Runtime vs Compile-Time
Three enforcement layers operate simultaneously:
-
Compile-time (conditional compilation): The
dalfeature gate controls whetherapply_safety_overridesapplies hard limits at all. Without the feature, overrides are a passthrough — no safety constraints are enforced in PID computation. This is the coarse control. -
Runtime (this enum):
EscalationPolicy.dalgates the output-side escalation decisions (decide_from_detection,decide_with_pressure) regardless of the compile-time feature. Setting DAL E means “proceed always” even ifdalfeature is active. This is the fine control. -
Static check (design review): DAL A/B paths are traceable in the MC/DC matrix. Every path from detection to decision must have independent condition coverage. See
invariants.toml§4.
The runtime DAL gates decisions AFTER PID computation. The compile-time feature gates safety overrides DURING PID computation. Both must pass for a Halt decision to reach the actuator.
Variants§
A
Catastrophic — halt failure → system compromise.
B
Hazardous — missed escalation → degraded safety.
C
Major — false warn → user burden.
D
Minor — informational only.
E
No effect — proceed path.
Trait Implementations§
Source§impl Clone for DesignAssuranceLevel
impl Clone for DesignAssuranceLevel
Source§fn clone(&self) -> DesignAssuranceLevel
fn clone(&self) -> DesignAssuranceLevel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for DesignAssuranceLevel
Source§impl Debug for DesignAssuranceLevel
impl Debug for DesignAssuranceLevel
impl Eq for DesignAssuranceLevel
Source§impl PartialEq for DesignAssuranceLevel
impl PartialEq for DesignAssuranceLevel
Source§fn eq(&self, other: &DesignAssuranceLevel) -> bool
fn eq(&self, other: &DesignAssuranceLevel) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for DesignAssuranceLevel
Auto Trait Implementations§
impl Freeze for DesignAssuranceLevel
impl RefUnwindSafe for DesignAssuranceLevel
impl Send for DesignAssuranceLevel
impl Sync for DesignAssuranceLevel
impl Unpin for DesignAssuranceLevel
impl UnsafeUnpin for DesignAssuranceLevel
impl UnwindSafe for DesignAssuranceLevel
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.