You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: MODEL_EQ_REPORT.MD
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,24 +7,24 @@ This report maps the current finite TLA+ safety model to the current Go implemen
7
7
| Model anchor | Implementation anchor | Evidence |
8
8
| --- | --- | --- |
9
9
|`tla/EPaxos.tla:27` TLA Init |`epaxos/node.go:98` Go node construction | Initialization sets empty instance state before transport steps; Go also restores durable state and configuration history before accepting input. |
10
-
|`tla/EPaxos.tla:15` TLA SafeDeps |`epaxos/node.go:702` Go attribute computation | Both model and implementation require known conflicting commands to appear in dependency attributes. |
10
+
|`tla/EPaxos.tla:15` TLA SafeDeps |`epaxos/node.go:706` Go attribute computation | Both model and implementation require known conflicting commands to appear in dependency attributes. |
11
11
|`tla/EPaxos.tla:37` TLA PreAccept |`epaxos/node.go:257` Go proposal path | Local proposal computes attributes, persists pre-accepted records, indexes conflicts, and emits pre-accept messages. |
12
-
|`tla/EPaxos.tla:37` TLA PreAccept receive |`epaxos/node.go:401` Go pre-accept handler | Remote pre-accept merges local conflicts with proposer attributes and stores the pre-accepted value. |
13
-
|`tla/EPaxos.tla:49` TLA Accept |`epaxos/node.go:457` Go accept handler | Accept stores slow-path attributes unless the instance is already committed or promised higher. |
14
-
|`tla/EPaxos.tla:58` TLA Commit |`epaxos/node.go:501` Go commit handler | Commit stores final value/attributes and invokes dependency-closed execution. |
15
-
|`tla/EPaxos.tla:64` TLA Prepare |`epaxos/node.go:514` Go prepare handler | Prepare persists higher promises and returns local accepted/committed state for recovery; TLA abstracts this as the ballot-raising recovery step. |
16
-
| Not represented in current TLA safety model |`epaxos/node.go:540` Go prepare response handler | Recovery response quorum handling is verified by Go tests, but the current TLA model abstracts away recovery quorum collection. |
|`tla/EPaxos.tla:91` TLA DependencyClosure |`epaxos/node.go:900` Go component readiness | Component readiness requires outside dependencies to be executed or absent before application emission. |
19
-
|`tla/EPaxos.tla:93` TLA ConflictOrder |`epaxos/node.go:949` Go dependency references | Both require conflicting executed commands to be ordered by dependencies; Go interprets dependency vectors through configuration history. |
12
+
|`tla/EPaxos.tla:37` TLA PreAccept receive |`epaxos/node.go:405` Go pre-accept handler | Remote pre-accept merges local conflicts with proposer attributes and stores the pre-accepted value. |
13
+
|`tla/EPaxos.tla:49` TLA Accept |`epaxos/node.go:461` Go accept handler | Accept stores slow-path attributes unless the instance is already committed or promised higher. |
14
+
|`tla/EPaxos.tla:58` TLA Commit |`epaxos/node.go:505` Go commit handler | Commit stores final value/attributes and invokes dependency-closed execution. |
15
+
|`tla/EPaxos.tla:64` TLA Prepare |`epaxos/node.go:518` Go prepare handler | Prepare persists higher promises and returns local accepted/committed state for recovery; TLA abstracts this as the ballot-raising recovery step. |
16
+
| Not represented in current TLA safety model |`epaxos/node.go:544` Go prepare response handler | Recovery response quorum handling is verified by Go tests, but the current TLA model abstracts away recovery quorum collection. |
|`tla/EPaxos.tla:91` TLA DependencyClosure |`epaxos/node.go:911` Go component readiness | Component readiness requires outside dependencies to be executed or absent before application emission. |
19
+
|`tla/EPaxos.tla:93` TLA ConflictOrder |`epaxos/node.go:960` Go dependency references | Both require conflicting executed commands to be ordered by dependencies; Go interprets dependency vectors through configuration history. |
20
20
|`tla/EPaxos.tla:78` TLA Tick |`epaxos/node.go:237` Go logical tick | Tick advances logical time and dispatches logical timers; no wall-clock API is used in the core. |
21
21
| Not represented in current TLA safety model |`epaxos/checksum.go:65` Go record checksum | Durable record checksum coverage is implementation validation rather than modeled state. |
22
22
| Not represented in current TLA safety model |`epaxos/checksum.go:84` Go message checksum | Transport checksum coverage is implementation validation rather than modeled state. |
23
23
| Not represented in current TLA safety model |`epaxos/codec.go:40` Go decoder | Wire-decoder input tolerance is implementation validation rather than modeled state. |
24
24
| Not represented in current TLA safety model |`epaxos/storage.go:9` Go storage interface | Storage virtualization is an implementation boundary used by deterministic tests rather than modeled state. |
25
25
| Not represented in current TLA safety model |`epaxos/quorum.go:15` Go quorum calculation | Quorum arithmetic for cluster sizes one through seven is verified by Go tests; the current TLA constants enumerate voters directly. |
26
-
| Not represented in current TLA safety model |`examples/kv/kv.go:102` Go transaction batch apply | Example KV transactions are opaque EPaxos commands at the model boundary; atomic multi-key apply is verified by Go tests rather than by the current TLA state. |
27
-
| Not represented in current TLA safety model |`examples/kv/kv.go:169` Go scan implementation | Advanced scan ordering, reverse ordering, timestamp collision behavior, and Pebble durability are example storage semantics verified by Go tests rather than by the current TLA state. |
26
+
| Not represented in current TLA safety model |`examples/kv/kv.go:168` Go transaction batch apply | Example KV transactions are opaque EPaxos commands at the model boundary; atomic multi-key apply is verified by Go tests rather than by the current TLA state. |
27
+
| Not represented in current TLA safety model |`examples/kv/kv.go:256` Go scan implementation | Advanced scan ordering, reverse ordering, timestamp collision behavior, and Pebble durability are example storage semantics verified by Go tests rather than by the current TLA state. |
28
28
29
29
## Current verification evidence
30
30
@@ -33,10 +33,10 @@ This report maps the current finite TLA+ safety model to the current Go implemen
33
33
- Observed `go test ./...` from `examples/kv` passing.
34
34
- Observed `go test -coverprofile=coverage.out ./...` from `examples/kv` plus `go tool cover -func=coverage.out` reporting 100.0% statement coverage for the example module.
35
35
- Observed `go test -tags kvnode ./cmd/kvnode` from `examples/kv` passing for the tagged HTTP service package.
36
-
- Observed `go test ./...` coverage including cluster destruction and restart via `TestRestartAllRawNodesRetainsExecutedAndAppliesOnlyNewCommand`, remove-voter progress via `TestRemoveVoterConfChangeAllowsLaterProgress`, storage write retry via `TestWriteErrorKeepsReadyForRetry`, partition heal convergence via `TestFiveNodePartitionHealConverges`, equal-sequence execution ordering via `TestExecutionEqualSeqTieBreaksByRef`, and inactive dependency filtering via `TestExecutionComponentsSkipInactiveDependencyRefs`.
36
+
- Observed `go test ./...` coverage including deterministic ordered simulation scheduling, cluster destruction and restart via `TestRestartAllRawNodesRetainsExecutedAndAppliesOnlyNewCommand`, remove-voter progress via `TestRemoveVoterConfChangeAllowsLaterProgress`, storage write retry via `TestWriteErrorKeepsReadyForRetry`, partition heal convergence via `TestFiveNodePartitionHealConverges`, equal-sequence execution ordering via `TestExecutionEqualSeqTieBreaksByRef`, inactive dependency filtering via `TestExecutionComponentsSkipInactiveDependencyRefs`, `MaxReadyMessages` batching, and logical-time optimization fast-wait behavior.
37
37
- Observed `go test ./...` coverage in `examples/kv` including transaction atomicity, malformed transaction rejection, transaction batch error propagation, transaction commit error propagation, apply-order visible-version selection, timestamp collision overwrite behavior, ApplyCommitted close/open durability, delete-tombstone scan suppression, Pebble close/open durability, and reverse scans returning the newest version for repeated keys.
38
38
- Observed TLC passing with `/opt/homebrew/opt/openjdk/bin/java -cp /tmp/tla2tools.jar tlc2.TLC -config tla/EPaxos.cfg tla/EPaxos.tla`, generating 11162 states, 2002 distinct states, and no invariant violation.
39
-
- Observed `lein test` from `jepsen` passing namespace and dependency loading, and observed `tests/ci.sh` running a local three-node Jepsen workload against deployed `kvnode` processes with `lein run test --no-ssh --nodes 127.0.0.1:19081,127.0.0.1:19082,127.0.0.1:19083 --time-limit 5 --concurrency 3` reporting register `:linearizable {:valid? true}` and transaction `:txn-atomic {:valid? true, :checked 27, :bad-count 0}`.
39
+
- Observed `lein test` from `jepsen` passing namespace and dependency loading, and observed `tests/ci.sh` running a local three-node Jepsen workload against deployed `kvnode` processes with `lein run test --no-ssh --nodes 127.0.0.1:19081,127.0.0.1:19082,127.0.0.1:19083 --time-limit 5 --concurrency 3` reporting register `:linearizable {:valid? true}` and transaction `:txn-atomic {:valid? true, :checked 23, :bad-count 0}`.
40
40
- Observed repository text audit with no disallowed external-project name, scaffolding marker, or wall-clock API matches.
0 commit comments