Skip to content

fix: parked-tier loader joins the corrupt-cache quarantine - #604

Merged
githubrobbi merged 1 commit into
mainfrom
fix/parked-load-quarantine
Aug 22, 2026
Merged

fix: parked-tier loader joins the corrupt-cache quarantine#604
githubrobbi merged 1 commit into
mainfrom
fix/parked-load-quarantine

Conversation

@githubrobbi

Copy link
Copy Markdown
Collaborator

Follow-up to #603, closing its one deliberate leftover: load_parked_body (the Parked-tier bloom + trie sidecar loader) folded every failure into a silent None, so a corruption-class failure on the parked path — the bloom section is exactly where k_hashes out of range surfaces — left the poisoned file in place until the full-body loader happened to touch it.

The read/decrypt/decompress pipeline (read_decompressed_plaintext) now returns the structured LoadCacheError instead of Option, and load_parked_body applies the same contract as load_compact_cache: corruption-class failures (decrypt / decompress / parse) quarantine the file as <name>.corrupt via the shared helper, while transient failures (IO, key unavailable) debug-log and return None untouched. Parse failures from deserialize_parked_body are wrapped as LoadCacheError::ParseError and quarantined too.

Tests: missing file classifies as transient Io (no quarantine); garbage bytes classify as corruption (keystore-less hosts early-out on KeyUnavailable); the pipeline itself never touches the file — quarantine stays the caller's decision.

Validation: just go green (911 uffs-core tests incl. 2 new), just check-windows green, pre-push gate green.

load_parked_body folded every failure into a silent None, so a
corruption-class failure on the parked path (the bloom section is
exactly where 'k_hashes out of range' surfaces) left the poisoned
file in place. The read/decrypt/decompress pipeline now returns the
structured LoadCacheError, and load_parked_body quarantines the file
on corruption — same contract and same quarantine helper as
load_compact_cache — while transient failures (IO, key unavailable)
still just debug-log and return None.
@githubrobbi
githubrobbi added this pull request to the merge queue Aug 22, 2026
Merged via the queue into main with commit 83260b8 Aug 22, 2026
21 checks passed
@githubrobbi
githubrobbi deleted the fix/parked-load-quarantine branch August 22, 2026 16:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant