Commit Graph

23 Commits

Author SHA1 Message Date
Matt Edholm 7d89166880 Create story 2.1: aircraft data model and fetcher
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 23:00:39 -04:00
Matt Edholm 9c53ccb524 Review story 1.5: provisioning execution passes all ACs — Epic 1 complete
Fix portal.py error handling so validate_cache failures return retry HTML while
kill_wifi ProvisioningError propagates (re-raise) per AC4. All 56 tests pass.
Update sprint-status.yaml: 1-5 → done, epic-1 → done. Append story 1.5 deferred
items to deferred-work.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:57:55 -04:00
Matt Edholm 4aeeefb488 Implement story 1.5: provisioning execution tile download cache validation wifi kill
Add tiles.py, airspace.py, wifi.join_home_wifi, portal /submit route, and rewire
provision.py main loop; all tasks and quality gates pass (56 tests, ruff clean).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:54:34 -04:00
Matt Edholm a6a6a2796d Create story 1.5: provisioning execution tile download cache validation and wifi kill 2026-04-22 22:50:31 -04:00
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
Matt Edholm 6231e3157e Implement story 1.4: location resolution ICAO and address
Adds location.resolve() with ICAO CSV lookup and Nominatim geocoding,
POST /find-location portal route with inline confirmation/error display,
and full test coverage with mocked network calls.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:46:31 -04:00
Matt Edholm d388cca478 Create story 1.4: location resolution ICAO and address
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:44:01 -04:00
Matt Edholm b2b55ac11b Review story 1.3: WiFi hotspot and captive portal form passes all ACs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:42:20 -04:00
Matt Edholm 563b0d4665 Implement story 1.3: WiFi hotspot and captive portal form
Implement wifi.py (start_ap/stop_ap/kill_wifi with subprocess and ProvisioningError),
portal.py (Flask captive portal with Android/iOS/Windows probe redirects and 404 catch-all),
updated provision.py provisioning loop, and full test suite (38 passing).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:41:05 -04:00
Matt Edholm 76c2d66ed1 Create story 1.3: WiFi hotspot and captive portal form
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:38:18 -04:00
Matt Edholm c08ec9fc89 Review story 1.2: config read/write/wipe passes all ACs
All 4 ACs verified, 7 tests pass, ruff clean. No issues found.
Story status updated to done; no new deferred items.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:36:37 -04:00
Matt Edholm 826f1d98fa Implement story 1.2: config read/write/wipe
Add provisioning/config.py with read/write/wipe functions, update
conftest.py with autouse CONFIG_PATH patch fixture, write 7 tests
covering all acceptance criteria, and extend pyproject.toml
per-file-ignores so conftest.py may import from provisioning.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:35:11 -04:00
Matt Edholm 8682b8714e Create story 1.2: configuration read/write/wipe
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:33:13 -04:00
Matt Edholm 1ff68512f9 QA: add structural and model tests for story 1.1 scaffold
Replaces placeholder stubs in test_models.py, test_gpio_ctrl.py, and
provisioning/test_provision_loop.py with real assertions. Adds new
test_scaffold.py covering AC3 file-presence, importlib.resources
airports.csv load, constants completeness, and main.py provisioning
import guard. Extends ruff per-file-ignores so tests/provisioning/*.py
may import from planemapper.provisioning. All 22 tests pass; ruff
check and format --check both clean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:31:55 -04:00
Matt Edholm f3e6586a7a Review story 1.1: project scaffold passes all acceptance criteria
Fix ruff import-boundary enforcement: replace stray TID252 ignore with
proper TID251 banned-api rule so `planemapper.main` cannot import from
`planemapper.provisioning.*`. Add deferred-work.md. Advance sprint
status 1-1 → done.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:30:01 -04:00
Matt Edholm 3afb7f5f1e Add .gitignore to exclude __pycache__ and egg-info artifacts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:27:02 -04:00
Matt Edholm 85c8acf767 Implement story 1.1: project scaffold and verified entry points
Creates the complete src/planemapper/ layout with all module stubs,
provisioning and renderer subpackages, airports.csv data bundle,
systemd unit files, and full test scaffold. All three quality gates
pass: pytest 12/12, ruff check zero violations, ruff format clean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:26:53 -04:00
Matt Edholm 0612e0fe02 Create story 1.1: project scaffold and verified entry points
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:22:39 -04:00
Matt Edholm b2afa7fb4b Add sprint-status.yaml and promote planning artifacts to sprint branch
Initialises implementation-artifacts/ with sprint-status.yaml covering all
14 stories across 4 epics. Promotes architecture.md and epics.md from
untracked state. Sprint 1 branch is now ready for autopilot execution.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 22:20:13 -04:00
Matt Edholm 9b670fa98f Add PRD and BMAD output artifacts 2026-04-22 21:18:42 -04:00
Matt Edholm fa7055d3d8 Add BMAD commands, skills, and module files from piSetup 2026-04-22 19:46:48 -04:00
Matt Edholm a4dfe0cba6 Rewrite README with full project spec, hardware, and build order 2026-04-22 19:43:00 -04:00
Matt Edholm bbdb962e81 Initial commit: project spec and README 2026-04-22 19:39:37 -04:00