Files
gps-denied-onboard/_docs/06_metrics/structure_2026-05-20.md
T
Oleksandr Bezdieniezhnykh bf13549b32
ci/woodpecker/push/02-build-push Pipeline failed
[autodev] Update configuration and documentation for cycle-1
- 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.
2026-05-20 08:05:35 +03:00

71 lines
6.4 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.
# 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 8892 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 02 (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.