Review story 2.1: aircraft data model and fetcher passes all ACs

All 5 ACs verified clean: field mapping, safe defaults, timeout propagation,
MLAT detection, and FileFixtureFetcher. 64 tests pass, ruff check and format
clean. Sprint status updated to done, deferred-work updated with runtime
verification note for HttpFetcher on live dump1090.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Matt Edholm
2026-04-22 23:04:44 -04:00
parent 6208134a1c
commit 2fdb58c516
3 changed files with 12 additions and 3 deletions
@@ -83,3 +83,12 @@ Description: `provision.py` calls `app.run(port=80)` which requires root privile
Story: `1-5-provisioning-execution-tile-download-cache-validation-and-wifi-kill`
Category: Technical debt
Description: The `POST /submit` handler is fully synchronous — the browser connection stays open while tile download, airspace download, and cache validation complete (potentially 25 minutes). This is acceptable for MVP but a streaming response (using `flask.stream_with_context` or a background thread with server-sent events) would improve UX by allowing the browser to render progress feedback without holding an open connection.
---
## Story 2.1: Aircraft Data Model & Fetcher
### [2-1] HttpFetcher live dump1090 runtime verification
Story: `2-1-aircraft-data-model-and-fetcher`
Category: Runtime verification
Description: `HttpFetcher` is tested with mocks only. Live feed at `http://localhost:8080/data/aircraft.json` can only be verified on device with an RTL-SDR dongle connected and dump1090 running. No automated test covers the real HTTP path to dump1090.