This page documents the exact rules the code runs. The configuration it describes lives in src/lib/config and src/lib/ingest; changing those files changes this page.
Providers fetch from public endpoints on a schedule: RSS/Atom feeds and GitHub release lists every 30 minutes, the arXiv API every 6 hours, reviewed manual files with each feed run. The frontend never scrapes. Each fetch is recorded as an ingestion run with status, counts and a log; sources keep their last status and error so failures are visible on /sources instead of silently producing nothing.
Items are de-duplicated by a hash of the normalised source URL (tracking parameters removed). Reviewed rows are never overwritten by automation.
Classification is deterministic keyword scoring. The same text always yields the same result, and each record stores the matched terms (open “Why this classification?” in any evidence panel).
Severity terms: critical (+1), severe (+1), catastrophic (+2), exploit (+1), destructive (+1), urgent (+1), misalignment (+1). Total ≥ 4 → critical, ≥ 2 → high, ≥ 1 → moderate, else low. Research and capability items cap at high; papers cap at moderate.
Confidence expresses provenance, not truth. It is the source-type weight multiplied by (0.8 + 0.2 × classification certainty), where certainty is the winning category score divided by 6, capped at 1.
| Source type | Weight |
|---|---|
| Official lab publication | 0.90 |
| Peer-reviewed research | 0.90 |
| arXiv preprint | 0.75 |
| Major reporting | 0.65 |
| Government / regulator | 0.85 |
| GitHub release | 0.60 |
| Personal post (first-party) | 0.55 |
| Personal post (third-party) | 0.30 |
| Manual entry (reviewed) | 0.60 |
Labels: HIGH ≥ 0.85, MEDIUM-HIGH ≥ 0.70, MEDIUM ≥ 0.50, otherwise LOW.
Both enter only through reviewed entries (data/manual/*.json or the admin console) and require at least one source URL. Quotes require attribution. Verification statuses: Unverified, Source confirmed, Multiple sources, Official report. Unverified incidents are displayed but excluded from the Risk Index.
The index is a weighted sum of six components, each scored 0–100 over a trailing window of 90 days compared with the 90 days before it. Weights are configuration and are stored with every snapshot. A snapshot is published only when the window holds at least 25 signals, 5 capability records in both windows, and 3 sources with data; otherwise the page shows RISK INDEX UNAVAILABLE · INSUFFICIENT SOURCE DATA with the reason.
| Component | Weight | Method |
|---|---|---|
| Capability acceleration | 30% | Ratio of capability-classified signals and capability timeline events in the current window versus the baseline window, weighted by source confidence. 1.0x ratio maps to 50; 2.0x or more maps to 100; 0.5x or less maps to 0. Requires at least the configured minimum of capability signals. |
| Autonomy & agency | 20% | Share of capability evidence tagged autonomy, agentic, tool_use or long_horizon, blended 50/50 with the growth of that share versus the baseline window. |
| Safety gap | 20% | 100 minus the ratio of safety-side evidence (alignment signals, alignment/interpretability/evaluation papers, safety frameworks) to capability-side evidence in the window, scaled so parity maps to 50. A window where capability evidence is twice the safety evidence scores 100. |
| Incident severity | 15% | Sum of severity ranks (low 1 … critical 4) of incidents with at least SOURCE_CONFIRMED verification inside the window, weighted by verification level (0.6 / 0.8 / 1.0), scaled with the saturating curve 100 × (1 − 2^(−points/10)): 10 severity points maps to 50, 30 maps to 87.5. UNVERIFIED incidents are excluded. |
| Governance weakness | 10% | 100 minus a saturating function of governance evidence (policies, regulations, commitments) in the window relative to the number of labs tracked. Zero governance evidence scores 100; one governance item per tracked lab scores 50. |
| Researcher warning signal | 5% | Confidence-weighted count of researcher events of type resignation, public_warning or open_letter plus RESEARCHER_WARNING signals inside the window, scaled with 100 × (1 − 2^(−n/5)): 5 weighted events maps to 50, 15 maps to 87.5. |
Levels: LOW < 25, GUARDED < 50, ELEVATED < 75, CRITICAL ≥ 75. The log-ratio mapping used by several components is 50 + 50 × log₂(ratio), clamped to 0–100, so parity scores 50 and a doubling scores 100.
Queries are interpreted with rules (time window phrases, category keywords, lab aliases, verification words). Records are retrieved from the relevant tables and ranked by 0.5 × confidence + 0.3 × recency + 0.2 × keyword overlap. The structured answer is assembled from the ranked records. If an ANTHROPIC_API_KEY is configured, a synthesis pass may restate the numbered evidence in prose; it is discarded if it cites anything outside the list. Below the evidence minimum the terminal returns INSUFFICIENT EVIDENCE.
The brief lists counts and top records per section for the selected window, with the preceding window of equal length for comparison. No generated prose.