# 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
