Scope
Every entry falls into one of five categories: incidents, capability milestones, deception and misalignment, safety rollbacks, and AI-assisted surveillance. Scope also extends to deterministic automation that is not AI or machine learning at all, when that automation held authority over a safety outcome a human did not have, or did not know they had lost. In practice this admits automation accidents such as an aircraft's flight-control system acting on bad data, alongside AI incidents proper.
An automation entry outside AI/ML is only in scope when all three hold: a formal report from a state investigation authority or equivalent government body names a specific automated system; that system's action, refusal, or concealment was load-bearing in the outcome, not merely present; and the failure was not simply the absence of a safety system that was never fitted. Today this is a curation rule the editor applies by hand against a published test before any entry on this subject is transcribed for research - there is no code that verifies a candidate entry actually clears it. If this category is ever opened to the same unattended discovery process other categories already use, that would need its own mechanical check; it does not have one today.
Sourcing
Every entry summarizes and links to its sources rather than reproducing the original reporting. At least one source beyond the primary must come from a tier we treat as independently credible:
- Tier 1 - a government or equivalent domain (a
.govdomain, a national government domain using a.gov.label, or a European Union domain), specificallyarxiv.orgor adoi.orglanding page (this is a match on those two hostnames only, not a general preprint-host or DOI-registrar rule - a preprint on bioRxiv or SSRN does not clear Tier 1 through this route), or one of three court/legal-record sites we have directly cited. - Tier 2 - a fixed allowlist of roughly twenty wire services, agencies, and established outlets. This is not wire services alone: it also includes technology and trade press (for example IEEE Spectrum, TechCrunch, The Register, and Tom's Hardware) alongside general news outlets and wires.
This is mechanically enforced: a draft that cites no qualifying source besides its primary is rejected outright before it can be staged or published. It checks source reputation, not the truth of what a source reports - we stand behind the sources we cite rather than re-investigating them. Two honest limits: the check runs once, when an entry is first drafted, and never re-runs afterward, so a later correction that removes an entry's only qualifying source is not automatically caught; and an allowlist can go stale in both directions - a listed outlet can decline in quality with nothing here noticing, and a new credible outlet can launch and sit unrecognized until someone adds it by hand.
Category and autonomy
Each entry is assigned exactly one of the five categories above, and exactly one autonomy letter: A (the AI system itself took the action), H (a human directed the AI to cause the outcome), or S (a deployed system operating as designed produced the outcome, with no single actor's discrete choice). Both freeze permanently into the entry's public case identifier once assigned (for example KBR-20260709-INC-A01) and are never regenerated even when other facts about the case are later corrected.
Category carries one mechanical floor: if the drafting process's own stated confidence in its category falls below a fixed threshold, the draft is discarded rather than published. That check gates confidence, not correctness - it cannot tell whether the chosen category is the right one, only whether the process claims to be sure of it. An editor can bypass that floor before publication, but only to accept a category the drafting process already chose at lower confidence than the floor requires, never to force a different one; every bypass is logged. Autonomy carries no confidence signal at all, so an editor can correct it outright before publication when research turns up a letter the drafting process did not properly weigh.
Both of those corrections happen before an entry is first published, not after. There is currently no mechanism to revise a category or autonomy letter on an entry that has already been published - the tooling that applies these corrections exists only on the curated historical research path, not on the day-to-day automated one. Whether either value is semantically correct in the first place is an editorial judgment call that nothing checks beyond that pre-publication step.
Severity
Every entry carries a severity score from 0 to 100, computed from a five-factor rubric - harm, scale, irreversibility, autonomy, and precedent - each scored 0-4 and combined with fixed weights (rubric v1). The combined score is never hand-assigned; it is always recomputed from the underlying factors, so a published score can never disagree with its own breakdown. This is mechanically enforced: the stored number is always the code's own computation from the factors, never a model's or an editor's stated total.
- Minor (0-20)
- Moderate (21-40)
- Elevated (41-60)
- Severe (61-80)
- Critical (81-100)
Click the severity gauge on any case page to see that entry's own factor-by-factor breakdown. What is not checked: whether the five underlying factor scores themselves are the correct read of the story - that judgment is the drafting process's own, unverified by anything else here.
Harm outcome
Every entry classifies the concrete human harm it documents against a fixed eight-value vocabulary (fatality, injury, wrongful arrest or detention, privacy or rights violation, harmful content or societal harm, financial or property damage, no direct harm, or outcome unknown), plus a fatality count and an injury count each independently marked as an exact figure or a stated minimum. Two of the eight values - no direct harm and outcome unknown - can never be combined with any other value in the same entry. That exclusivity rule is mechanically enforced when an entry is written by the normal pipeline, and mirrored again defensively wherever these values are aggregated for display, as a second line of defense against a row that reached the database some other way. It is not enforced by the database itself - a rule this conditional (“this value, if present, must be the only one”) would need a meaningfully more complex database constraint than the simple checks this schema uses elsewhere, and this codebase's convention is to leave that kind of cross-value judgment at the application layer instead - so a direct write to the database that bypasses the normal application code could still produce an incoherent combination. One such path exists in this codebase today, for one-off corrections.
Two totals worth stating honestly: the fatality and injury counts on any entry reflect that entry's initial published reporting, and the automated process that revises an existing entry cannot currently revise its harm counts - a later correction to casualty figures in ongoing coverage will not automatically update the number here. And when a count is not established but the entry documents at least one case (for example, a source reporting a fatality without a precise number), that counts as at least one toward any total this site publishes, rather than being silently excluded - a documented death is never dropped from a published total for lack of a precise figure. The factual accuracy of a stated count, beyond internal coherence, is not independently checked - it depends on the drafting process reading its sources correctly.
Date precision
A real event or publication date is normally known to the day. A historical entry whose date is only known to the month or year (a monthly-cadence publication with no day-of-month, for example) is filed using the first of that month or year as a filing convention only, and the actual precision - day, month, or year - is stored alongside it. Every date shown on the site, both the human-readable text and the underlying machine-readable date, is truncated to match that stored precision, so a month- or year-precision entry never displays or encodes a specific day nobody established. This truncation is mechanically enforced at render time. Whether the accompanying prose also avoids implying a specific calendar day (writing “in January 1966” rather than “on 1 January 1966”) is an editorial standard given to the drafting process, not something checked in what it writes.
Images
Images are sourced under free licenses first: CC0 or public-domain dedication, a US government public-domain work, or a Creative Commons Attribution or Attribution-ShareAlike license, including a national “port” of one. This license whitelist is mechanically enforced against the license metadata Wikimedia Commons itself reports - a missing or unrecognized license is rejected outright.
A candidate image that is primarily a corporate logo, wordmark, seal, or emblem is never used as a story image, with a narrow allowance for an entity's own product photograph. Part of this is mechanical - a filename-based check catches an image whose Commons title self-declares as a logo or wordmark - and part of it is an editorial instruction applied at the point a candidate image is judged for relevance, which is not independently checked afterward.
An image containing visible non-English text - a diagram, chart, screenshot, or sign whose labels are in another language - is not used, because an English-reading audience cannot use text it cannot read. A photograph with no visible text is fine regardless of its subject's location or its Commons filename's language. As with logos, part of this is a mechanical filename check (catching only a title that self-declares as a language-variant edition) and part is an editorial judgment applied when the image is evaluated, which is not independently checked.
A caption that names exactly one person in a Commons photograph whose own description names two or more identifiable people, with no language indicating a group, is mechanically rejected - the shape that would otherwise present a group photograph as a solo portrait. This check is deliberately built to fail open: it would rather risk letting a marginal caption through than reject a story's only illustration, so it does not catch every possible false narrowing.
When no free image exists for a subject, a copyrighted image from a Wikipedia article may be used under fair use instead. This path is run by an editor by hand, one entry at a time - not by the automated pipeline. Deciding whether a subject can be depicted at all, and whether a given image is a fair use of it, is a human judgment call; nothing here makes that decision mechanically. A fair-use image is excluded from social-card and structured-data image fields, though it may still appear as a listing thumbnail.
Naming people
A person who died is named in an entry's prose only when a clear majority of that entry's own fetched sources independently name them - a mechanical check against the actual fetched source text, not a self-report. Three cases are meant to override that majority and mean a name is withheld regardless: the person was a minor at the time; a source states the name was withheld at the request of the person, their family, or an investigating authority; or the person is a suspect who has not been formally charged - though as the next paragraph explains, the third of these does not actually apply to how a deceased person is named at all.
Coverage of those three cases is uneven, and we would rather say so than imply an even guarantee. The withheld-at-request case is checked mechanically against fetched source text. The minor case is checked mechanically too, but narrowly - it only catches an age stated directly next to the person's own name, and by design misses far more cases than it catches; on our curated historical research path, an editor can also flag a specific entry in advance to suppress a name outright, which reliably closes this gap for that one entry, but that same safeguard is not reliably reachable on the day-to-day automated path, where there is no step for an editor to add such a flag before an entry is discovered and published. The uncharged-suspect case does not apply to a deceased person's own name field at all, since a suspect is never the value being checked there - it governs a broader naming rule in the entry's prose, which is not itself mechanically checked. When a claimed name cannot be grounded this way, the entry publishes without a name rather than not being published at all.
Verification badge
Every entry also carries a verification status - verified, verified with corrections, or reported/unconfirmed - reflecting how many sources were found corroborating the core facts. A claim of “verified” or “verified with corrections” is mechanically downgraded to “reported/unconfirmed” if the entry does not actually cite at least two sources that are genuinely evidenced - meaning a source that was actually fetched and, where the amount of retrieved text can be checked at all, cleared a short minimum-length bar. That bar is low: a source whose fetched text is a brief, near-empty stub is excluded, but a longer, ordinary-looking paywall or subscription message that happens to clear the bar is not caught by this check and still counts as evidenced. This is a structural check on how many sources exist, were actually fetched, and cleared that low bar - not an independent check that those sources genuinely agree with each other on the facts, and not a check on whether a source's content is actually substantive. That judgment remains the drafting process's own, unverified by anything else in the pipeline.
Whether a stated cause is one a cited source actually established - as opposed to one the drafting process inferred - is checked only insofar as a specific, verbatim quote from that source can be matched against text we actually fetched from it, and not at all when the primary source has no extractable text, such as a scanned report with no OCR layer. That check runs over the headline, subhead, and summary as well as the body prose, but it is only ever as strong as the quote it has to check against.
What this page is
This is the whole of what we currently check, and how. See the About page for what the catalog covers and how it is produced day to day. Where a rule above has no mechanical check, that does not mean it is unimportant - it means enforcing it is currently a human judgment call, stated here rather than left silently assumed.