feat: alerts tables, engine, monitors, in-app and email, Alerts home and bell API (P1-P3) #4

Merged
KofTwentyTwo merged 2 commits from feature/alerts-core-p1-p3 into develop 2026-10-12 22:16:48 +00:00
2 Commits
Author SHA1 Message Date
james.maesandClaude Opus 5.5 fed79bd753 feat: spec table labels, record-label titles, readable heartbeat titles, local demo server
- table labels follow the design (Alerts, Monitors, Alert Types, ...)
- per-record monitor alerts are titled with the record's label field
- heartbeat titles read "for 46 h" instead of minutes; short group names
  are upper-cased (CDN)
- AlertsDemoServer (test scope, not shipped): H2 + mock admin + 30 days of
  history produced through the engine, for screenshots and manual checks

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:14:41 -05:00
james.maesandClaude Opus 5.5 45c7b4fb8f feat: alerts tables, engine, monitors, in-app and email delivery, Alerts home and bell API (P1-P3)
Implements phases P1 to P3 of the Alerts design (QRun-IO/qqq#1090):
- 15 alerts_* tables with the Liquibase changelog, record security
  (alerts_user / alerts_permission / alerts_readable_table keys) and a
  write guard so alerts change only through the engine and record actions
- the state machine: dedup, refresh, severity changes, snooze, resolve,
  reopen window, flapping, quiet-period auto-resolve, maintenance windows
- monitors: TABLE_QUERY, AGGREGATE, HEARTBEAT, PROCESS_FAILED, CODE, with
  the full-state diff, forMinutes, timeouts, CHECK_FAILED meta-alert and
  seeded monitors
- routing with scopes, teams, the bootstrap rule, recipient visibility and
  logged suppression reasons; in-app, email and email-list channels; a
  channel SPI; retries to DEAD and channel health; redaction
- record actions as streamed ETL processes; hidden scheduled processes
- the Alerts app home, AlertSummaryLoader, and /qqq/v1/alerts routes for
  the Next UI bell and record panel

The core producer SPI (QRun-IO/qqq#1108) is not released yet, so its types
are a stand-in in the spi package, marked for replacement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:57:39 -05:00