concept
CH table metadata: esios.alert_events
Alert fire ledger + delivery outbox + pull inbox. One row each time a rule's condition fired. `delivery_status` = pending (webhook owed) → delivered | failed, or pull (read via alerts_pending until acknowledged_at is set). Deduped by a partial unique index on (rule_id, rows_hash) so a re-ingest that rewrites an already-alerted range does not re-fire. FK to alert_rules ON DELETE CASCADE.
# `esios.alert_events`
Alert fire ledger + delivery outbox + pull inbox. One row each time a rule's condition fired. `delivery_status` = pending (webhook owed) → delivered | failed, or pull (read via alerts_pending until acknowledged_at is set). Deduped by a partial unique index on (rule_id, rows_hash) so a re-ingest that rewrites an already-alerted range does not re-fire. FK to alert_rules ON DELETE CASCADE.