Files
gps-denied-onboard/_docs/02_document/ripple_log_cycle1.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

8.8 KiB
Raw Blame History

Ripple Log — Cycle 1 (End-of-Cycle Documentation Sync)

Produced as part of greenfield Step 13 (Update Docs, document skill Task mode). Source: _docs/_autodev_state.md (cycle: 1). Date: 2026-05-19.

Why this ripple log is not a per-file enumeration

The document skill's Task Step 0.5 normally walks each touched source file and adds the downstream importers to the refresh set. The conventional output is a one-line-per-affected-doc list:

- docs/components/02_ingestor.md — refreshed because src/ingestor/queue.py imports src/shared/serializer.py (changed by AZ-173)

That mode assumes an incremental task batch — typically 15 specs against an established codebase where most code is unchanged. Cycle 1 of this greenfield is the inverse: 165 done task specs across 14 components + 8 helpers + 18 contract surfaces + 9 system-level test docs, landed across 97 implementation batches between 2026-05-09 and 2026-05-17. Every component owns code that did not exist when the Plan baseline docs were written, and every cross-cutting helper has at least one consumer in every component.

Computing the literal reverse-dependency set in this state produces "essentially every component imports essentially every helper, and every component is consumed by runtime_root.compose_root". The output would be ~30 doc rows all saying "refreshed because cycle 1 landed it". That is not actionable.

What the refresh set actually is for cycle 1

The Task workflow's three update levels each have a different effective scope this cycle:

