Files
gps-denied-onboard/_docs/03_implementation/batch_93_cycle1_report.md
T
Oleksandr Bezdieniezhnykh 5c4d129f80 [AZ-622] Phase D: build_pre_constructed seeds c3 GPU runtimes
build_pre_constructed now populates c3_lightglue_runtime
(LightGlueRuntime) + c3_feature_extractor (FeatureExtractor) on top
of AZ-619/620/621. Strategy-specific BUILD_MATCHER_* flag mismatch
raises AirborneBootstrapError naming the missing flag and the c3_matcher
consumer; the c7 InferenceRuntime built earlier in the bootstrap is
reused as the engine source so no double-build at this layer.

C3MatcherConfig gains optional lightglue_weights_path: Path | None
for the operator's deployment config; production main() (AZ-624)
populates it. Real LightGlue inference correctness is verified by
AZ-624's Jetson AC-5 run per the AZ-622 Tier-2 Note.

Phase tests for AZ-619/620/621 gain an autouse _stub_c3_matcher_builders
fixture so additivity assertions remain valid as the bootstrap grows.

Code review: PASS_WITH_WARNINGS (3 Low: signature drift from spec,
_is_build_flag_on duplication across 3 runtime_root modules, and
BuildConfig literal mirrored with per-strategy build configs). All
deferred to future hygiene PBIs.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 08:56:04 +03:00

5.7 KiB

Batch Report

Batch: 93 Tasks: AZ-622 (Phase D: build_pre_constructed seeds c3_lightglue_runtime + c3_feature_extractor) Date: 2026-05-19 Cycle: 1

Task Results

Task Status Files Modified Tests AC Coverage Issues
AZ-622_pre_constructed_phase_d_c3_runtimes Done 6 files 17 passed 3/3 ACs covered 0 blocking

Files Changed

Production

  • src/gps_denied_onboard/components/c3_matcher/config.py — added optional lightglue_weights_path: Path | None = None; extended __post_init__ Path/None validator; expanded module docstring with the AZ-622 / Phase D rationale.
  • src/gps_denied_onboard/runtime_root/airborne_bootstrap.py — new public constant C3_MATCHER_BUILD_FLAGS; new internal helpers _resolve_c3_matcher_strategy, _is_build_flag_on, _load_lightglue_engine_handle, _build_c3_lightglue_runtime, _build_c3_feature_extractor; build_pre_constructed refactored to step-by-step build so the just-built c7_inference flows into the LightGlue loader without a double-build.

Tests

  • tests/unit/runtime_root/test_az622_pre_constructed_phase_d.py (NEW, 6 tests):
    • test_ac_622_1_adds_c3_lightglue_runtime_and_c3_feature_extractor — AC-622.1.
    • test_ac_622_2_build_flag_off_with_configured_strategy_raises_named_error — AC-622.2 (DISK).
    • test_ac_622_2_build_flag_off_with_aliked_strategy_names_aliked_flag — AC-622.2 (ALIKED, per-strategy specificity).
    • test_ac_622_2_default_config_no_c3_matcher_block_still_raises — AC-622.2 defence-in-depth.
    • test_ac_622_2_lightglue_engine_load_failure_wraps_runtime_error — AC-622.2 cause-chain wrap.
    • test_lightglue_runtime_uses_c7_inference_from_pre_constructed — additive identity-share invariant (no double-build of InferenceRuntime).
  • tests/unit/runtime_root/test_az619_pre_constructed_phase_a.py — added autouse _stub_c3_matcher_builders.
  • tests/unit/runtime_root/test_az620_pre_constructed_phase_b.py — added autouse _stub_c3_matcher_builders.
  • tests/unit/runtime_root/test_az621_pre_constructed_phase_c.py — added autouse _stub_c3_matcher_builders.

AC Test Coverage: 3 of 3 covered

