2026-07-10 11:39:49 +09:00
|
|
|
SPECIFICATION SafetySpec
|
|
|
|
|
|
2026-07-10 12:43:32 +09:00
|
|
|
CHECK_DEADLOCK TRUE
|
2026-07-10 11:39:49 +09:00
|
|
|
|
|
|
|
|
\* Global contention: local capacity does not constrain the global limit.
|
|
|
|
|
CONSTANTS
|
|
|
|
|
Jobs = {j1, j2}
|
|
|
|
|
Workers = {w1, w2}
|
|
|
|
|
InitialWorkers = {w1, w2}
|
|
|
|
|
NoJob = NoJob
|
|
|
|
|
NoWorker = NoWorker
|
|
|
|
|
MaxAttempts = 1
|
|
|
|
|
MaxProgress = 1
|
|
|
|
|
LeaseLimit = 1
|
2026-07-14 18:12:28 +09:00
|
|
|
ReservationLimit = 1
|
2026-07-10 11:39:49 +09:00
|
|
|
LocalLimit = 2
|
|
|
|
|
GlobalLimit = 1
|
|
|
|
|
FaultsEnabled = FALSE
|
|
|
|
|
FaultServices = {}
|
2026-07-10 12:43:32 +09:00
|
|
|
MaxCoordLosses = 0
|
|
|
|
|
MaxPartitions = 0
|
2026-07-16 23:01:17 +09:00
|
|
|
MaxCredentialIntents = 0
|
2026-07-10 11:39:49 +09:00
|
|
|
|
|
|
|
|
INVARIANTS
|
|
|
|
|
TypeOK
|
|
|
|
|
StateConsistency
|
2026-07-10 12:43:32 +09:00
|
|
|
AllocatedTokensUsed
|
2026-07-10 14:16:29 +09:00
|
|
|
LiveProgressWellFormed
|
|
|
|
|
LiveProgressCompatibleWithLiveLease
|
2026-07-10 12:43:32 +09:00
|
|
|
AtMostOneLiveLeasePerJob
|
|
|
|
|
AuthorityWellFormed
|
2026-07-10 11:39:49 +09:00
|
|
|
CommittedResultConsistent
|
|
|
|
|
CancellationSafety
|
|
|
|
|
PermitSafety
|
|
|
|
|
ResumeValidity
|
2026-07-17 15:01:15 +09:00
|
|
|
CheckpointStagingOwnership
|
2026-07-10 12:43:32 +09:00
|
|
|
StagingOwnership
|
2026-07-16 23:01:17 +09:00
|
|
|
CredentialLifecycleWellFormed
|
|
|
|
|
NoOrphanSecrets
|
2026-07-10 11:39:49 +09:00
|
|
|
|
|
|
|
|
PROPERTIES
|
|
|
|
|
TerminalStateIsImmutable
|
|
|
|
|
FencingTokensMonotonic
|
|
|
|
|
CommitIsFencedCAS
|
2026-07-13 16:41:51 +09:00
|
|
|
FailureDispositionHonored
|