pub async fn cancel_device_join_via_transport(
store: &Store,
identity_signer: &UserKeypair,
bundle: &DeviceJoinOfferBundle,
attempt: DeviceJoinAttemptRef,
timing: DeviceJoinTransportTiming,
) -> Result<DeviceJoinCleanupActivation, DeviceJoinTransportError>Expand description
Cancel an attempt and carry the unwind to its activated cleanup.
The joiner’s own closure travels through the transport: the owner publishes the cancellation, waits for the joiner’s terminal, and settles the receipt against both terminals. Like the admitting driver, every step starts from the role journal’s durable state, so a run that died mid-unwind resumes where it stopped rather than replaying a step its journal is already past.
The attempt’s slots are not deleted here. The joining device reads the cleanup activation this publishes last, and the owner has no artifact by which it could learn that read had happened — so the deletion belongs to the joiner, at the point it accepts that activation.