Status: no-go evidence bundle for the active EPaxos production-readiness goal. This document records repository verification and its explicit boundaries; it does not claim mission-critical production readiness.
- Release authority:
RELEASE_SCOPE.md. - Current decision:
No-go.. - Authoritative workflow:
bash tests/go_no_go_workflow.sh. - The canonical open row is Broader formal model coverage.
- This snapshot describes the checked repository tree and the commands listed below. A production release must bind evidence to an exact source revision, release binary digest, target identity, immutable evidence root, and independent reviewer signature.
- The coverage gate measures production packages separately:
epaxosreached 87.6% against an 85.0% minimum andexamples/kvreached 90.5% against a 90.0% minimum. Verification collectors are exercised by root behavior and race suites. - No external target-environment closure bundle is present. Repository evidence therefore remains bounded, local, and non-release-approving.
| Gate | Result | Evidence boundary |
|---|---|---|
| Root Go tests | Pass: go test ./... -count=1 |
Deterministic repository tests. |
| Lifecycle race tests | Pass: go test -race ./tests/lifecyclecollector -count=1 |
Collector behavior under the race detector. |
| Refinement-trace race tests | Pass: go test -race ./tests/refinementtrace -count=1 |
Executable bounded RawNode contracts under the race detector. |
| Required fast TLA suite | Pass: bash tests/tla_model_check_fast.sh with 32 finite jobs, including EPaxosCertifiedCompactionFast.cfg |
Includes the ordered compaction/fencing model and six exact-marker negative mutants; bounded TLC state spaces are not an unbounded proof. |
| Release scope structure | Pass when bash tests/release_scope_audit.sh is run |
Canonical decision, one open row, links, model paths, and tracked-text guards. |
| Repository text audit | Pass when bash tests/audit_repo.sh is run |
Static forbidden-text and deterministic-core checks. |
| Operations artifact audit | Pass in the recorded local verification | Example/operator reports and local lifecycle evidence; not target-environment closure evidence. |
| Aggregate Go coverage | Pass: epaxos 87.6% >= 85.0%; examples/kv 90.5% >= 90.0% |
Verification collectors remain covered by root behavior and race suites; optional platform/process branches are outside production-package coverage. |
RawNodeowns deterministic protocol state only. Opaque commands expose canonical point/span/all footprints and replicated cycle keys; protocol controls are separate entry kinds.Readyenforces ordered persistence, transport, snapshot install, applicationApply, checkpoint, compaction, and exact-prefixAdvancephases. Application effects and fullCommandIDresults commit atomically in the KV example.- The core supports voters 1 through 7, caller-owned storage/transport/time sampling,
MEP3incarnation-authenticated messages, Pebble v9 migration, and safe-copy/zero-copy ownership. - Certified checkpoint descriptors bind exact frontiers, voter incarnations, barrier/protocol state, allocator fences, nonempty application snapshot handles, and application digests. Durable quorum certification precedes atomic tombstone/deletion; prepared replicas retry votes, and certified replicas answer covered stale votes with the latest certificate and offer.
- The three-replica KV smoke covers empty-span ordered read, phantom conflict, certification, physical row deletion, snapshot-plus-delta restart, durable result replay, late compacted reference offer, and wrong-incarnation rejection.
- Local Jepsen profiles cover restart, transport partition, storage-unavailable, destructive-storage, scan semantics, and checker behavior. These histories are loopback-only.
The TLA+ and executable evidence are deliberately layered:
tla/EPaxosInductiveProofs.tlais checked by TLAPS 1.6.0-pre at version763bf3c: 876 obligations, 867 proved, 9 failed, and 0 omitted. All anchor families prove. Four newly isolated helper obligations and five unchanged original preservation lemmas remain unchecked, sotests/tlaps_check.shis fail-closed and exits 10.- The 32-job TLC fast gate includes
tla/EPaxosCertifiedCompaction.tlaandtla/EPaxosCompactionFencing.tlawith its ordered 11-state positive model containing both lanes, both incarnations, and one fenced-configuration transition. The fencing model certifies six named requirements in that finite scope; six negative mutant configurations each produce their exact invariant violation, andTestFencingLayersRejectFoldedLoadAndStaleBootstrapAuthis the layered Go witness. tla/EPaxosRevisited.tla,tla/TOQClockDiscipline.tla,tla/ReadyAdvance.tla,tla/EPaxosCertifiedCompaction.tla,tla/EPaxosRawNodeRefinement.tla, andtla/EPaxosInductiveProofs.tlacover finite TOQ/Ready/checkpoint/refinement workflows and a restricted abstract-history safety module.tests/refinementtracecaptures four realRawNodenormal, recovery, TOQ, and configuration scenarios.tests/trace_refinement_check.sh, wired intotests/ci.sh, projects semantic snapshots onto 12tla/EPaxosRawNodeRefinement.tlavariables. Every consecutive pair is dispatched by its audited raw(action, kind)entry in a 96-pair permission table to the model action predicates or exact 12-variable equality; atomic commit-plus-execute uses a TLC-evaluatedPaperChoose/PaperExecuterelational composition without changingPaperNextorRefinementProperty, and all five negative controls reject.- The trace replay proves sampled admission. The exhaustive AST inventory separately proves coverage of internal mutation/dispatch sites through exclusive
TraceActions/Stutter/Gapclassification. Their combined residuals are unexercisedPaperObserveRecovery, audited-but-unexercisedNormalValidationDrop/message-step, 13 bookkeeping variables frozen atInit, coordinator-and-designated-instance scope, andwireabstracted to a constant. tests/formal_closure_collect.shstages unsigned-localrawArtifactrecords fail-closed. Verifier enums cover the compaction/fencing area, andtests/formal_closure_evidence_selftest.pycovers 82 synthetic cases. These local artifacts do not supply producer/reviewer signatures or native-Darwin target attestation.MODEL_EQ_REPORT.MDis the direct mapping authority. It names implementation anchors, model actions, executable test anchors, and every correspondence boundary.
The repository contains example/operator artifacts and audits:
tests/kvnode_local_runner.go, the local lifecycle helpers, andepaxos/dst_test.goproduce bounded checkpoint, restore, corruption, fault, and deterministic-work evidence.examples/kv/cmd/kvcheckpointand its tests exercise checkpoint and rollback procedures.- These artifacts and the certified-compaction implementation provide bounded local evidence; they do not prove arbitrary histories or unbounded Go/TLA refinement.
| Item | Required closure evidence |
|---|---|
| Broader formal model coverage | Local gaps: discharge the four named helper obligations and five unchanged original preservation lemmas still failing under TLAPS, and close the replay residual classes (PaperObserveRecovery, NormalValidationDrop/message-step, 13 frozen bookkeeping variables, coordinator-and-designated-instance scope, and constant-abstracted wire). External gaps: independent producer and reviewer signatures over the canonical bundle plus native-Darwin attestation for target mc-kv-darwin24-arm64-launchd-3n-r1. The finite compaction/fencing certification and sampled action replay are landed evidence, not row closure. |
Real closure requires a signed evidence bundle in addition to the local formal checks:
- Run
bash tests/formal_closure_collect.shto collect the producer-side local evidence. The collector does not supply the external approval inputs. - Pin two externally controlled trust roots: the producer's public key at
tests/formal_closure_producer_public.pemand the reviewer's public key attests/formal_closure_reviewer_public.pem. The private keys stay under distinct external control; the producer and the reviewer are different parties, and neither key may be generated by the machine that assembles the bundle. The verifier checks that the PEM trust roots differ at the public-key level and that the reviewer identity is independent of the producer identity. - Obtain a native Darwin execution attestation with
execution_modeset tonative-darwin, bound to targetmc-kv-darwin24-arm64-launchd-3n-r1. - The producer signs the canonical evidence payload with RSA-SHA256, and the independent reviewer signs it separately; this machine cannot self-issue either signature. The verifier checks both signatures against their pinned public keys and the bound canonical payload hash.
Invoke the release workflow against that signed bundle:
GO_NO_GO_EVIDENCE_ROOT=/absolute/path/to/signed-bundle \
bash tests/go_no_go_workflow.sh
The following commands are the repository evidence gates:
go test ./... -count=1
go test -race ./tests/lifecyclecollector -count=1
go test -race ./tests/refinementtrace -count=1
go test ./epaxos -run '^TestDST(DataLifecycle|TransientFault|DegradedPerformance)' -count=1
bash tests/tla_model_check_fast.sh
python3 tests/tla_model_check_runner.py --profile fast --jobs 2 --per-config-timeout 180 --overall-timeout 600
bash tests/audit_repo.sh
bash tests/release_scope_audit.sh
bash tests/operations_readiness_audit.sh
bash tests/go_no_go_workflow.sh
bash tests/go_coverage.sh passes the scoped production-package thresholds and race stress suites. The fast TLA gate is finite; the larger bash tests/tla_model_check.sh profile is an additional manual check and does not close the formal blocker.
- This evidence supports a bounded library and example-service claim on Darwin arm64, including certified protocol compaction, checkpoint recovery, three-node same-host loopback exercises, sampled Go-to-TLC replay, and six finite compaction/fencing invariants. It does not support arbitrary-Go refinement, arbitrary compaction histories, arbitrary crash/network histories, operational TOQ clock synchronization, or target deployment guarantees. The release decision remains no-go for both the named local formal gaps and the missing independent signatures/native-Darwin target attestation.