Skip to content

KB/alert

Stale Judgment-Surface Input

Last verified

Auto-generated. This article is rebuilt from app/signals/config/alert_thresholds.json by scripts/build_alerts_kb.py. Edit the alert config and re-run the script β€” do not edit this file directly.

Stale Judgment-Surface Input

Alert ID: STALE_INPUT
Category: integrity
Cross-detection: no

A metric feeding the drawdown-risk lens or the health score has gone STALE per the platform’s own freshness machinery (routes._compute_freshness β€” staleness_thresholds.json max-age + the per-metric as-of bindings). The monitored set is DERIVED, never hand-listed: the drawdown lens’s own feature map plus every registry field carrying a health_score_component_name. Fired per-metric by the capture-cycle integrity guard (app/signals/integrity_guard.py), NOT by the macro alert engine. Before this alert existed, staleness was a display badge only β€” a metric could render a red STALE pill for 46 days and nobody was paged.

Severity

WARNING β€” conditions deteriorating; worth monitoring

Trigger condition

{
  "type": "computed",
  "computation": "integrity_stale_input"
}

Computed condition (integrity_stale_input) β€” the trigger logic lives in app/signals/alerts.py:_eval_computed. This alert does not decompose into a simple field threshold; consult the source for the exact semantics.

Message template

Data integrity: {metric} is STALE (~{age_hours}h old vs an expected max of ~{max_hours}h) and it feeds the drawdown-risk lens and/or the health score β€” those surfaces are running on stale input.

Rendered with the current signals dict via Python str.format. Placeholders that fail to resolve fall back to the raw template (see _format_message in app/signals/alerts.py).

Cooldown / dedup

Notifies

See also