[AZ-420] Batch 81 housekeeping + cumulative 79-81 review

Archive AZ-420 to done/; add cumulative review for batches 79-81 (PASS,
no new findings); advance autodev state to await batch 82.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-17 14:48:45 +03:00
parent bb744d9078
commit b0296da911
3 changed files with 215 additions and 6 deletions
@@ -0,0 +1,73 @@
# FT-P-12 + FT-P-13 — GCS downsample + GCS command path
**Task**: AZ-420_ft_p_12_13_gcs
**Name**: GCS 1-2 Hz downsample + GCS-originated re-loc hint (AC-6.1, AC-6.2)
**Description**: Implement FT-P-12 (position estimates + confidence stream to GCS via `mavproxy-listener` at 1-2 Hz) and FT-P-13 (GCS-originated `STATUSTEXT` carrying operator re-loc hint biases the next anchor attempt). Both share the mavproxy listener fixture.
**Complexity**: 3 points
**Dependencies**: AZ-406, AZ-407
**Component**: Blackbox Tests / Positive / GCS / Telemetry (epic AZ-262)
**Tracker**: AZ-420
**Epic**: AZ-262 (E-BBT)
## Problem
The GCS leg is the operator's only window into the SUT during flight; the downsample rate must be measured (operator UX) AND the command path must be validated (operator override is a real safety mechanism per AC-6.2).
## Outcome
- pytest scenario at `e2e/tests/positive/test_ft_p_12_gcs_downsample.py` (FT-P-12) and `test_ft_p_13_gcs_command.py` (FT-P-13).
- FT-P-12: 60 s Derkachi replay; mavproxy listener captures `.tlog`; parse for SUT-emitted GCS messages; assert observed rate ∈ [1, 2] Hz inclusive.
- FT-P-13: SUT in `dead_reckoned` state (e.g. mid-blackout from FT-N-03 setup); send re-loc-hint STATUSTEXT from mavproxy; SUT acknowledges via FDR log entry; next anchor attempt uses the hint as a search prior.
## Scope
### Included
- mavproxy listener `.tlog` capture (already provided by AZ-406).
- SUT-emitted GCS message rate computation over the 60 s window.
- Re-loc-hint STATUSTEXT injection (FT-P-13).
- FDR-side acknowledgement detection.
- Boolean assertion that the post-hint anchor attempt biases its search.
### Excluded
- Spoofed GPS escalation STATUSTEXT — owned by FT-N-04 (AZ-426).
- Operator-reloc-request emission (negative-path) — owned by FT-N-03 (AZ-425).
## Acceptance Criteria
**AC-1: FT-P-12 — GCS rate**
Given a 60 s Derkachi replay
When the test parses the captured `.tlog` for SUT-emitted GCS messages
Then the observed rate over the 60 s window is in `[1, 2]` Hz inclusive.
**AC-2: FT-P-13 — hint acknowledgement**
Given the SUT is in `dead_reckoned` state
When the test injects a re-loc-hint STATUSTEXT from mavproxy
Then the FDR contains a log entry referencing the hint within ≤2 s of the inject.
**AC-3: FT-P-13 — search prior bias**
Given the next nav-camera frame is pushed after the hint
Then the next satellite-anchor attempt observably uses the hint as a search prior. Observable signal: the FDR's per-frame "anchor-search-region" record (AC-NEW-3 schema) shifts toward the hinted location.
**AC-4: FT-P-13 — no rejection**
Given the hint is well-formed
Then the SUT does NOT reject the hint with a security/auth error (this is a positive-path scenario; security rejection is out of scope here).
**AC-5: parameterization**
Given conftest parameterization
Then both methods run per `(fc_adapter, vio_strategy)`.
## System Under Test Boundary
End-to-end through public boundaries.
- **Allowed**: mavproxy listener (`.tlog` capture), STATUSTEXT injection (via mavproxy command), FDR archive read.
- **Forbidden**: querying SUT internal anchor-search state; the bias signal must be readable from FDR (or the AC isn't meaningfully validated).
## Constraints
- "Anchor-search-region" record is part of the AC-NEW-3 FDR schema; if absent, the test fails for AC-3 (cannot validate the bias without observable evidence).
## Document Dependencies
- `_docs/02_document/tests/blackbox-tests.md` § FT-P-12, § FT-P-13
- `_docs/02_document/tests/test-data.md` § Resilience / GCS