[AZ-680] [AZ-681] operator_bridge command dispatch + safety lane

Add the operator-command dispatcher behind a typed CommandAck:
60 s per-command-id idempotency cache, surfaced-POI registry with
unknown_poi_id + expired gates, BIT-degraded ack severity check, and
SafetyOverride forwarding to mission_executor with structured audit
log (redacts signature + session_token).

Cross-layer wiring goes through three new traits in shared::contracts
(ScanCommandRouter, MissionSafetyRouter, BitReportSeverityLookup) so
operator_bridge stays free of direct scan_controller / mission_executor
imports. scan_controller::ScanControllerHandle implements the scan
router; a new mission_executor::SafetyDispatchHandle wraps the BIT
ack channel + battery monitor handle and implements the safety router;
BitControllerHandle gains a bounded (16-entry) report-severity cache
for the lookup trait.

scan_controller also picks up ConfirmPoi handling: PoiQueue::confirm
removes the entry and SubmitOutcome::Confirmed carries the typed
(target_mgrs, target_class) hint for AZ-684/AZ-686 downstream.

Tests: 9 new integration tests in operator_bridge/tests/dispatcher.rs
cover AZ-680 AC-1..AC-5 + AZ-681 AC-1..AC-4. scan_controller adds 2
ConfirmPoi tests. All modified-crate suites green; one pre-existing
mission_executor state-machine test flake (already documented in
_docs/_process_leftovers) updated to note ac1 also affected.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-20 17:32:38 +03:00
parent aa4282f9f8
commit c4eff40dbc
24 changed files with 2017 additions and 53 deletions
+8 -9
View File
@@ -7,24 +7,23 @@ name: Implement
status: between-batches
sub_step:
phase: 0
name: batch-17-select
name: batch-18-select
detail: ""
retry_count: 0
cycle: 1
tracker: jira
## Last Completed Batch
batch: 16
commit: 251ebed
ticket: AZ-658
jira_status: In Testing (confirmed via read-back)
pushed_to: origin/dev
report: _docs/03_implementation/batch_16_cycle1_report.md
batch: 17
commit: ec494b3
ticket: AZ-680, AZ-681
jira_status: In Testing (confirmed via read-back for both)
report: _docs/03_implementation/batch_17_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` — out-of-scope for batch 16
- `_docs/_process_leftovers/2026-05-20_mission_executor_ac3_flake.md`out-of-scope for batch 16
- `_docs/_process_leftovers/2026-05-20_autopilot_clippy.md` still pending; out-of-scope for batch 17
- `_docs/_process_leftovers/2026-05-20_mission_executor_ac3_flake.md`still pending; flake also hit `ac1` during batch 17 workspace run
## Cumulative Review Cadence
Last cumulative: batches 1315. Next due: end of batch 18.