Perslis Motion
PROVENANCE · WHERE THE RULES COME FROM

The floor was not written.
It was earned.

A safety board's first question is not whether the floor works in a simulator. It is where did you get these rules? Ours come from 8,219 public federal records of automated driving going wrong: 3,336 NHTSA crash reports for Level 3–5 systems, 4,839 for Level 2, 21 recalls of automated-driving software, 18 defect investigations and 5 NTSB findings. Every invariant below names the records that earned it.

01 · THE RECORD

Five federal sources.
Downloaded, checksummed, rebuilt by one command.

5,286 records classify into at least one failure mode with the evidence attached. 1,830 Level 2 filings cannot be read at all: the manufacturer redacted the narrative and left the movement fields Unknown. We report that instead of hiding it. California's own DMV reports sit behind a CAPTCHA wall; the same crashes are in the federal filings with State = CA.

What counts as earned

An invariant is earned when at least one public record classifies into a failure mode that names it. Classification is rule-based and auditable: structured crash fields first, narrative keywords second, regulator findings assigned explicitly. No model reads a record.

What the record is mostly

52% of Level 3–5 crash reports are the automated vehicle being struck while stopped. That earns no rule and is counted as such. The floor's rules are earned by the minority of crashes where the system proposed the danger.

02 · THE LEDGER

What earned each rule.

Records earning each floor invariant, by sourceRecords that earned each invariant, by sourceone record can earn several invariants · bar length = records · status at rightSGO crash reports · ADSSGO crash reports · Level 2Part 573 recallsODI investigationsNTSB reports025050075010001250ONROADSGO crash reports · ADS: 167 records → INV_ONROADSGO crash reports · Level 2: 1,083 records → INV_ONROADPart 573 recalls: 2 records → INV_ONROADODI investigations: 2 records → INV_ONROADNTSB reports: 1 records → INV_ONROAD1,255enforcedFOLLOWSGO crash reports · ADS: 538 records → INV_FOLLOWSGO crash reports · Level 2: 646 records → INV_FOLLOWPart 573 recalls: 2 records → INV_FOLLOWODI investigations: 1 records → INV_FOLLOW1,187enforcedSTATICSGO crash reports · ADS: 196 records → INV_STATICSGO crash reports · Level 2: 919 records → INV_STATICPart 573 recalls: 2 records → INV_STATICODI investigations: 2 records → INV_STATICNTSB reports: 1 records → INV_STATIC1,120enforcedCROSS_TRAFFICSGO crash reports · ADS: 546 records → INV_CROSS_TRAFFICSGO crash reports · Level 2: 495 records → INV_CROSS_TRAFFICPart 573 recalls: 3 records → INV_CROSS_TRAFFICODI investigations: 1 records → INV_CROSS_TRAFFICNTSB reports: 2 records → INV_CROSS_TRAFFIC1,047NOT enforcedSTOP_FOR_STATIONARYSGO crash reports · ADS: 271 records → INV_STOP_FOR_STATIONARYSGO crash reports · Level 2: 556 records → INV_STOP_FOR_STATIONARYPart 573 recalls: 1 records → INV_STOP_FOR_STATIONARYODI investigations: 3 records → INV_STOP_FOR_STATIONARYNTSB reports: 3 records → INV_STOP_FOR_STATIONARY834enforcedVRUSGO crash reports · ADS: 127 records → INV_VRUSGO crash reports · Level 2: 39 records → INV_VRUPart 573 recalls: 1 records → INV_VRUODI investigations: 1 records → INV_VRUNTSB reports: 1 records → INV_VRU169enforcedLANE_DISCIPLINESGO crash reports · ADS: 106 records → INV_LANE_DISCIPLINESGO crash reports · Level 2: 50 records → INV_LANE_DISCIPLINEPart 573 recalls: 2 records → INV_LANE_DISCIPLINEODI investigations: 1 records → INV_LANE_DISCIPLINE159NOT enforcedSPEED_LIMITSGO crash reports · ADS: 68 records → INV_SPEED_LIMITPart 573 recalls: 3 records → INV_SPEED_LIMITODI investigations: 3 records → INV_SPEED_LIMIT74enforcedSTOP_CONTROLSGO crash reports · ADS: 68 records → INV_STOP_CONTROLPart 573 recalls: 3 records → INV_STOP_CONTROLODI investigations: 3 records → INV_STOP_CONTROL74NOT enforcedODD_ENTRYSGO crash reports · ADS: 44 records → INV_ODD_ENTRYSGO crash reports · Level 2: 25 records → INV_ODD_ENTRYPart 573 recalls: 3 records → INV_ODD_ENTRYODI investigations: 1 records → INV_ODD_ENTRY73NOT enforcedWORST_CASE_HEADINGSGO crash reports · ADS: 17 records → INV_WORST_CASE_HEADINGSGO crash reports · Level 2: 11 records → INV_WORST_CASE_HEADINGPart 573 recalls: 2 records → INV_WORST_CASE_HEADING30NOT enforcedBRAKE_AUTHORITYSGO crash reports · ADS: 1 records → INV_BRAKE_AUTHORITYPart 573 recalls: 2 records → INV_BRAKE_AUTHORITYODI investigations: 3 records → INV_BRAKE_AUTHORITYNTSB reports: 1 records → INV_BRAKE_AUTHORITY7NOT enforcedHOLD_AFTER_CONTACTPart 573 recalls: 1 records → INV_HOLD_AFTER_CONTACTODI investigations: 1 records → INV_HOLD_AFTER_CONTACT2NOT enforcedMRC_FALLBACKPart 573 recalls: 1 records → INV_MRC_FALLBACKODI investigations: 1 records → INV_MRC_FALLBACK2NOT enforcedNO_MOTION_PERSON_ADJACENTPart 573 recalls: 1 records → INV_NO_MOTION_PERSON_ADJACENT1NOT enforced

