docs: record tier 5.7 runtime coupling model

This commit is contained in:
ms2k 2026-07-09 20:54:28 +09:00
commit 9ee90df968
2 changed files with 446 additions and 41 deletions

View file

@ -58,6 +58,11 @@ INVARIANTS
SandboxNamespaceIsolation SandboxNamespaceIsolation
OrderedNetworkStartup OrderedNetworkStartup
PublishedDomainsReady PublishedDomainsReady
DomainLockLifetime
RuntimeCausalEdgeArmedBeforeSandbox
RuntimeCausalEdgeOwnerPresent
SandboxRunningImpliesCoordinatorPresent
PublishedRuntimeAuthorityPresent
ExclusiveBootstrapOwnership ExclusiveBootstrapOwnership
TeardownNotJoinable TeardownNotJoinable
RegisteredSessionsConnected RegisteredSessionsConnected

View file

@ -111,6 +111,8 @@ DomainPhases == {
CoordinatorStates == {"Absent", "Starting", "Ready", "Stopping", "Failed"} CoordinatorStates == {"Absent", "Starting", "Ready", "Stopping", "Failed"}
MountStates == {"Unmounted", "Mounted"} MountStates == {"Unmounted", "Mounted"}
ResourceStates == {"Stopped", "Ready", "Failed"} ResourceStates == {"Stopped", "Ready", "Failed"}
PhysicalProcessStates == {"Absent", "Starting", "Alive", "Stopped", "Dead"}
RuntimeCausalEdgeStates == {"Unarmed", "Armed"}
SessionPhases == { SessionPhases == {
"New", "Waiting", "Registering", "Attached", "Prompting", "New", "Waiting", "Registering", "Attached", "Prompting",
"HostExecuting", "Closed", "Failed" "HostExecuting", "Closed", "Failed"
@ -228,7 +230,13 @@ VARIABLES
requestPhase, requestPhase,
approvalSource, approvalSource,
approvedCommand, approvedCommand,
hostRunning hostRunning,
domainLockHeld,
hostCoordinatorProc,
runtimeSupervisorProc,
attachedRunscProc,
runtimeCausalEdge,
runtimeFaultsRemaining
vars == << vars == <<
domainPhase, domainPhase,
@ -248,7 +256,13 @@ vars == <<
requestPhase, requestPhase,
approvalSource, approvalSource,
approvedCommand, approvedCommand,
hostRunning hostRunning,
domainLockHeld,
hostCoordinatorProc,
runtimeSupervisorProc,
attachedRunscProc,
runtimeCausalEdge,
runtimeFaultsRemaining
>> >>
Dom(s) == SessionDomain[s] Dom(s) == SessionDomain[s]
@ -256,10 +270,39 @@ ReqSession(r) == RequestSession[r]
ReqDomain(r) == Dom(ReqSession(r)) ReqDomain(r) == Dom(ReqSession(r))
IsTerminalRequest(r) == requestPhase[r] \in TerminalRequestPhases IsTerminalRequest(r) == requestPhase[r] \in TerminalRequestPhases
RuntimeIdentityTupleReady(d) == ProcessPresent(state) == state \in {"Alive", "Stopped"}
ProcessResponsive(state) == state = "Alive"
RuntimeLogicalAuthorityPresent(d) ==
\/ ProcessPresent(hostCoordinatorProc[d])
\/ ProcessPresent(runtimeSupervisorProc[d])
\/ ProcessPresent(attachedRunscProc[d])
RuntimeAuthorityResponsive(d) ==
\/ ProcessResponsive(hostCoordinatorProc[d])
\/ ProcessResponsive(runtimeSupervisorProc[d])
\/ ProcessResponsive(attachedRunscProc[d])
RuntimeGenerationAbsent(d) ==
/\ ~domainLockHeld[d]
/\ hostCoordinatorProc[d] = "Absent"
/\ runtimeSupervisorProc[d] = "Absent"
/\ attachedRunscProc[d] = "Absent"
/\ runtimeCausalEdge[d] = "Unarmed"
ConsumeRuntimeFault(d) ==
/\ runtimeFaultsRemaining[d] > 0
/\ runtimeFaultsRemaining' =
[runtimeFaultsRemaining EXCEPT ![d] = @ - 1]
RuntimeIdentityTupleAuthorized(d) ==
/\ trustReady[d] /\ trustReady[d]
/\ domainPhase[d] = "Ready"
/\ d \in published
/\ sidecarState[d] = "Ready" /\ sidecarState[d] = "Ready"
/\ sandboxState[d] = "Ready" /\ sandboxState[d] = "Ready"
/\ RuntimeLogicalAuthorityPresent(d)
/\ CoordinatorCertificateValid[d] /\ CoordinatorCertificateValid[d]
/\ SidecarCertificateValid[d] /\ SidecarCertificateValid[d]
/\ SandboxCertificateValid[d] /\ SandboxCertificateValid[d]
@ -269,6 +312,11 @@ RuntimeIdentityTupleReady(d) ==
DomainSandboxIdentity[d] DomainSandboxIdentity[d]
}) = 3 }) = 3
RuntimeIdentityTupleReady(d) ==
/\ RuntimeIdentityTupleAuthorized(d)
/\ hostCoordinatorProc[d] = "Alive"
/\ RuntimeAuthorityResponsive(d)
SessionIdentityTupleRegistered(s) == SessionIdentityTupleRegistered(s) ==
/\ s \in registered[Dom(s)] /\ s \in registered[Dom(s)]
/\ s \in connected[Dom(s)] /\ s \in connected[Dom(s)]
@ -320,6 +368,12 @@ Init ==
/\ approvalSource = [r \in Requests |-> NoApproval] /\ approvalSource = [r \in Requests |-> NoApproval]
/\ approvedCommand = [r \in Requests |-> NoCommand] /\ approvedCommand = [r \in Requests |-> NoCommand]
/\ hostRunning = {} /\ hostRunning = {}
/\ domainLockHeld = [d \in Domains |-> FALSE]
/\ hostCoordinatorProc = [d \in Domains |-> "Absent"]
/\ runtimeSupervisorProc = [d \in Domains |-> "Absent"]
/\ attachedRunscProc = [d \in Domains |-> "Absent"]
/\ runtimeCausalEdge = [d \in Domains |-> "Unarmed"]
/\ runtimeFaultsRemaining = [d \in Domains |-> 2]
(*************************************************************************** (***************************************************************************
Domain and Session lifecycle Domain and Session lifecycle
@ -330,20 +384,26 @@ StartNewDomain(s) ==
/\ sessionPhase[s] = "New" /\ sessionPhase[s] = "New"
/\ ConfigSafe[d] /\ ConfigSafe[d]
/\ domainPhase[d] = "Absent" /\ domainPhase[d] = "Absent"
/\ RuntimeGenerationAbsent(d)
/\ domainPhase' = [domainPhase EXCEPT ![d] = "Starting"] /\ domainPhase' = [domainPhase EXCEPT ![d] = "Starting"]
/\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Starting"] /\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Starting"]
/\ lockOwner' = [lockOwner EXCEPT ![d] = s] /\ lockOwner' = [lockOwner EXCEPT ![d] = s]
/\ domainLockHeld' = [domainLockHeld EXCEPT ![d] = TRUE]
/\ hostCoordinatorProc' = [hostCoordinatorProc EXCEPT ![d] = "Alive"]
/\ sessionPhase' = [sessionPhase EXCEPT ![s] = "Waiting"] /\ sessionPhase' = [sessionPhase EXCEPT ![s] = "Waiting"]
/\ UNCHANGED << /\ UNCHANGED <<
stateAnchorState, sidecarState, sandboxState, trustReady, published, stateAnchorState, sidecarState, sandboxState, trustReady, published,
registered, connected, terminalRoute, connectionState, activeRequest, registered, connected, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning requestPhase, approvalSource, approvedCommand, hostRunning,
runtimeSupervisorProc, attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
StartReadySession(s) == StartReadySession(s) ==
LET d == Dom(s) IN LET d == Dom(s) IN
/\ sessionPhase[s] = "New" /\ sessionPhase[s] = "New"
/\ domainPhase[d] = "Ready" /\ domainPhase[d] = "Ready"
/\ d \in published
/\ hostCoordinatorProc[d] = "Alive"
/\ SessionFingerprint[s] = DomainFingerprint[d] /\ SessionFingerprint[s] = DomainFingerprint[d]
/\ sessionPhase' = [sessionPhase EXCEPT ![s] = "Registering"] /\ sessionPhase' = [sessionPhase EXCEPT ![s] = "Registering"]
/\ connectionState' = [connectionState EXCEPT ![s] = "Connected"] /\ connectionState' = [connectionState EXCEPT ![s] = "Connected"]
@ -351,7 +411,8 @@ StartReadySession(s) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
terminalRoute, activeRequest, requestPhase, approvalSource, terminalRoute, activeRequest, requestPhase, approvalSource,
approvedCommand, hostRunning approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
WaitForDomain(s) == WaitForDomain(s) ==
@ -363,7 +424,8 @@ WaitForDomain(s) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
RestartWaitingDomain(s) == RestartWaitingDomain(s) ==
@ -371,31 +433,38 @@ RestartWaitingDomain(s) ==
/\ sessionPhase[s] = "Waiting" /\ sessionPhase[s] = "Waiting"
/\ ConfigSafe[d] /\ ConfigSafe[d]
/\ domainPhase[d] = "Absent" /\ domainPhase[d] = "Absent"
/\ RuntimeGenerationAbsent(d)
/\ domainPhase' = [domainPhase EXCEPT ![d] = "Starting"] /\ domainPhase' = [domainPhase EXCEPT ![d] = "Starting"]
/\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Starting"] /\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Starting"]
/\ lockOwner' = [lockOwner EXCEPT ![d] = s] /\ lockOwner' = [lockOwner EXCEPT ![d] = s]
/\ domainLockHeld' = [domainLockHeld EXCEPT ![d] = TRUE]
/\ hostCoordinatorProc' = [hostCoordinatorProc EXCEPT ![d] = "Alive"]
/\ UNCHANGED << /\ UNCHANGED <<
stateAnchorState, sidecarState, sandboxState, trustReady, published, stateAnchorState, sidecarState, sandboxState, trustReady, published,
registered, connected, sessionPhase, terminalRoute, connectionState, registered, connected, sessionPhase, terminalRoute, connectionState,
activeRequest, requestPhase, approvalSource, approvedCommand, activeRequest, requestPhase, approvalSource, approvedCommand,
hostRunning hostRunning, runtimeSupervisorProc, attachedRunscProc,
runtimeCausalEdge, runtimeFaultsRemaining
>> >>
MountStateAnchor(d) == MountStateAnchor(d) ==
/\ domainPhase[d] = "Starting" /\ domainPhase[d] = "Starting"
/\ coordinatorState[d] = "Starting" /\ coordinatorState[d] = "Starting"
/\ hostCoordinatorProc[d] = "Alive"
/\ stateAnchorState[d] = "Unmounted" /\ stateAnchorState[d] = "Unmounted"
/\ stateAnchorState' = [stateAnchorState EXCEPT ![d] = "Mounted"] /\ stateAnchorState' = [stateAnchorState EXCEPT ![d] = "Mounted"]
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, sidecarState, sandboxState, trustReady, domainPhase, coordinatorState, sidecarState, sandboxState, trustReady,
lockOwner, published, registered, connected, sessionPhase, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
CreateTrustAnchor(d) == CreateTrustAnchor(d) ==
/\ domainPhase[d] = "Starting" /\ domainPhase[d] = "Starting"
/\ coordinatorState[d] = "Starting" /\ coordinatorState[d] = "Starting"
/\ hostCoordinatorProc[d] = "Alive"
/\ ~trustReady[d] /\ ~trustReady[d]
/\ CoordinatorCertificateValid[d] /\ CoordinatorCertificateValid[d]
/\ trustReady' = [trustReady EXCEPT ![d] = TRUE] /\ trustReady' = [trustReady EXCEPT ![d] = TRUE]
@ -403,11 +472,13 @@ CreateTrustAnchor(d) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, lockOwner, published, registered, connected, sandboxState, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest, sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning requestPhase, approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
StartSidecar(d) == StartSidecar(d) ==
/\ domainPhase[d] = "Starting" /\ domainPhase[d] = "Starting"
/\ hostCoordinatorProc[d] = "Alive"
/\ stateAnchorState[d] = "Mounted" /\ stateAnchorState[d] = "Mounted"
/\ trustReady[d] /\ trustReady[d]
/\ SidecarCertificateValid[d] /\ SidecarCertificateValid[d]
@ -417,26 +488,66 @@ StartSidecar(d) ==
domainPhase, coordinatorState, stateAnchorState, sandboxState, domainPhase, coordinatorState, stateAnchorState, sandboxState,
trustReady, lockOwner, published, registered, connected, sessionPhase, trustReady, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>>
StartRuntimeSupervisor(d) ==
/\ domainPhase[d] = "Starting"
/\ hostCoordinatorProc[d] = "Alive"
/\ sidecarState[d] = "Ready"
/\ runtimeSupervisorProc[d] = "Absent"
/\ runtimeSupervisorProc' = [runtimeSupervisorProc EXCEPT ![d] = "Alive"]
/\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning,
domainLockHeld, hostCoordinatorProc, attachedRunscProc,
runtimeCausalEdge, runtimeFaultsRemaining
>>
ArmRuntimeCausalEdge(d) ==
/\ domainPhase[d] = "Starting"
/\ hostCoordinatorProc[d] = "Alive"
/\ runtimeSupervisorProc[d] = "Alive"
/\ attachedRunscProc[d] = "Absent"
/\ runtimeCausalEdge[d] = "Unarmed"
/\ runtimeCausalEdge' = [runtimeCausalEdge EXCEPT ![d] = "Armed"]
/\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeFaultsRemaining
>> >>
StartSandbox(d) == StartSandbox(d) ==
/\ domainPhase[d] = "Starting" /\ domainPhase[d] = "Starting"
/\ hostCoordinatorProc[d] = "Alive"
/\ runtimeSupervisorProc[d] = "Alive"
/\ runtimeCausalEdge[d] = "Armed"
/\ sidecarState[d] = "Ready" /\ sidecarState[d] = "Ready"
/\ sandboxState[d] = "Stopped" /\ sandboxState[d] = "Stopped"
/\ attachedRunscProc[d] = "Absent"
/\ SandboxIsolationSafe[d] /\ SandboxIsolationSafe[d]
/\ SandboxCertificateValid[d] /\ SandboxCertificateValid[d]
/\ sandboxState' = [sandboxState EXCEPT ![d] = "Ready"] /\ sandboxState' = [sandboxState EXCEPT ![d] = "Ready"]
/\ attachedRunscProc' = [attachedRunscProc EXCEPT ![d] = "Alive"]
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
trustReady, lockOwner, published, registered, connected, sessionPhase, trustReady, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld,
hostCoordinatorProc, runtimeSupervisorProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
PublishDomain(d) == PublishDomain(d) ==
/\ domainPhase[d] = "Starting" /\ domainPhase[d] = "Starting"
/\ coordinatorState[d] = "Starting" /\ coordinatorState[d] = "Starting"
/\ hostCoordinatorProc[d] = "Alive"
/\ RuntimeAuthorityResponsive(d)
/\ stateAnchorState[d] = "Mounted" /\ stateAnchorState[d] = "Mounted"
/\ sidecarState[d] = "Ready" /\ sidecarState[d] = "Ready"
/\ sandboxState[d] = "Ready" /\ sandboxState[d] = "Ready"
@ -449,13 +560,16 @@ PublishDomain(d) ==
stateAnchorState, sidecarState, sandboxState, trustReady, registered, stateAnchorState, sidecarState, sandboxState, trustReady, registered,
connected, sessionPhase, terminalRoute, connectionState, connected, sessionPhase, terminalRoute, connectionState,
activeRequest, requestPhase, approvalSource, approvedCommand, activeRequest, requestPhase, approvalSource, approvedCommand,
hostRunning hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
AdvanceWaitingSession(s) == AdvanceWaitingSession(s) ==
LET d == Dom(s) IN LET d == Dom(s) IN
/\ sessionPhase[s] = "Waiting" /\ sessionPhase[s] = "Waiting"
/\ domainPhase[d] = "Ready" /\ domainPhase[d] = "Ready"
/\ d \in published
/\ hostCoordinatorProc[d] = "Alive"
/\ SessionFingerprint[s] = DomainFingerprint[d] /\ SessionFingerprint[s] = DomainFingerprint[d]
/\ sessionPhase' = [sessionPhase EXCEPT ![s] = "Registering"] /\ sessionPhase' = [sessionPhase EXCEPT ![s] = "Registering"]
/\ connectionState' = [connectionState EXCEPT ![s] = "Connected"] /\ connectionState' = [connectionState EXCEPT ![s] = "Connected"]
@ -463,7 +577,8 @@ AdvanceWaitingSession(s) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
terminalRoute, activeRequest, requestPhase, approvalSource, terminalRoute, activeRequest, requestPhase, approvalSource,
approvedCommand, hostRunning approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
RejectConfigurationMismatch(s) == RejectConfigurationMismatch(s) ==
@ -478,7 +593,8 @@ RejectConfigurationMismatch(s) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
activeRequest, requestPhase, approvalSource, approvedCommand, activeRequest, requestPhase, approvalSource, approvedCommand,
hostRunning hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
RegisterSession(s) == RegisterSession(s) ==
@ -486,6 +602,8 @@ RegisterSession(s) ==
/\ sessionPhase[s] = "Registering" /\ sessionPhase[s] = "Registering"
/\ connectionState[s] = "Connected" /\ connectionState[s] = "Connected"
/\ domainPhase[d] = "Ready" /\ domainPhase[d] = "Ready"
/\ d \in published
/\ hostCoordinatorProc[d] = "Alive"
/\ SessionFingerprint[s] = DomainFingerprint[d] /\ SessionFingerprint[s] = DomainFingerprint[d]
/\ CliCertificateValid[s] /\ CliCertificateValid[s]
/\ registered' = [registered EXCEPT ![d] = @ \cup {s}] /\ registered' = [registered EXCEPT ![d] = @ \cup {s}]
@ -496,7 +614,8 @@ RegisterSession(s) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, connectionState, sandboxState, trustReady, lockOwner, published, connectionState,
activeRequest, requestPhase, approvalSource, approvedCommand, activeRequest, requestPhase, approvalSource, approvedCommand,
hostRunning hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
DisconnectSession(s) == DisconnectSession(s) ==
@ -530,11 +649,13 @@ DisconnectSession(s) ==
/\ published' = IF leaderLost THEN published \ {d} ELSE published /\ published' = IF leaderLost THEN published \ {d} ELSE published
/\ UNCHANGED << /\ UNCHANGED <<
stateAnchorState, sidecarState, sandboxState, approvalSource, stateAnchorState, sidecarState, sandboxState, approvalSource,
approvedCommand approvedCommand, domainLockHeld, hostCoordinatorProc,
runtimeSupervisorProc, attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
BeginTeardown(d) == BeginTeardown(d) ==
/\ domainPhase[d] = "Ready" /\ domainPhase[d] = "Ready"
/\ hostCoordinatorProc[d] = "Alive"
/\ Interested(d) = {} /\ Interested(d) = {}
/\ registered[d] = {} /\ registered[d] = {}
/\ connected[d] = {} /\ connected[d] = {}
@ -545,18 +666,23 @@ BeginTeardown(d) ==
stateAnchorState, sidecarState, sandboxState, trustReady, lockOwner, stateAnchorState, sidecarState, sandboxState, trustReady, lockOwner,
registered, connected, sessionPhase, terminalRoute, connectionState, registered, connected, sessionPhase, terminalRoute, connectionState,
activeRequest, requestPhase, approvalSource, approvedCommand, activeRequest, requestPhase, approvalSource, approvedCommand,
hostRunning hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
StopSandbox(d) == StopSandbox(d) ==
/\ domainPhase[d] = "Stopping" /\ domainPhase[d] = "Stopping"
/\ RuntimeAuthorityResponsive(d)
/\ sandboxState[d] = "Ready" /\ sandboxState[d] = "Ready"
/\ sandboxState' = [sandboxState EXCEPT ![d] = "Stopped"] /\ sandboxState' = [sandboxState EXCEPT ![d] = "Stopped"]
/\ attachedRunscProc' = [attachedRunscProc EXCEPT ![d] = "Absent"]
/\ runtimeCausalEdge' = [runtimeCausalEdge EXCEPT ![d] = "Unarmed"]
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
trustReady, lockOwner, published, registered, connected, sessionPhase, trustReady, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld,
hostCoordinatorProc, runtimeSupervisorProc, runtimeFaultsRemaining
>> >>
StopSidecar(d) == StopSidecar(d) ==
@ -568,7 +694,8 @@ StopSidecar(d) ==
domainPhase, coordinatorState, stateAnchorState, sandboxState, domainPhase, coordinatorState, stateAnchorState, sandboxState,
trustReady, lockOwner, published, registered, connected, sessionPhase, trustReady, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
UnmountStateAnchor(d) == UnmountStateAnchor(d) ==
@ -581,7 +708,8 @@ UnmountStateAnchor(d) ==
domainPhase, coordinatorState, sidecarState, sandboxState, trustReady, domainPhase, coordinatorState, sidecarState, sandboxState, trustReady,
lockOwner, published, registered, connected, sessionPhase, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
FinishTeardown(d) == FinishTeardown(d) ==
@ -593,11 +721,16 @@ FinishTeardown(d) ==
/\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Absent"] /\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Absent"]
/\ trustReady' = [trustReady EXCEPT ![d] = FALSE] /\ trustReady' = [trustReady EXCEPT ![d] = FALSE]
/\ lockOwner' = [lockOwner EXCEPT ![d] = NoSession] /\ lockOwner' = [lockOwner EXCEPT ![d] = NoSession]
/\ domainLockHeld' = [domainLockHeld EXCEPT ![d] = FALSE]
/\ hostCoordinatorProc' = [hostCoordinatorProc EXCEPT ![d] = "Absent"]
/\ runtimeSupervisorProc' = [runtimeSupervisorProc EXCEPT ![d] = "Absent"]
/\ attachedRunscProc' = [attachedRunscProc EXCEPT ![d] = "Absent"]
/\ runtimeCausalEdge' = [runtimeCausalEdge EXCEPT ![d] = "Unarmed"]
/\ UNCHANGED << /\ UNCHANGED <<
stateAnchorState, sidecarState, sandboxState, published, registered, stateAnchorState, sidecarState, sandboxState, published, registered,
connected, sessionPhase, terminalRoute, connectionState, connected, sessionPhase, terminalRoute, connectionState,
activeRequest, requestPhase, approvalSource, approvedCommand, activeRequest, requestPhase, approvalSource, approvedCommand,
hostRunning hostRunning, runtimeFaultsRemaining
>> >>
(*************************************************************************** (***************************************************************************
@ -624,7 +757,8 @@ ReceiveEscalation(r) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, approvalSource, sessionPhase, terminalRoute, connectionState, approvalSource,
approvedCommand, hostRunning approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
AutoApprove(r) == AutoApprove(r) ==
@ -637,7 +771,8 @@ AutoApprove(r) ==
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest, hostRunning sessionPhase, terminalRoute, connectionState, activeRequest, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
QueuePrompt(r) == QueuePrompt(r) ==
@ -648,7 +783,8 @@ QueuePrompt(r) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest, sessionPhase, terminalRoute, connectionState, activeRequest,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
BeginPrompt(r) == BeginPrompt(r) ==
@ -662,7 +798,8 @@ BeginPrompt(r) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
connectionState, activeRequest, requestPhase, approvalSource, connectionState, activeRequest, requestPhase, approvalSource,
approvedCommand, hostRunning approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
DeveloperApprove(r, cmd) == DeveloperApprove(r, cmd) ==
@ -678,7 +815,8 @@ DeveloperApprove(r, cmd) ==
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest, hostRunning sessionPhase, terminalRoute, connectionState, activeRequest, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
DeveloperDeny(r) == DeveloperDeny(r) ==
@ -693,7 +831,8 @@ DeveloperDeny(r) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
connectionState, activeRequest, approvalSource, approvedCommand, connectionState, activeRequest, approvalSource, approvedCommand,
hostRunning hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
StartHostExecution(r) == StartHostExecution(r) ==
@ -712,7 +851,9 @@ StartHostExecution(r) ==
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
connectionState, activeRequest, approvalSource, approvedCommand connectionState, activeRequest, approvalSource, approvedCommand,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
CompleteHostExecution(r) == CompleteHostExecution(r) ==
@ -726,7 +867,9 @@ CompleteHostExecution(r) ==
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
connectionState, activeRequest, approvalSource, approvedCommand connectionState, activeRequest, approvalSource, approvedCommand,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
TimeoutRequest(r) == TimeoutRequest(r) ==
@ -740,7 +883,9 @@ TimeoutRequest(r) ==
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
connectionState, activeRequest, approvalSource, approvedCommand connectionState, activeRequest, approvalSource, approvedCommand,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
CancelRequest(r) == CancelRequest(r) ==
@ -757,7 +902,9 @@ CancelRequest(r) ==
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
connectionState, activeRequest, approvalSource, approvedCommand connectionState, activeRequest, approvalSource, approvedCommand,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
FailHostExecution(r) == FailHostExecution(r) ==
@ -772,7 +919,9 @@ FailHostExecution(r) ==
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
connectionState, activeRequest, approvalSource, approvedCommand connectionState, activeRequest, approvalSource, approvedCommand,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
DeliverResult(r) == DeliverResult(r) ==
@ -788,7 +937,8 @@ DeliverResult(r) ==
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected, sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, approvalSource, sessionPhase, terminalRoute, connectionState, approvalSource,
approvedCommand, hostRunning approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
(*************************************************************************** (***************************************************************************
@ -821,7 +971,188 @@ FailDomain(d) ==
/\ hostRunning' = hostRunning \ RequestsForDomain(d) /\ hostRunning' = hostRunning \ RequestsForDomain(d)
/\ UNCHANGED << /\ UNCHANGED <<
stateAnchorState, sidecarState, sandboxState, approvalSource, stateAnchorState, sidecarState, sandboxState, approvalSource,
approvedCommand approvedCommand, domainLockHeld, hostCoordinatorProc,
runtimeSupervisorProc, attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>>
HardLoseHostCoordinator(d) ==
/\ domainPhase[d] \in {"Starting", "Ready", "Stopping"}
/\ ProcessPresent(hostCoordinatorProc[d])
/\ ConsumeRuntimeFault(d)
/\ domainPhase' = [domainPhase EXCEPT ![d] = "Failed"]
/\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Failed"]
/\ trustReady' = [trustReady EXCEPT ![d] = FALSE]
/\ lockOwner' = [lockOwner EXCEPT ![d] = NoSession]
/\ published' = published \ {d}
/\ registered' = [registered EXCEPT ![d] = {}]
/\ connected' = [connected EXCEPT ![d] = {}]
/\ sessionPhase' = [s \in Sessions |->
IF Dom(s) = d /\ sessionPhase[s] \notin {"New", "Closed"}
THEN "Failed"
ELSE sessionPhase[s]]
/\ terminalRoute' = [s \in Sessions |->
IF Dom(s) = d THEN "Detached" ELSE terminalRoute[s]]
/\ connectionState' = [s \in Sessions |->
IF Dom(s) = d THEN "Disconnected" ELSE connectionState[s]]
/\ activeRequest' = [s \in Sessions |->
IF Dom(s) = d THEN NoRequest ELSE activeRequest[s]]
/\ requestPhase' = [r \in Requests |->
IF ReqDomain(r) = d /\ requestPhase[r] # "Unused" /\ ~IsTerminalRequest(r)
THEN "Failed"
ELSE requestPhase[r]]
/\ hostRunning' = hostRunning \ RequestsForDomain(d)
/\ hostCoordinatorProc' = [hostCoordinatorProc EXCEPT ![d] = "Dead"]
/\ UNCHANGED <<
stateAnchorState, sidecarState, sandboxState, approvalSource,
approvedCommand, domainLockHeld, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge
>>
HardLoseRuntimeSupervisor(d) ==
/\ domainPhase[d] \in {"Starting", "Ready", "Stopping", "Failed"}
/\ ProcessPresent(runtimeSupervisorProc[d])
/\ ConsumeRuntimeFault(d)
/\ domainPhase' = [domainPhase EXCEPT ![d] = "Failed"]
/\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Failed"]
/\ trustReady' = [trustReady EXCEPT ![d] = FALSE]
/\ lockOwner' = [lockOwner EXCEPT ![d] = NoSession]
/\ published' = published \ {d}
/\ registered' = [registered EXCEPT ![d] = {}]
/\ connected' = [connected EXCEPT ![d] = {}]
/\ sessionPhase' = [s \in Sessions |->
IF Dom(s) = d /\ sessionPhase[s] \notin {"New", "Closed"}
THEN "Failed"
ELSE sessionPhase[s]]
/\ terminalRoute' = [s \in Sessions |->
IF Dom(s) = d THEN "Detached" ELSE terminalRoute[s]]
/\ connectionState' = [s \in Sessions |->
IF Dom(s) = d THEN "Disconnected" ELSE connectionState[s]]
/\ activeRequest' = [s \in Sessions |->
IF Dom(s) = d THEN NoRequest ELSE activeRequest[s]]
/\ requestPhase' = [r \in Requests |->
IF ReqDomain(r) = d /\ requestPhase[r] # "Unused" /\ ~IsTerminalRequest(r)
THEN "Failed"
ELSE requestPhase[r]]
/\ hostRunning' = hostRunning \ RequestsForDomain(d)
/\ runtimeSupervisorProc' = [runtimeSupervisorProc EXCEPT ![d] = "Dead"]
/\ attachedRunscProc' = [attachedRunscProc EXCEPT
![d] = IF runtimeCausalEdge[d] = "Armed" THEN "Dead" ELSE @]
/\ sandboxState' = [sandboxState EXCEPT
![d] = IF runtimeCausalEdge[d] = "Armed" THEN "Stopped" ELSE @]
/\ runtimeCausalEdge' = [runtimeCausalEdge EXCEPT ![d] = "Unarmed"]
/\ UNCHANGED <<
stateAnchorState, sidecarState, approvalSource, approvedCommand,
domainLockHeld, hostCoordinatorProc
>>
HardLoseAttachedRunsc(d) ==
/\ domainPhase[d] \in {"Starting", "Ready", "Stopping", "Failed"}
/\ ProcessPresent(attachedRunscProc[d])
/\ ConsumeRuntimeFault(d)
/\ domainPhase' = [domainPhase EXCEPT ![d] = "Failed"]
/\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Failed"]
/\ trustReady' = [trustReady EXCEPT ![d] = FALSE]
/\ lockOwner' = [lockOwner EXCEPT ![d] = NoSession]
/\ published' = published \ {d}
/\ registered' = [registered EXCEPT ![d] = {}]
/\ connected' = [connected EXCEPT ![d] = {}]
/\ sessionPhase' = [s \in Sessions |->
IF Dom(s) = d /\ sessionPhase[s] \notin {"New", "Closed"}
THEN "Failed"
ELSE sessionPhase[s]]
/\ terminalRoute' = [s \in Sessions |->
IF Dom(s) = d THEN "Detached" ELSE terminalRoute[s]]
/\ connectionState' = [s \in Sessions |->
IF Dom(s) = d THEN "Disconnected" ELSE connectionState[s]]
/\ activeRequest' = [s \in Sessions |->
IF Dom(s) = d THEN NoRequest ELSE activeRequest[s]]
/\ requestPhase' = [r \in Requests |->
IF ReqDomain(r) = d /\ requestPhase[r] # "Unused" /\ ~IsTerminalRequest(r)
THEN "Failed"
ELSE requestPhase[r]]
/\ hostRunning' = hostRunning \ RequestsForDomain(d)
/\ attachedRunscProc' = [attachedRunscProc EXCEPT ![d] = "Dead"]
/\ sandboxState' = [sandboxState EXCEPT ![d] = "Stopped"]
/\ runtimeCausalEdge' = [runtimeCausalEdge EXCEPT ![d] = "Unarmed"]
/\ UNCHANGED <<
stateAnchorState, sidecarState, approvalSource, approvedCommand,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc
>>
StopHostCoordinatorProcess(d) ==
/\ domainPhase[d] \in {"Starting", "Ready", "Stopping", "Failed"}
/\ hostCoordinatorProc[d] = "Alive"
/\ ConsumeRuntimeFault(d)
/\ hostCoordinatorProc' = [hostCoordinatorProc EXCEPT ![d] = "Stopped"]
/\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning,
domainLockHeld, runtimeSupervisorProc, attachedRunscProc,
runtimeCausalEdge
>>
ResumeHostCoordinatorProcess(d) ==
/\ hostCoordinatorProc[d] = "Stopped"
/\ hostCoordinatorProc' = [hostCoordinatorProc EXCEPT ![d] = "Alive"]
/\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning,
domainLockHeld, runtimeSupervisorProc, attachedRunscProc,
runtimeCausalEdge, runtimeFaultsRemaining
>>
StopRuntimeSupervisorProcess(d) ==
/\ runtimeSupervisorProc[d] = "Alive"
/\ ConsumeRuntimeFault(d)
/\ runtimeSupervisorProc' = [runtimeSupervisorProc EXCEPT ![d] = "Stopped"]
/\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning,
domainLockHeld, hostCoordinatorProc, attachedRunscProc,
runtimeCausalEdge
>>
ResumeRuntimeSupervisorProcess(d) ==
/\ runtimeSupervisorProc[d] = "Stopped"
/\ runtimeSupervisorProc' = [runtimeSupervisorProc EXCEPT ![d] = "Alive"]
/\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning,
domainLockHeld, hostCoordinatorProc, attachedRunscProc,
runtimeCausalEdge, runtimeFaultsRemaining
>>
StopAttachedRunscProcess(d) ==
/\ attachedRunscProc[d] = "Alive"
/\ ConsumeRuntimeFault(d)
/\ attachedRunscProc' = [attachedRunscProc EXCEPT ![d] = "Stopped"]
/\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
runtimeCausalEdge
>>
ResumeAttachedRunscProcess(d) ==
/\ attachedRunscProc[d] = "Stopped"
/\ attachedRunscProc' = [attachedRunscProc EXCEPT ![d] = "Alive"]
/\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState,
sandboxState, trustReady, lockOwner, published, registered, connected,
sessionPhase, terminalRoute, connectionState, activeRequest,
requestPhase, approvalSource, approvedCommand, hostRunning,
domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
runtimeCausalEdge, runtimeFaultsRemaining
>> >>
BeginRecovery(d) == BeginRecovery(d) ==
@ -831,22 +1162,28 @@ BeginRecovery(d) ==
/\ hostRunning \cap RequestsForDomain(d) = {} /\ hostRunning \cap RequestsForDomain(d) = {}
/\ domainPhase' = [domainPhase EXCEPT ![d] = "Recovering"] /\ domainPhase' = [domainPhase EXCEPT ![d] = "Recovering"]
/\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Stopping"] /\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Stopping"]
/\ domainLockHeld' = [domainLockHeld EXCEPT ![d] = TRUE]
/\ hostCoordinatorProc' = [hostCoordinatorProc EXCEPT ![d] = "Alive"]
/\ UNCHANGED << /\ UNCHANGED <<
stateAnchorState, sidecarState, sandboxState, trustReady, lockOwner, stateAnchorState, sidecarState, sandboxState, trustReady, lockOwner,
published, registered, connected, sessionPhase, terminalRoute, published, registered, connected, sessionPhase, terminalRoute,
connectionState, activeRequest, requestPhase, approvalSource, connectionState, activeRequest, requestPhase, approvalSource,
approvedCommand, hostRunning approvedCommand, hostRunning, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
RecoverSandbox(d) == RecoverSandbox(d) ==
/\ domainPhase[d] = "Recovering" /\ domainPhase[d] = "Recovering"
/\ sandboxState[d] # "Stopped" /\ sandboxState[d] # "Stopped"
/\ sandboxState' = [sandboxState EXCEPT ![d] = "Stopped"] /\ sandboxState' = [sandboxState EXCEPT ![d] = "Stopped"]
/\ attachedRunscProc' = [attachedRunscProc EXCEPT ![d] = "Dead"]
/\ runtimeCausalEdge' = [runtimeCausalEdge EXCEPT ![d] = "Unarmed"]
/\ UNCHANGED << /\ UNCHANGED <<
domainPhase, coordinatorState, stateAnchorState, sidecarState, domainPhase, coordinatorState, stateAnchorState, sidecarState,
trustReady, lockOwner, published, registered, connected, sessionPhase, trustReady, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld,
hostCoordinatorProc, runtimeSupervisorProc, runtimeFaultsRemaining
>> >>
RecoverSidecar(d) == RecoverSidecar(d) ==
@ -858,7 +1195,8 @@ RecoverSidecar(d) ==
domainPhase, coordinatorState, stateAnchorState, sandboxState, domainPhase, coordinatorState, stateAnchorState, sandboxState,
trustReady, lockOwner, published, registered, connected, sessionPhase, trustReady, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
RecoverStateAnchor(d) == RecoverStateAnchor(d) ==
@ -871,7 +1209,8 @@ RecoverStateAnchor(d) ==
domainPhase, coordinatorState, sidecarState, sandboxState, trustReady, domainPhase, coordinatorState, sidecarState, sandboxState, trustReady,
lockOwner, published, registered, connected, sessionPhase, lockOwner, published, registered, connected, sessionPhase,
terminalRoute, connectionState, activeRequest, requestPhase, terminalRoute, connectionState, activeRequest, requestPhase,
approvalSource, approvedCommand, hostRunning approvalSource, approvedCommand, hostRunning, domainLockHeld, hostCoordinatorProc, runtimeSupervisorProc,
attachedRunscProc, runtimeCausalEdge, runtimeFaultsRemaining
>> >>
FinishRecovery(d) == FinishRecovery(d) ==
@ -882,17 +1221,25 @@ FinishRecovery(d) ==
/\ domainPhase' = [domainPhase EXCEPT ![d] = "Absent"] /\ domainPhase' = [domainPhase EXCEPT ![d] = "Absent"]
/\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Absent"] /\ coordinatorState' = [coordinatorState EXCEPT ![d] = "Absent"]
/\ lockOwner' = [lockOwner EXCEPT ![d] = NoSession] /\ lockOwner' = [lockOwner EXCEPT ![d] = NoSession]
/\ trustReady' = [trustReady EXCEPT ![d] = FALSE]
/\ domainLockHeld' = [domainLockHeld EXCEPT ![d] = FALSE]
/\ hostCoordinatorProc' = [hostCoordinatorProc EXCEPT ![d] = "Absent"]
/\ runtimeSupervisorProc' = [runtimeSupervisorProc EXCEPT ![d] = "Absent"]
/\ attachedRunscProc' = [attachedRunscProc EXCEPT ![d] = "Absent"]
/\ runtimeCausalEdge' = [runtimeCausalEdge EXCEPT ![d] = "Unarmed"]
/\ UNCHANGED << /\ UNCHANGED <<
stateAnchorState, sidecarState, sandboxState, trustReady, published, stateAnchorState, sidecarState, sandboxState, published,
registered, connected, sessionPhase, terminalRoute, connectionState, registered, connected, sessionPhase, terminalRoute, connectionState,
activeRequest, requestPhase, approvalSource, approvedCommand, activeRequest, requestPhase, approvalSource, approvedCommand,
hostRunning hostRunning, runtimeFaultsRemaining
>> >>
DomainProgress(d) == DomainProgress(d) ==
\/ MountStateAnchor(d) \/ MountStateAnchor(d)
\/ CreateTrustAnchor(d) \/ CreateTrustAnchor(d)
\/ StartSidecar(d) \/ StartSidecar(d)
\/ StartRuntimeSupervisor(d)
\/ ArmRuntimeCausalEdge(d)
\/ StartSandbox(d) \/ StartSandbox(d)
\/ PublishDomain(d) \/ PublishDomain(d)
\/ BeginTeardown(d) \/ BeginTeardown(d)
@ -905,6 +1252,20 @@ DomainProgress(d) ==
\/ RecoverSidecar(d) \/ RecoverSidecar(d)
\/ RecoverStateAnchor(d) \/ RecoverStateAnchor(d)
\/ FinishRecovery(d) \/ FinishRecovery(d)
\/ ResumeHostCoordinatorProcess(d)
\/ ResumeRuntimeSupervisorProcess(d)
\/ ResumeAttachedRunscProcess(d)
RuntimePhysicalInterleaving(d) ==
\/ HardLoseHostCoordinator(d)
\/ HardLoseRuntimeSupervisor(d)
\/ HardLoseAttachedRunsc(d)
\/ StopHostCoordinatorProcess(d)
\/ ResumeHostCoordinatorProcess(d)
\/ StopRuntimeSupervisorProcess(d)
\/ ResumeRuntimeSupervisorProcess(d)
\/ StopAttachedRunscProcess(d)
\/ ResumeAttachedRunscProcess(d)
SessionProgress(s) == SessionProgress(s) ==
\/ StartNewDomain(s) \/ StartNewDomain(s)
@ -936,6 +1297,8 @@ Next ==
RegisterSession(s) \/ DisconnectSession(s)) RegisterSession(s) \/ DisconnectSession(s))
\/ (\E d \in Domains : \/ (\E d \in Domains :
DomainProgress(d) \/ FailDomain(d)) DomainProgress(d) \/ FailDomain(d))
\/ (\E d \in Domains :
RuntimePhysicalInterleaving(d))
\/ (\E r \in Requests : \/ (\E r \in Requests :
ReceiveEscalation(r) \/ RequestProgress(r)) ReceiveEscalation(r) \/ RequestProgress(r))
@ -969,6 +1332,12 @@ TypeOK ==
/\ approvalSource \in [Requests -> ApprovalSources] /\ approvalSource \in [Requests -> ApprovalSources]
/\ approvedCommand \in [Requests -> Commands \cup {NoCommand}] /\ approvedCommand \in [Requests -> Commands \cup {NoCommand}]
/\ hostRunning \subseteq Requests /\ hostRunning \subseteq Requests
/\ domainLockHeld \in [Domains -> BOOLEAN]
/\ hostCoordinatorProc \in [Domains -> PhysicalProcessStates]
/\ runtimeSupervisorProc \in [Domains -> PhysicalProcessStates]
/\ attachedRunscProc \in [Domains -> PhysicalProcessStates]
/\ runtimeCausalEdge \in [Domains -> RuntimeCausalEdgeStates]
/\ runtimeFaultsRemaining \in [Domains -> 0..2]
ConfigurationConfinement == ConfigurationConfinement ==
\A d \in Domains : domainPhase[d] # "Absent" => ConfigSafe[d] \A d \in Domains : domainPhase[d] # "Absent" => ConfigSafe[d]
@ -988,6 +1357,32 @@ PublishedDomainsReady ==
/\ sandboxState[d] = "Ready" /\ sandboxState[d] = "Ready"
/\ trustReady[d] /\ trustReady[d]
DomainLockLifetime ==
\A d \in Domains :
/\ (domainPhase[d] = "Absent" => ~domainLockHeld[d])
/\ (domainPhase[d] # "Absent" => domainLockHeld[d])
/\ (~domainLockHeld[d] => RuntimeGenerationAbsent(d))
RuntimeCausalEdgeArmedBeforeSandbox ==
\A d \in Domains :
sandboxState[d] = "Ready" =>
/\ runtimeCausalEdge[d] = "Armed"
/\ ProcessPresent(attachedRunscProc[d])
RuntimeCausalEdgeOwnerPresent ==
\A d \in Domains :
runtimeCausalEdge[d] = "Armed" =>
/\ domainLockHeld[d]
/\ ProcessPresent(runtimeSupervisorProc[d])
SandboxRunningImpliesCoordinatorPresent ==
\A d \in Domains :
sandboxState[d] = "Ready" => RuntimeLogicalAuthorityPresent(d)
PublishedRuntimeAuthorityPresent ==
\A d \in published :
RuntimeLogicalAuthorityPresent(d)
ExclusiveBootstrapOwnership == ExclusiveBootstrapOwnership ==
\A d \in Domains : lockOwner[d] # NoSession => \A d \in Domains : lockOwner[d] # NoSession =>
/\ domainPhase[d] = "Starting" /\ domainPhase[d] = "Starting"
@ -1043,7 +1438,7 @@ RegisteredSessionIdentityUniqueness ==
LiveRequestIdentityAuthorized == LiveRequestIdentityAuthorized ==
\A r \in Requests : \A r \in Requests :
requestPhase[r] \notin {"Unused"} \cup TerminalRequestPhases => requestPhase[r] \notin {"Unused"} \cup TerminalRequestPhases =>
/\ RuntimeIdentityTupleReady(ReqDomain(r)) /\ RuntimeIdentityTupleAuthorized(ReqDomain(r))
/\ SessionIdentityTupleRegistered(ReqSession(r)) /\ SessionIdentityTupleRegistered(ReqSession(r))
DeveloperApprovalAuthenticated == DeveloperApprovalAuthenticated ==
@ -1112,6 +1507,11 @@ Safety ==
/\ SandboxNamespaceIsolation /\ SandboxNamespaceIsolation
/\ OrderedNetworkStartup /\ OrderedNetworkStartup
/\ PublishedDomainsReady /\ PublishedDomainsReady
/\ DomainLockLifetime
/\ RuntimeCausalEdgeArmedBeforeSandbox
/\ RuntimeCausalEdgeOwnerPresent
/\ SandboxRunningImpliesCoordinatorPresent
/\ PublishedRuntimeAuthorityPresent
/\ ExclusiveBootstrapOwnership /\ ExclusiveBootstrapOwnership
/\ TeardownNotJoinable /\ TeardownNotJoinable
/\ RegisteredSessionsConnected /\ RegisteredSessionsConnected