The out-of-stock push buzzed 32 times again — two weeks after the fix. De-dup bypass (PR #654 VIII F3)
Joao (47) runs Cervejaria do Cais 60-cover petiscos spot on Porto s Cais da Ribeira waterfront. 3 weeks ago after PR #644 V F3 auto-86 push spam he d complained about had calmed down — instead of 14 identical "francesinhas out of stock" pings he was getting exactly one. He d written a TripAdvisor mini-review. But Friday 21:30 dinner rush Apple Watch buzzed 32 pings in 5 minutes. Manager Ines s Galaxy Watch same 32. "Francesinhas ran out 30 minutes ago — why 32 pushes?" Forensic: 32 concurrent order POSTs included francesinhas. First 6 orders parallel; atomic stock_qty UPDATE awarded "yes" to one + "no" to other 5. But all 6 fell into catch branch because in 21:25-21:35 window **5 cron jobs simultaneously** INSERTed cron_idempotency_claims: aff-auto-suspend + pos-retry + email-drips + webhook-retry + feedback-sentiment (every 30 min, xx:00 + xx:30 trigger). Lock-contention spike; D1 SQLITE_BUSY throw; order POST catch-branch fire-anyway path; **de-dup BYPASSED**. V F3 s catch comment: "operator notification trumps de-dup hygiene" — for high-velocity alert classes (out-of-stock, table-occupied, queue-full) this becomes spam. **PR #654 batch VIII F3** fix is one line: catch branch SUPPRESS (return) + structured BEACON prefix [BEACON:auto86_claim_insert_failed] + console.warn. Cloudflare Logpush + Sentry alert rule pinned to prefix; sustained contention alerts internal ops team. Backstop signal verify: (1) operator dashboard Stock Status widget 30s refresh, stock_qty <= 0 surfaces immediately; (2) daily 09:00 UTC low-stock-digest email cron threshold. **Deeper fix cron schedule rebalance**: dispatcher handleScheduled minute offsets — aff-auto-suspend xx:00, pos-retry xx:05, email-drips xx:10, webhook-retry xx:15, feedback-sentiment xx:20, status-snapshot xx:25. "5 simultaneous" pattern at every 30-min slot broken; still 30-min frequency but staggered. Joao next Friday dinner rush received **exactly one francesinhas-out-of-stock push**. TripAdvisor mini-review updated: "thMenu fixed the push spam a second time." 6-month free Pro tier upgrade. Pattern: **after adding a debounce / de-dup / rate-limit mechanism, also test "what happens when the de-dup mechanism fails?" The catch branch fail-open default can turn into silent spam vector; for high-velocity low-criticality alerts (out-of-stock, table-occupied, queue-full) de-dup hygiene beats guaranteed delivery.** Implementation checklist: (1) every de-dup mechanism makes claim INSERT fail decision explicit, default fail-suppress; (2) alert class framing — high-criticality guaranteed delivery, low-criticality de-dup hygiene; (3) verify backstop signals; (4) structured BEACON prefix Logpush/Sentry pin; (5) cron schedule rebalance same-clock-tick fires create lock contention, spread via minute offsets; (6) quarterly cron-contention metric review claim INSERT failure rate > 5%/5min alarm. Gulizar Antalya Lara Manti Evi version with manti spam similar flow.