- Traced settings loading and patching through
Config::patch_settings_with_roots, CLI config commands, and tests. - Found that settings patch writes used atomic rename but did not serialize read/merge/write across Pi processes.
- Fixed in
f3120138by adding a process mutex, advisory lock file, parent-directory fsync, and a concurrent update regression test.
- Reviewed the compaction/permissions hardening commit for overflow, expiry-boundary, and persistence regressions.
- Found
PermissionStorehad the same read/merge/write lost-update race: two concurrently opened stores could overwrite each other's allow/deny decisions. - Fixed in
d2d864afby adding a process mutex, advisory lock file, reload-under-lock transaction, parent-directory fsync, and a concurrent record regression test.
rch exec -- ... cargo fmt --checkpassed.rch exec -- ... cargo check --all-targetspassed.rch exec -- ... cargo clippy --all-targets -- -D warningspassed.- Focused config regression passed:
cargo test --lib config::tests::patch_settings_serializes_concurrent_updates. - Full
cargo testand broadercargo test --libwere stopped/failed under shared disk exhaustion; failures observed wereStorageFull/database or disk is full, not assertion failures in the reviewed code.