Update level Effective scope this cycle Status after this session
Task Step 1 — Module docs (_docs/02_document/modules/) N/A — this project's Plan chose component-level granularity; no modules/ folder exists. No action.
Task Step 2 — Component docs (components/<NN>_<cN>/{description,tests}.md + common-helpers/*.md + contracts/*/*.md + tests/*.md) All 14 product components, all 8 helpers, all 18 contract subfolders, all 9 system-level test docs. ~50+ files. DEFERRED — to a follow-up /document task pass in a fresh session (see "Documentation reconciliation still owed" in FINAL_report.md § Cycle 1 Implementation Status).
Task Step 3 — System-level docs (architecture.md, system-flows.md, data_model.md, glossary.md, module-layout.md, FINAL_report.md) Real cross-cutting drift: _STRATEGY_REGISTRY + pre_constructed patterns (AZ-591, AZ-618), KltRansac-as-production-default (AZ-332/333 BLOCKED), opencv pin relaxation (D-CROSS-CVE-1 leftover). PARTIALFINAL_report.md + glossary.md updated this session; architecture.md + module-layout.md + system-flows.md deferred.
Task Step 4 — Problem-level docs (_docs/00_problem/*) No cycle-1 task changed an AC, restriction, or input-data parameter that the problem-level docs encode. No action; revisit only if the deferred Step 2 / Step 3 surfaces a contradiction.

Files actually changed this session

  • _docs/02_document/FINAL_report.md — Decision 9 revised (OpenCV pin); new "Cycle 1 Implementation Status" section appended before Quality Checklist Verification, listing composition-root architecture additions (_STRATEGY_REGISTRY, pre_constructed), BLOCKED tasks AZ-332 + AZ-333 with parked Tier-2 follow-ups, Step 11 Run Tests results, dependency pin drift, and the deferred-doc list.
  • _docs/02_document/glossary.md — 5 new entries (alphabetical): _STRATEGY_REGISTRY, airborne_bootstrap, KltRansac, pre_constructed, Tier-1 task / Tier-2 task. Status line updated to note cycle-1 additions pending re-confirmation.
  • _docs/02_document/ripple_log_cycle1.md — this file (new).
  • _docs/_autodev_state.md — sub_step bump to system-level-updates with deferred-work note.
  1. Architecture-level updates (continue Task Step 3)architecture.md ADR-009 sibling notes for _STRATEGY_REGISTRY + pre_constructed; OpenCV mentions in § Technology stack / § Risks; KltRansac-as-production-default note in § C1. module-layout.md § "Composition Root" extension for airborne_bootstrap + build_pre_constructed. system-flows.md only if any flow's wiring narrative drifted (likely F2 takeoff + F8 reboot — the only flows where compose_root is the visible actor). DONE — commits 4f122b6 (FINAL_report + glossary) + 1ca9a59 (arch + module-layout).
  2. C1 component refreshcomponents/01_c1_vio/description.md should explicitly mark KltRansac as the cycle-1 production-default; reflect the Tier-2 status of OKVIS2 + VINS-Mono. DONE — uncommitted in working tree at handoff time; rolled into the cycle-1 doc-sync batch with C2/C2.5/C3.
  3. Other 13 components + 8 helpers — task-by-task reconciliation, batched ~3 components per session.
    • Batch 1 (this session, 2026-05-19): C2 (VPR), C2.5 (Rerank), C3 (Matcher) — cycle-1 reality paragraphs + OpenCV pin relaxation (where applicable) + C3 xfeat Tier-2 follow-up note. Source of truth crossed: runtime_root/airborne_bootstrap.py (_C*_STRATEGIES, AIRBORNE_REQUIRED_PRE_CONSTRUCTED_KEYS, C3_MATCHER_BUILD_FLAGS), runtime_root/vpr_factory.py, per-component config.py.
    • Remaining (10 components): C3.5 (AdHoP), C4 (Pose), C5 (StateEstimator), C6 (TileCache), C7 (Inference), C8 (FC adapter), C10 (Provisioning), C11 (TileManager), C12 (OperatorOrchestrator), C13 (FDR).
    • Helpers (8 files): imu_preintegrator, se3_utils, lightglue_runtime, wgs_converter, sha256_sidecar, engine_filename_schema, ransac_filter, descriptor_normaliser.
  4. tests/*.md — pick up cycle-1 deltas; Step 12 (Test-Spec Sync) already touched traceability-matrix.md and resilience-tests.md in the uncommitted working tree; the remaining test-doc surfaces (blackbox-tests.md, performance-tests.md, resource-limit-tests.md, security-tests.md, tier2-jetson-testing.md, environment.md, test-data.md) should be checked against the ~36 done Blackbox Tests task specs. DONE — 2026-05-19 session (autodev Step 13 phase 9 tests-doc-updates):
    • environment.md — added § Harness Implementation Layout (47-evaluator runner/helpers/ inventory, runner/reporting/ CSV+evidence bundler from AZ-445/446, fixtures/{injectors,sitl_replay,sitl_replay_builder} layout, e2e/jetson/ Tier-2 entrypoint); added § Replay-Mode Skip Gating (E2E_SITL_REPLAY_DIR + sitl_replay_ready marker from AZ-594/595/598/599); replaced raw-compose Tier-1 + Tier-2 examples with e2e/docker/run-tier1.sh + e2e/jetson/run-tier2.sh selector-parity wrappers (AZ-444 AC-1); aligned OpenCV pin reference to the cycle-1 >=4.11.0.86,<4.12 floor with leftover cross-reference; fixed stale tests/fixtures/ and tests/runner paths to e2e/fixtures/ and e2e/runner.
    • test-data.md — added rows for sitl-replay-fixture-p01, sitl-replay-fixture-p02, and fc-proxy-schedule (AZ-596/598/599); revised cve-jpeg-fixture row to reflect the relaxed cycle-1 OpenCV pin band with leftover cross-reference; added § Data Isolation paragraph for committed-fixture mode; fixed stale tests/fixtures/ paths to e2e/fixtures/.
    • security-tests.md — NFT-SEC-04 pin assertion + Pass Criteria updated to the cycle-1 relaxed band with leftover cross-reference; replay condition documented.
    • ci_cd_pipeline.md (deployment doc — adjacent hygiene) — OpenCV pin-gate row revised to the relaxed band with replay condition.
    • Unchangedblackbox-tests.md, performance-tests.md, resilience-tests.md, resource-limit-tests.md, tier2-jetson-testing.md, traceability-matrix.md. Step 12 (Test-Spec Sync) already aligned these with implementation; no further gaps found against the ~50 done test task specs (AZ-406-446, AZ-594-600, AZ-618-619). tests/e2e/replay/test_derkachi_1min.py path references in resilience-tests.md + tier2-jetson-testing.md verified — file exists at that path at repo root, distinct from the e2e/tests/ blackbox harness.

The component-level pass (item 2 + 3) is the bulk of the work. Each component-batch session should re-read this ripple log + the relevant component description.md + the task specs in _docs/02_tasks/done/AZ-*_<component>*.md + the actual source in src/gps_denied_onboard/components/<c>/. Per-batch session pattern proven this cycle: read runtime_root/airborne_bootstrap.py _C*_STRATEGIES + AIRBORNE_REQUIRED_PRE_CONSTRUCTED_KEYS rows for each slug, cross-check against component config.py defaults, then add (a) a "Cycle-1 operational reality" paragraph in § 1 of description.md, (b) an OpenCV pin row in § 5 if the component imports cv2, (c) a "Cycle-1 Tier-2 follow-up dependencies" subsection in § 7 only when a strategy exists in code but is parked from the airborne registry.