Files
planeMapper/_bmad-output/implementation-artifacts/deferred-work.md
T
Matt Edholm 6216e933a6 Review story 1.4: location resolution passes all ACs
All 5 ACs verified: ICAO lookup via importlib.resources, Nominatim
geocoding with User-Agent and timeout, exact error messages, mocked
HTTP in tests, portal POST /find-location returns 200 on success and
error. 45 tests pass, ruff clean. Sprint status updated to done.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:48:02 -04:00

2.9 KiB

Deferred Work Manifest

Tracks blocked, deferred, and tech-debt items across sprints.


Infrastructure / environment setup

[1-1] systemd unit installation

Story: 1-1-project-scaffold-and-verified-entry-points Task: 7.1, 7.2 Description: Unit files created at systemd/. Must be symlinked or copied to /etc/systemd/system/ on the Pi and systemctl daemon-reload run before they take effect. Cannot be automated without root access to target device.

[1-1] Pi Zero 2W runtime verification

Story: 1-1-project-scaffold-and-verified-entry-points Task: 9.1, 9.2 Description: Entry points verified on host (Pi 5, Linux). Full AC1 verification on Pi Zero 2W hardware requires physical deployment.


Story 1.2 review — no new deferred items

Story 1-2-configuration-read-write-wipe reviewed 2026-04-22. All 4 ACs pass, all 7 tests pass, ruff check and format clean. No deferred items required: config.write() already handles directory creation via mkdir(parents=True, exist_ok=True), so deployment to a fresh device with no /etc/planemapper/ directory is covered at runtime.


Story 1.3: WiFi Hotspot & Captive Portal Form

[1-3] hostapd and dnsmasq system packages

Story: 1-3-wifi-hotspot-and-captive-portal-form Category: Infrastructure/environment Description: hostapd and dnsmasq require system packages installed on the Pi; AP mode requires wlan0 in AP-capable state. Cannot be verified without hardware.

[1-3] Captive portal device testing

Story: 1-3-wifi-hotspot-and-captive-portal-form Category: Runtime verification Description: Actual captive portal detection behaviour (iOS/Android/Windows triggering) requires physical device testing. Automated tests confirm redirect routes are correct but cannot simulate OS-level captive portal probe behaviour.

[1-3] Provisioning loop placeholder

Story: 1-3-wifi-hotspot-and-captive-portal-form Category: Infrastructure/environment Description: provision.py provisioning loop currently exits after one iteration (placeholder provisioned = True) — full sequence wired in Story 1.5.


Story 1.4: Location Resolution (ICAO & Address)

[1-4] Nominatim geocoding runtime verification

Story: 1-4-location-resolution-icao-and-address Category: Runtime verification Description: Nominatim geocoding verified in tests with mocks only; real geocoding requires internet access and can only be confirmed on device at provisioning time. No automated test covers live HTTP to Nominatim.

[1-4] ICAO heuristic false-positive risk

Story: 1-4-location-resolution-icao-and-address Category: Technical debt Description: ICAO heuristic (len(query) == 4 and query.isalpha()) may misclassify 4-letter words (e.g. "BATH", "YORK") as ICAO codes, causing them to be looked up in airports.csv before falling back to Nominatim. Acceptable for MVP given the provisioning context, but noted for future hardening (e.g. validate against a known ICAO prefix list).