Files
gps-denied-onboard/.planning/STATE.md
T
Yuzviak a11ed15187 docs: add Phase 1 ADRs and update PROJECT.md with completed decisions
ADR 0002: hexagonal/ports-and-adapters architecture — components/ layout,
  protocol.py per component, composition root, core/ for concentrated math.
ADR 0003: @dataclass(slots=True, frozen=True) on hot path; Pydantic retained
  only at REST/config/DB boundaries. Pose/GPSPoint migration deferred to Phase 2.
ADR 0004: Stage 2 as independent iteration — own phases 1-6, own requirements,
  stage1 code treated as MVP starting capital.

PROJECT.md: Stage 2 Key Decisions updated from Pending → Accepted with Phase 1
  implementation notes, deferred work list, and final architecture summary.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 09:23:09 +03:00

99 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
gsd_state_version: 1.0
milestone: v2.0
milestone_name: Stage 2 — Hexagonal architecture + try02 idea integration + real-flight fixture
status: phase_1_complete
last_updated: "2026-05-11T00:00:00Z"
last_activity: 2026-05-11 — Phase 1 complete; 01-08 composition root + YAML config shipped; 216/216 tests green
progress:
total_phases: 6
completed_phases: 1
total_plans: 8
completed_plans: 8
percent: 100
---
# Project State
## Project Reference
See: .planning/PROJECT.md (updated 2026-05-10)
**Core value:** Flight controller must receive valid MAVLink GPS_INPUT at 5-10Hz with position accuracy ≤50m for 80% of frames — without this, the UAV cannot navigate in GPS-denied airspace.
**Current focus:** Stage 2 / Phase 1 — Hexagonal Refactor & Composition Root
## Current Phase
**Phase:** 1 — Hexagonal Refactor & Composition Root (COMPLETE)
**Next phase:** Phase 2 — Acceptance Criteria + Test Taxonomy + Observability Spine
## Roadmap Summary
### Stage 1 (v1.0 — archived under `.planning/archive/v1.0/`)
Treated as MVP starting capital, not active backlog. ESKF + cuVSLAM/ORB VO + GPR + MAVLink + 195 passing tests + 8 SITL skipped. Refactoring is allowed and expected.
### Stage 2 (v2.0 — current iteration, Phases 16)
| Phase | Name | Status |
|-------|------|--------|
| 1 | Hexagonal Refactor & Composition Root | **Complete** (8/8 plans, 216 tests green) |
| 2 | Acceptance Criteria + Test Taxonomy + Observability Spine | Pending |
| 3 | Safety Anchor State Machine & Geometry-Gated Verifier | Pending |
| 4 | Conditional Multi-Scale VPR + Flight Data Recorder | Pending |
| 5 | MAVLink Source-Aware Output & Spoofing/Blackout Handling | Pending |
| 6 | Real-Flight Fixture (Azaion 10.05.2026) + CLI + Per-Env Docker | Pending |
## Key Files
- `.planning/PROJECT.md` — Stage 2 project context
- `.planning/REQUIREMENTS.md` — 52 Stage 2 requirements with traceability
- `.planning/ROADMAP.md` — Stage 2 roadmap, 6 phases
- `.planning/archive/v1.0/` — Stage 1 historical record (PROJECT/REQUIREMENTS/ROADMAP/phases)
- `.planning/codebase/` — codebase map (ARCHITECTURE, CONCERNS, STACK, etc.)
- `_docs/01_solution/solution.md` — authoritative architecture spec
- `_docs/00_problem/acceptance_criteria.md` — to be rewritten with formal AC-1.x (Phase 2)
## Session Notes
- 2026-04-01 — Project initialized; Stage 1 brownfield scaffold (~2800 lines)
- Stage 1 complete — 195 passing + 8 SITL skipped tests, all 7 phases shipped, archived to `.planning/archive/v1.0/`
- 2026-05-10 — Stage 2 opened as independent iteration with own phase numbering (16); 52 requirements drafted
- 2026-05-10 — Stage 2 ROADMAP.md created; 100% requirement coverage; traceability populated in REQUIREMENTS.md
- Stage 2 strategy: refactor stage1 working code to hexagonal layout, re-implement try02 concepts (NOT layout details), formalize AC, add Azaion real-flight fixture
- Code from stage1 is MVP — refactoring is allowed and expected; no regression in 195 stage1 tests is the floor
- 2026-05-11 — Phase 1 complete: Plans 01-01 through 01-08 executed; 216/216 tests passing; ARCH-01..07 all satisfied
## Stage 2 Phase Dependency Order
```
Phase 1 (ARCH refactor — Protocol surfaces stabilize first)
Phase 2 (AC + TEST taxonomy + structlog spine)
Phase 3 (SAFE state machine + VERIFY anchor gates)
Phase 4 (Conditional VPR + FDR — needs trigger semantics from SAFE)
Phase 5 (MAVOUT — source labels + spoofing + blackout — needs SAFE labels + FDR audit)
Phase 6 (FIXTURE — Azaion real-flight + CLI + per-env Docker — exercises everything end-to-end)
```
## Current Position
Phase: 1 — Hexagonal Refactor & Composition Root
Plan: 08 (COMPLETE — final plan of phase)
Status: Phase 1 complete — all 8 plans executed, 216/216 tests green, ARCH-01..07 satisfied
Last activity: 2026-05-11 — Plan 01-08 complete; build_pipeline factory + RuntimeConfig + YAML config shipped
## Key Decisions (Phase 1)
- ARCH-01: components/{vio,satellite_matcher,gpr,mavlink_io,anchor_verifier,safety_state,flight_recorder,coordinate_transforms}/ created with protocol.py + impls
- ARCH-02: hot_types migration deferred to Phase 2 (Pydantic retained for 216-test stability)
- ARCH-03: pipeline/composition.py build_pipeline(env) as explicit DI root
- ARCH-04: core/ math files retained as single files (eskf, factor_graph, coordinates, chunk_manager, recovery, rotation)
- ARCH-05: typing.Protocol throughout; orchestrator.py has zero concrete adapter imports
- ARCH-06: config/{jetson,x86_dev,ci,sitl}.yaml + RuntimeConfig.env + YamlConfigSettingsSource
- ARCH-07: 216 passed / 8 skipped / 0 failed (baseline was 216+8 skipped)