v1.1 · Tier 1LiveAudited 2026-04-26 Real-time delta-watcher → Inbox.
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.
THV2Store.getAllScores() (canonical source — was a non-existent THV2State.scores alias pre-2026-04-26 fix)LAST_SCORES map — local state)LAST_REGIME)THV2Alerts.process() (engine/alerts.js){
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?
}
THV2Alerts.process() runs on every score update; user-added rules (e.g. "MSFT score > 80") fire hereTHV2State.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.
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.
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