Updated various documentation files to clarify the handling of splittable artifacts, allowing for folder equivalents of key markdown files when they exceed size limits. Adjusted references in multiple sections to reflect this new structure, ensuring consistency across the research methodology. Enhanced clarity on the saving actions and artifact organization, particularly for `01_source_registry.md`, `02_fact_cards.md`, and `06_component_fit_matrix.md`. This change aims to improve usability and maintainability of the research documentation.
25 KiB
Comparison Framework
Mode A Phase 2 — engine Step 4 (Build Comparison/Analysis Framework). Aggregates the per-component candidate matrices in
06_component_fit_matrix/(per-component sub-matrices = 7.5.2; cross-component gates =99_cross_component_gates.md) into a single dimension-axis lens.Research Output Class: Technical-component selection (per
00_question_decomposition.md). Decision Support framework type (perreferences/comparison-frameworks.md).Backing artifacts:
- Source registry:
01_source_registry/00_summary.md(#1–#121)- Fact cards:
02_fact_cards/00_summary.md(#1–#101)- Component fit matrix:
06_component_fit_matrix/00_summary.md- Question decomposition + scope:
00_question_decomposition.md
Selected Framework Type
Decision Support (per references/comparison-frameworks.md). The output names specific libraries/SDKs/algorithms that an implementation team will build with on a pinned hardware target (Jetson Orin Nano Super) within a pinned Project Constraint Matrix. Concept-Comparison framework is insufficient because every candidate is being measured against shared numerical AC budgets (latency p95, memory cap, error CDF), not just typed against each other.
Selected Dimensions
The eight Decision Support dimensions from references/comparison-frameworks.md, plus four project-mandatory dimensions added because the Project Constraint Matrix demands them:
| # | Dimension | Why it's in scope |
|---|---|---|
| 1 | Solution overview | What this candidate is and what role it plays in the full pipeline. |
| 2 | Implementation cost | Engineering days/weeks to integrate the candidate against the pinned mode/config. Includes ONNX export work, retraining cost, on-Jetson port effort. |
| 3 | Maintenance cost | Upstream activity (last commit, issue response time), API stability across versions, dependency-pin risk on Jetson AI Lab community wheels. |
| 4 | Risk assessment | License posture (per D-C1-1 track), maintenance staleness, cross-domain transfer assumption risk, hardware-specific compile risk. |
| 5 | Expected benefit | Documentary lift over the mandatory simple-baseline (AUC@5°, Recall@K, latency reduction, accuracy bound). |
| 6 | Applicable scenarios | UAV-vs-satellite-tile cross-view registration at ~1 km AGL with the Project Constraint Matrix's pinned mission profile. |
| 7 | Team capability requirements | Specific skills required (TensorRT INT8 calibration, GTSAM factor-graph design, MAVLink/MSP2 protocol authoring). |
| 8 | Migration difficulty | Cost to swap this candidate for an alternate after Plan-phase lock-in. |
| PROJECT-9 | License-track posture | D-C1-1 split (BSD/permissive vs GPL-3.0 vs both) drives candidate eligibility per component. Not generic "license" — the project tracks two parallel candidate axes per row. |
| PROJECT-10 | AC-NEW-4 covariance-honesty fit | Project requires explicit 6×6 posterior covariance recovery; only some C4/C5 candidates satisfy this NATIVELY. |
| PROJECT-11 | AC-4.1 + AC-4.2 fit on Jetson Orin Nano Super SM 87 | Pinned hardware target; FP16/INT8 precision viability per model family + 8 GB shared CPU+GPU + 25 W TDP. |
| PROJECT-12 | AC-NEW-7 cache-poisoning safety fit | Specific to C6+C10 path: descriptor cache + tile cache must not silently load corrupted/tampered files. FAISS "no internal integrity check" is the canonical disqualifier. |
These twelve dimensions are populated component-by-component in §Initial Population below. Each cell cites at least one Fact # or Source # from the backing artifacts.
Initial Population
The matrix is organized component-axis-down × dimension-axis-across. Each cell summarizes the per-component candidate verdict from the corresponding 06_component_fit_matrix/Cx_*.md row file; consult those row files for full per-candidate detail.
Component-axis ordering
| C# | Component | Status (research close) | Selected primary | Selected secondary / fallback / experimental |
|---|---|---|---|---|
| C1 | Visual / Visual-Inertial Odometry | Doc-closed (Sources #43–#56; Facts in C1_vio.md) |
OKVIS2 (BSD-3-Clause; modern-competitive-lead) | VINS-Mono (BSD; mandatory simple-baseline); KLT+RANSAC (project-internal homemade fallback) |
| C2 | Visual Place Recognition | Doc-closed mandatory pre-screen 5/5 (Sources #57–#68; Facts in C2_vpr.md) |
MixVPR (MIT; mandatory simple-baseline) on BSD/permissive track; SALAD (GPL-3.0; modern-competitive-lead) on GPL-3.0 track | EigenPlaces (MIT; viewpoint-robust BSD/permissive sibling); SelaVPR (MIT; two-stage DINOv2-L sibling); NetVLAD (MIT canonical; classical-baseline) |
| C3 | Cross-domain matchers | Doc-closed (Sources #69–#81; Facts in C3_matchers.md) |
DISK+LightGlue (Apache-2.0 throughout; recommended-primary-mitigation for canonical-SP-license-disqualifier) | XFeat / XFeat* / XFeat+LighterGlue (Apache-2.0; alternate-modern-competitive-lead); ALIKED+LightGlue (Apache-2.0; modern-competitive-lead-secondary) |
| C4 | Pose estimation (PnP+RANSAC+LM) | Closed at 3/N (Sources #82–#87; Facts in C4_pose_estimation.md) |
OpenCV cv::solvePnPRansac (Apache-2.0; mandatory simple-baseline) wrapped by GTSAM Marginals for D-C4-2 covariance recovery (BSD-3-Clause) |
OpenGV (BSD-3-Clause-equivalent NOASSERTION pending license-clearance D-C4-3; modern-competitive-lead-richer-minimal-solver) |
| C5 | State estimator / sensor fusion | Closed at 2/N batch-1 (Sources #88–#91; Facts in C5_state_estimator.md) |
Manual ESKF (Solà 2017; project-side implementation under project Apache-2.0; mandatory simple-baseline) | GTSAM iSAM2 + CombinedImuFactor + smart factors + Marginals + IncrementalFixedLagSmoother (BSD-3-Clause; modern-competitive-lead-factor-graph; shares GTSAM substrate with C4 D-C4-2 = (b) per D-C5-5 = (c) recommendation) |
| C6 | Tile cache + spatial index | Closed at 2/N batch-1 (Sources #92–#98; Facts in C6_tile_cache_spatial_index.md) |
Mirror-of-suite-satellite-provider pattern (PostgreSQL btree + bytea + FAISS HNSW + filesystem; PostgreSQL License + MIT) |
PostGIS+pgvector (GPL-2.0-or-later via PostGIS; deferred-secondary, comparative-improvement verdict does NOT clear user's significant-improvement bar) |
| C7 | On-Jetson inference runtime | Closed at 3/N batch-1 (Sources #99–#105; Facts in C7_inference_runtime.md) |
TensorRT native (Apache-2.0 in TRT 10.x; bundled with JetPack 6.2; lowest-latency primary path) | ONNX Runtime + TensorRT EP (MIT; cross-architecture portability for replay/SITL); pure PyTorch FP16 (BSD-3; mandatory simple-baseline + reference-correctness oracle) |
| C8 | MAVLink / MSP2 FC adapter | Closed at 3/N batch-1 (Sources #106–#113; Facts in C8_fc_adapter.md) |
pymavlink → MAVLink GPS_INPUT (LGPL-3.0; recommended-primary for ArduPilot Plane); MSP2_SENSOR_GPS via Python MSP V2 (YAMSPy + INAV-Toolkit MIT; recommended-primary for iNav) |
UBX impersonation via pyubx2 NAV-PVT (BSD-3-Clause; deferred-secondary for iNav; comparative-improvement verdict does NOT clear user's significant-improvement bar over MSP2_SENSOR_GPS) |
| C9 | Datasets / SITL / replay | DROPPED 2026-05-08 per SQ7/C9 restructure (deferred to Test Spec greenfield Step 5) | n/a | n/a |
| C10 | Pre-flight cache provisioning + sector classification + freshness pipeline | Closed at 2/N batch-1 under CROSS-COUPLING MINIMAL scope (Sources #114–#121; Facts in C10_preflight_provisioning.md) |
D-C6-3 confirmation: direct faiss.write_index/faiss.read_index Python API + python-atomicwrites + content-hash gate at takeoff load + IO_FLAG_MMAP_IFC mmap (FAISS MIT, atomicwrites MIT); D-C7-7 confirmation: hybrid Polygraphy CLI primary + trtexec for cache-reuse rebuilds + direct IBuilderConfig Python API escape hatch (Apache-2.0 throughout) |
Operator CLI/desktop tooling, sector classification heuristics, freshness pipeline workflow — deferred to Plan-phase as operator tooling design out-of-research-scope |
Dimension matrix (compact form)
The full per-candidate cell content lives in 06_component_fit_matrix/Cx_*.md. The cells below carry only the cross-component verdict for each dimension.
| Dimension | C1 (VIO) | C2 (VPR) | C3 (Matchers) | C4 (Pose) | C5 (State estimator) | C6 (Tile cache) | C7 (Inference runtime) | C8 (FC adapter) | C10 (Pre-flight) |
|---|---|---|---|---|---|---|---|---|---|
| 1. Solution overview | Frame-to-frame visual+IMU odometry; produces relative poses + IMU bias estimates (Fact #43) | Tile-level global descriptors for retrieval against satellite cache (Facts in C2_vpr.md) |
UAV-frame ↔ satellite-tile dense cross-domain feature matching for absolute anchor (Facts in C3_matchers.md) |
3D-2D RANSAC PnP + LM refinement → 6-DoF anchor pose (Facts #52–#54) | Fuse C1 (VIO), C3 (PnP-anchor), IMU; produce 6-DoF posterior + AC-NEW-4 covariance (Facts #88–#89) | Cache satellite tiles + descriptors + spatial index for AC-3.3 re-loc retrieval (Facts #92–#93) | Run C2/C3/C1 ONNX models on Jetson at AC-4.1 budget (Facts #94–#96) | Deliver final pose to FC over per-FC external-positioning interface (Facts #97–#99) | Build/refresh descriptor cache + TensorRT engines pre-flight (Facts #100–#101) |
| 2. Implementation cost | OKVIS2 ~1-2 weeks integration; KLT+RANSAC ~3-5 days fallback (C1_vio.md) |
MixVPR ~3-5 days as-is; ~1-2 weeks if D-C2-1 retrain on aerial corpus; SALAD ~similar (C2_vpr.md) |
DISK+LightGlue ~1 week ONNX export per D-C3-2; +1-2 weeks if D-C2-1 retrain on aerial corpus (C3_matchers.md) |
OpenCV cv::solvePnPRansac ~1-3 days as wrapper; GTSAM Marginals recovery ~3-5 days for D-C4-2 = (b) (C4_pose_estimation.md) |
Manual ESKF from Solà 2017 ~1-2 weeks; GTSAM iSAM2 ~2-3 weeks for full factor-graph (C5_state_estimator.md) |
Cand 1 (mirror-suite-pattern) ~3-5 days as-is; Cand 2 (PostGIS+pgvector) ~1-2 weeks + PostGIS+pgvector co-installation (C6_tile_cache_spatial_index.md) |
TensorRT engine builds ~1 week first-model + ~1 day per subsequent model via Polygraphy/trtexec recipe per D-C7-2 + D-C10-5 (C7_inference_runtime.md) |
pymavlink+GPS_INPUT ~3-5 days; MSP2_SENSOR_GPS via YAMSPy ~3-5 days (C8_fc_adapter.md) |
Pre-flight orchestration wrapper ~1 week (FAISS write+content-hash + Polygraphy/trtexec invocation) per D-C10-1..D-C10-8 (C10_preflight_provisioning.md) |
| 3. Maintenance cost | OKVIS2 maintained 2024-2026; VINS-Mono stable since 2018 (C1_vio.md) |
MixVPR active 2026; SALAD active 2024-2025 (C2_vpr.md) |
LightGlue active 2025-2026; XFeat active 2024-2025 (C3_matchers.md) |
OpenCV LTS 4.x; GTSAM daily-active (last-pushed 2026-05-08 today) (C4_pose_estimation.md) |
Solà 2017 reference paper stable; GTSAM daily-active (C5_state_estimator.md) |
PostgreSQL + FAISS stable; pgvector active (C6_tile_cache_spatial_index.md) |
TensorRT 10.3 stable in JetPack 6.2; Polygraphy + trtexec bundled (C7_inference_runtime.md) |
pymavlink + YAMSPy active (C8_fc_adapter.md) |
All dependencies inherited from C6+C7 maintenance posture (C10_preflight_provisioning.md) |
| 4. Risk assessment | OKVIS2 GPL-3.0 contingent (D-C1-1 = (a) eligible) (C1_vio.md) |
SALAD GPL-3.0 contingent; D-C2-1 retrain a real cost; D-C2-5 ViT-export risk (C2_vpr.md) |
Magic Leap noncommercial license on canonical SP weights = HARD DISQUALIFIER (D-C3-1 forced mitigation) (C3_matchers.md) |
OpenGV NOASSERTION + ~3 yr stale (D-C4-3 + D-C4-4 mitigations) (C4_pose_estimation.md) |
Reference ESKF code license uncertainty (D-C5-1 mitigation = re-implement from canonical Solà 2017 paper) (C5_state_estimator.md) |
PostGIS GPL-2.0-or-later contingent on D-C1-1 = (a) track for Cand 2 (C6_tile_cache_spatial_index.md) |
TensorRT 10.x Apache-2.0 throughout; Jetson AI Lab community wheels (C7_inference_runtime.md) |
pymavlink LGPL-3.0 (D-C8-3 mitigation = bundle unmodified) (C8_fc_adapter.md) |
FAISS "no internal integrity check" (D-C10-3 mitigation = SHA-256 content-hash gate at takeoff) (C10_preflight_provisioning.md) |
| 5. Expected benefit | OKVIS2 modern-competitive lift over VINS-Mono on cross-domain tracking (C1_vio.md) |
SALAD-full +5-7 R@1 over MixVPR-2048 on MSLS Challenge (C2_vpr.md) |
DISK+LightGlue +7.99 absolute AUC@5° over canonical SP+LightGlue per LightGlue paper Table 6 (C3_matchers.md) |
GTSAM Marginals provides NATIVE 6×6 posterior covariance per Source #87 — unique among C4 candidates (C4_pose_estimation.md) |
GTSAM iSAM2 NATIVE AC-4.5 look-back refinement unique among C5 candidates (C5_state_estimator.md) |
Cand 1 verdict: improvements of Cand 2 are "marginal-to-negative" in pinned 3 Hz spatial-grid query context — no material lift (C6_tile_cache_spatial_index.md) |
TensorRT INT8 ~2-3× speedup over FP16 per Source #102 YOLO26n benchmark (C7_inference_runtime.md) |
All 3 FC paths satisfy AC-4.3 by design (C8_fc_adapter.md) |
Polygraphy --data-loader-script cleaner than hand-written IInt8EntropyCalibrator2 (Source #117 + #118) (C10_preflight_provisioning.md) |
| 6. Applicable scenarios | All C1 candidates apply to nadir-down ~1 km AGL flight (C1_vio.md) |
All C2 candidates trained on street-view; D-C2-1 retrain required for aerial domain (C2_vpr.md) |
All C3 candidates retrain-friendly to aerial domain (C3_matchers.md) |
OpenCV simple-baseline + GTSAM modern competitive lead apply throughout (C4_pose_estimation.md) |
Manual ESKF for fixed-wing cruise; GTSAM iSAM2 for sliding-window refinement (C5_state_estimator.md) |
Cand 1 mirrors verified-existing satellite-provider pattern (Source #92 filesystem read) (C6_tile_cache_spatial_index.md) |
TensorRT + Polygraphy + trtexec all run on Jetson Orin Nano Super SM 87 per Source #105 (C7_inference_runtime.md) |
pymavlink GPS_INPUT covers ArduPilot Plane (verified Source #4 + #106 + #107); MSP2_SENSOR_GPS covers iNav (verified Source #111 + #112 + #113) (C8_fc_adapter.md) |
All Source #114-#121 evidence on Jetson Orin Nano Super SM 87 (C10_preflight_provisioning.md) |
| 7. Team capability requirements | C++ + ROS comfort for OKVIS2; basic OpenCV for KLT (C1_vio.md) |
PyTorch + ONNX export literacy for VPR (C2_vpr.md) |
Same + LightGlue API + DISK ONNX export (C3_matchers.md) |
OpenCV calib3d + GTSAM Python API + factor graph design (C4_pose_estimation.md) |
NumPy/SciPy for ESKF; GTSAM C++/Python factor-graph design + iSAM2 internals (C5_state_estimator.md) |
PostgreSQL DBA + FAISS Python API; Cand 2 adds PostGIS + pgvector + Jetson aarch64 build (C6_tile_cache_spatial_index.md) |
TensorRT INT8 calibration + ONNX export + Jetson AI Lab wheel management (C7_inference_runtime.md) |
MAVLink protocol literacy + iNav MSP V2 protocol literacy (C8_fc_adapter.md) |
Bash/Python orchestration + crash-safe atomic file writes + FAISS + TensorRT (C10_preflight_provisioning.md) |
| 8. Migration difficulty | OKVIS2 → VINS-Mono ~1 week swap (similar interface) (C1_vio.md) |
MixVPR → SALAD ~1 week swap (C2_vpr.md) |
DISK+LightGlue → ALIKED+LightGlue ~1 week swap (C3_matchers.md) |
OpenCV→OpenGV ~2 weeks if D-C4-3+D-C4-4 close (C4_pose_estimation.md) |
Manual ESKF → GTSAM iSAM2 ~2-3 weeks (different state representation) (C5_state_estimator.md) |
Cand 1 → Cand 2 ~1-2 weeks if Cand 2 elevated (C6_tile_cache_spatial_index.md) |
TRT-native → ONNX Runtime+TRT EP ~3-5 days for portability path (C7_inference_runtime.md) |
Cand 2 (MSP2) → Cand 3 (UBX) ~1-2 weeks (different message family) (C8_fc_adapter.md) |
Tools are interchangeable per D-C10-5 = (d) hybrid (C10_preflight_provisioning.md) |
| PROJECT-9. License-track posture | BSD/permissive: VINS-Mono / OKVIS2 / Kimera-VIO / DPVO / KLT+RANSAC. GPL-3.0: VINS-Fusion / OpenVINS (C1_vio.md) |
BSD/permissive: MixVPR + SelaVPR + NetVLAD + EigenPlaces (4-mode COMPLETE). GPL-3.0: SALAD + (conditional AnyLoc/BoQ/DINOv2-VLAD) (C2_vpr.md) |
BSD/permissive: DISK+LightGlue + ALIKED+LightGlue + XFeat + XFeat+LighterGlue (4-mode COMPLETE). HARD DISQUALIFIER: canonical SP+LightGlue (Magic Leap noncommercial) (C3_matchers.md) |
All 3 candidates BSD/permissive (Apache-2.0 / BSD-3-Clause / NOASSERTION pending) (C4_pose_estimation.md) |
All BSD/permissive (Solà 2017 paper public-domain canonical equations + project-side Apache-2.0 implementation; GTSAM BSD-3-Clause) (C5_state_estimator.md) |
Cand 1 BSD/permissive (PostgreSQL License + MIT). Cand 2 GPL-2.0-or-later via PostGIS — gated on D-C1-1 = (a) (C6_tile_cache_spatial_index.md) |
All BSD/permissive (TensorRT 10.x Apache-2.0; ORT MIT; PyTorch BSD-3-Clause) (C7_inference_runtime.md) |
Cand 1 LGPL-3.0 (D-C8-3 mitigation); Cand 2 + Cand 3 MIT/BSD-3 (C8_fc_adapter.md) |
All BSD/permissive (FAISS MIT; atomicwrites MIT; Polygraphy + TensorRT 10.x Apache-2.0) (C10_preflight_provisioning.md) |
| PROJECT-10. AC-NEW-4 covariance-honesty fit | n/a (C1 produces relative poses; covariance is C5's job) | n/a (C2 produces descriptor distances; covariance is C5's job) | n/a (C3 produces feature matches; covariance is C5's job) | OpenCV: NO native 6×6 covariance — D-C4-2 mitigation REQUIRED (post-hoc Jacobian or wrap in GTSAM Marginals); GTSAM: NATIVE via Marginals.marginalCovariance — only candidate that satisfies AC-NEW-4 NATIVELY |
Manual ESKF: NATIVE via analytic Jacobian (Solà §6); GTSAM iSAM2: NATIVE via Marginals.marginalCovariance (C5_state_estimator.md) |
n/a (C6 stores tiles + descriptors; covariance is C5's job) | n/a (C7 runs models; covariance is C5's job) | C8 enforces AC-NEW-4 via D-C8-8 per-FC unit conversion (extracts 2×2 horizontal sub-matrix from C5 GTSAM Marginals 6×6, computes 95% confidence ellipse semi-major axis, emits as horiz_accuracy for AP / hPosAccuracy for iNav) |
n/a (C10 is pre-flight; runtime covariance is C5's job) |
| PROJECT-11. AC-4.1 + AC-4.2 fit on Jetson Orin Nano Super SM 87 | OKVIS2 ~30-50 ms per frame on Jetson Orin Nano Super extrapolation; KLT ~5-10 ms (C1_vio.md) |
MixVPR ~10-20 ms FP16 + ~5-10 ms INT8 per query on Jetson per Source #102 extrapolation (C2_vpr.md) |
DISK+LightGlue ~30-60 ms per pair FP16 on Jetson per Source #103 extrapolation; tight at K=10 pairs (C3_matchers.md) |
OpenCV ~5-15 ms per RANSAC iteration; GTSAM Marginals ~30-90 ms per pose recovery (Plan-phase Jetson MVE) (C4_pose_estimation.md) |
Manual ESKF ~5-15 ms per update; GTSAM iSAM2 ~5-100 ms per update depending on D-C5-5 factor density (C5_state_estimator.md) |
Cand 1 ~6-54 ms per cache hit (Postgres btree + FAISS HNSW); Cand 2 5-10× slower geographic lookup per Source #93 (C6_tile_cache_spatial_index.md) |
INT8+FP16 mixed per D-C7-6 per-family policy meets AC-4.1 across pipeline; ~700 MB-1.5 GB total memory within AC-4.2 (C7_inference_runtime.md) |
pymavlink + MSP2 send-side ~1-5 ms per message; rate 5 Hz per D-C8-5 (C8_fc_adapter.md) |
Pre-flight only; not in AC-4.1 budget. Takeoff load <5 s per D-C10-4 mmap path (C10_preflight_provisioning.md) |
| PROJECT-12. AC-NEW-7 cache-poisoning safety fit | n/a | n/a | n/a | n/a | n/a | Cand 1: filesystem tile storage + content-hash mandate per restrictions.md (C6_tile_cache_spatial_index.md); Cand 2: pgvector descriptor verification deferred to Plan-phase |
n/a (TensorRT engines per-build, manifest-tracked per D-C10-7) | n/a | D-C10-3 content-hash verification gate at takeoff load = direct AC-NEW-7 satisfaction; D-C10-2 atomic-write mitigates the truncated-file class separately (C10_preflight_provisioning.md) |
Cross-component coupling table (read alongside the dimension matrix)
The dimension matrix above hides the inter-component design coupling. The cross-component gates file 06_component_fit_matrix/99_cross_component_gates.md lists every D-Cx-y gate; the most architecturally significant couplings are:
| Coupling | Components | Recommended path | Why it matters |
|---|---|---|---|
| Shared GTSAM substrate (D-C5-5 = (c)) | C4 D-C4-2 = (b) wraps solvePnPRansac in GTSAM Marginals; C5 GTSAM iSAM2 fuses C4 anchor as PriorFactorPose3 with native 6×6 covariance |
RECOMMENDED — couples C4+C5 covariance recovery via shared GTSAM substrate; satisfies AC-NEW-4 NATIVELY at both layers; eliminates impedance-mismatch at the C4↔C5 boundary | Strongest cross-component lever in the C4+C5 design space; reduces dependency footprint by sharing GTSAM library between two layers; reduces engineering cost (D-C4-2 + D-C5 share calibration of factor weights) |
| Per-model-family precision policy (D-C7-6 = (b)) | C2 (CNN VPR backbones), C3 (matchers), C1 (learned VIO frontends), C7 (TensorRT) | RECOMMENDED — VPR backbones INT8+FP16 mixed; matchers FP16-only NO INT8; ViT-class VPR FP16-only initially; learned VIO FP16-only initially | Source #103 LightGlue FP8 quantization-sensitivity finding drives the matchers→FP16-only carve-out; ignoring this risks AC-1.1/1.2 frame-center accuracy violations |
| C6 ↔ C10 descriptor-cache rebuild orchestration (D-C6-3 closure + D-C10-1..D-C10-4) | C6 (cache file structure), C10 (rebuild trigger + atomic-write + content-hash gate) | RECOMMENDED — manifest-hash-driven rebuild + python-atomicwrites + SHA-256 content-hash gate at takeoff + mmap load with madvise(MADV_WILLNEED) |
C10 owns the rebuild pipeline; C6 owns the cache file format; AC-NEW-7 cache-poisoning safety satisfied at the D-C10-3 gate |
| C7 ↔ C10 TensorRT engine-build orchestration (D-C7-7 closure + D-C10-5..D-C10-8) | C7 (precision policy + JetPack pin), C10 (orchestration tool matrix + filename schema + fallback venue) | RECOMMENDED — hybrid Polygraphy + trtexec + direct API matrix per D-C10-5 = (d); self-describing filename schema per D-C10-7; reference Jetson at HQ + deployed-Jetson-copy-to-archive per D-C10-8 | TensorRT engines are SM-version-tied per Source #105; D-C7-7 = (c) primary build-on-target with reference-Jetson fallback engines closes the operational risk |
| C5 ↔ C8 covariance contract (D-C8-8 = (b)) | C5 GTSAM Marginals 6×6 posterior, C8 per-FC horiz_accuracy/hPosAccuracy extraction |
RECOMMENDED — extract 2×2 horizontal sub-matrix from C5 Marginals.marginalCovariance, compute 95% confidence ellipse semi-major axis sqrt(2.0 * 5.991 * λ_max), emit per-FC |
Strongest C5+C8 cross-component coupling; AC-NEW-4 covariance-honesty obligation is the same for both FCs; only the unit + field-name change |
| C1 ↔ C2 ↔ C5 frame-rate pipeline (Fact #40 dual-rate camera pipeline) | C1 (VIO at ~10 Hz), C2 (VPR at ~3 Hz), C5 (estimator-output at ~3 Hz nominal up to ~10 Hz when matcher confidence high) | RECOMMENDED — single-rate vs dual-rate is a Plan-phase decision; affects C1 candidate ranking + C2/C3 candidate scoring | Fact #40 was raised by the SQ2 closure as cross-cutting; resolution lives at Plan-phase |
Decisions accumulated across the matrix (D-Cx-y by owner)
The full per-decision text is in 06_component_fit_matrix/99_cross_component_gates.md. Aggregate count by owner:
| Owner | Count | Notes |
|---|---|---|
| User + Plan-phase architect | 4 | D-C1-1 license posture, D-C2-1 VPR retrain, D-C3-1 matcher mitigation, D-C2-11 MegaLoc successor evaluation |
| User + license-posture decision-maker | 1 | D-C2-8 NetVLAD PyTorch-port-strategy + license verification |
| Plan-phase architect | 27 | D-C2-2..D-C2-7 + D-C2-9..D-C2-10 + D-C3-3..D-C3-6 + D-C4-1..D-C4-4 + D-C5-1..D-C5-5 + D-C6-1..D-C6-7 + D-C7-1..D-C7-9 + D-C8-1..D-C8-8 + D-C10-1..D-C10-8 |
| Project bring-up team / C7 inference-runtime owner | 4 | D-C1-2 Jetson MVE, D-C2-4 + D-C2-5 ViT export, D-C7-3..D-C7-5 Jetson AI Lab wheel pinning, D-C3-2 LightGlue runtime |
| User + AC-NEW-7 owner | 1 | D-C10-3 content-hash verification gate (CROSS-COMPONENT) |
| User + AC-NEW-4 owner | 1 | D-C8-8 covariance-honesty cross-FC enforcement (CROSS-COMPONENT) |
The 27 Plan-phase-architect-owned decisions are the surface area the Plan skill (greenfield Step 3) must traverse. None requires user input as a hard prerequisite to start Plan, but D-C1-1 (license posture) is recommended to be confirmed by the user upfront because it gates which candidates per row are eligible.
What this framework does NOT cover (deliberately deferred)
| Out-of-scope here | Where it goes | Reason |
|---|---|---|
| Fixture-file pin for D-C7-1 calibration corpus (e.g., AerialVL S03 vs Mavic + Derkachi flight clips) | Test Spec (greenfield Step 5) | Fixture-class; doesn't change architectural choice |
| Sector classification heuristics (active-conflict vs stable rear) | Plan-phase architect + operations team | Operational; AC-8.2 freshness threshold is operational not architectural |
| Operator CLI/desktop tooling for C10 pre-flight provisioning | Plan-phase architect + UX | Tool shape is UX/integration, doesn't bind architectural contract |
| Tile freshness pipeline workflow (when to re-pull from Suite Sat Service) | Plan-phase architect + operations team | Operational; cross-coupling with runtime architecture is mediated entirely via C6 + C10 cache files |
| Test datasets / SITL replay environments (was C9) | Test Spec (greenfield Step 5) | Per 2026-05-08 SQ7/C9 restructure |
| Engine-step SQ5 (failure modes / deployment lessons) | Plan-phase architect — interleaved | Per investigation-order pin in 00_question_decomposition.md |
| Engine-step SQ8 (safety considerations AC-NEW-4 / AC-NEW-7) | Plan-phase architect | Carries the AP_GPS spoofing-signal probe deferred from SQ6 |