mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-22 19:41:14 +00:00
[AZ-231] Add anchor verification gates
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,88 +0,0 @@
|
||||
# Anchor Verification Matching And Geometry Gates
|
||||
|
||||
**Task**: AZ-231_anchor_verification_matching
|
||||
**Name**: Anchor Verification Matching And Geometry Gates
|
||||
**Description**: Verify retrieved candidates with ALIKED/DISK + LightGlue and geometric safety gates.
|
||||
**Complexity**: 5 points
|
||||
**Dependencies**: AZ-223_camera_ingest_calibration, AZ-225_tile_manager_cache_manifest, AZ-230_satellite_service_vpr_retrieval
|
||||
**Component**: Anchor Verification
|
||||
**Tracker**: AZ-231
|
||||
**Epic**: AZ-215
|
||||
|
||||
## Problem
|
||||
|
||||
VPR candidates are not trusted fixes; they require local feature matching, RANSAC geometry, provenance checks, and measurable rejection evidence.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Anchor candidates are accepted or rejected with MRE, inlier count, homography, freshness/provenance, and reason metadata.
|
||||
- Matcher profiles can be benchmarked without making learned matching a per-frame VIO hot path.
|
||||
|
||||
## Scope
|
||||
|
||||
### Included
|
||||
- ALIKED/DISK + LightGlue matching profile behavior.
|
||||
- SIFT/ORB baseline profile.
|
||||
- OpenCV RANSAC/USAC geometry checks.
|
||||
- Anchor decision output and rejection reasons.
|
||||
|
||||
### Excluded
|
||||
- VPR retrieval ranking.
|
||||
- Safety wrapper anchor fusion.
|
||||
|
||||
## Dependencies
|
||||
|
||||
### Document Dependencies
|
||||
- `_docs/02_document/contracts/shared/runtime_contracts.md`
|
||||
- `_docs/02_document/contracts/shared/geometry_time_sync.md`
|
||||
- `_docs/02_document/contracts/shared/config_errors_telemetry.md`
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
**AC-1: Candidate verification emits evidence**
|
||||
Given retrieved candidates and a usable frame
|
||||
When verification runs
|
||||
Then each result includes acceptance state, MRE, inlier count, and rejection/acceptance reason.
|
||||
|
||||
**AC-2: Unsafe candidates are rejected**
|
||||
Given low inliers, high MRE, stale provenance, or geometry failure
|
||||
When verification runs
|
||||
Then no accepted anchor decision is emitted for that candidate.
|
||||
|
||||
**AC-3: Matcher benchmark is reportable**
|
||||
Given configured matcher profiles
|
||||
When benchmark runs
|
||||
Then profile runtime and quality metrics are reported.
|
||||
|
||||
## Non-Functional Requirements
|
||||
|
||||
**Performance**
|
||||
- Learned matching is trigger-based and profiled separately from BASALT.
|
||||
|
||||
**Reliability**
|
||||
- SuperPoint is excluded from production unless legal approval exists.
|
||||
|
||||
## Unit Tests
|
||||
|
||||
| AC Ref | What to Test | Required Outcome |
|
||||
|--------|--------------|------------------|
|
||||
| AC-1 | Valid matching fixture | Evidence fields present |
|
||||
| AC-2 | Bad geometry fixture | Rejected decision |
|
||||
| AC-3 | Benchmark profiles | Metrics emitted |
|
||||
|
||||
## Blackbox Tests
|
||||
|
||||
| AC Ref | Initial Data/Conditions | What to Test | Expected Behavior | NFR References |
|
||||
|--------|-------------------------|--------------|-------------------|----------------|
|
||||
| AC-1 | Aerial/cache fixture | Anchor verification path | Accepted anchors meet MRE/inlier gates | Performance |
|
||||
|
||||
## Constraints
|
||||
|
||||
- ALIKED/DISK + LightGlue supplies correspondences, not full VIO.
|
||||
- Anchor verification does not decide final safety fusion.
|
||||
|
||||
## Risks & Mitigation
|
||||
|
||||
**Risk 1: False anchor acceptance**
|
||||
- *Risk*: Cross-domain match looks plausible but is wrong.
|
||||
- *Mitigation*: Geometry, freshness, provenance, and downstream Mahalanobis gates.
|
||||
Reference in New Issue
Block a user