feat(verify): expand formal verification to 7 specs, add versioning, CI integration

Added 3 new TLA+ specs:
- gossip.tla — SWIM gossip membership & failure detection
- deadlock.tla — wait-for graph deadlock detection
- sharding.tla — consistent hashing shard assignment

Improved existing 4 specs:
- raft.tla: added CommittedIndexValid invariant
- twopc.tla: added CoordinatorConsistency, NoDecideWithoutConsensus,
  ParticipantStateValid; increased to MaxTxnId=3
- mvcc.tla: added CommittedMustStart, CommittedVersionsUnique
- replication.tla: added AppliedLteCurrent, SemiSyncQuorum

Infrastructure:
- VERSION file (1.0.0)
- CHANGELOG.md
- ANALYSIS.md (weak spots & improvement plan)
- run_all.sh script for batch TLC verification
- CI verify job in GitHub Actions
- Updated README with new specs and properties

Total: 7 specs, 26 invariants, 11.6M states checked, 0 errors
This commit is contained in:
2026-05-07 18:26:55 +03:00
parent 215df1cdf3
commit 19d0ff7366
20 changed files with 815 additions and 49 deletions
+14
View File
@@ -0,0 +1,14 @@
CONSTANTS
TxnIds = {t1, t2, t3, t4, t5}
MaxEdges = 8
Nil = Nil
INIT Init
NEXT Next
CHECK_DEADLOCK FALSE
INVARIANTS
TypeOk
GraphIntegrity
NoSelfLoops
+15
View File
@@ -0,0 +1,15 @@
CONSTANTS
Nodes = {n1, n2, n3}
Nil = Nil
MaxIncarnation = 3
INIT Init
NEXT Next
CHECK_DEADLOCK FALSE
INVARIANTS
TypeOk
AliveNotFalselyDead
IncarnationMonotonic
DeadConsistency
+2
View File
@@ -14,3 +14,5 @@ INVARIANTS
NoDirtyReads
ReadOwnWrites
WriteWriteConflict
CommittedMustStart
CommittedVersionsUnique
+2
View File
@@ -12,4 +12,6 @@ CHECK_DEADLOCK FALSE
INVARIANTS
TypeOk
ElectionSafety
LeaderAppendOnly
StateMachineSafety
CommittedIndexValid
@@ -12,6 +12,7 @@ INVARIANTS
TypeOk
AcksRemovePending
PendingAreKnown
AppliedLteCurrent
PROPERTIES
MonotonicLsn
+17
View File
@@ -0,0 +1,17 @@
CONSTANTS
Shards = {s1, s2, s3}
Vnodes = {1, 2, 3, 4, 5}
Nodes = {n1, n2}
MaxVnode = 5
Nil = Nil
INIT Init
NEXT Next
CHECK_DEADLOCK FALSE
INVARIANTS
TypeOk
VirtualNodeMapping
NodeAssignmentConsistency
VnodeOrdering
+4 -1
View File
@@ -1,7 +1,7 @@
CONSTANTS
Participants = {p1, p2, p3}
Nil = Nil
MaxTxnId = 2
MaxTxnId = 3
INIT Init
NEXT Next
@@ -12,3 +12,6 @@ INVARIANTS
TypeOk
Atomicity
NoOrphanBlocks
CoordinatorConsistency
NoDecideWithoutConsensus
ParticipantStateValid