pub enum OperatorCredentialReissueRefusal {
ConversationUnknown {
conversation_id: ConversationId,
},
ParticipantUnknown {
conversation_id: ConversationId,
participant_id: ParticipantId,
},
Retired {
conversation_id: ConversationId,
participant_id: ParticipantId,
retired_generation: u64,
},
LiveBinding {
conversation_id: ConversationId,
participant_id: ParticipantId,
current_generation: u64,
binding_state: &'static str,
},
DetachReplayOpen {
conversation_id: ConversationId,
participant_id: ParticipantId,
current_generation: u64,
},
LiveReceipt {
conversation_id: ConversationId,
participant_id: ParticipantId,
current_generation: u64,
receipt: &'static str,
},
GenerationMismatch {
conversation_id: ConversationId,
participant_id: ParticipantId,
presented_generation: u64,
current_generation: u64,
},
}Expand description
Every typed refusal OperatorCredentialReissue can answer (§0.18 item 2).
Each variant commits no receipt, order, cursor, binding, lifecycle record, or retention mutation, and each is a NAMED refusal rather than whatever the code happens to do.
Variants§
ConversationUnknown
Pre-guard lookup miss: no durable conversation resolves this id.
Fields
conversation_id: ConversationIdThe presented conversation id, and nothing beyond it.
ParticipantUnknown
Pre-guard lookup miss: the conversation exists, the identity does not.
Fields
conversation_id: ConversationIdThe presented conversation id.
participant_id: ParticipantIdThe presented participant id, and nothing beyond it.
Retired
Guard (a): a tombstoned identity. Re-issue never remints a retired one.
Fields
conversation_id: ConversationIdThe presented conversation id.
participant_id: ParticipantIdThe retired identity.
LiveBinding
Guard (b): a live binding. A bound member is demonstrably operating under working authority, and re-issue against it would be seat revocation — v1 has no operator Leave and A7 does not create one.
Fields
conversation_id: ConversationIdThe presented conversation id.
participant_id: ParticipantIdThe bound identity.
DetachReplayOpen
⚠ NOT one of §0.18’s four guards — a defect this build MEASURED, named rather than absorbed, and returned to the seat as a contract flag.
The identity’s last committed detach still holds its exact-replay cell
open. commit_attach requires that cell’s request generation to equal
the member’s current generation (lifecycle::attach.rs,
transition_detach_cell’s DetachCell::Committed arm), and a re-issue
moves the generation while the cell stays where it is. So a re-issue
against this shape would mint a lawful-looking credential that the
ORDINARY attach path of §0.18 item 5 then refuses with a bare
AttachCommitError::DetachCellAuthority invariant — an unattachable
credential, which is the silent trap this estate refuses to ship.
Refusing is the only answer available inside this lane’s authority: terminalizing the cell here would change what an exact detach-token replay is answered with, which is existing refusal/restoration semantics and not this lane’s to move.
Fields
conversation_id: ConversationIdThe presented conversation id.
participant_id: ParticipantIdThe identity holding the open replay cell.
LiveReceipt
Guard (c): a live attach or enrollment receipt. A live receipt means the R-C0 recovery window is still open and the ordinary recovery path must be exhausted first.
Fields
conversation_id: ConversationIdThe presented conversation id.
participant_id: ParticipantIdThe identity holding the live receipt.
GenerationMismatch
Guard (d): the compare-and-set failed.
⛔ This payload is NORMATIVE (§0.18 item 4). The presented/current pair is the ONLY way an operator who lost a re-issue response learns the post-rotation generation, so a future edit that minimizes it silently breaks lost-response recovery.
Fields
conversation_id: ConversationIdThe presented conversation id.
participant_id: ParticipantIdThe identity.
Trait Implementations§
Source§impl Clone for OperatorCredentialReissueRefusal
impl Clone for OperatorCredentialReissueRefusal
Source§fn clone(&self) -> OperatorCredentialReissueRefusal
fn clone(&self) -> OperatorCredentialReissueRefusal
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Eq for OperatorCredentialReissueRefusal
impl StructuralPartialEq for OperatorCredentialReissueRefusal
Auto Trait Implementations§
impl Freeze for OperatorCredentialReissueRefusal
impl RefUnwindSafe for OperatorCredentialReissueRefusal
impl Send for OperatorCredentialReissueRefusal
impl Sync for OperatorCredentialReissueRefusal
impl Unpin for OperatorCredentialReissueRefusal
impl UnsafeUnpin for OperatorCredentialReissueRefusal
impl UnwindSafe for OperatorCredentialReissueRefusal
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<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.