NTSB finding · Environmental issues › Operating environment › Airport facilities/design

Cases
18
In the probable cause
11 (61%)
Fatal cases
4
NTSB code
03017015

NTSB has coded findings and defining events since 2008. Earlier cases used its older occurrence and cause codes, so they aren’t counted here.

When and where

In green, cases where NTSB made it part of the probable cause; in gray, a factor or other finding. Findings are coded with the final report, often a year or more after the event, so the latest years are incomplete.

Cases per year

2008In the probable causeFactor only2026
Cases with Runway lighting per year: 18 cases
20082
20092
20121
20152
20171
20201
20211
20221
20234
20251
20262
Query with SQL
duckdb -csv -c "SELECT year(c.\"eventDate\") AS year, count(DISTINCT f.case_mkey) AS cases,
    count(DISTINCT f.case_mkey) FILTER (WHERE f.\"inProbableCause\") AS in_probable_cause
  FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = f.case_mkey
  WHERE starts_with(f.\"findingCode\", '03017015') AND c.\"eventDate\" >= DATE '2000-01-01'
  GROUP BY 1
  ORDER BY 1"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

In the same cases

Query with SQL
duckdb -csv -c "WITH matched AS (SELECT DISTINCT case_mkey, aircrafts_position FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' WHERE starts_with(\"findingCode\", '03017015'))
  SELECT * FROM (
  SELECT 'Defining event' AS kind, e.\"tier2Number\" AS code, max(e.\"eventTier2Name\") AS name, count(DISTINCT f.case_mkey) AS cases
  FROM matched f JOIN 'https://openairdocs.org/data/latest/ntsb_events.parquet' e ON e.case_mkey = f.case_mkey AND e.aircrafts_position = f.aircrafts_position AND e.\"isDefiningEvent\"
  WHERE e.\"tier2Number\" <> ''
  GROUP BY ALL
  UNION ALL
  SELECT 'Aircraft model', a.aircraft_model_code, any_value(concat_ws(' ', m.manufacturer, m.model)), count(DISTINCT f.case_mkey)
  FROM matched f JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = f.case_mkey AND a.position = f.aircrafts_position
  LEFT JOIN 'https://openairdocs.org/data/latest/faa_aircraft_model.parquet' m ON m.code = a.aircraft_model_code
  WHERE a.aircraft_model_code IS NOT NULL
  GROUP BY ALL
  UNION ALL
  SELECT 'Other finding', left(g.\"findingCode\", 8), max(g.\"tier4Name\"), count(DISTINCT g.case_mkey)
  FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' g
  WHERE g.case_mkey IN (SELECT case_mkey FROM matched) AND NOT starts_with(g.\"findingCode\", '03017015') AND g.\"findingCode\" GLOB '[0-9][0-9]*'
  GROUP BY ALL
  )
  QUALIFY row_number() OVER (PARTITION BY kind ORDER BY cases DESC) <= 10
  ORDER BY kind, cases DESC"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

Newest cases · 18

NTSB WPR26LA182Accident · No injuriesClass 4 · LimitedFinal reportAmerican AA-5 · Jurupa Valley, CAThe pilot’s decision to land at night on a runway without illuminated runway lights. Contributing to the accident was the pilot’s failure to review NOTAMs for a nightly airport closure.May 12, 2026 · N5832L · Substantial damageNTSB ERA26LA102Accident · No injuriesClass 4 · LimitedFinal reportCessna 172 · New Castle, DEThe pilots’ failure to properly identify the assigned runway during the landing approach, which resulted in the airplane landing on a closed, snow-covered runway. Contributing was the illumination of the closed runway’s edge lighting.Jan 29, 2026 · N969FG · Substantial damageNTSB CEN25LA354Accident · No injuriesClass 4 · LimitedFinal reportCessna 152 · Baldwin City, KSThe pilot’s decision to continue the night landing without runway lights which resulted in the runway overrun.Aug 30, 2025 · N89585 · Substantial damageNTSB ERA24FA050Accident · 1 fatalClass 3 · FieldFinal reportPiper PA32R · Attalla, ALThe undetected wear of both pawl retaining rivets of the left magneto impulse coupling and fatigue failure of one pawl retaining rivet, which led to cascading fractures of the second pawl retaining rivet, left gear retainer assembly, and gear teeth of…Nov 27, 2023 · N4187Q · DestroyedNTSB WPR23LA293Accident · Minor injuriesClass 4 · LimitedFinal reportPiper PA-28-235 · Port Angeles, WAThe pilot’s inadequate fuel monitoring, which resulted in a total loss of engine power due to fuel starvation.Jul 30, 2023 · N8675W · Substantial damageNTSB CEN23LA097Accident · Minor injuriesClass 4 · LimitedFinal reportCessna 172L · Cleveland, TXThe pilot’s decision to attempt the night flight under visual flight rules when instrument meteorological conditions prevailed resulting in the airplane striking trees while on final approach. Contributing to the accident were the unserviceable runway lights…Jan 29, 2023 · N621EW · Substantial damageNTSB DCA23LA125Incident · No injuriesClass 1 · LimitedFinal reportBoeing 737-900ER · Queens, NYThe American Airlines flight 106 (AAL106) crew’s surface navigation error due to distractions caused by their performance of concurrent operational tasks during taxi, which resulted in a loss of situational awareness. Contributing to the incident was the air…Jan 14, 2023 · N914DU · 2 aircraft · No damageNTSB CEN22LA171Accident · No injuriesClass 4 · LimitedFinal reportCirrus Design SR22 · Peyton, COThe pilot’s decision to not activate the runway lighting and misjudged the runway location, which resulted in a collision with a windsock.Apr 8, 2022 · N248G · Substantial damageNTSB CEN21LA136Accident · No injuriesClass 3 · LimitedFinal reportLearjet 55 · Jeffersonville, INThe flight crew’s failure to verify the correct runway for landing, which resulted in a landing on a snow contaminated runway and resulting damage to the airplane. The illumination of the lights associated with the closed runway contributed to the accident.Feb 19, 2021 · N559RA · Substantial damageNTSB ERA21LA020Accident · 1 fatalClass 3 · LimitedFinal reportAero Commander 100 · Citra, FLThe student pilot’s inadequate preflight planning likely due to impairment from ethanol, which resulted in a total loss of engine power due to fuel exhaustion. Contributing was his improper decision to depart from an unlit airstrip in dark night conditions.Oct 14, 2020 · N631PF · Substantial damage
See all 18 cases
Query with SQL
duckdb -csv -c "SELECT c.\"ntsbNumber\", c.\"eventDate\", c.\"eventType\", c.\"eventCity\", c.\"eventStateOrRegion\", a.n_number, a.\"aircraftMake\", a.\"aircraftModel\", c.\"highestInjuryLevel\", c.\"totalFatal\", c.\"completionStatus\", c.report_url
  FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = c.\"mKey\" AND a.position = 1
  WHERE c.\"mKey\" IN (SELECT f.case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f WHERE starts_with(f.\"findingCode\", '03017015'))
  ORDER BY c.\"eventDate\" DESC, c.\"ntsbNumber\" DESC"

Prints the whole list as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.