← AI features

Alerts pipeline — model card

v1.1 · Tier 1LiveAudited 2026-04-26 Real-time delta-watcher → Inbox.

Purpose

Watches three live signals (score deltas, tier transitions, lead-indicator firings, regime flips) and writes them to the Inbox + persists to store.events log for cross-session durability. Drives the Cmd+K palette badge count + the /signals SPA view + push notifications when wired.

Inputs

Outputs

{
  id:        'score-jump-1714082400000',
  ts:        1714082400000,
  ticker:    'NVDA',
  kind:      'score-jump',          // score-jump|score-drop|tier-transition|
                                    // lead-{indicator}|regime-flip
  severity:  'strong',              // info|warn|strong → drives badge color
  label:     'NVDA +12.3 pt move',
  rationale: 'Score 58.0 → 70.3 (Buy)',
  ack:       false                  // user-acknowledged?
}

Trigger conditions

Bug fix history

Critical bug (R0 audit): Pre-2026-04-26, the pipeline read from THV2State.scores — an alias that never existed on the actual app state object. The pipeline was a silent no-op for the lifetime of the codebase. R0 audit caught it; R0 fix wired it to THV2Store.getAllScores(). Tier transitions, score deltas, lead-indicator firings, and regime flips now actually fire.

Dedup

30-minute window per (ticker, kind) pair. Same alert kind for same ticker won't fire twice within 30 min; severity escalation (e.g. warn → strong) bypasses dedup so user isn't blind to acceleration.

Source

engine/alerts-pipe.js (delta-watcher) + engine/alerts.js (user-defined rule engine, now wired)

Reviewed: 2026-04-27 · Next: 2026-07-27 · Per Bible §15.61