Records earning each invariant, by source. One record can earn several invariants.

invariantthe rulerecordssevere / fatalenforced
ONROADStay on the drivable lane/road surface; steer back toward the centre before the edge is reached.1,25536 / 6enforced
STATICThe 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,12026 / 3enforced
FOLLOWKeep 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,18743 / 8enforced
STOP_FOR_STATIONARYA stationary object or vehicle in the travel lane must be stopped for within the available distance, whatever the lead vehicle just did.83426 / 7enforced
VRUA pedestrian, cyclist, scooter, wheelchair or motorcyclist in or entering the reachable path forces yielding; classification uncertainty never delays braking.16931 / 16enforced
SPEED_LIMITNo throttle above the posted limit.744 / 1enforced
STOP_CONTROLComplete 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.744 / 1not yet
CROSS_TRAFFICCrossing 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,04731 / 10not yet
WORST_CASE_HEADINGArticulated, towed or ambiguous-orientation objects get a worst-case motion prediction; heading and orientation disagreement widens the reachable set, it never narrows it.302 / 2not yet
BRAKE_AUTHORITYA 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.70 / 0not yet
HOLD_AFTER_CONTACTAfter any collision the vehicle holds still until cleared; no pull-over, no creep.20 / 0not yet
NO_MOTION_PERSON_ADJACENTNo motion from rest while a person is inside the near envelope of the vehicle.10 / 0not yet
ODD_ENTRYNo 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).732 / 1not yet
LANE_DISCIPLINELane changes and merges require a verified gap; never cross the centre line into oncoming traffic.1599 / 0not yet
MRC_FALLBACKOn a system fault the vehicle reaches a minimal-risk condition; the floor itself stays live and never hands raw proposals to the actuator.20 / 0not yet
03 · THE DEBT

6 rules enforced. 9 earned and not yet.

The grid below is the honest centre of this page. Green cells name the floor check that enforces a rule. Red cells are rules the record has already earned that neither simulator floor enforces — cross-traffic conflict alone has 1,047 records behind it. They are the roadmap, published as debt rather than implied as coverage.

