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
Browse filesBrowse the repository at this point in the historyBrowse files
authored
test(ci): gate the disk upgrade path — frozen audit home survives field growth (#183)
ci-smoke-disk always writes AND reads with the SAME kernel, so it never
exercises the cross-version case that epic #177's frozen audit-ledger
home exists to protect: an OLDER kernel's on-disk FIELD descriptor meeting
a NEWER field geometry. A future change that un-freezes audit_home_lba()
would silently discard the durable authority ledger on every real-hardware
upgrade with ZERO ci signal — the compile-time _Static_assert only pins the
CONSTANT, not the function's on-disk result.
New ci-smoke-disk-upgrade gate (test-only; no kernel change) proves both
halves non-vacuously:
1. FROZEN-HOME GUARD: after a normal write, the superblock's audit
descriptor must name EXACTLY count-27 (LBA 4069 on the 2 MiB image).
Any movement of audit_home_lba() fails this — verified: mutating the
function body to count-27-1 makes it report "superblock names 4068"
and the gate FAILS (revert-and-confirm-fail).
2. GRACEFUL UPGRADE: with the field descriptor rewritten to the pre-#177
geometry (old home count-6, old 4-region size 2456; audit untouched),
the ledger still restores ("AUDIT: restored ledger from disk") and the
field cold-starts cleanly ("implausible field section"), with no
off-the-end blob read from the stale LBA.
Wired into the persistence CI job after ci-smoke-disk + .PHONY.
Implementation note: the superblock byte-patch uses python3, not
`printf '\xNN' | dd` — make runs recipes under /bin/sh (dash), whose
printf lacks \xHH and would splat the literal escape string across the
audit descriptor (caught during bring-up: the gate spuriously "failed"
because the bad patch corrupted the very ledger it was checking).
Co-authored-by: The Hand <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
0 commit comments