Summary
The reclaim drain's second-proof re-push path in kernel/src/task/process_task.rs (~L939-961) only increments proof_failures for Cached/LiveRow re-block reasons. An entry that is perpetually re-blocked by Hardware/Shadow never gets its proof_failures counter advanced, so it never crosses the parking/aging threshold — it just gets re-pushed onto the queue indefinitely.
This is a real structural asymmetry in the re-block handling, not a flake: it does not currently trigger the reclaim-pairing test failure (that was a test-observation race, fixed separately in the branch that merged as fix/reclaim-pairing-test-quiesce), but it represents a latent leak path where an entry stuck in a Hardware/Shadow re-block loop is never parked/aged out.
Where
kernel/src/task/process_task.rs, second-proof re-push path around lines 939-961.
Ask
Audit the re-block reason handling in that path and make proof_failures accounting (and therefore parking/aging) symmetric across all re-block reasons (Cached, LiveRow, Hardware, Shadow), or explicitly document why Hardware/Shadow are intentionally exempt if that is in fact correct.
Context
Surfaced during root-cause investigation of the reclaim-pairing test flake (PR #513). Separate hardening work — not blocking, not part of that fix.
Summary
The reclaim drain's second-proof re-push path in
kernel/src/task/process_task.rs(~L939-961) only incrementsproof_failuresforCached/LiveRowre-block reasons. An entry that is perpetually re-blocked byHardware/Shadownever gets itsproof_failurescounter advanced, so it never crosses the parking/aging threshold — it just gets re-pushed onto the queue indefinitely.This is a real structural asymmetry in the re-block handling, not a flake: it does not currently trigger the reclaim-pairing test failure (that was a test-observation race, fixed separately in the branch that merged as
fix/reclaim-pairing-test-quiesce), but it represents a latent leak path where an entry stuck in aHardware/Shadowre-block loop is never parked/aged out.Where
kernel/src/task/process_task.rs, second-proof re-push path around lines 939-961.Ask
Audit the re-block reason handling in that path and make
proof_failuresaccounting (and therefore parking/aging) symmetric across all re-block reasons (Cached,LiveRow,Hardware,Shadow), or explicitly document whyHardware/Shadoware intentionally exempt if that is in fact correct.Context
Surfaced during root-cause investigation of the reclaim-pairing test flake (PR #513). Separate hardening work — not blocking, not part of that fix.