Skip to content

No alerting is wired — every failure is discovered by a miner (submit outage + 429 bug both found this way) #343

Description

@wallscaler

Problem (100x reliability audit, CRITICAL — reliability is the #1 challenge)

Alert SPEC is complete (deploy/observability/ALERTS.md defines PAGE/WARN thresholds) but alerting is NOT wired (deploy/RELIABILITY_UPGRADE_PLAN.md:916 "[ ] P7: alerts and dashboards live" UNCHECKED). No scheduled watcher exists in the repo. This is the "429 found by a miner, not monitoring" gap, generalized — and it just happened AGAIN with the 2026-07-05 submit outage (found by miner report, not an alert).

Signals that exist in code and go NOWHERE:

  • weights.refresh_health() (weights.py:1507) — a dead refresh thread is invisible until the 30-min 503 cliff.
  • ratelimit.unresolved_ip_count() (ratelimit.py:56-68) — the Harden client-IP derivation: trusted-proxy guard for rate limiting on un-proxied origins #333 fail-open counter has ZERO callers; the limiter can silently un-throttle whole paths.
  • verify-worker heartbeats written to DB (app.py:1654-1666) but no endpoint reads heartbeat age.
  • /v1/admin/validator-health (app.py:4635) computes level=page but nothing polls it.

Fix (~1 day)

One Cloudflare Worker cron (you already run two) every 1-5 min:

  • GET weights/next on all three validator URLs → assert 200 + generated_at age <5min + source != stale_fallback.
  • GET validator-health → assert no level=page, weights_feed_5xx flat, unresolved_ip_count flat (once wired), worker heartbeat age <60s.
  • Push failures to Discord/Telegram/email.

Converts every other finding in the audit from "a miner tells Fred" to "Fred knows first." Also: wire unresolved_ip_count() (from #333) and worker heartbeat age into validator-health so the cron can watch them.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions