mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 08:41:12 +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.
71 lines
6.4 KiB
Markdown
71 lines
6.4 KiB
Markdown
# 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 `*_factory` modules under `runtime_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_REGISTRY` keys** — 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.
|