diff --git a/_bmad-output/implementation-artifacts/2-2-coordinate-projection-and-base-map-loading.md b/_bmad-output/implementation-artifacts/2-2-coordinate-projection-and-base-map-loading.md index 8c46b5e..1bb88c9 100644 --- a/_bmad-output/implementation-artifacts/2-2-coordinate-projection-and-base-map-loading.md +++ b/_bmad-output/implementation-artifacts/2-2-coordinate-projection-and-base-map-loading.md @@ -1,6 +1,6 @@ # Story 2.2: Coordinate Projection & Base Map Loading -Status: review +Status: done ## Story diff --git a/_bmad-output/implementation-artifacts/deferred-work.md b/_bmad-output/implementation-artifacts/deferred-work.md index 6d28b26..d938695 100644 --- a/_bmad-output/implementation-artifacts/deferred-work.md +++ b/_bmad-output/implementation-artifacts/deferred-work.md @@ -92,3 +92,17 @@ Description: The `POST /submit` handler is fully synchronous — the browser con 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. + +--- + +## Story 2.2: Coordinate Projection & Base Map Loading + +### [2-2] Equirectangular projection distortion at high latitudes or large radius +Story: `2-2-coordinate-projection-and-base-map-loading` +Category: Technical debt +Description: The equirectangular projection corrects only for longitude convergence at the home latitude (`cos(home_lat)`). For large radius values (e.g. >150nm) or locations above ~60°N, distortion accumulates toward the display edges. Aircraft positions at the map boundary can be displaced by several pixels from their true screen location. Acceptable for a ~100nm display centred on a UK airfield, but worth revisiting if radius or latitude range is extended. + +### [2-2] basemap.load() does not verify image dimensions +Story: `2-2-coordinate-projection-and-base-map-loading` +Category: Technical debt +Description: `basemap.load()` opens and returns whatever image is at `BACKGROUND_PATH` without asserting it is 800×480. A mismatched tile composite (e.g. from a re-provisioning at a different zoom level) will be silently accepted and the rendered output will be corrupted. Future hardening: add a dimension assertion and raise `ValueError` if the image does not match `DISPLAY_WIDTH × DISPLAY_HEIGHT`. diff --git a/_bmad-output/implementation-artifacts/sprint-status.yaml b/_bmad-output/implementation-artifacts/sprint-status.yaml index 7daa5e9..49b3faa 100644 --- a/_bmad-output/implementation-artifacts/sprint-status.yaml +++ b/_bmad-output/implementation-artifacts/sprint-status.yaml @@ -35,7 +35,7 @@ # - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended) generated: 2026-04-22 -last_updated: 2026-04-22 # 2-1 done, 2-2 review, epic-2 in-progress +last_updated: 2026-04-22 # 2-1 done, 2-2 done, epic-2 in-progress project: planeMapper project_key: NOKEY tracking_system: file-system @@ -54,7 +54,7 @@ development_status: # Epic 2: Live Radar Display epic-2: in-progress 2-1-aircraft-data-model-and-fetcher: done - 2-2-coordinate-projection-and-base-map-loading: review + 2-2-coordinate-projection-and-base-map-loading: done 2-3-home-marker-and-airspace-outlines: backlog 2-4-altitude-colour-bands-and-aircraft-type-icons: backlog 2-5-per-aircraft-drawing: backlog