#[non_exhaustive]pub enum Drift {
UnexpectedRole {
account: ForgeAccount,
observed: ForgeRole,
},
MissingRole {
account: ForgeAccount,
expected: ForgeRole,
},
RoleMismatch {
account: ForgeAccount,
expected: ForgeRole,
observed: ForgeRole,
},
ProtectionWeakened {
gaps: Vec<ProtectionGap>,
},
Renamed {
expected: Resource,
observed: Resource,
},
Replaced {
expected: u64,
observed: u64,
},
ArchiveMismatch {
expected: bool,
observed: bool,
},
VisibilityMismatch {
expected: Visibility,
observed: Visibility,
},
ReplanNeeded {
reason: String,
},
}Expand description
A difference between forge state and the VTC projection (§5.6 table).
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
UnexpectedRole
Someone holds a direct role the VTC did not grant (added in the forge UI). Default response: report; adopt or revert.
MissingRole
Someone the VTC granted has no role. Default response: re-apply.
RoleMismatch
Someone’s role differs from the projection.
Fields
account: ForgeAccountWho.
ProtectionWeakened
The required-check protection is weaker than it must be. Default response: re-apply and alert (§5.6).
Fields
gaps: Vec<ProtectionGap>Every shortfall found.
Renamed
The repository now lives at another resource (same forge id). Registry tuples must be rewritten (§9, rename attacks).
Replaced
The forge id differs: this is a different repository under the same name — never inherit grants onto it.
ArchiveMismatch
Archived state differs.
VisibilityMismatch
Visibility differs.
ReplanNeeded
The repository was bootstrapped for a different shape than it has now (its owner count crossed one ↔ two, say): run its bootstrap plan again. Not critical by itself; a weakening is reported separately.
Implementations§
Source§impl Drift
impl Drift
Sourcepub fn is_critical(&self) -> bool
pub fn is_critical(&self) -> bool
Whether this drift removes the commit-trust guarantee or points rights at the wrong repository. These are enforced by default rather than reported (§5.6): a weakened ruleset lets unverified commits merge, and a replaced repo must not inherit grants.