mirror of
https://github.com/azaion/autopilot.git
synced 2026-06-21 08:41:09 +00:00
[AZ-676] [AZ-677] [AZ-678] [AZ-679] telemetry+operator foundation
Batch 15 ships the four foundation tickets sitting on top of AZ-675 (gRPC server) and AZ-667 (mapobjects_store hydrate): * AZ-676: telemetry_stream video path (rtsp_forward + bytes_inline) with ai_locked atomic + session counter, SubscribeVideo RPC. * AZ-677: MapObjects snapshot-on-subscribe + diff broadcast + reconnect-resync (StartThen stream-prepend pattern). * AZ-678: HmacOperatorValidator with per-session monotonic seq, in-process session registry + TTL, constant-time HMAC compare, rejection-reason counters, sliding 60 s sig-failure red-health gate. Trait OperatorCommandValidator in shared::contracts::operator_auth. * AZ-679: PoiSurfaceMapper produces OperatorPoiEvent per architecture §7.10; PoiDequeued events on rotate/age-out/complete; pushed via new TelemetrySink::push_operator_event extension on Topic::OperatorEvent. Cross-task wiring: TelemetrySink trait extended with push_operator_event; OperatorBridge gets optional builder methods with_telemetry_sink / with_validator (composition root wires in AZ-680). Workspace deps: hmac = "0.12"; per-crate adds bytes, serde_json, parking_lot, chrono, uuid, sha2, thiserror. Tests: 14/14 ACs verified locally (4 + 3 + 5 + 3 by AC) plus 6 supporting unit tests + 7 integration tests + 2 shared serde roundtrips. cargo clippy clean on touched crates. Cumulative review for batches 13-15 produced; verdict PASS_WITH_WARNINGS (0 Critical, 0 High, 1 Medium, 4 Low — all carry-overs or deferred-producer notes for AZ-680/AZ-684). Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+10
-29
@@ -6,43 +6,24 @@ step: 7
|
||||
name: Implement
|
||||
status: between-batches
|
||||
sub_step:
|
||||
phase: 28
|
||||
name: batch-15-select
|
||||
detail: "batch 14 (AZ-675) pushed to origin/dev; awaiting batch 15 task selection"
|
||||
phase: 0
|
||||
name: batch-16-select
|
||||
detail: ""
|
||||
retry_count: 0
|
||||
cycle: 1
|
||||
tracker: jira
|
||||
|
||||
## Last Completed Batch
|
||||
batch: 14
|
||||
commit: ff790bd
|
||||
ticket: AZ-675 (telemetry_stream Tonic gRPC server + per-client lossy queue)
|
||||
jira_status: In Testing
|
||||
pushed_to: origin/dev
|
||||
report: _docs/03_implementation/batch_14_cycle1_report.md
|
||||
|
||||
## Unblocked Candidates for Batch 15
|
||||
- AZ-676 (3 pts) — telemetry_stream video path. Self-contained AZ-675 extension.
|
||||
- AZ-679 (3 pts) — operator_bridge POI surface. Consumes AZ-683 queue + AZ-685 decline path through AZ-675 server.
|
||||
- AZ-678 (5 pts) — operator_bridge command authentication.
|
||||
- AZ-658 (5 pts) — frame_ingest H.264 decoder. Needs library pin decision (retina vs ffmpeg-rs vs gstreamer).
|
||||
|
||||
Blocked: AZ-677 (needs AZ-667), AZ-684 (needs AZ-660/AZ-671/AZ-672), AZ-685 (needs AZ-684), AZ-686 (needs AZ-684).
|
||||
|
||||
## Open Cumulative Findings (carry forward)
|
||||
| ID | Sev | Cat | Detail | Origin |
|
||||
|---|---|---|---|---|
|
||||
| C1 | Medium | Maintainability | Duplicated `SendCommandError` mapping in `gimbal_controller` | Batches 9-10 |
|
||||
| C2 | Low | Style | `MavlinkCommandIssuer` naming inconsistency | Batch 9 |
|
||||
| C3 | Low | Architecture | `module-layout.md` drift (now includes `telemetry_stream/internal/{publisher,server,proto}.rs`, `scan_controller/internal/poi_queue/`) | Batches 10-14 |
|
||||
| C4 | Low | Architecture | `data_model.md §PanPlan` definition missing | Batch 11 |
|
||||
| C5 | High | Maintenance | Pre-existing `autopilot/runtime.rs::vlm_provider_name` dead-code error blocks workspace `-D warnings` clippy | Batch 4 origin |
|
||||
| C6 | Medium | Tests | `mission_executor::ac3_bounded_retry_then_success` polling-race flake (escalated under tonic build pressure) | Batch 8 origin, escalated batch 14 |
|
||||
| C7 | Low | Architecture | Record Tonic-gRPC operator-link decision in `decision-rationale.md` (closed Q2 in batch 14) | Batch 14 |
|
||||
batch: 15
|
||||
ticket: AZ-676 / AZ-677 / AZ-678 / AZ-679
|
||||
jira_status: pending (will be set to In Testing after commit)
|
||||
pushed_to: pending
|
||||
report: _docs/03_implementation/batch_15_cycle1_report.md
|
||||
cumulative_review: _docs/03_implementation/cumulative_review_batches_13-15_cycle1_report.md
|
||||
|
||||
## Process Leftovers
|
||||
- `_docs/_process_leftovers/2026-05-20_autopilot_clippy.md` — C5 replay
|
||||
- `_docs/_process_leftovers/2026-05-20_mission_executor_ac3_flake.md` — C6 fix recipe
|
||||
|
||||
## Cumulative Review Cadence
|
||||
Next cumulative review due: end of batch 15 (covers batches 13 / 14 / 15).
|
||||
Last cumulative: batches 13–15 (just produced). Next due: end of batch 18.
|
||||
|
||||
Reference in New Issue
Block a user