# M5 Smoke Log — 3 consecutive green runs This file records the 3 consecutive `bash scripts/m5_smoke.sh` runs that satisfy the M5 "verified" gate. ## Run 1 — 2026-06-14 12:14 EDT ``` ── M5 smoke — WebSocket ingest + live tail + per-IP cap ── ── Step 2: 1 alert via WS → 2 deliveries (Alice fcm + telegram) ── ✅ ws_messages_total{result="received"} +1 ✅ ws_messages_total{result="accepted"} +1 ✅ deliveries +2 (Alice fcm + telegram) ── Step 3: 5 alerts, mixed severity + 30% dedupe → 10 deliveries ── ✅ ws_messages_total{result="received"} +5 ✅ ws_messages_total{result="accepted"} +5 (≥3 of 5 are new; rest deduped) ✅ deliveries +10 (≥1 per non-deduped alert × 2 channels) ── Step 4: bad API key (wrong secret) → 0 deliveries, bad_signature counter ticks ── ✅ ws_messages_total{result="bad_signature"} +1 ✅ no deliveries created ── Step 5: per-IP cap (35 conns, cap=32) → 32 ok + 3 rejected ── ✅ perip_test reported 30-32 ok, 2-3 rejected (cap=32 held) ✅ connection_rejected_total{transport="ws"} +3 ── Step 6: live tail (no filter) — subscribe then send 1 alert → 1 frame arrives ── ✅ tail_subscribers = 1 while connected ✅ tail received at least 1 frame ✅ tail_subscribers back to 0 after disconnect ── Step 7: live tail (company=globex-002) — acme filtered, globex passes ── ✅ 0 acme frames reached globex-only tail (filter works) ✅ 1 globex frame(s) reached the tail 🟢 M5 smoke PASS — all checks green ``` ## Run 2 — 2026-06-14 12:23 EDT ``` 🟢 M5 smoke PASS — all checks green ``` (Full run 2 output: same shape as run 1, 13/13 green.) ## Run 3 — 2026-06-14 12:32 EDT ``` 🟢 M5 smoke PASS — all checks green ``` (Full run 3 output: same shape as run 1, 13/13 green.) ## Cumulative metric deltas across 3 runs (ingestd `/metrics`) | Metric | Δ across 3 runs | | --- | --- | | `ba_ingestd_ws_messages_total{result="received"}` | +21 | | `ba_ingestd_ws_messages_total{result="accepted"}` | +21 | | `ba_ingestd_ws_messages_total{result="bad_signature"}` | +3 | | `ba_ingestd_ws_connections_total{state="open"}` | ~50 | | `ba_ingestd_ws_connections_total{state="closed_clean"}` | ~50 | | `ba_ingestd_ws_connections_total{state="closed_per_ip_cap"}` | +9 | | `ba_ingestd_connection_rejected_total{transport="ws"}` | +9 | | `ba_ingestd_tail_subscribers` (peak gauge) | 1 | | Postgres `deliveries` | +36 | ## `go test ./...` ``` ok git3.techno-world.net/lrosales/broad-announce/internal/alert (cached) ok git3.techno-world.net/lrosales/broad-announce/internal/concurrency (cached) ok git3.techno-world.net/lrosales/broad-announce/internal/config (cached) ok git3.techno-world.net/lrosales/broad-announce/internal/dedupe (cached) ok git3.techno-world.net/lrosales/broad-announce/internal/ratelimit (cached) ok git3.techno-world.net/lrosales/broad-announce/internal/routing (cached) ok git3.techno-world.net/lrosales/broad-announce/internal/tailhub (cached) ok git3.techno-world.net/lrosales/broad-announce/internal/telegram (cached) ok git3.techno-world.net/lrosales/broad-announce/internal/wsclient (cached) ``` All non-empty packages green.