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
-`ScrubExecutor<B: StorageBackend>` drives the `common::scrub` types into a running integrity check
14
+
-`scrub_cycle(config, kind)` — single pass returning a `ScrubReport`; respects `max_segments_per_cycle` and `inter_segment_delay` to avoid starving foreground I/O
15
+
-`spawn_background(backend, config, key_manager)` — continuous Tokio task alternating light/deep cycles on schedule
16
+
- Deep scrub applies the strongest check available per segment: BLAKE3-MAC (`encryption::verify_mac`) for encrypted segments; BLAKE3 content-hash recompute for unencrypted; segments with no stored hash/tag recorded as `Ok` (stable condition, nothing to compare)
17
+
-`ScrubResult::Skipped` for transient conditions (e.g. no key manager); skipped segments are not recorded in the schedule and are retried next cycle
18
+
-`ScrubReport` is `#[non_exhaustive]`; new counters `segments_skipped` and `segments_recorded` (both serde-defaulted for backward compat); `ScrubResult::should_record_schedule()` distinguishes definitive from transient outcomes; `segments_recorded` exposes how many schedule timestamps were actually advanced, letting external monitors detect all-transient cycles
19
+
- 10 executor unit tests covering: healthy pass, bitrot detection, length mismatch, schedule throttling, cycle cap, skip semantics, stable-Ok for legacy encrypted segments (+ 17 scheduler tests in `common::scrub`)
0 commit comments