# Dependencies Table **Date**: 2026-05-19 **Total Tasks**: 47 (1 bootstrap + 46 component) **Total Complexity Points**: 173 **Cycle Check**: PASS (DAG verified) **Coverage Check**: PASS (every named architectural capability has an implementation task) ## Recommended Execution Order Tasks are listed in a topologically valid order. The `/implement` skill batches by dependency depth automatically; the order here is one valid linearization. | Task | Name | Complexity | Dependencies | Epic | |------|------|-----------|-------------|------| | AZ-640 | initial_structure | 5 | None | AZ-626 | | AZ-641 | mavlink_transport_and_heartbeat | 3 | AZ-640 | AZ-637 | | AZ-642 | mavlink_codec | 5 | AZ-640 | AZ-637 | | AZ-643 | mavlink_ack_demux_and_signing | 3 | AZ-640, AZ-641, AZ-642 | AZ-637 | | AZ-644 | mission_client_pull_and_schema | 3 | AZ-640 | AZ-638 | | AZ-645 | mission_client_waypoint_post | 2 | AZ-640, AZ-644 | AZ-638 | | AZ-646 | mission_client_mapobjects_pull | 3 | AZ-640, AZ-644 | AZ-638 | | AZ-647 | mission_client_mapobjects_push | 5 | AZ-640, AZ-644, AZ-646 | AZ-638 | | AZ-648 | mission_executor_state_machine | 5 | AZ-640, AZ-641, AZ-642, AZ-643 | AZ-636 | | AZ-649 | mission_executor_telemetry_forwarding | 2 | AZ-640, AZ-648 | AZ-636 | | AZ-650 | mission_executor_bit_f9 | 5 | AZ-640, AZ-648, AZ-649, AZ-644, AZ-646 | AZ-636 | | AZ-651 | mission_executor_lost_link_ladder | 3 | AZ-640, AZ-648, AZ-649 | AZ-636 | | AZ-652 | mission_executor_safety_and_resume | 5 | AZ-640, AZ-648, AZ-649, AZ-643, AZ-647 | AZ-636 | | AZ-653 | gimbal_a40_transport | 5 | AZ-640 | AZ-634 | | AZ-654 | gimbal_zoom_out_sweep | 3 | AZ-640, AZ-653 | AZ-634 | | AZ-655 | gimbal_smooth_pan_plan | 3 | AZ-640, AZ-653 | AZ-634 | | AZ-656 | gimbal_centre_on_target | 3 | AZ-640, AZ-653 | AZ-634 | | AZ-657 | frame_ingest_rtsp_session | 3 | AZ-640 | AZ-627 | | AZ-658 | frame_ingest_decoder | 5 | AZ-640, AZ-657 | AZ-627 | | AZ-659 | frame_ingest_publisher | 3 | AZ-640, AZ-657, AZ-658 | AZ-627 | | AZ-660 | detection_client_grpc_stream | 5 | AZ-640, AZ-659 | AZ-628 | | AZ-661 | detection_client_schema_and_health | 2 | AZ-640, AZ-660 | AZ-628 | | AZ-662 | movement_detector_ego_motion | 5 | AZ-640, AZ-659, AZ-656, AZ-649 | AZ-629 | | AZ-663 | movement_detector_clustering_and_emission | 5 | AZ-640, AZ-662 | AZ-629 | | AZ-664 | movement_detector_fp_cap_and_q14_fallback | 3 | AZ-640, AZ-662, AZ-663 | AZ-629 | | AZ-665 | mapobjects_store_h3_classify | 5 | AZ-640 | AZ-633 | | AZ-666 | mapobjects_store_ignored_and_pass_sweep | 3 | AZ-640, AZ-665 | AZ-633 | | AZ-667 | mapobjects_store_hydrate_and_pending | 5 | AZ-640, AZ-665, AZ-666 | AZ-633 | | AZ-668 | mapobjects_store_persistence | 3 | AZ-640, AZ-665, AZ-667 | AZ-633 | | AZ-669 | semantic_analyzer_primitive_graph | 5 | AZ-640, AZ-660, AZ-661 | AZ-630 | | AZ-670 | semantic_analyzer_roi_cnn | 5 | AZ-640, AZ-669 | AZ-630 | | AZ-671 | semantic_analyzer_action_policy | 3 | AZ-640, AZ-669, AZ-670 | AZ-630 | | AZ-672 | vlm_client_provider_trait | 2 | AZ-640 | AZ-631 | | AZ-673 | vlm_client_nanollm_ipc | 5 | AZ-640, AZ-672 | AZ-631 | | AZ-674 | vlm_client_schema_and_model_version | 3 | AZ-640, AZ-673 | AZ-631 | | AZ-675 | telemetry_stream_grpc_server | 3 | AZ-640, AZ-649, AZ-657 | AZ-637 | | AZ-676 | telemetry_stream_video_path | 3 | AZ-640, AZ-657, AZ-675 | AZ-637 | | AZ-677 | telemetry_stream_mapobjects_snapshot | 3 | AZ-640, AZ-675, AZ-667 | AZ-637 | | AZ-678 | operator_bridge_command_auth | 5 | AZ-640, AZ-675 | AZ-628 | | AZ-679 | operator_bridge_poi_surface | 3 | AZ-640, AZ-675 | AZ-628 | | AZ-680 | operator_bridge_command_dispatch | 3 | AZ-640, AZ-678 | AZ-628 | | AZ-681 | operator_bridge_safety_and_bit_ack | 3 | AZ-640, AZ-678, AZ-650, AZ-652 | AZ-628 | | AZ-682 | scan_controller_state_machine | 5 | AZ-640, AZ-649 | AZ-635 | | AZ-683 | scan_controller_poi_queue_and_window | 5 | AZ-640, AZ-682 | AZ-635 | | AZ-684 | scan_controller_evidence_ladder | 5 | AZ-640, AZ-682, AZ-683, AZ-660, AZ-671, AZ-672 | AZ-635 | | AZ-685 | scan_controller_mapobjects_dispatch | 3 | AZ-640, AZ-682, AZ-684, AZ-665, AZ-666, AZ-667 | AZ-635 | | AZ-686 | scan_controller_gimbal_issuance | 3 | AZ-640, AZ-682, AZ-683, AZ-684, AZ-654, AZ-655, AZ-656, AZ-648 | AZ-635 | ## Per-Epic Roll-Up | Epic | Component | Tasks | Points | |------|-----------|-------|--------| | AZ-626 | bootstrap | 1 | 5 | | AZ-627 | frame_ingest | 3 | 11 | | AZ-628 | detection_client + operator_bridge | 6 | 21 | | AZ-629 | movement_detector | 3 | 13 | | AZ-630 | semantic_analyzer | 3 | 13 | | AZ-631 | vlm_client | 3 | 10 | | AZ-633 | mapobjects_store | 4 | 16 | | AZ-634 | gimbal_controller | 4 | 14 | | AZ-635 | scan_controller | 5 | 21 | | AZ-636 | mission_executor | 5 | 20 | | AZ-637 | mavlink_layer + telemetry_stream | 6 | 20 | | AZ-638 | mission_client | 4 | 13 | | **TOTAL** | — | **47** | **173** | > Note: Epic AZ-628 holds both `detection_client` and `operator_bridge` (per the Plan-step epic assignment, which placed both Action-plane components under the same epic). Epic AZ-637 holds both `mavlink_layer` and `telemetry_stream`. ## Coverage Check (named runtime capabilities → task) Every named capability from `architecture.md`, `system-flows.md`, and per-component `description.md` files maps to a production-implementation task (no scaffold-only coverage): - MAVLink transport + heartbeat → AZ-641; MAVLink v2 codec → AZ-642; ack demux + signing → AZ-643 - Mission pull + schema → AZ-644; middle-waypoint POST → AZ-645; MapObjects pull → AZ-646; MapObjects push (durable) → AZ-647 - Mission state machine → AZ-648; telemetry forwarding → AZ-649; BIT F9 → AZ-650; lost-link F10 → AZ-651; geofence/battery + safety + resume → AZ-652 - A40 vendor transport (CRC16, UDP) → AZ-653; zoom-out sweep → AZ-654; smooth-pan plan → AZ-655; centre-on-target → AZ-656 - RTSP session → AZ-657; H.264/265 decode (NVDEC + sw fallback) → AZ-658; broadcast publisher (zero-copy) → AZ-659 - Detection bi-di gRPC + budgeting → AZ-660; detection schema + model_version + health → AZ-661 - Ego-motion (OpenCV + telemetry sync) → AZ-662; clustering + persistence + emission → AZ-663; FP cap + Q14 hook → AZ-664 - H3 classify → AZ-665; ignored set + sweep → AZ-666; hydrate + sync_state + pending → AZ-667; persistence (JSON snapshot) → AZ-668 - Primitive graph + freshness → AZ-669; ROI CNN (ONNX) → AZ-670; action policy + pan plan → AZ-671 - VLM provider trait + disabled + feature → AZ-672; NanoLLM UDS + peer-cred → AZ-673; schema + model_version → AZ-674 - Operator telemetry gRPC + per-client lossy → AZ-675; video path (rtsp_forward / bytes_inline) + ai_locked → AZ-676; MapObjects snapshot + diff + resnap → AZ-677 - Operator command auth (sig + replay + session) → AZ-678; POI surface format → AZ-679; command dispatch + idempotency → AZ-680; BIT-degraded ack + safety-override → AZ-681 - Scan state machine + frame-rate floor → AZ-682; POI queue + 5/min cap + decision window → AZ-683; evidence ladder + zoom-in candidate routing → AZ-684; classify/ignored/degraded-sync dispatch → AZ-685; gimbal issuance + mission hint + health fallback → AZ-686 ## DAG Validation Notes - Every dependency targets a strictly smaller task number → no cycles. - `AZ-640_initial_structure` is the unique root. - Maximum dependency depth = 8 (AZ-686: 640 → 657 → 658 → 659 → 660 → 671 → 684 → 686 along one path; other paths similar). - No task depends on a task in a later epic that itself depends back into an earlier epic. ## Notes for /implement - Total complexity 173 pts: at ~5 pts/day per implementer that's ~35 implementer-days. Parallelism is bounded by the DAG; the widest parallel layer is just after AZ-640 (15 leaf-level tasks: AZ-641, AZ-642, AZ-644, AZ-653, AZ-657, AZ-665, AZ-672 plus the bootstrap-only-dep tasks below them on each chain). - Suite-level integration tests (Phase 2 in monorepo-document terms) are NOT in this table — they belong to the suite-e2e epic and are decomposed separately when the suite-e2e harness is wired up.