FV-1, FV-13: Raft prevLogIndex/prevLogTerm + CI fix

- raft.tla: Add HasCompatiblePrefix check (prevLogIndex/prevLogTerm)
- raft.tla: Add RejectAppendEntries action for follower rejection
- raft.tla: Add conflict truncation + commitIndex/matchIndex adjustment
- raft.tla: Restore LogMatching invariant
- raft.tla: Guard AppendEntry to prevent term gaps in leader log
- models/raft.cfg: Add LogMatching to checked invariants
- .github/workflows/ci.yml: Replace container with setup-java + cache
- run_all.sh: Use -workers auto and -XX:+UseParallelGC
- Update PLAN.md, PLAN_DONE.md, ANALYSIS.md, README.md
This commit is contained in:
2026-05-07 19:21:01 +03:00
parent ce3b078979
commit 54711d0190
8 changed files with 161 additions and 12 deletions
+16 -3
View File
@@ -46,14 +46,27 @@ jobs:
verify:
runs-on: ubuntu-latest
container:
image: eclipse-temurin:21-jre
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Cache tla2tools.jar
uses: actions/cache@v4
with:
path: formal-verification/tla2tools.jar
key: tla2tools-${{ hashFiles('formal-verification/tla2tools.jar') }}
restore-keys: |
tla2tools-
- name: Run TLA+ model checker on all specs
working-directory: formal-verification
continue-on-error: true
run: |
cd formal-verification
for spec in raft twopc mvcc replication gossip deadlock sharding; do
echo "=== Verifying ${spec}.tla ==="
java -cp tla2tools.jar tlc2.TLC -config models/${spec}.cfg ${spec}.tla