Context
From the first complete full mutation-testing run (ADR-007 shared workflow, run 29074771985, 2026-07-10, main @ 94a5d44). The dead-letter-queue drop accounting and rate-limited warning logic in PushHandle are effectively unasserted.
Surviving mutants
src/push/queues/handle.rs:199 — replace + with * in PushHandle::route_to_dlq
src/push/queues/handle.rs:235 — replace && with || in PushHandle::log_dlq_drop
src/push/queues/handle.rs:236 — replace > with < / == / >= in PushHandle::log_dlq_drop
src/push/queues/handle.rs:70 — replace PushHandleProbe::dlq_drop_count -> usize with 0 / 1
src/push/queues/handle.rs:83 — replace PushHandle::probe -> PushHandleProbe (four constructor variants)
Analysis
PushHandleProbe, probe(), and dlq_drop_count() are #[cfg(loom)], and every loom test asserts dlq_drop_count() == 0 only; no test produces a non-zero drop count or drives the interval-based logging path. All existing tests use dlq_log_every_n(1), whose is_multiple_of(1) short-circuits should_log to true, so the &&/|| and elapsed-interval comparisons never diverge. fetch_add returns the previous count, so the +→* mutant logs dropped=0 and resets identically under the current tests.
Suggested tests
- A loom (or single-threaded) test with
dlq_log_every_n(3), a large log interval, and exactly one drop, asserting probe.dlq_drop_count() == 1. This one test kills the route_to_dlq arithmetic mutant, the &&→|| mutant, the >→< mutant, the dlq_drop_count -> 0 mutant, and any viable probe constructor variant.
- An interval-driven test with
dlq_log_every_n(0) and dlq_log_interval(Duration::from_millis(1)): sleep past the interval, drop one frame, and assert the warning is logged and the counter reset (kills >→==).
Accepted
handle.rs:236 >→>= requires elapsed to equal the interval to nanosecond precision; not reproducible. Accepted.
Context
From the first complete full mutation-testing run (ADR-007 shared workflow, run 29074771985, 2026-07-10,
main@ 94a5d44). The dead-letter-queue drop accounting and rate-limited warning logic inPushHandleare effectively unasserted.Surviving mutants
src/push/queues/handle.rs:199—replace + with *inPushHandle::route_to_dlqsrc/push/queues/handle.rs:235—replace && with ||inPushHandle::log_dlq_dropsrc/push/queues/handle.rs:236—replace > with < / == / >=inPushHandle::log_dlq_dropsrc/push/queues/handle.rs:70—replace PushHandleProbe::dlq_drop_count -> usize with 0 / 1src/push/queues/handle.rs:83—replace PushHandle::probe -> PushHandleProbe(four constructor variants)Analysis
PushHandleProbe,probe(), anddlq_drop_count()are#[cfg(loom)], and every loom test assertsdlq_drop_count() == 0only; no test produces a non-zero drop count or drives the interval-based logging path. All existing tests usedlq_log_every_n(1), whoseis_multiple_of(1)short-circuitsshould_logtotrue, so the&&/||and elapsed-interval comparisons never diverge.fetch_addreturns the previous count, so the+→*mutant logsdropped=0and resets identically under the current tests.Suggested tests
dlq_log_every_n(3), a large log interval, and exactly one drop, assertingprobe.dlq_drop_count() == 1. This one test kills theroute_to_dlqarithmetic mutant, the&&→||mutant, the>→<mutant, thedlq_drop_count -> 0mutant, and any viableprobeconstructor variant.dlq_log_every_n(0)anddlq_log_interval(Duration::from_millis(1)): sleep past the interval, drop one frame, and assert the warning is logged and the counter reset (kills>→==).Accepted
handle.rs:236>→>=requireselapsedto equal the interval to nanosecond precision; not reproducible. Accepted.