Robotics / AI systems · Provenance study · public federal records
Where the Floor Comes From: Earning a Motion Safety Floor's Invariants from the Public Failure Record
A safety floor is only as honest as the origin of its rules. This paper replaces hand-authored invariants with invariants earned from 8,219 public records of how automated driving has actually failed — NHTSA crash reports, recalls and investigations, and NTSB findings — each rule citing the records that earned it, and each gap number derived from the measured braking of the vehicle it guards.
Runtime-assurance floors for autonomous vehicles are usually specified by engineers and justified after the fact. We ask the question a safety board asks first — where did these rules come from? — and answer it mechanically. We harvest 8,219 federal records: 3,336 NHTSA Standing General Order crash reports for SAE Level 3–5 systems and 4,839 for Level 2 systems (July 2021 to August 2026), 21 Part 573 recalls of automated-driving software, 18 Office of Defects Investigation actions, and 5 NTSB accident reports. A deterministic, auditable taxonomy of 23 failure modes classifies each record from structured fields first and narrative keywords second; no model reads a record, and every classification carries the evidence that produced it. The modes earn 15 invariants. 6 are enforced by our simulator floors today; 9 are earned by the record and not yet enforced, the largest being cross-traffic conflict with 1,047 records. 52% of Level 3–5 crash reports describe a stopped vehicle being struck, which earns no rule and is reported as such. The gap rule's numbers are derived, not chosen: measured response latency 0.1 s and deceleration 11.28 m/s² give a required headway of 0.78 s at the 55 km/h scenario limit, which the 1.6 s default covers; at an assumed real-vehicle deceleration of 5 m/s² the requirement rises to 1.63 s and the default no longer does. Everything here rebuilds from the public files with one command, with checksums.
The floor is not what we thought was dangerous. It is what the record shows has already gone wrong, written as a rule that cites its evidence.
1 · The question a safety board asks first
Our earlier papers describe a runtime-assurance floor for motion: a controller proposes an action, a deterministic shield verifies it against a small set of invariants, and only an admitted or clamped action reaches the actuator. Those papers were honest about scope but silent on origin. The invariants — stay on the road, obey the posted limit, keep a speed-dependent gap, stop for what is stationary ahead — were written by engineers, and the numbers in them (a 1.6 s headway, an 8 m minimum gap) were constructor defaults. A regulator's first question is not whether the floor works in a simulator. It is: where did you get these rules, and where did you harvest your failures from?
This paper answers that question the only way it can be answered without hand-waving: by building the floor's rule set from the record. We define an invariant as earned when at least one public record of an automated-driving failure classifies into a failure mode that names it, and we publish, for every invariant, how many records earned it, from which sources, at what severity and speed, and whether our floors enforce it yet. Where a rule has a number in it, the number is derived from a measurement with the formula shown.
2 · The record
Five federal sources, all public, all downloaded as files and checksummed (Table 5). The NHTSA Standing General Order 2021-01 requires every operator of an automated driving system or a Level 2 driver-assistance system to report a crash within days; we use the archive (July 2021 to 15 June 2025) and the current file (16 June 2025 onward) for both classes, keeping the highest report version per Report ID. Part 573 recall filings and ODI investigation records come from NHTSA's flat files, selected by an explicit list of automated-driving campaigns that a keyword sweep must reproduce exactly, so a new filing fails the build rather than going missing. The NTSB reports are the five Board investigations of crashes under automation; their probable-cause paragraphs are quoted verbatim and checked against the PDF text at build time.
| source | records |
|---|---|
| NHTSA SGO 2021-01 crash reports, SAE L3–5 (ADS) | 3,336 |
| NHTSA SGO 2021-01 crash reports, SAE L2 (ADAS) | 4,839 |
| NHTSA Part 573 recalls of automated-driving software | 21 |
| NHTSA ODI defect investigations | 18 |
| NTSB highway accident reports | 5 |
| total | 8,219 |
Table 1. The record. 5,286 records classify into at least one mode; 1,830 Level 2 filings are unclassifiable because the filer redacted the narrative and left the movement fields Unknown; 1,103 match no rule.
One gap is visible rather than silent: the California DMV's OL-316 collision reports sit behind a CAPTCHA wall and are not exposed by the site's API. The California incidents are nevertheless present, because the same crashes are filed federally under the Standing General Order with State = CA.
3 · Method: a taxonomy that a reviewer can check
A failure mode is a named way automated driving has actually failed. We define 23 (Figure 2). For crash reports the classifier reads structured fields first — the pre-crash movement of each vehicle, what was struck, which surfaces made contact, the roadway flags — and narrative keywords second, with the ego vehicle required to be the subject of any violation phrase (“stopped at a red light” is compliance, not a failure). Recalls, investigations and NTSB reports are assigned their modes explicitly, because a regulator has already adjudicated them. Every match returns the evidence string that produced it and a strength label: field, text, or regulator.
Two modes earn nothing by design and are reported anyway. A stopped vehicle that is struck proposed no motion, so no rule for the ego vehicle follows from it; and a Level 2 driver who did not intervene is a finding about human monitoring, which a floor replaces rather than enforces. Reporting them keeps the share of other-party crashes visible instead of letting it inflate the floor's reach.
Figure 2. Records per failure mode. Grey modes are counted but earn no rule.
4 · Results: what the record earned
Figure 1. Records earning each invariant, by source, with enforcement status. Bars are counts of records, so a record that earned two invariants appears in two bars.
52% of Level 3–5 crash reports are the vehicle being struck while stopped. That single fact reframes the record: most filed crashes are not the automated system proposing something dangerous. The rules below are earned by the minority that were.
| invariant | statement | records | strong / text-only | severe / fatal | status |
|---|---|---|---|---|---|
| INV_ONROAD | Stay on the drivable lane/road surface; steer back toward the centre before the edge is reached. | 1,255 | 1,220 / 35 | 36 / 6 | earned, enforced |
| INV_STATIC | The reachable path must be free of static geometry (pole, gate arm, chain, barrier, curb, wall, attenuator); an unmodelled fixed object in the corridor forces a stop. | 1,120 | 1,082 / 38 | 26 / 3 | earned, enforced |
| INV_FOLLOW | Keep a speed-dependent gap to whatever is ahead in the lane: gap >= max(min_gap, v * headway), and brake now if the projected gap would fall below min_gap. | 1,187 | 1,126 / 61 | 43 / 8 | earned, enforced |
| INV_STOP_FOR_STATIONARY | A stationary object or vehicle in the travel lane must be stopped for within the available distance, whatever the lead vehicle just did. | 834 | 803 / 31 | 26 / 7 | earned, enforced |
| INV_VRU | A pedestrian, cyclist, scooter, wheelchair or motorcyclist in or entering the reachable path forces yielding; classification uncertainty never delays braking. | 169 | 169 / 0 | 31 / 16 | earned, enforced |
| INV_SPEED_LIMIT | No throttle above the posted limit. | 74 | 6 / 68 | 4 / 1 | earned, enforced |
| INV_STOP_CONTROL | Complete stop at stop signs and red signals; no entry on a steady yellow without clearance; no passing a stopped school bus with its stop arm out; no through-movement from a turn-only lane. | 74 | 6 / 68 | 4 / 1 | earned, NOT enforced |
| INV_CROSS_TRAFFIC | Crossing or approaching traffic at intersections and unprotected turns is a threat until its reachable set clears the ego path; a slowly approaching perpendicular vehicle is not assumed to stop. | 1,047 | 1,047 / 0 | 31 / 10 | earned, NOT enforced |
| INV_WORST_CASE_HEADING | Articulated, towed or ambiguous-orientation objects get a worst-case motion prediction; heading and orientation disagreement widens the reachable set, it never narrows it. | 30 | 2 / 28 | 2 / 2 | earned, NOT enforced |
| INV_BRAKE_AUTHORITY | A hard brake must itself be justified by a hazard in the forward reachable set; approach from the rear is not a reason to brake; a justified brake is never suppressed or delayed. | 7 | 6 / 1 | 0 / 0 | earned, NOT enforced |
| INV_HOLD_AFTER_CONTACT | After any collision the vehicle holds still until cleared; no pull-over, no creep. | 2 | 2 / 0 | 0 / 0 | earned, NOT enforced |
| INV_NO_MOTION_PERSON_ADJACENT | No motion from rest while a person is inside the near envelope of the vehicle. | 1 | 1 / 0 | 0 / 0 | earned, NOT enforced |
| INV_ODD_ENTRY | No entry into a closed zone, standing water, heavy smoke or low visibility; speed is bounded by the distance the sensors can actually see (stop within visible distance). | 73 | 4 / 69 | 2 / 1 | earned, NOT enforced |
| INV_LANE_DISCIPLINE | Lane changes and merges require a verified gap; never cross the centre line into oncoming traffic. | 159 | 159 / 0 | 9 / 0 | earned, NOT enforced |
| INV_MRC_FALLBACK | On a system fault the vehicle reaches a minimal-risk condition; the floor itself stays live and never hands raw proposals to the actuator. | 2 | 2 / 0 | 0 / 0 | earned, NOT enforced |
Table 2. The invariant ledger. "Strong" = earned by structured fields or a regulator/NTSB finding; "text-only" = narrative keywords alone. Severity is the highest injury alleged in the earning crash reports.
Figure 3. Enforcement grid. Green cells name the floor check that enforces the invariant; red cells are debt the record has already booked.
The grid is the honest centre of the paper. 6 invariants are earned and enforced by at least one floor. 9 are earned and not enforced: STOP_CONTROL, CROSS_TRAFFIC, WORST_CASE_HEADING, BRAKE_AUTHORITY, HOLD_AFTER_CONTACT, NO_MOTION_PERSON_ADJACENT, ODD_ENTRY, LANE_DISCIPLINE, MRC_FALLBACK. Cross-traffic conflict alone has 1,047 records behind it and no check in either floor. Post-collision motion has two records, but one of them is the Cruise recall that ended a company's driverless operations.
Figure 4. Speed of the earning crashes per invariant: median, 90th percentile and maximum of the SGO pre-crash speed field, moving vehicles only. This is the envelope each rule must cover; it is read from the record, not assumed.
5 · The numbers inside the gap rule
The record fixes what must be prevented and the speeds at which it happens. It does not fix a headway. That number comes from the physics of the vehicle the floor guards. The distance needed to stop from speed \(v\) with response latency \(t_r\) and sustained deceleration \(a\) is
\[ d_{\mathrm{stop}}(v) \;=\; v\,t_r \;+\; \frac{v^{2}}{2a} , \]while the floor's rule is linear in \(v\): \(\mathrm{gap}(v)=\max(g_{\min},\, v\,h)\). The linear rule covers the stopping distance exactly when
\[ h \;\ge\; t_r \;+\; \frac{v}{2a} , \]so a headway is exact at one speed and conservative below it. We measured \(t_r\) and \(a\) on the MetaDrive vehicle by driving it to 30, 45, 55, 70 km/h under full throttle and then commanding full brake, logging speed every 0.1 s: latency 0.1 s (one control step) and sustained deceleration 11.28 m/s². At the 55 km/h scenario limit the required headway is 0.78 s; the 1.6 s default covers it with margin (Figure 5, Table 3).
Figure 5. Stopping distance from the measured braking (blue) and from assumed real-vehicle decelerations (dashed grey), against the gap the two floors hold. Where a gap line lies above a stopping curve, the rule covers that vehicle at that speed.
| speed | d_stop (measured a) | headway required | floor gap at 1.6 s / 8 m | covered |
|---|---|---|---|---|
| 20 km/h | 1.9 m | 0.35 s | 8.9 m | yes |
| 30 km/h | 3.9 m | 0.47 s | 13.3 m | yes |
| 40 km/h | 6.6 m | 0.59 s | 17.8 m | yes |
| 50 km/h | 9.9 m | 0.72 s | 22.2 m | yes |
| 55 km/h | 11.9 m | 0.78 s | 24.4 m | yes |
| 70 km/h | 18.7 m | 0.96 s | 31.1 m | yes |
| 90 km/h | 30.2 m | 1.21 s | 40.0 m | yes |
| 110 km/h | 44.4 m | 1.45 s | 48.9 m | yes |
Table 3. Measured MetaDrive braking; every row is the same formula.
| assumed a | headway required at limit | d_stop at limit | 1.6 s default sufficient |
|---|---|---|---|
| 5.0 m/s² | 1.63 s | 24.9 m | NO |
| 6.0 m/s² | 1.37 s | 21.0 m | yes |
| 7.0 m/s² | 1.19 s | 18.2 m | yes |
| 8.0 m/s² | 1.05 s | 16.1 m | yes |
Table 4. Sensitivity to ASSUMED dry-road decelerations — not measured; the simulator brakes harder than a real car.
The caveat is in the dashed lines. A simulated vehicle that decelerates at 11.28 m/s² brakes harder than a real car on a dry road. Re-running the same formula with an assumed 6 m/s² gives a required headway of 1.37 s; at 5 m/s² it is 1.63 s and the 1.6 s default is no longer sufficient. The CARLA floor's 2.4 s covers every assumed row. The honest statement is therefore: the MetaDrive default is derived and sufficient for the vehicle it guards; for a real vehicle the headway must be re-derived from that vehicle's measured braking, and 2.4 s is the defensible starting point.
6 · What this does and does not establish
- It establishes provenance, not completeness. Every rule in the floor now cites the failures that earned it. The floor still refuses only what it models; a hazard absent from the record and from the state is absent from the floor.
- Classification is rule-based and spot-audited, not inter-rater tested. The rules are published and every match carries its evidence; we tightened four of them after audit (compliance phrases, third-party violations, justified hard braking, incidental static words). A formal precision study against human coders has not been done.
- The record is self-reported. Standing General Order narratives are written by the operators; Level 2 filers redact most of them. Counts are lower bounds on what happened, not estimates of rates.
- No hazard analysis, no real perception, no adversary. This is not an ISO 26262 or SOTIF work product; state comes from simulator ground truth; nothing here distinguishes an attacker-induced failure from an honest one.
- Simulation only. The measured braking is the simulator's. The paper says exactly where a real vehicle changes the numbers.
7 · Reproducibility
Everything in this paper, including its figures and every number in its prose, is generated from the public files by one build:
python -m failure_corpus build # fetch → manifest → classify → derive → ledger python -m failure_corpus.kinematics # measure MetaDrive braking → kinematics.json python -m failure_corpus.figures # the five SVGs python -m failure_corpus.paper # this page, EN + 中文 python -m pytest tests/ # per-source, per-mode, per-invariant, per-floor-check pins
| source | file | bytes | sha256 |
|---|---|---|---|
| sgo_ads_archive | SGO-2021-01_Incident_Reports_ADS.csv | 3,943,732 | cb2b38a21e2ce5c2… |
| sgo_ads_current | SGO-2021-01_Incident_Reports_ADS.csv | 2,581,860 | f856d0b9cedc5f44… |
| sgo_adas_archive | SGO-2021-01_Incident_Reports_ADAS.csv | 4,092,534 | 99579d4c9add8f2f… |
| sgo_adas_current | SGO-2021-01_Incident_Reports_ADAS.csv | 2,219,159 | 1b15d76e4b0c8bf2… |
| sgo_dictionary | SGO-2021-01_Data_Element_Definitions.pdf | 529,128 | c92e1bec238e7578… |
| recalls_flat | FLAT_RCL_POST_2010.zip | 15,039,755 | 306e4fb488c45e18… |
| investigations_flat | FLAT_INV.zip | 4,299,580 | 632a7f12837bae96… |
| ntsb_har1702 | HAR1702.pdf | 3,160,722 | 4fca215cec751ee4… |
| ntsb_har1903 | HAR1903.pdf | 2,002,815 | 1a0bb130efd50b99… |
| ntsb_har2001 | HAR2001.pdf | 3,374,267 | 3784e2ed8219b52b… |
| ntsb_hab2001 | HAB2001.pdf | 826,366 | 3157beeb98b18bcd… |
| ntsb_hab1907 | HAB1907.pdf | 811,788 | 8a6fc9fd6f2fa165… |
Table 5. Source manifest at build time (2026-09-27T07:00:26Z).
References
- NHTSA. Standing General Order 2021-01 on Crash Reporting, third amended order (2025); incident report files ADS and ADAS, archive 2021–2025 and current. static.nhtsa.gov/odi/ffdd/sgo-2021-01/.
- NHTSA Office of Defects Investigation. Recalls flat file FLAT_RCL_POST_2010.zip and investigations flat file FLAT_INV.zip; Part 573 reports 22E-016, 22E-072, 22V-037, 22V-317, 23E-029, 23E-086, 23V-085, 23V-838, 24E-013, 24E-049, 24E-067, 25E-019, 25E-029, 25E-034, 25E-037, 25E-084, 25E-090, 26E-026, 26E-035, 26E-044, 26E-059.
- NTSB. HAR-17/02 (Williston, HWY16FH018); HAB-19/07 (Culver City, HWY18FH004); HAR-19/03 (Tempe, HWY18MH010); HAB-20/01 (Delray Beach, HWY19FH008); HAR-20/01 (Mountain View, HWY18FH011).
- Sha, L. Using Simplicity to Control Complexity. IEEE Software 18(4), 2001 — the Simplex runtime-assurance architecture.
- Shalev-Shwartz, S., Shammah, S., Shashua, A. On a Formal Model of Safe and Scalable Self-driving Cars. arXiv:1708.06374, 2017 — Responsibility-Sensitive Safety; the safe longitudinal distance has the same kinematic form as Section 5.
- Alshiekh, M. et al. Safe Reinforcement Learning via Shielding. AAAI 2018.
- ASTM F3269-21. Standard Practice for Methods to Safely Bound Behavior of Aircraft Systems Containing Complex Functions Using Run-Time Assurance.
- Perslis Research. Runtime Admission Control on a Photoreal Driving Simulator (2026); Admissible Motion (2026). research.perslis.com.