feat(2-7): operational radar loop, startup screen, and systemd wiring

Implements story 2-7: full main.py with _make_startup_screen(),
_run_one_cycle() with per-phase timing and slow-render warning, and
main() connecting config → bounds → fetcher → renderer → display.
Adds provision.py early-exit when already provisioned. Adds User=root
to both systemd service files. Adds tests/test_main.py (3 new tests,
99 total). Updates scaffold test to allow provisioning.config import
from main.py. All quality gates pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Matt Edholm
2026-04-22 23:40:37 -04:00
parent cbe87d36f9
commit 9f6d442df8
9 changed files with 164 additions and 32 deletions
@@ -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, 2-3 done, 2-4 done, 2-5 done, 2-6 done, 2-7 ready-for-dev, epic-2 in-progress
last_updated: 2026-04-22 # 2-1 done, 2-2 done, 2-3 done, 2-4 done, 2-5 done, 2-6 done, 2-7 review, epic-2 in-progress
project: planeMapper
project_key: NOKEY
tracking_system: file-system
@@ -59,7 +59,7 @@ development_status:
2-4-altitude-colour-bands-and-aircraft-type-icons: done
2-5-per-aircraft-drawing: done
2-6-stateful-renderer-and-display-interface: done
2-7-operational-radar-loop-startup-screen-and-systemd-wiring: ready-for-dev
2-7-operational-radar-loop-startup-screen-and-systemd-wiring: review
epic-2-retrospective: optional
# Epic 3: Stale Data Resilience