Invariants / CN-WAL-01

CN-WAL-01

CN release enforced

Single WAL append authority: WalStore::append is the SOLE mutation method on any WalStore impl. No truncate/rewrite/replace method exists on the trait or any impl. Append-only by type, not by convention.

Source

docs/planning/phase4-n-m-ledger-seed-invariants.md §1 (I-A4)

Enforcement trace

Tests 3

  • crates/ade_runtime/src/wal/file_wal_store.rs::tests::file_wal_store_append_then_read_all_round_trips
  • crates/ade_runtime/src/wal/file_wal_store.rs::tests::file_wal_store_reopens_existing_directory_and_preserves_entries
  • crates/ade_runtime/src/wal/file_wal_store.rs::tests::file_wal_store_rotates_at_max_bytes_when_forced

Cross-references

Strengthened in

Evidence notes

PHASE4-N-M-A S3 (2026-05-26): WalStore trait declares only append + read_all + verify_chain. FileWalStore impl adds no extra mutation methods. ci/ci_check_wal_append_only.sh enforces workspace-wide.