pub struct Disclosure {
pub unbridled: bool,
pub normalizations_disabled: Vec<String>,
pub net_over_delivery: bool,
pub backend_forced: Option<String>,
pub engine: Option<String>,
pub human_gate: HumanGate,
}Expand description
Operator-facing disclosure — what an operator should know about how this
run was shaped, kept strictly separate from the EnforcementReport
(ADR 0016 precedent / ADR 0017 D6). Disclosure is informational: it records
over-delivery, disabled normalizations, a forced backend, and the loud
unbridled opt-in. It never participates in crate::fence_strength or
the enforcement claim — a run can never raise its confinement claim by
disclosing something, and disclosing something can never lower it either.
Quiet by default: the whole block is omitted from JSON when nothing is worth
disclosing (the common bridled path). The one field that always surfaces when
set is Self::unbridled — an unbridled run is never quietly hidden.
Fields§
§unbridled: boolThe run was explicitly unbridled (confinement off — Caveats::top() +
advisory floor + SandboxKind::None), an acknowledged operator opt-in
(#151/I12). Always emitted when true; never reachable by omission.
normalizations_disabled: Vec<String>Automatic normalizations the operator turned off, by name (e.g.
ldd_closure, nss_closure_fallback) — so a degraded run is legible.
net_over_delivery: boolA restricted net allow-list is enforced above the reported floor —
the loopback egress proxy admits exactly the granted hosts while the report
honestly keeps the axis advisory (proxy-, not kernel-, enforced; #124/#128,
ADR 0016). Discloses the over-delivery without raising the claim.
backend_forced: Option<String>A sandbox backend was overridden from the default selection (downgrade / select-available only; #149/I10). Names the backend actually applied.
engine: Option<String>Which shell engine ran this operation (ADR 0019 D4 / #194) — e.g.
"safe-subset" or "sandbox-host". Lets an embedder log which engine a
dispatch used when more than one is registered. None when unset.
human_gate: HumanGateThe human step-up gate still in force (ADR 0018 D11 / R5). Distinguishes an
unbridled run’s two postures — passkey/prompt = Supervised-free (a
gesture still gates HIGH-consequence acts), none = Autonomous (no human
in the loop). Shown whenever the block is emitted (i.e. when unbridled), so
a consumer can never confuse “free but FIDO-gated” with “no human at all”.
Implementations§
Trait Implementations§
Source§impl Clone for Disclosure
impl Clone for Disclosure
Source§fn clone(&self) -> Disclosure
fn clone(&self) -> Disclosure
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Disclosure
impl Debug for Disclosure
Source§impl Default for Disclosure
impl Default for Disclosure
Source§fn default() -> Disclosure
fn default() -> Disclosure
Source§impl<'de> Deserialize<'de> for Disclosure
impl<'de> Deserialize<'de> for Disclosure
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Disclosure, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Disclosure, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
impl Eq for Disclosure
Source§impl PartialEq for Disclosure
impl PartialEq for Disclosure
Source§impl Serialize for Disclosure
impl Serialize for Disclosure
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for Disclosure
Auto Trait Implementations§
impl Freeze for Disclosure
impl RefUnwindSafe for Disclosure
impl Send for Disclosure
impl Sync for Disclosure
impl Unpin for Disclosure
impl UnsafeUnpin for Disclosure
impl UnwindSafe for Disclosure
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<F, T> ConvertInto<T> for Fwhere
T: ConvertFrom<F>,
impl<F, T> ConvertInto<T> for Fwhere
T: ConvertFrom<F>,
Source§fn convert_into(self) -> T
fn convert_into(self) -> T
Self to a value of type T.Source§impl<F, T> ConvertTryFrom<F> for Twhere
F: ConvertInto<T>,
impl<F, T> ConvertTryFrom<F> for Twhere
F: ConvertInto<T>,
Source§impl<F, T> ConvertTryInto<T> for Fwhere
T: ConvertTryFrom<F>,
impl<F, T> ConvertTryInto<T> for Fwhere
T: ConvertTryFrom<F>,
Source§type Error = <T as ConvertTryFrom<F>>::Error
type Error = <T as ConvertTryFrom<F>>::Error
Source§fn convert_try_into(self) -> Result<T, <T as ConvertTryFrom<F>>::Error>
fn convert_try_into(self) -> Result<T, <T as ConvertTryFrom<F>>::Error>
Self to a value of type T.impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more