Fix #152: honest drain completion #158

Merged
crueber merged 1 commit from fix/issue-152 into main 2026-09-05 20:44:24 +00:00
Owner

DATA-LOSS FIX: overflow drain wrote the per-seq done marker even when recipients failed/stranded, so the #77 redrain skipped the seq forever. fanoutOne now returns (existed, complete), logs the shortfall, drain skips the marker on incomplete; redrain converges idempotently. Regression tests (fault-injected failure + expired budget), verified FAILING pre-fix, green -race -count=20. Coverage 96.2% (>=95%). Doc Decisions entry (law 12). No merge requested.

DATA-LOSS FIX: overflow drain wrote the per-seq done marker even when recipients failed/stranded, so the #77 redrain skipped the seq forever. fanoutOne now returns (existed, complete), logs the shortfall, drain skips the marker on incomplete; redrain converges idempotently. Regression tests (fault-injected failure + expired budget), verified FAILING pre-fix, green -race -count=20. Coverage 96.2% (>=95%). Doc Decisions entry (law 12). No merge requested.
fanoutOne reported 'event existed', not 'recipients done': budget-stranded
recipients and createFailed were swallowed, yet the drain wrote the
per-seq completion marker, so the #77 redrain sweep skipped the seq
forever. fanoutOne now returns (existed, complete), logs the shortfall,
and the drain skips the marker on incomplete; the redrain converges
idempotently. Regression tests verified FAILING pre-fix (marker case);
-race -count=20 green, coverage 96.2%. Doc Decisions entry (law 12).
Sign in to join this conversation.
No description provided.