From 2ba3d03c96fb259eb0b788aaf56f9a1b20d5a2df Mon Sep 17 00:00:00 2001 From: Matt Edholm Date: Wed, 22 Apr 2026 23:17:42 -0400 Subject: [PATCH] Review story 2.3: home marker and airspace outlines passes all ACs All 10 review criteria pass without any code fixes required. Two tech-debt items added to deferred-work: non-Polygon geometry types silently skipped (intentional for MVP) and null-geometry GeoJSON features would raise AttributeError (acceptable for controlled OpenAIP input). Co-Authored-By: Claude Sonnet 4.6 --- .../2-3-home-marker-and-airspace-outlines.md | 2 +- .../implementation-artifacts/deferred-work.md | 14 ++++++++++++++ .../implementation-artifacts/sprint-status.yaml | 4 ++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/_bmad-output/implementation-artifacts/2-3-home-marker-and-airspace-outlines.md b/_bmad-output/implementation-artifacts/2-3-home-marker-and-airspace-outlines.md index 146a80c..16d9767 100644 --- a/_bmad-output/implementation-artifacts/2-3-home-marker-and-airspace-outlines.md +++ b/_bmad-output/implementation-artifacts/2-3-home-marker-and-airspace-outlines.md @@ -1,6 +1,6 @@ # Story 2.3: Home Marker & Airspace Outlines -Status: review +Status: done ## Story diff --git a/_bmad-output/implementation-artifacts/deferred-work.md b/_bmad-output/implementation-artifacts/deferred-work.md index d938695..70618f7 100644 --- a/_bmad-output/implementation-artifacts/deferred-work.md +++ b/_bmad-output/implementation-artifacts/deferred-work.md @@ -106,3 +106,17 @@ Description: The equirectangular projection corrects only for longitude converge 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`. + +--- + +## Story 2.3: Home Marker & Airspace Outlines + +### [2-3] draw_airspace() silently skips non-Polygon geometry types +Story: `2-3-home-marker-and-airspace-outlines` +Category: Technical debt +Description: `draw_airspace()` skips any GeoJSON feature whose `geometry.type` is not `"Polygon"` (e.g. Point, LineString, MultiPolygon). This is intentional for MVP per spec, but MultiPolygon airspace features from OpenAIP will be silently ignored. Future hardening: add support for MultiPolygon by iterating each ring, and log a debug message when an unsupported geometry type is encountered. + +### [2-3] draw_airspace() does not handle null geometry features +Story: `2-3-home-marker-and-airspace-outlines` +Category: Technical debt +Description: If a GeoJSON feature has `"geometry": null` (valid per GeoJSON spec for featureless features), `feature.get("geometry", {})` returns `None` rather than `{}`, and the subsequent `.get("type")` call raises `AttributeError`. Acceptable for MVP given controlled OpenAIP input, but real-world GeoJSON files can contain null geometry. Future hardening: guard with `if not geom or not isinstance(geom, dict): continue`. diff --git a/_bmad-output/implementation-artifacts/sprint-status.yaml b/_bmad-output/implementation-artifacts/sprint-status.yaml index 754703a..b3eb9f9 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 done, epic-2 in-progress +last_updated: 2026-04-22 # 2-1 done, 2-2 done, 2-3 done, epic-2 in-progress project: planeMapper project_key: NOKEY tracking_system: file-system @@ -55,7 +55,7 @@ development_status: epic-2: in-progress 2-1-aircraft-data-model-and-fetcher: done 2-2-coordinate-projection-and-base-map-loading: done - 2-3-home-marker-and-airspace-outlines: review + 2-3-home-marker-and-airspace-outlines: done 2-4-altitude-colour-bands-and-aircraft-type-icons: backlog 2-5-per-aircraft-drawing: backlog 2-6-stateful-renderer-and-display-interface: backlog