FV-6: Liveness properties + fairness constraints

- mvcc.tla: Add CommitProgress liveness (verified with WF_vars)
- raft/twopc/mvcc/gossip: Add Spec definitions with WF_vars(Next)
- gossip.tla: Fix LearnViaGossip strength-based filtering
  (prevents overwriting Dead/Suspect with weaker state)
- twopc.tla: Add DecideCommitAction/DecideAbortAction for SF fairness
- Update all .cfg files to use SPECIFICATION Spec
- Update CHANGELOG.md -> v1.1.0, VERSION -> 1.1.0, PLAN.md
This commit is contained in:
2026-05-07 21:21:22 +03:00
parent 112ed4764d
commit f9e5169c3d
11 changed files with 93 additions and 12 deletions
+15
View File
@@ -223,4 +223,19 @@ TypeOk ==
/\ coordinatorLog \in [1..MaxTxnId -> {"Commit","Abort", Nil}]
/\ coordinatorAlive \in [1..MaxTxnId -> BOOLEAN]
\* Liveness properties
\* Any prepared participant eventually learns the final decision (Committed or Aborted).
ParticipantProgress ==
\A t \in 1..MaxTxnId : \A p \in Participants :
participantState[t][p] = "Prepared" ~> participantState[t][p] \in {"Committed", "Aborted"}
\* Actions used for fairness constraints.
DecideCommitAction == \E t \in 1..MaxTxnId : DecideCommit(t)
DecideAbortAction == \E t \in 1..MaxTxnId : DecideAbort(t)
\* Specification with weak fairness + strong fairness for coordinator decisions.
Spec == Init /\ [][Next]_vars /\ WF_vars(Next)
/\ SF_vars(DecideCommitAction) /\ SF_vars(DecideAbortAction)
=============================================================================