mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 08:21:13 +00:00
bf13549b32
ci/woodpecker/push/02-build-push Pipeline failed
- Enhanced `.env.example` with detailed CMake build flags and replay-mode strategy flags for development and CI environments. - Updated `.gitignore` to include a new deploy rollback bookmark. - Revised `_docs/_autodev_state.md` to reflect the current task status and steps. - Added new lessons to `_docs/LESSONS.md` regarding testing and architectural improvements. - Documented changes in `_docs/02_document/deployment/ci_cd_pipeline.md` to reflect the relaxed OpenCV version pin. - Updated test data documentation in `_docs/02_document/tests/test-data.md` to clarify fixture usage and paths. This commit continues the cycle-1 documentation sync and addresses various configuration updates for improved clarity and functionality.
6.4 KiB
6.4 KiB
Structural Snapshot — 2026-05-20 (cycle-1 close)
Baseline snapshot for future retros. Captures the component / import / contract topology at end of cycle 1 so cycle 2 retro can compute deltas without re-deriving from source.
Component Inventory
| # | Component | Path | Strategy slots (registered) | Notes |
|---|---|---|---|---|
| 1 | C1 — VIO | src/gps_denied_onboard/components/c1_vio/ |
klt_ransac (operational default), okvis2 (BLOCKED via AZ-332→AZ-592), vins_mono (BLOCKED via AZ-333→AZ-593) |
Three strategies behind _STRATEGY_REGISTRY; airborne_bootstrap registers all 3 with BUILD_* gating |
| 2 | C2 — VPR | src/gps_denied_onboard/components/c2_vpr/ |
ultra_vpr (production default), megaloc, mixvpr, selavpr, eigenplaces, salad, netvlad |
All implemented; secondaries behind BUILD_* flags per ADR-002 |
| 3 | C2.5 — Re-rank | src/gps_denied_onboard/components/c2_5_rerank/ |
inlier_based_reranker |
Single strategy |
| 4 | C3 — Matcher | src/gps_denied_onboard/components/c3_matcher/ |
disk_lightglue (default), aliked_lightglue, xfeat |
Three strategies |
| 5 | C3.5 — AdHoP | src/gps_denied_onboard/components/c3_5_adhop/ |
adhop_refiner (production), passthrough (baseline) |
Conditional refinement |
| 6 | C4 — Pose | src/gps_denied_onboard/components/c4_pose/ |
opencv_gtsam (production) |
D-CROSS-LATENCY-1 hybrid trigger lives here |
| 7 | C5 — State | src/gps_denied_onboard/components/c5_state/ |
gtsam_isam2 (production), eskf_baseline (engine-rule baseline) |
iSAM2 + IncrementalFixedLagSmoother |
| 8 | C6 — Tile cache | src/gps_denied_onboard/components/c6_tile_cache/ |
Factory-based (no _STRATEGY_REGISTRY entry) |
Postgres 16 + filesystem + FAISS HNSW |
| 9 | C7 — Inference | src/gps_denied_onboard/components/c7_inference/ |
tensorrt, pytorch_fp16, onnx_trt_ep (selected via INFERENCE_BACKEND env) |
Factory-based |
| 10 | C8 — FC adapter | src/gps_denied_onboard/components/c8_fc_adapter/ |
ardupilot_plane (signed MAVLink), inav (MSP2) |
Selected via GPS_DENIED_FC_PROFILE |
| 11 | C10 — Provisioning | src/gps_denied_onboard/components/c10_provisioning/ |
n/a (operator-only) | C10 + C11 + C12 ship in operator-orchestrator image |
| 12 | C11 — Tile Manager | src/gps_denied_onboard/components/c11_tilemanager/ |
n/a (operator-only) | BUILD_C11_TILE_MANAGER=OFF on airborne (ADR-004) |
| 13 | C12 — Operator Orchestrator | src/gps_denied_onboard/components/c12_operator_orchestrator/ |
n/a (operator-only) | Includes FlightsApiClient (AZ-489) + PostLandingUploadOrchestrator + OperatorReLocService |
| 14 | C13 — FDR | src/gps_denied_onboard/components/c13_fdr/ |
Factory-based | Writer thread + segment rotation + 64 GB cap + flight header/footer |
| 15 | helpers/runtime_root | src/gps_denied_onboard/helpers/, src/gps_denied_onboard/runtime_root/ |
n/a — composition root + cross-cutting helpers | Hosts compose_root, airborne_bootstrap, operator_bootstrap, _STRATEGY_REGISTRY, replay branch, factory modules |
Source Size
| Scope | Python LoC |
|---|---|
src/ (total) |
61,071 |
Import Graph Health
- Cycles in component import graph: 0 (verified across batches 88–92 cumulative reviews — no back-edges introduced).
- Composition seam:
runtime_root.airborne_bootstrap(single composition root for airborne binary) +runtime_root.operator_bootstrap(single composition root for operator-orchestrator binary). Both pull from per-component*_factorymodules underruntime_root/.
Contract Files
| Path | Purpose | Status |
|---|---|---|
_docs/02_document/contracts/shared_fdr_client/fdr_record_schema.md |
FDR record envelope (v1.3.0) | Production |
_docs/02_document/contracts/shared_fdr_client/fdr_client_protocol.md |
FDR client API surface | Production |
_docs/02_document/contracts/shared_log_bridge/log_record_schema.md |
Log record schema (v1.0.0) | Production |
_docs/02_document/contracts/shared_satellite_provider_ingest/ |
D-PROJ-2 ingest endpoint placeholder | Planned (parent-suite work) |
_docs/02_document/contracts/shared_flights_api/ |
C12 → flights REST DTO |
Production (consumed by AZ-489) |
Contract coverage % vs public-API symbols is not computed in this snapshot (no public-API inventory exists yet). Recommend adding the inventory + coverage metric as a cycle-2 follow-up — the same effort that lands architecture_compliance_baseline.md per Improvement Action #3.
Build Track Coverage (per ADR-002 + ADR-011)
| Binary | Composition root | Strategies linked (production) | BUILD_* flags |
|---|---|---|---|
Airborne (companion-tier1 Tier-1 / companion-jetson Tier-2) |
airborne_bootstrap |
C1=klt_ransac, C2=ultra_vpr, C2.5=inlier_based_reranker, C3=disk_lightglue, C3.5=adhop_refiner, C4=opencv_gtsam, C5=gtsam_isam2, C7=tensorrt/pytorch_fp16, C8=ardupilot_plane/inav |
BUILD_VINS_MONO=OFF, BUILD_SALAD=OFF, BUILD_C11_TILE_MANAGER=OFF, BUILD_DEV_STATIC_KEY=OFF, BUILD_STATE_ESKF=OFF; replay flags BUILD_VIDEO_FILE_FRAME_SOURCE=ON, BUILD_TLOG_REPLAY_ADAPTER=ON, BUILD_REPLAY_SINK_JSONL=ON (ADR-011) |
| Research (lab Jetson IT-12) | airborne_bootstrap with research flags |
airborne contents + every non-default strategy linked | All BUILD_* flags ON except BUILD_DEV_STATIC_KEY |
| Operator-Orchestrator | operator_bootstrap |
C10, C11 (TileDownloader + TileUploader), C12 (FlightsApiClient, PostLandingUploadOrchestrator, OperatorReLocService) |
BUILD_C11_TILE_MANAGER=ON |
Process Leftovers (open at snapshot time)
_docs/_process_leftovers/2026-05-11_d_cross_cve_1_opencv_pin_deferred.md— OPEN, gtsam numpy-2 unblock pending.
Cycle-2 Delta Targets
When cycle 2 closes, compare against this snapshot:
- Component count change — target 0 (no new components mid-feature-cycle; if AZ-595 or follow-ups add a component, document why).
- Source LoC change — informational; rapid growth flagged for sub-component refactor review.
- Cycles in import graph — must stay 0; any new cycle is a regression and surfaces a Critical finding.
_STRATEGY_REGISTRYkeys — should grow by 0–2 (only when a new strategy lands per ADR-002).- Contract files — D-PROJ-2 ingest moves from "placeholder" to "production" if parent-suite ships its endpoint.