Files
autopilot/_docs/02_tasks/_dependencies_table.md
T
Oleksandr Bezdieniezhnykh bc40ea7300 [AZ-626] Decompose complete: 47 tasks + docs + module layout
Greenfield Steps 1-6 baseline for the autopilot rewrite from legacy
Qt/C++ to a Rust workspace.

- Remove legacy Qt/C++ tree (ai_controller, drone_controller,
  misc/camera, python_scaffold, root Dockerfile, autopilot.pro,
  legacy main.py / requirements.txt).
- Add _docs/00_problem (problem, restrictions, acceptance criteria,
  security approach, input data + fixtures).
- Add _docs/01_solution/solution_draft01.
- Add _docs/02_document (architecture, system-flows, data_model,
  glossary, decision-rationale, deployment, 13 component descriptions,
  tests/ specs, FINAL_report, module-layout).
- Add _docs/02_tasks/todo with 47 task specs (AZ-640..AZ-686, one
  bootstrap + 46 component tasks) and _dependencies_table.md.
- Add .cursor/rules/artifact-srp.mdc (single-responsibility rule for
  canonical _docs artifacts).
- Track autodev state in _docs/_autodev_state.md (Step 6 completed,
  ready for Step 7 Implement).

Jira: bootstrap AZ-626; component epics AZ-627..AZ-639; tasks
AZ-640..AZ-686. Total complexity 173 points across 12 epics.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 11:02:01 +03:00

7.9 KiB

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)

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.