AC Test Status
AC-622.1 test_ac_622_1_adds_c3_lightglue_runtime_and_c3_feature_extractor Covered
AC-622.2 test_ac_622_2_build_flag_off_with_configured_strategy_raises_named_error (+3 variants) Covered
AC-622.3 File tests/unit/runtime_root/test_az622_pre_constructed_phase_d.py exists Covered

Code Review Verdict: PASS_WITH_WARNINGS

Full report: _docs/03_implementation/reviews/batch_93_review.md. Three Low findings:

  1. F1 (Low / Spec)_build_c3_lightglue_runtime signature is (config, *, inference_runtime) not the spec's literal (config) form. Justified by the additivity invariant + AZ-621's no-double-build rule; documented in docstrings.
  2. F2 (Low / Maintainability)_is_build_flag_on duplicated across airborne_bootstrap, matcher_factory, and vpr_factory (3 call sites now). Defer to a future hygiene PBI (~2pt).
  3. F3 (Low / Maintainability)BuildConfig(FP16, 512MB, …) literal duplicated with per-strategy _build_*_build_config helpers. Defer until FP16 becomes a config-driven knob.

No Critical / High findings. Auto-fix not invoked.

Auto-Fix Attempts: 0

Stuck Agents: None

Test Run Summary

  • Targeted test set (AZ-619/620/621/622): 17 passed in 5.83s.
  • Regression check (tests/unit/runtime_root/ + tests/unit/c3_matcher/): 108 passed in 3.89s.
  • Adjacent regression check (tests/unit/c3_5_adhop/test_az349_adhop_refiner.py, the only other consumer of C3MatcherConfig): 23 passed in 1.09s.

Tier-2 / Deferred Work

Per the AZ-622 ## Tier-2 Note, real LightGlue inference correctness is verified by AZ-624's Jetson AC-5 run; this batch only exercises:

  • BUILD-flag matrix lookup (in-process, env-var driven).
  • Error-message contract (operator-actionable strings naming flag + consuming component slug).
  • The _load_lightglue_engine_handle heavy seam via monkeypatch sentinels.

The production path of _load_lightglue_engine_handle (read block.lightglue_weights_path, compile via C7 InferenceRuntime, deserialise into EngineHandle) is implemented as real code (not a stub) and will be exercised end-to-end at AZ-624's Jetson tier-2 e2e gate. Operator's deployment config must populate c3_matcher.lightglue_weights_path for the airborne binary to start.

Spec / Code Naming Discrepancy (Informational, no finding)

The AZ-622 task spec § AC-622.2 example uses the flag name BUILD_C3_MATCHER_DISK_LIGHTGLUE, but the actual production flag matrix in matcher_factory._STRATEGY_TO_BUILD_FLAG uses the older BUILD_MATCHER_* family (BUILD_MATCHER_DISK_LIGHTGLUE, BUILD_MATCHER_ALIKED_LIGHTGLUE, BUILD_MATCHER_XFEAT). The implementation reuses the actual existing flags (per the constraint "MUST reuse the existing per-strategy BUILD_C3_MATCHER_* matrix"); the spec's flag-name typo is captured in the C3_MATCHER_BUILD_FLAGS docstring so future readers don't get confused. No change to the spec required — the constraint's intent (reuse the existing matrix, no new flags) is honored.

Next Batch

  • Batch 94: AZ-623 (Phase E: build_pre_constructed seeds c282_ransac_filter + c5 helpers + c5_isam2_graph_handle) — 3pt.
  • Then: AZ-624 (Phase F: wire main() + AC-1..AC-5 verification incl. Jetson tier-2) — 2pt.
  • Cumulative review window: next due at batch 96 (K=3 from last cumulative review at 88-92).

After AZ-624 lands, the AZ-618 umbrella's AC-1..AC-5 become exercisable end-to-end; the Jetson tier-2 gate that sent the flow back to Step 7 (per _docs/LESSONS.md 2026-05-18) becomes runnable again.