Oleksandr Bezdieniezhnykh
|
e56d428753
|
[AZ-649] [AZ-674] [AZ-667] telemetry + vlm schema + mapobjects hydrate batch 6
AZ-649 mission_executor telemetry forwarding:
- shared::models::telemetry::UavTelemetry canonical model
- TelemetryForwarder with atomic ArcSwap snapshot + 3 lossy
tokio::sync::broadcast channels (MissionExecutor, ScanController,
MavlinkUplink) + per-consumer drop counters
- MavlinkProjection::from_mavlink for HEARTBEAT/GLOBAL_POSITION_INT/
ATTITUDE/SYS_STATUS
- spawn_mavlink_pump bridges mavlink_layer into the forwarder at the
binary edge
AZ-674 vlm_client schema validation + model_version tracking:
- AssessmentParser owns schema validation + model-version state
- wire::read_response_raw splits raw bytes from parsing so invalid
payloads can be logged size-capped
- VlmStatus gains an Inconclusive variant; exhaustive-match test
guards downstream consumers
- VlmPipelineStatus mirrors the new variant in shared::models::poi
AZ-667 mapobjects_store hydrate + pending logs + cascade:
- SyncState enum aligned with description.md (FreshBoot, Synced,
CachedFallback, Degraded, Failed)
- Store::hydrate(MapObjectsBundle) replaces in-memory map atomically;
freshness=Stale -> CachedFallback
- classify() + end_of_pass append MapObjectObservation events to
pending_observations (New/Moved/Existing/RemovedCandidate)
- apply_decline + LocalAppended ignored items append to pending_ignored
- drain_pending() returns and clears both logs
- cascade_mission(id) purges by_cell + IgnoredSet + pending logs
- Health surface reports sync_state, pending_obs, pending_ign
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-19 17:40:43 +03:00 |
|
Oleksandr Bezdieniezhnykh
|
b5cc0c321c
|
[AZ-666] [AZ-673] [AZ-648] ignored set + UDS VLM + mission FSM batch 5
ci/woodpecker/push/build-arm Pipeline failed
AZ-666 mapobjects_store:
- internal/ignored.rs (HashSet<(mgrs, class_group)> for O(1) suppression)
- internal/passes.rs (per-region PassTracker with observed-id set and
end-of-pass removed-candidate sweep)
- Classification::Ignored wired into classify; apply_decline +
is_ignored + pass_start + end_of_pass on MapObjectsStoreHandle
- new tests/ignored_and_sweep.rs (3 AC + 2 supplementary)
AZ-673 vlm_client:
- internal/peer_cred.rs (Linux SO_PEERCRED via libc getsockopt;
PeerCredOutcome::SkippedNonLinux on macOS dev hosts per
description.md §8)
- internal/prompt.rs (pre-send ROI size + format + prompt
non-emptiness validation)
- internal/wire.rs (length-prefixed JSON envelope with base64 ROI)
- internal/uds_client.rs (tokio UnixStream client; bounded
reconnect; hard-stop on peer-cred mismatch; per-request deadline)
- VlmClient with both eager (open/connect) and lazy (new) ctor
- workspace Cargo.toml: base64 + libc as workspace deps
AZ-648 mission_executor:
- internal/types.rs (Variant, MissionState, TransitionKey,
Telemetry, TransitionEvent, StepOutcome)
- internal/driver.rs (MissionDriver trait + DriverError +
DriverAction)
- internal/fsm.rs (variant-agnostic Transition + FsmCore + step_one
with per-transition retry budget keyed by TransitionKey)
- internal/multirotor.rs + internal/fixed_wing.rs (typed transition
tables; multirotor has Armed/TakeOff, fixed-wing parks in
WaitAuto for operator AUTO)
- public API: MissionExecutor::run spawns the FSM task and returns
a clone-safe MissionExecutorHandle (state, health, subscribe,
paused_reason, retry_count)
- new tests/state_machine.rs (AC-1..AC-4 via ScriptedDriver fake;
SITL conformance lands with AZ-649 telemetry forwarding)
Workspace: cargo fmt + clippy -D warnings clean; full
cargo test --workspace --all-features green (1 ignored = AZ-665
perf gate). Tasks moved todo/ → done/, autodev state set to batch
6 selection.
Refs: _docs/03_implementation/batch_05_cycle1_report.md
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-19 16:54:00 +03:00 |
|