Segment reclaim & compaction correctness
- 169d1d4: Compare the full
FrameLocin the compaction repoint CAS so a rewrite into the same source segment is not reverted to the stale frame. - b9d0dd8: Read the segment-reclaim segcount scan at the durable level so a segment is never deleted while its death is still an unflushed in-memory debit.
- 7e9e4e2: Prove reclaim deletes from the durable view under the WAL-off production config.
- eb4f9e7: Check the durable view too in the segment directory-verify so an unflushed overwrite cannot mask a durably referenced frame from the delete backstop.
- 9a3827c: Keep compaction's gather compressed end to end (verify and AAD-rebind only), cap the round in stored bytes plus per-frame overhead, and fan the batch AEAD out on rayon in both directions.
HA / replication correctness
- dcb1e6c: Key the cross-term tail clear on the tail's own epoch, not the heartbeat-advanced fence, so a restarted leader's stale tail cannot replay over the new term's fsync-acked writes.
- cfae108: Validate takeover replay against a per-batch durable provenance stamp and gate boot on a latest-leader record so neither a stale tail nor an election from silence can regress acked state.
- b3b6028: Raise the replication decode limit above tonic's 4 MiB default.
Robustness fixes
- f2d5a6b: Forward mid-scan iterator errors into the
Db::scanstream instead of swallowing them as a clean end-of-range. - 5b66e77: Reject a write or trim whose
offset + lengthoverflows u64 asEINVALinstead of wrapping into a request-task panic or a stray unreachable extent.
Refactors & housekeeping
- 2bdf0e0: Fix clippy warning.
- 0cbf4b3: Split
extent.rsinto anextent/module: read, write, select, reclaim, compact. - f67f347: Split
fs/mod.rsinto boot, handle, and per-opops/files with their tests.
Full Changelog: v2.0.6...v2.0.7