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>
Updates README, testing/README, next_steps.md, and ADR 0001 with the
first real EuRoC MH_01 e2e run (100 frames, ~30s wall-time, ATE RMSE
~10.9 km → xfail). Places the EuRoC result alongside the prior VPAIR
baseline (~1770 km) so future-reader can see both failure modes at a
glance:
- VPAIR diverges because no raw IMU → ESKF never engages
- EuRoC diverges because indoor scene has no satellite anchor, so
VO+ESKF drift without an external correction
Also records the branching policy (rename ``euroc_mh01`` →
``euroc_machine_hall``; empty URL due to DSpace UI gate; manual
fetch via DOI 10.3929/ethz-b-000690084).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
First Architecture Decision Record for this project. Captures the
rationale for building the e2e harness on VPAIR / MARS-LVIG / EuRoC
rather than blocking on proprietary Mavic data collection; lists
three alternatives considered and why rejected; records the first
real-run baseline (VPAIR ATE ~1770 km) as a measurable starting
point for future VO+ESKF tuning regressions.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>