Item 2 (C1) + item 3 batch 1 of ~5 (C2 VPR, C2.5 Rerank, C3 Matcher) of the cycle-1 component-description reconciliation called out in ripple_log_cycle1.md. For each touched description.md: - Add a "Cycle-1 operational reality" paragraph in section 1 that names the _STRATEGY_REGISTRY + register_airborne_strategies() runtime gate (AZ-591), the pre_constructed dict path through compose_root (AZ-618 umbrella), the per-component AIRBORNE_REQUIRED_PRE_CONSTRUCTED_KEYS row, and any cycle-1 strategy-default vs documented-primary disambiguation (net_vlad as the C2 default; xfeat parked from the C3 airborne registry). - Relax the OpenCV row in section 5 Key Dependencies to the D-CROSS-CVE-1 cycle-1 pin (>=4.11.0.86,<4.12) wherever the component imports cv2 (C2 preprocessors, C2.5 ORB placeholder, C3 RANSAC + reprojection). - Add a "Cycle-1 Tier-2 follow-up dependencies" subsection in section 7 only for components with a strategy module that is built but parked from the airborne registry (C3 xfeat). Refresh ripple_log_cycle1.md follow-up ordering with per-batch progress + extracted batch pattern so the next batch session has a self-contained recipe. Bump _autodev_state.md sub_step.detail to reflect batch 1 completion (10 components + 8 helpers + tests/ remain). Co-authored-by: Cursor <cursoragent@cursor.com>
6.8 KiB
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 1–5 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). |
PARTIAL — FINAL_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 tosystem-level-updateswith deferred-work note.
Follow-up session — recommended ordering
- Architecture-level updates (continue Task Step 3) —
architecture.mdADR-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 forairborne_bootstrap+build_pre_constructed.system-flows.mdonly if any flow's wiring narrative drifted (likely F2 takeoff + F8 reboot — the only flows wherecompose_rootis the visible actor). DONE — commits4f122b6(FINAL_report + glossary) +1ca9a59(arch + module-layout). - C1 component refresh —
components/01_c1_vio/description.mdshould 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. - 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-componentconfig.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.
- 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:
tests/*.md— pick up cycle-1 deltas; Step 12 (Test-Spec Sync) already touchedtraceability-matrix.mdandresilience-tests.mdin 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.
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.