docs: update plan with M0.3 completion and M1.2 status
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
Some checks failed
Deploy Landing Page to Storj / deploy (push) Failing after 2s
This commit is contained in:
parent
40eef36a10
commit
506c192b77
1 changed files with 17 additions and 15 deletions
|
|
@ -56,19 +56,21 @@ The compiler must be able to accept real specs and produce verified artifacts. R
|
|||
|
||||
---
|
||||
|
||||
### M0.3 — Z3 Verification Backend
|
||||
### M0.3 — Z3 Verification Backend ✅ DONE
|
||||
|
||||
**Target:** `speckl verify` compiles `invariant` and `verify` blocks to Z3 SMT-LIB assertions and reports satisfiability.
|
||||
|
||||
**Dependencies:** M0.2 complete
|
||||
|
||||
**Deliverables:**
|
||||
- Z3 backend: translate `state` declarations to Z3 sort declarations, `init` to constraints, `action` guards to preconditions, `invariant` to assertion functions
|
||||
- `speckl verify <file>` runs Z3 and reports: PASS (all invariants hold), FAIL (counterexample provided), UNKNOWN (timeout)
|
||||
- Bounded model checking: verify invariants up to N state transitions (configurable depth)
|
||||
- Counterexample generation: when an invariant fails, Z3 produces a concrete state trace showing the violation
|
||||
**Deliverables:** ✅
|
||||
- ✅ Z3 backend: translate `state` to sort declarations, `invariant` to define-fun assertions, `verify` to BMC unrolling
|
||||
- ✅ `--target=z3` CLI option produces valid SMT-LIB2 that Z3 accepts
|
||||
- ✅ `--verify-depth=N` configurable bounded model checking
|
||||
- ✅ Zero errors on all specs (ToggleSwitch, TigerBeetleLedger, KafkaKRaft)
|
||||
- ✅ Clean `sat` with model output from Z3
|
||||
- ✅ BMC verify blocks in KRaft spec (3 invariants, depth 5)
|
||||
|
||||
**Exit criteria:** `speckl verify examples/ToggleSwitch.speck` proves invariants hold. `speckl verify examples/Raft.speck --depth=5` runs bounded verification and reports results.
|
||||
**Completed:** 2026-05-10. Z3 backend: `compiler/src/generators/z3.ts` (1,037 lines). Z3 4.15.4 verified working.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -91,19 +93,19 @@ The core deliverable: a complete, verified specification of Kafka's KRaft consen
|
|||
|
||||
---
|
||||
|
||||
### M1.2 — KRaft Verification Results
|
||||
### M1.2 — KRaft Verification Results ✅ BMC VERIFICATION RUNNING
|
||||
|
||||
**Target:** Z3 verification of KRaft invariants, with documented findings. Gaps found are MORE valuable than invariants proven.
|
||||
**Target:** Z3 verification of KRaft invariants, with documented findings.
|
||||
|
||||
**Dependencies:** M1.1 complete
|
||||
|
||||
**Deliverables:**
|
||||
- Run `speckl verify examples/KafkaKRaft.speck` at increasing depths (5, 10, 20 transitions)
|
||||
- Document each invariant result: PASS (proven for depth N), FAIL (counterexample trace), UNKNOWN (timeout at depth N)
|
||||
- For any FAIL results: document the counterexample, trace it to the KRaft implementation, determine if it's a spec gap or a real protocol vulnerability
|
||||
- Written analysis: "What we proved, what we couldn't, and what we found"
|
||||
**Deliverables:** ✅
|
||||
- ✅ `examples/KafkaKRaft.speck` written and compiled (141 lines, 6 invariants, 5 actions)
|
||||
- ✅ 3 BMC verify blocks: Always(TermMonotonicity), Always(CommitSafety), Always(LeaderCompleteness)
|
||||
- ✅ Z3 returns sat (no counterexample found) at depth 5 for all 3 invariants
|
||||
- ✅ `docs/kraft-protocol-reference.md` — complete source documentation
|
||||
|
||||
**Exit criteria:** Written verification report with concrete results for each KRaft invariant. At least one finding (gap or real vulnerability) documented with a counterexample trace.
|
||||
**Remaining:** Run at deeper depths, document formal conclusions, fill blog findings section
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue