Project

Validation & testing

What has been tested, how to reproduce checks, and where evidence remains incomplete.

Local validation

The recorded validation on October 16, 2026 covered Windows amd64 with Go 1.26.0 and Linux amd64 under Ubuntu WSL2. Windows tests, vet, a CLI build, and the runnable example passed. Linux vet and CGO_ENABLED=1 go test -race ./... also passed.

The Windows environment did not have a C compiler for local race execution. The GitHub workflow defines compiler-equipped Windows and Linux jobs; workflow definitions are not a substitute for inspecting a particular CI run.

Correctness coverage

  • CRUD, namespaces, byte ownership, empty values, versions, and restart behavior.
  • Atomic batches, repeated keys, failed validation, concurrent consistent scans.
  • Range merges, tombstones, budgets, automatic flush, and reclamation.
  • Every incomplete byte offset of a final two-operation WAL frame.
  • Checksum failures, whole-record-boundary table truncation, and missing storage.
  • Checkpoint crash images and reclamation of a full old checkpointed WAL.
  • Forced child-process termination after durable acknowledgement.
  • A deterministic 500-step reference-model workload with flushes and reopenings.
  • Poisoned-handle behavior after real WAL I/O failure.

Run checks

From the repository root:

go vet ./...
go test ./...
go run ./examples/basic

With a supported C compiler and CGO enabled:

go test -race ./...

Fuzz the frame and record decoders:

go test ./internal/storage -run='^$' -fuzz=FuzzDecode -fuzztime=30s
go test ./internal/storage -run='^$' -fuzz=FuzzReadFrame -fuzztime=30s

The initial short decoder and frame-reader smoke runs executed 1,508,110 and 118,376 cases respectively, without a discovered failure. Short fuzz runs are not exhaustive proof.

Benchmark interpretation

go test -run='^$' -bench=. -benchmem -count=3 .

The current benchmarks repeatedly read or replace one 128-byte hot-key value. Reads distinguish memory and warm-cache table access; writes distinguish durable and relaxed mode.

Results report averages and Go allocations. They do not establish P50/P95/P99, RSS, cold-cache behavior, application-scale throughput, or fair cross-database superiority. See the raw baseline and methodology.

Remaining hardening

Sudden power loss, device faults, long-running stress, network filesystems, audited backup/restore, migrations, and macOS/FreeBSD runtime behavior have not been validated. Checkpoint crash images model protocol boundaries rather than every filesystem instruction.

The complete historical record is kept in docs/validation.md.

Something to improve?Edit this page on GitHub