# BACKLOG
src/strategy/batch.rs:50 | wireshift-core | silent-fallback | medium | REPOPULATE 2026-07-16: non-first completion wait fails with a non-timeout error, the error is quietly broken out of the loop and discarded, returning the completions gathered so far. Downstream consequence: fatal backend errors occurring during batch operations go undetected until subsequent calls. | FIXED (Law-10): the drain loop now keeps only the `Err(Error::Timeout { .. }) if index > 0 => break` quiet-stop arm; every other error (a first-completion error, or a non-timeout fatal backend error on a later completion) is pushed onto the results and breaks, so it is surfaced to the caller instead of discarded. Proving test tests/unit/batch_drain_error_surfacing.rs::batch_drain_surfaces_non_timeout_error_after_the_first_completion: a mock BackendFactory/Backend delivers one valid completion then drops its completion sender (the exact shape of a dead backend thread mid-batch); drain(8) must return [Ok(event), Err(Error::Completion{..})] where the error message names the channel disconnect - proving the non-timeout error is bubbled up, not swallowed. Gate: cargo test -p wireshift-core --test unit green (21 passed, EXIT=0). | status=done
src/ops/splice.rs:89 | wireshift-core | silent-fallback | low | REPOPULATE 2026-07-16: unexpected completion payload is received for Splice, a result with 0 bytes transferred is quietly returned, masking routing errors. Downstream consequence: caller assumes the operation succeeded but transferred 0 bytes when in fact it was misrouted or returned invalid payload. | FIXED (Law-10): map_completion now maps `CompletionPayload::Bytes(n) => Ok(..)` and `other => Err(Error::completion("splice received unexpected completion payload: {other:?}", ..))`, matching the sibling ops (nop/cancel/filtered_read). Existing test splice_result_maps_from_bytes_payload confirms Bytes is the only legitimate payload. Proving test splice_madvise_tests::splice_rejects_unexpected_payload_instead_of_reporting_zero_bytes asserts a Unit payload yields Error::Completion whose message contains "unexpected completion payload". Gate green (21 passed, EXIT=0). | status=done
src/ops/madvise.rs:84 | wireshift-core | silent-fallback | low | REPOPULATE 2026-07-16: unexpected completion payload is received for Madvise, a result with MadviseAdvice::Normal is quietly returned, masking routing errors. Downstream consequence: caller assumes the advice was reset to Normal when the payload was actually invalid. | FIXED (Law-10): the outer `_ => Normal` silent arm is replaced with `other => Err(Error::completion("madvise received unexpected completion payload: {other:?}", ..))`; the legitimate unknown-CODE->Normal mapping INSIDE the `Bytes(code)` arm is preserved (covered by madvise_result_maps_from_bytes_payload code 3). Proving test splice_madvise_tests::madvise_rejects_unexpected_payload_instead_of_defaulting_to_normal asserts a Unit payload yields Error::Completion with "unexpected completion payload". Gate green (21 passed, EXIT=0). | status=done