Reference
Arcane.firewall.recover()
After confirmation, reconciles only Arcane-owned simulation state; divergence blocks other lifecycle actions. Requires firewall.manage.
This focused page is derived from the mechanically checked full member inventory.
Syntax
Arcane.firewall.recover(expectation)
Parameters
{expectedPolicyGeneration, expectedStateGeneration}
Return value
Promise<FirewallOperationResult>
Description
After confirmation, reconciles only Arcane-owned simulation state; divergence blocks other lifecycle actions. Requires firewall.manage.
Overview
Arcane.firewall.recover(expectation) explicitly reconciles and removes only
Arcane-owned firewall state when consistency or native inspection indicates
recovery is required. It requires firewall.manage, app id firewall,
elevated Core authority, exclusive mutation, fresh generations, and separate
confirmation. Current success changes deterministic simulation state only.
Recovery is not a general firewall reset. The backend is constrained to its Arcane-owned namespace; unrelated firewall state is outside the operation.
Result, side effects, and events
The exact result is {status, receipt, operation}. The receipt operation is
"recover", the tracked operation type is "firewall.recover", and successful
status returns the Arcane state to its default noninstalled, disabled,
non-recovery state at a new generation. Standard operation events are emitted.
Errors and recovery
Stale generation, busy operation, privilege, and live-host-authentication failures still apply. Recovery may read a damaged consistency record, but it does not bypass policy identity or ownership. Preserve a failed transaction's diagnostic and avoid parallel retries; refresh status only after the exclusive operation has finished.
Example
async function recoverFirewallAfterConfirmation(confirmRecovery) {
const status = await Arcane.firewall.status();
if (!status.simulation || !status.supported || !status.state.recoveryRequired) {
return null;
}
if (!confirmRecovery(status)) {
return null;
}
return Arcane.firewall.recover({
expectedPolicyGeneration: status.policy.generation,
expectedStateGeneration: status.state.generation
});
}