8affb1d6e0
Write-back no-steal buffer pool makes the fsync'd WAL load-bearing (M1 was write-through). Logical WAL with record-granularity page-LSN redo idempotency. Checkpoint = flush dirty pages, fsync store, advance last_checkpoint_lsn, reclaim WAL prefix. One-time snapshot.json import only when store absent; JSON never read as the ongoing store thereafter. Gates: 33/33 M1 (no regression) + 36/36 M2 — replay parity, torn-tail fuzz (every byte offset), checkpoint-crash at all 5 phases, torn-page+WAL redo, legacy-import parity, hebb-survives-crash.
15 lines
525 B
Bash
Executable File
15 lines
525 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# M2 WAL + checkpoint + recovery gate. Pure C (NOT elb/elc). Writes only under /tmp.
|
|
# Recovery tests use ENGRAM_WAL_SYNC=always so every WAL record is durable at crash.
|
|
set -e
|
|
HERE="$(cd "$(dirname "$0")" && pwd)"
|
|
SRC="$HERE/../../lang/runtime/engram_store.c"
|
|
BIN="/tmp/test_wal_store.$$"
|
|
echo "compiling: gcc test_wal_store.c engram_store.c"
|
|
gcc -O2 -Wall -Wextra -std=c11 "$HERE/test_wal_store.c" "$SRC" -o "$BIN"
|
|
ENGRAM_WAL_SYNC=always "$BIN"
|
|
rc=$?
|
|
rm -f "$BIN"
|
|
rm -rf /tmp/engram-wal-test-*
|
|
exit $rc
|