Enforcement grid: invariant × floorWhich floor enforces which earned invariant✓ enforced (check name) · ✗ earned by the record, not enforced yet · records = how many earned itrecordsMetaDrive floorCARLA floorONROADMetaDrive floor: on_road✓ on_roadCARLA floor: on_road✓ on_road1,255STATICMetaDrive floor: not enforced✗ not enforcedCARLA floor: on_road(surface guard #0)✓ on_road +1,120FOLLOWMetaDrive floor: following_distance✓ following_distanceCARLA floor: following_distance✓ following_distance1,187STOP_FOR_STATIONARYMetaDrive floor: not enforced✗ not enforcedCARLA floor: emergency_stop✓ emergency_stop834VRUMetaDrive floor: not enforced✗ not enforcedCARLA floor: following_distance/emergency_stop (any actor ahead)✓ following_distance +169SPEED_LIMITMetaDrive floor: speed_limit✓ speed_limitCARLA floor: speed_limit✓ speed_limit74STOP_CONTROLMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced74CROSS_TRAFFICMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced1,047WORST_CASE_HEADINGMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced30BRAKE_AUTHORITYMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced7HOLD_AFTER_CONTACTMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced2NO_MOTION_PERSON_ADJACENTMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced1ODD_ENTRYMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced73LANE_DISCIPLINEMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced159MRC_FALLBACKMetaDrive floor: not enforced✗ not enforcedCARLA floor: not enforced✗ not enforced2
04 · THE NUMBERS IN THE GAP RULE

Derived from measured braking,
not picked.

The record fixes what must be prevented and at what speeds. It does not fix a headway; physics does. Stopping distance is d = v·tr + v²/(2a). We measured the guarded MetaDrive vehicle: response latency 0.1 s, sustained deceleration 11.28 m/s². At the 55 km/h scenario limit that requires a headway of 0.78 s; the floor holds 1.6 s. A real car brakes less hard: at an assumed 5 m/s² the requirement is 1.63 s and 1.6 s is no longer enough, which is why the CARLA floor holds 2.4 s and why a real vehicle's headway must be re-derived from its own measured braking.

Stopping distance versus the floor's gap ruleStopping distance the vehicle needs vs the gap the floor holdsd_stop(v) = v·t_r + v²/(2a) with measured t_r = 0.1 s; floor gap = max(min_gap, v·headway)0 m10 m20 m30 m40 m50 m60 m0102030405060708090100110speed, km/hassumed a = 5 m/s² (not measured)assumed a = 6 m/s² (not measured)assumed a = 8 m/s² (not measured)dashed grey: the same formula at ASSUMED a = 5, 6, 8 m/s² (steepest = 5) — not measuredmeasured a = 11.28 m/s² (MetaDrive)measured a = 11.28 m/s² (MetaDrive)floor gap · 1.6 s / 8 m (MetaDrive default)floor gap · 1.6 s / 8 m (MetaDrive default)floor gap · 2.4 s / 10 m (CARLA)floor gap · 2.4 s / 10 m (CARLA)scenario limit 55 km/h
05 · HONEST SCOPE

What this proves, and what it does not.

sourcesha256
Standing General Order 2021-01, ADS (SAE L3-5) crash reports, Jul 2021 - Jun 15 2025cb2b38a21e2c…
SGO 2021-01 ADS crash reports, Jun 16 2025 onward (third amended order)f856d0b9cedc…
SGO 2021-01, Level 2 ADAS crash reports, Jul 2021 - Jun 15 202599579d4c9add…
SGO 2021-01 Level 2 ADAS crash reports, Jun 16 2025 onward1b15d76e4b0c…
field definitions for the SGO CSVsc92e1bec238e…
every Part 573 safety recall since 2010, tab-delimited306e4fb488c4…
every ODI defect investigation (PE/EA/RQ/AQ)632a7f12837b…
Williston FL 2016, Tesla Autopilot vs crossing tractor-trailer (HWY16FH018)4fca215cec75…
Tempe AZ 2018, Uber ATG test vehicle vs pedestrian (HWY18MH010)1a0bb130efd5…
Mountain View CA 2018, Tesla Autopilot into gore attenuator (HWY18FH011)3784e2ed8219…
Delray Beach FL 2019, Tesla Autopilot vs crossing truck (HWY19FH008)3157beeb98b1…
Culver City CA 2018, Tesla Autopilot into stationary fire truck (HWY18FH004)8a6fc9fd6f2f…

Source manifest at build time (2026-09-27T07:00:26Z). Rebuild: python -m failure_corpus build.