# Dependencies Table

**Date**: 2026-05-13 (refreshed after AZ-507 + AZ-508 hygiene-PBI onboarding from cumulative review batches 31-33; previously 2026-05-11 for AZ-489 + AZ-490 ADR-010 operator-origin path)
**Total Tasks**: 144 (103 product + 41 blackbox-test)
**Total Complexity Points**: 482 (349 product + 133 blackbox-test)

Dependencies columns list only the tracker-ID portion (descriptive tail
text in each task spec is omitted here for table-readability). The
authoritative dependency narrative — including "co-developed", "forward
dependency", and helper-vs-Protocol distinctions — lives in each task's
own `Dependencies:` field. The graph is a strict DAG: a topological
traversal visits all 142 tasks. The 15 forward edges (dep ID > task ID)
are all declared and documented below under **Cycle Check**.

| Task   | Name                                                                                         | Complexity | Dependencies                                                                                          | Epic   |
|--------|----------------------------------------------------------------------------------------------|------------|-------------------------------------------------------------------------------------------------------|--------|
| AZ-263 | Initial Structure                                                                            | 5          | None                                                                                                  | AZ-244 |
| AZ-266 | Shared Logging Module                                                                        | 3          | AZ-263                                                                                                | AZ-245 |
| AZ-267 | FDR Log Bridge                                                                               | 2          | AZ-266, AZ-272 (forward)                                                                              | AZ-245 |
| AZ-268 | Log Schema Contract Test                                                                     | 2          | AZ-266, AZ-267                                                                                        | AZ-245 |
| AZ-269 | Config Loader                                                                                | 3          | AZ-263                                                                                                | AZ-246 |
| AZ-270 | Composition Root                                                                             | 3          | AZ-269                                                                                                | AZ-246 |
| AZ-271 | Config Precedence Tests                                                                      | 2          | AZ-269, AZ-270                                                                                        | AZ-246 |
| AZ-272 | FdrRecord Schema                                                                             | 3          | AZ-263, AZ-266                                                                                        | AZ-247 |
| AZ-273 | FdrClient Ring Buffer                                                                        | 5          | AZ-263, AZ-272, AZ-269, AZ-266                                                                        | AZ-247 |
| AZ-274 | FDR Overrun Policy                                                                           | 2          | AZ-272, AZ-273                                                                                        | AZ-247 |
| AZ-275 | FakeFdrSink                                                                                  | 2          | AZ-272, AZ-273                                                                                        | AZ-247 |
| AZ-276 | ImuPreintegrator Helper                                                                      | 2          | AZ-263                                                                                                | AZ-264 |
| AZ-277 | SE3Utils Helper                                                                              | 2          | AZ-263                                                                                                | AZ-264 |
| AZ-278 | LightGlueRuntime Helper                                                                      | 3          | AZ-263                                                                                                | AZ-264 |
| AZ-279 | WgsConverter Helper                                                                          | 2          | AZ-263                                                                                                | AZ-264 |
| AZ-280 | Sha256Sidecar Helper                                                                         | 2          | AZ-263                                                                                                | AZ-264 |
| AZ-281 | EngineFilenameSchema Helper                                                                  | 2          | AZ-263                                                                                                | AZ-264 |
| AZ-282 | RansacFilter Helper                                                                          | 2          | AZ-263, AZ-277                                                                                        | AZ-264 |
| AZ-283 | DescriptorNormaliser Helper                                                                  | 2          | AZ-263                                                                                                | AZ-264 |
| AZ-291 | C13 Writer Thread                                                                            | 5          | AZ-263, AZ-272, AZ-273, AZ-266, AZ-269                                                                | AZ-248 |
| AZ-292 | C13 Flight Header/Footer + Accounting                                                        | 3          | AZ-291, AZ-272, AZ-263, AZ-269, AZ-266                                                                | AZ-248 |
| AZ-293 | C13 Capacity Cap Policy                                                                      | 5          | AZ-291, AZ-292, AZ-272, AZ-263, AZ-269, AZ-266                                                        | AZ-248 |
| AZ-294 | C13 Mid-Flight Tile Snapshot Path                                                            | 3          | AZ-291, AZ-272, AZ-263, AZ-269                                                                        | AZ-248 |
| AZ-295 | C13 AC-8.5 Forbidden-Kind + Thumbnail Rate Cap                                               | 3          | AZ-291, AZ-272, AZ-263, AZ-269, AZ-266                                                                | AZ-248 |
| AZ-296 | C13 Takeoff Abort on FdrOpenError                                                            | 2          | AZ-291, AZ-292, AZ-263, AZ-266                                                                        | AZ-248 |
| AZ-297 | C7 InferenceRuntime Protocol                                                                 | 3          | AZ-263, AZ-269, AZ-266, AZ-280, AZ-281                                                                | AZ-249 |
| AZ-298 | C7 TensorrtRuntime                                                                           | 5          | AZ-297, AZ-301, AZ-280, AZ-281, AZ-263, AZ-269, AZ-266                                                | AZ-249 |
| AZ-299 | C7 OnnxTrtEpRuntime                                                                          | 3          | AZ-297, AZ-301, AZ-280, AZ-281, AZ-263, AZ-269, AZ-266                                                | AZ-249 |
| AZ-300 | C7 PytorchFp16Runtime                                                                        | 2          | AZ-297, AZ-263, AZ-269, AZ-266                                                                        | AZ-249 |
| AZ-301 | C7 EngineGate                                                                                | 3          | AZ-297, AZ-280, AZ-281, AZ-266                                                                        | AZ-249 |
| AZ-302 | C7 ThermalState Publisher                                                                    | 3          | AZ-297, AZ-263, AZ-269, AZ-266, AZ-273                                                                | AZ-249 |
| AZ-303 | C6 Storage Interfaces                                                                        | 3          | AZ-263, AZ-269, AZ-266, AZ-280                                                                        | AZ-250 |
| AZ-304 | C6 Postgres Schema                                                                           | 2          | AZ-303, AZ-263, AZ-269, AZ-266                                                                        | AZ-250 |
| AZ-305 | C6 PostgresFilesystemStore                                                                   | 5          | AZ-303, AZ-304, AZ-280, AZ-279, AZ-263, AZ-269, AZ-266, AZ-273                                        | AZ-250 |
| AZ-306 | C6 FaissDescriptorIndex                                                                      | 5          | AZ-303, AZ-280, AZ-263, AZ-269, AZ-266                                                                | AZ-250 |
| AZ-307 | C6 Freshness Gate                                                                            | 2          | AZ-303, AZ-304, AZ-305, AZ-263, AZ-269, AZ-266, AZ-273                                                | AZ-250 |
| AZ-308 | C6 Cache Budget Eviction                                                                     | 3          | AZ-303, AZ-305, AZ-263, AZ-269, AZ-266, AZ-273                                                        | AZ-250 |
| AZ-316 | C11 TileDownloader                                                                           | 5          | AZ-263, AZ-269, AZ-266, AZ-303, AZ-305, AZ-307, AZ-308                                                | AZ-251 |
| AZ-317 | C11 Flight-State Gate                                                                        | 2          | AZ-263, AZ-269, AZ-266                                                                                | AZ-251 |
| AZ-318 | C11 Per-Flight Signing Key                                                                   | 3          | AZ-263, AZ-269, AZ-266, AZ-273                                                                        | AZ-251 |
| AZ-319 | C11 TileUploader                                                                             | 5          | AZ-263, AZ-269, AZ-266, AZ-273, AZ-303, AZ-305, AZ-317, AZ-318                                        | AZ-251 |
| AZ-320 | C11 Idempotent Retry Decorator                                                               | 3          | AZ-263, AZ-269, AZ-266, AZ-273, AZ-303, AZ-319                                                        | AZ-251 |
| AZ-321 | C10 Engine Compiler                                                                          | 5          | AZ-263, AZ-269, AZ-266, AZ-280, AZ-281, AZ-298                                                        | AZ-252 |
| AZ-322 | C10 Descriptor Batcher                                                                       | 3          | AZ-263, AZ-269, AZ-266, AZ-303, AZ-306, AZ-321                                                        | AZ-252 |
| AZ-323 | C10 Manifest Builder                                                                         | 3          | AZ-263, AZ-269, AZ-266, AZ-280, AZ-281, AZ-303                                                        | AZ-252 |
| AZ-324 | C10 ManifestVerifier                                                                         | 3          | AZ-263, AZ-269, AZ-266, AZ-280, AZ-281                                                                | AZ-252 |
| AZ-325 | C10 CacheProvisioner                                                                         | 3          | AZ-263, AZ-269, AZ-266, AZ-303, AZ-321, AZ-322, AZ-323                                                | AZ-252 |
| AZ-326 | C12 CLI App                                                                                  | 3          | AZ-263, AZ-269, AZ-266, AZ-489                                                                        | AZ-253 |
| AZ-327 | C12 Companion Bringup                                                                        | 3          | AZ-263, AZ-269, AZ-266                                                                                | AZ-253 |
| AZ-328 | C12 Build-Cache Orchestrator                                                                 | 5          | AZ-326, AZ-327, AZ-316, AZ-325, AZ-489, AZ-263, AZ-269, AZ-266                                        | AZ-253 |
| AZ-329 | C12 Post-Landing Upload                                                                      | 3          | AZ-326, AZ-319, AZ-272, AZ-263, AZ-269, AZ-266                                                        | AZ-253 |
| AZ-330 | C12 OperatorReLocService                                                                     | 3          | AZ-326, AZ-273, AZ-263, AZ-269, AZ-266                                                                | AZ-253 |
| AZ-331 | C1 VioStrategy Protocol                                                                      | 3          | AZ-263, AZ-269, AZ-266, AZ-270, AZ-272, AZ-276, AZ-277                                                | AZ-254 |
| AZ-332 | C1 OKVIS2 Strategy                                                                           | 5          | AZ-331, AZ-263, AZ-269, AZ-266, AZ-276, AZ-277, AZ-272, AZ-273                                        | AZ-254 |
| AZ-333 | C1 VINS-Mono Strategy                                                                        | 5          | AZ-331, AZ-263, AZ-269, AZ-266, AZ-276, AZ-277, AZ-272, AZ-273                                        | AZ-254 |
| AZ-334 | C1 KLT/RANSAC Strategy                                                                       | 5          | AZ-331, AZ-263, AZ-269, AZ-266, AZ-276, AZ-277, AZ-282, AZ-272, AZ-273                                | AZ-254 |
| AZ-335 | C1 Warm-Start + F8 Reboot Recovery                                                           | 3          | AZ-331, AZ-332, AZ-333, AZ-334, AZ-263, AZ-269, AZ-266, AZ-270, AZ-280, AZ-272                        | AZ-254 |
| AZ-336 | C2 VprStrategy Protocol + Factory + Composition                                              | 3          | AZ-263, AZ-269, AZ-270, AZ-303, AZ-297, AZ-266                                                        | AZ-255 |
| AZ-337 | C2 UltraVPR Primary Backbone (TRT)                                                           | 5          | AZ-336, AZ-263, AZ-269, AZ-298, AZ-303, AZ-283, AZ-281, AZ-321, AZ-266, AZ-272                        | AZ-255 |
| AZ-338 | C2 NetVLAD Mandatory Simple-Baseline                                                         | 3          | AZ-336, AZ-263, AZ-269, AZ-300, AZ-303, AZ-283, AZ-266, AZ-272                                        | AZ-255 |
| AZ-339 | C2 MegaLoc + MixVPR Secondary Backbones (Research-only)                                      | 5          | AZ-336, AZ-263, AZ-269, AZ-298, AZ-303, AZ-283, AZ-281, AZ-321, AZ-266, AZ-272                        | AZ-255 |
| AZ-340 | C2 SelaVPR + EigenPlaces + SALAD Secondary Backbones (Research-only)                         | 5          | AZ-336, AZ-263, AZ-269, AZ-298, AZ-303, AZ-283, AZ-281, AZ-321, AZ-266, AZ-272                        | AZ-255 |
| AZ-341 | C2 FAISS HNSW Retrieve Wiring                                                                | 3          | AZ-336, AZ-263, AZ-269, AZ-303, AZ-305, AZ-306, AZ-266, AZ-272                                        | AZ-255 |
| AZ-342 | C2.5 ReRankStrategy Protocol + Factory + Composition                                         | 2          | AZ-263, AZ-269, AZ-270, AZ-278, AZ-303, AZ-266                                                        | AZ-256 |
| AZ-343 | C2.5 InlierCountReRanker (drop-and-continue)                                                 | 3          | AZ-342, AZ-263, AZ-269, AZ-278, AZ-303, AZ-266, AZ-272                                                | AZ-256 |
| AZ-344 | C3 CrossDomainMatcher Protocol + Factory + Composition                                       | 3          | AZ-263, AZ-269, AZ-270, AZ-278, AZ-282, AZ-297, AZ-266                                                | AZ-257 |
| AZ-345 | C3 DISK+LightGlue Primary Matcher                                                            | 5          | AZ-344, AZ-263, AZ-269, AZ-278, AZ-282, AZ-298, AZ-299, AZ-303, AZ-281, AZ-321, AZ-266, AZ-272        | AZ-257 |
| AZ-346 | C3 ALIKED+LightGlue Secondary Matcher                                                        | 3          | AZ-344, AZ-263, AZ-269, AZ-278, AZ-282, AZ-298, AZ-299, AZ-303, AZ-281, AZ-321, AZ-266, AZ-272        | AZ-257 |
| AZ-347 | C3 XFeat Alternate Lightweight Matcher                                                       | 3          | AZ-344, AZ-263, AZ-269, AZ-282, AZ-298, AZ-299, AZ-303, AZ-281, AZ-321, AZ-266, AZ-272                | AZ-257 |
| AZ-348 | C3.5 ConditionalRefiner Protocol + Factory + PassthroughRefiner + Composition                | 3          | AZ-263, AZ-269, AZ-270, AZ-282, AZ-297, AZ-344, AZ-266                                                | AZ-258 |
| AZ-349 | C3.5 AdHoPRefiner — production-default conditional refiner                                   | 5          | AZ-348, AZ-263, AZ-269, AZ-282, AZ-298, AZ-299, AZ-281, AZ-321, AZ-266, AZ-272                        | AZ-258 |
| AZ-355 | C4 PoseEstimator Protocol + Factory + DTOs + Composition                                     | 3          | AZ-263, AZ-269, AZ-270, AZ-282, AZ-279, AZ-277, AZ-266                                                | AZ-259 |
| AZ-358 | C4 OpenCVGtsamPoseEstimator (steady-state path)                                              | 5          | AZ-355, AZ-381, AZ-282, AZ-279, AZ-277, AZ-269, AZ-266, AZ-272, AZ-263                                | AZ-259 |
| AZ-361 | C4 D-CROSS-LATENCY-1 hybrid — Jacobian + thermal-driven mode switch                          | 3          | AZ-358, AZ-355, AZ-302, AZ-277, AZ-279, AZ-269, AZ-266, AZ-272, AZ-263                                | AZ-259 |
| AZ-381 | C5 StateEstimator Protocol + Factory + DTOs + Composition + concrete ISam2GraphHandle        | 3          | AZ-263, AZ-269, AZ-270, AZ-276, AZ-277, AZ-279, AZ-273, AZ-355, AZ-266                                | AZ-260 |
| AZ-382 | C5 GtsamIsam2StateEstimator skeleton — iSAM2 + IncrementalFixedLagSmoother wiring            | 5          | AZ-381, AZ-263, AZ-269, AZ-266, AZ-272                                                                | AZ-260 |
| AZ-383 | C5 GtsamIsam2StateEstimator — add_vio / add_pose_anchor / add_fc_imu factor add bodies       | 5          | AZ-382, AZ-381, AZ-276, AZ-358, AZ-263, AZ-269, AZ-266, AZ-272                                        | AZ-260 |
| AZ-384 | C5 GtsamIsam2StateEstimator — Marginals + output methods                                     | 3          | AZ-383, AZ-382, AZ-381, AZ-279, AZ-277, AZ-263, AZ-269, AZ-266, AZ-272                                | AZ-260 |
| AZ-385 | C5 SourceLabelStateMachine + spoof-promotion gate                                            | 5          | AZ-384, AZ-381, AZ-382, AZ-383, AZ-263, AZ-269, AZ-266, AZ-272, AZ-391, AZ-397                        | AZ-260 |
| AZ-386 | C5 EskfStateEstimator — mandatory simple-baseline                                            | 5          | AZ-381, AZ-276, AZ-277, AZ-279, AZ-263, AZ-269, AZ-266, AZ-272                                        | AZ-260 |
| AZ-387 | C5 smoothed past-keyframe → FDR path (AC-4.5 revised)                                        | 3          | AZ-384, AZ-386, AZ-273, AZ-272, AZ-263, AZ-269, AZ-266                                                | AZ-260 |
| AZ-388 | C5 AC-5.2 fallback path — 3 s no-estimate detector + downstream signal                       | 3          | AZ-384, AZ-386, AZ-273, AZ-272, AZ-390, AZ-397, AZ-263, AZ-269, AZ-266                                | AZ-260 |
| AZ-389 | C5 internal orthorectifier — produces mid-flight tile candidates for C6                      | 3          | AZ-384, AZ-385, AZ-303, AZ-263, AZ-269, AZ-266, AZ-272                                                | AZ-260 |
| AZ-390 | C8 FcAdapter + GcsAdapter Protocols + DTOs + errors + composition factories                  | 3          | AZ-263, AZ-269, AZ-270, AZ-273, AZ-277, AZ-279, AZ-266                                                | AZ-261 |
| AZ-391 | C8 inbound subscription — IMU/attitude/GPS-health/MAV_STATE producer                         | 5          | AZ-390, AZ-263, AZ-269, AZ-266, AZ-272, AZ-273, AZ-276                                                | AZ-261 |
| AZ-392 | C8 CovarianceProjector — honest 6×6 → 2×2 → equivalent_radius helper                         | 3          | AZ-390, AZ-263, AZ-269, AZ-266, AZ-272                                                                | AZ-261 |
| AZ-393 | C8 PymavlinkArdupilotAdapter outbound — GPS_INPUT 5 Hz + provenance side-channel             | 5          | AZ-390, AZ-392, AZ-279, AZ-273, AZ-263, AZ-269, AZ-266, AZ-272                                        | AZ-261 |
| AZ-394 | C8 Msp2InavAdapter outbound — MSP2_SENSOR_GPS 5 Hz                                           | 3          | AZ-390, AZ-392, AZ-279, AZ-273, AZ-263, AZ-269, AZ-266, AZ-272                                        | AZ-261 |
| AZ-395 | C8 AP MAVLink 2.0 per-flight signing — handshake + key rotation + zeroisation                | 5          | AZ-393, AZ-390, AZ-273, AZ-272, AZ-263, AZ-269, AZ-266                                                | AZ-261 |
| AZ-396 | C8 AP D-C8-2 source-set switch — MAV_CMD_SET_EKF_SOURCE_SET + spoof-recovery wiring          | 3          | AZ-393, AZ-390, AZ-385, AZ-273, AZ-272, AZ-263, AZ-269, AZ-266                                        | AZ-261 |
| AZ-397 | C8 QgcTelemetryAdapter — downsampled 1–2 Hz summary out + operator command in                | 3          | AZ-390, AZ-392, AZ-279, AZ-273, AZ-263, AZ-269, AZ-266                                                | AZ-261 |
| AZ-398 | FrameSource Protocol + Clock Protocol + LiveCameraFrameSource retrofit + VideoFileFrameSource| 3          | AZ-263, AZ-269, AZ-270, AZ-266, AZ-272                                                                | AZ-265 |
| AZ-399 | TlogReplayFcAdapter — replay-only FcAdapter parsing pymavlink .tlog                          | 5          | AZ-398, AZ-390, AZ-391, AZ-279, AZ-273, AZ-263, AZ-269, AZ-266, AZ-272                                | AZ-265 |
| AZ-400 | ReplaySink Protocol + JsonlReplaySink impl                                                   | 3          | AZ-263, AZ-269, AZ-270, AZ-381, AZ-266, AZ-272                                                        | AZ-265 |
| AZ-401 | compose_replay(config) -> ReplayRoot + Clock injection across C1–C5                          | 3          | AZ-398, AZ-399, AZ-400, AZ-269, AZ-270, AZ-263, AZ-266, AZ-272, AZ-390                                | AZ-265 |
| AZ-402 | gps-denied-replay CLI entrypoint + argparse + camera-calibration loader                      | 3          | AZ-401, AZ-269, AZ-270, AZ-263, AZ-266, AZ-272, AZ-273                                                | AZ-265 |
| AZ-403 | gps-denied-replay-cli Dockerfile + GitHub Actions matrix entry + SBOM diff                   | 3          | AZ-402, AZ-398, AZ-399, AZ-400, AZ-401, AZ-263, AZ-269, AZ-266                                        | AZ-265 |
| AZ-404 | E2E replay fixture test — Derkachi 1–2 min clip + tlog                                       | 5          | AZ-402, AZ-403, AZ-401, AZ-263, AZ-269, AZ-266, AZ-272, AZ-273                                        | AZ-265 |
| AZ-405 | Auto-sync of video ↔ tlog via IMU take-off detection                                         | 5          | AZ-402, AZ-399, AZ-398, AZ-263, AZ-269, AZ-266, AZ-272                                                | AZ-265 |
| AZ-406 | Blackbox Test Infrastructure Bootstrap (Tier-1 + Tier-2 harness scaffold)                    | 5          | AZ-263                                                                                                | AZ-262 |
| AZ-407 | Static fixture builders — tile-cache, age-injector, cold-boot, MAVLink passkey, CVE JPEG     | 3          | AZ-406                                                                                                | AZ-262 |
| AZ-408 | Runtime synthetic-injection fixture builders — outlier, blackout-spoof, multi-segment        | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-409 | FT-P-01 — Still-image set-60 frame-center accuracy                                           | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-410 | FT-P-02 — Cumulative drift between satellite anchors on Derkachi                             | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-411 | FT-P-03 + FT-P-14 — Estimate output schema + WGS84 coordinate validation                     | 2          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-412 | FT-P-04 — Frame-to-frame registration ≥95% on normal Derkachi segments                       | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-413 | FT-P-05 + FT-P-06 — Cross-domain matcher MRE budgets                                         | 3          | AZ-406, AZ-407, AZ-412                                                                                | AZ-262 |
| AZ-414 | FT-P-07 + FT-N-02 — Sharp-turn recovery via satellite reference                              | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-415 | FT-P-08 — ≥3 disconnected segments via satellite-reference re-localization                   | 3          | AZ-406, AZ-407, AZ-408                                                                                | AZ-262 |
| AZ-416 | FT-P-09-AP — ArduPilot Plane GPS_INPUT contract + MAVLink 2.0 signing handshake              | 5          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-417 | FT-P-09-iNav — iNav MSP2_SENSOR_GPS contract conformance                                     | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-418 | FT-P-10 — GTSAM smoothing-loop look-back accuracy                                            | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-419 | FT-P-11 — Cold-start init (operator-manifest primary + FC EKF secondary + bounded-delta gate)| 3          | AZ-406, AZ-407, AZ-489 (forward), AZ-490 (forward)                                                    | AZ-262 |
| AZ-420 | FT-P-12 + FT-P-13 — GCS downsample + GCS-originated re-loc command                           | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-421 | FT-P-15 + FT-P-16 + FT-P-18 — Tile cache + offline + no-raw-retention                        | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-422 | FT-P-17 + FT-N-06 — Mid-flight tile generation + freshness                                   | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-423 | FT-P-19 — Satellite-relocalization scale-ratio + scene-change PARTIAL                        | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-424 | FT-N-01 — 350 m outlier injection tolerance                                                  | 3          | AZ-406, AZ-407, AZ-408                                                                                | AZ-262 |
| AZ-425 | FT-N-03 — Extended outage triggers OPERATOR_RELOC_REQUEST                                    | 3          | AZ-406, AZ-407, AZ-408                                                                                | AZ-262 |
| AZ-426 | FT-N-04 — Visual blackout + spoofed GPS combined failsafe                                    | 5          | AZ-406, AZ-407, AZ-408                                                                                | AZ-262 |
| AZ-427 | FT-N-05 — Stale-tile rejection on freshness violation                                        | 2          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-428 | NFT-PERF-01 — End-to-end latency p95 ≤ 400 ms on Tier-2                                      | 5          | AZ-406, AZ-407, AZ-444 (forward)                                                                      | AZ-262 |
| AZ-429 | NFT-PERF-02 — Frame-by-frame streaming, no batching                                          | 2          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-430 | NFT-PERF-03 — Cold-start TTFF ≤ 30 s on Tier-2                                               | 5          | AZ-406, AZ-407, AZ-444 (forward)                                                                      | AZ-262 |
| AZ-431 | NFT-PERF-04 — Spoofing-promotion latency p95 ≤ 600 ms                                        | 3          | AZ-406, AZ-407, AZ-408                                                                                | AZ-262 |
| AZ-432 | NFT-RES-01 — IMU-only fallback drift bound                                                   | 3          | AZ-406, AZ-407, AZ-408                                                                                | AZ-262 |
| AZ-433 | NFT-RES-02 — Companion mid-flight reboot recovery                                            | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-434 | NFT-RES-03 — 100-iteration Monte Carlo statistical envelope                                  | 5          | AZ-406, AZ-407, AZ-408                                                                                | AZ-262 |
| AZ-435 | NFT-RES-04 — 35 s blackout-with-spoof full escalation ladder                                 | 3          | AZ-406, AZ-407, AZ-408, AZ-426                                                                        | AZ-262 |
| AZ-436 | NFT-SEC-01 — Cache-poisoning safety probability ≤ 1e-6/flight                                | 5          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-437 | NFT-SEC-02 + NFT-SEC-05 — No-egress + DNS-blackhole defense-in-depth                         | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-438 | NFT-SEC-03 — AP rejects unsigned/wrong-key/replayed messages                                 | 3          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-439 | NFT-SEC-04 — OpenCV CVE-2025-53644 + AddressSanitizer fuzz                                   | 5          | AZ-406, AZ-407, AZ-444 (forward, optional)                                                            | AZ-262 |
| AZ-440 | NFT-LIM-01 — Jetson memory budget                                                            | 3          | AZ-406, AZ-407, AZ-444 (forward)                                                                      | AZ-262 |
| AZ-441 | NFT-LIM-02 — 8h-extrapolated FDR size ≤ 50 GB                                                | 2          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-442 | NFT-LIM-03 + NFT-LIM-05 — Aggregate storage + thumbnail-log budget                           | 2          | AZ-406, AZ-407                                                                                        | AZ-262 |
| AZ-443 | NFT-LIM-04 — Jetson thermal envelope @ workstation ambient (AC-NEW-5 PARTIAL)                | 2          | AZ-406, AZ-407, AZ-444 (forward)                                                                      | AZ-262 |
| AZ-444 | Tier-2 Jetson harness wrapper — run-tier2.sh, ssh provisioning, systemd, ASan-fuzz           | 5          | AZ-406                                                                                                | AZ-262 |
| AZ-445 | CSV reporter + evidence bundler — per-NFR machine-readable outputs + traceability-status.json | 2         | AZ-406                                                                                                | AZ-262 |
| AZ-446 | CSV reporter refinements — trend-line + acceptance-band annotations + Monte Carlo CI         | 2          | AZ-406, AZ-445                                                                                        | AZ-262 |
| AZ-489 | C12 FlightsApiClient — fetch Flight from suite flights service + offline JSON fallback       | 3          | AZ-263, AZ-269, AZ-266, AZ-279, AZ-280                                                                | AZ-253 |
| AZ-490 | C5 set_takeoff_origin entrypoint — accept operator origin from C10 Manifest                  | 3          | AZ-263, AZ-269, AZ-266, AZ-272, AZ-273, AZ-279, AZ-381, AZ-383, AZ-384, AZ-385, AZ-386                | AZ-260 |
| AZ-507 | Hygiene — align module-layout.md cross-component import rules with AZ-270 lint               | 2          | AZ-263, AZ-270, AZ-321                                                                                | AZ-246 |
| AZ-508 | Hygiene — consolidate `_iso_ts_now` helpers into `helpers/iso_timestamps.py`                 | 2          | AZ-263                                                                                                | AZ-264 |

## Notes

- **Forward dependency on AZ-272** in AZ-267: the FDR Log Bridge task
  declares a forward dependency on the FdrRecord Schema (AZ-272). Both
  tasks ship together; the bridge ships against the published schema
  contract once AZ-272 is stable. This is the ONLY forward dependency
  in the plan — verified by inspection.
- **C4 ↔ C5 co-development (ADR-003)**: AZ-358 depends on AZ-381's
  concrete `ISam2GraphHandle`; AZ-383 depends on AZ-358's
  `PoseEstimate.covariance_mode`. Both tasks ship in lockstep — the
  shared `ISam2GraphHandle` Protocol stub is owned by AZ-355, the
  concrete impl by AZ-381.
- **C5 ↔ C8 co-development**: AZ-385 depends on C8 `GpsHealth`
  (AZ-391) and `QgcTelemetryAdapter` (AZ-397); AZ-388 depends on
  AZ-390 / AZ-397; AZ-396 depends on AZ-385. Each side ships against
  the AZ-390 Protocol contract until the consumer task lands.
- **AZ-401 (compose_replay)** intentionally depends on the C1–C5 epic
  IDs (AZ-254 … AZ-260) at the documentation level — concrete strategy
  task IDs flow in through each component's composition factory, not
  through this composition root directly.
- **E-BBT (AZ-262) forward dependencies on AZ-444 (Tier-2 harness)**:
  AZ-428, AZ-430, AZ-440, AZ-443 declare hard forward deps on AZ-444;
  AZ-439 declares an optional forward dep on AZ-444 (Tier-2 ASan-fuzz
  variant). These tasks ship in a tight loop with AZ-444 — the harness
  must exist before any Tier-2 NFT scenario can run. Tier-1 sub-cases
  of NFT-PERF-02, NFT-RES-*, NFT-SEC-*, NFT-LIM-02, NFT-LIM-03 do not
  require AZ-444 and remain independently runnable.
- **E-BBT scenario chains within AZ-262**:
  - AZ-413 (FT-P-05+06) depends on AZ-412 (FT-P-04) — FT-P-06 is a
    piggyback assertion over FT-P-04 + FT-P-05 evidence.
  - AZ-435 (NFT-RES-04) depends on AZ-426 (FT-N-04) — both consume
    `blackout_spoof.py`; NFT-RES-04 is the focused 35 s escalation
    scenario while FT-N-04 covers the 5 s / 15 s / 35 s ladder.
  - AZ-446 depends on AZ-445 — refinements layer over the bundler.
- **ADR-010 operator-origin path** (added 2026-05-11):
  - **AZ-489 (C12 FlightsApiClient)** is the new read-only Flight
    resolver for C12; it has no consumers inside its own epic but
    feeds AZ-326 (CLI flags) and AZ-328 (orchestrator phase 0) — both
    declare a hard backward dep on AZ-489. The CLI's `--flight-id` /
    `--flight-file` flags + AZ-328's flight-resolve phase 0 cannot
    land without it.
  - **AZ-490 (C5 set_takeoff_origin)** extends the AZ-381 Protocol
    with the pre-takeoff entrypoint, amends the AZ-385 source-label
    state machine with the third bounded-delta clause, and depends
    on AZ-381..AZ-386 (Protocol + factor adds + marginals + source
    label gate + ESKF baseline) plus AZ-272/273/279 for FDR + Vincenty.
    All deps are backward; AZ-490 ships after the C5 epic core lands.
  - **AZ-419 (FT-P-11 cold-start)** carries forward deps on both
    AZ-489 + AZ-490 — the blackbox cold-start scenario now exercises
    the operator-manifest primary path (needs both) AND the FC EKF
    secondary fallback (back-compat).
- **All E-BBT tasks depend on AZ-406 (test infrastructure)**; this is
  by design — AZ-406 is the foundation every blackbox test depends on
  (analogous to AZ-263 for the product side).
- **Hygiene PBIs from cumulative review batches 31-33** (added
  2026-05-13):
  - **AZ-507** (E-CC-CONF / AZ-246) — module-layout.md ↔ AZ-270 lint
    alignment. Depends on AZ-263 (structure), AZ-270 (the lint test
    + composition root), and AZ-321 (the engine_compiler whose
    `except Exception` is narrowed). All deps are backward and
    completed; AZ-507 can land in any future batch. NOT a gate on
    AZ-322 / AZ-337 (the cumulative review F2 notes hygiene defers).
  - **AZ-508** (E-CC-HELPERS / AZ-264) — `_iso_ts_now` helper
    consolidation. Depends on AZ-263 only. Stateless stdlib helper;
    no cross-component or runtime dependencies. NOT a gate on any
    future product task; can ship in a hygiene-only batch.

## Coverage Verification (Implementation Mode)

- **Every product interface in `architecture.md` has implementation task coverage.**
  - C1 `VioStrategy` → AZ-331 (Protocol) + AZ-332/333/334 (concrete)
  - C2 `VprStrategy` → AZ-336 (Protocol) + AZ-337/338/339/340 (concrete)
  - C2.5 `ReRankStrategy` → AZ-342 (Protocol) + AZ-343 (concrete)
  - C3 `CrossDomainMatcher` → AZ-344 (Protocol) + AZ-345/346/347 (concrete)
  - C3.5 `ConditionalRefiner` → AZ-348 (Protocol + Passthrough) + AZ-349 (AdHoP)
  - C4 `PoseEstimator` → AZ-355 (Protocol) + AZ-358/361 (concrete)
  - C5 `StateEstimator` → AZ-381 (Protocol) + AZ-382..AZ-389 (concrete) + AZ-490 (`set_takeoff_origin` entrypoint + bounded-delta gate)
  - C6 `TileStore` / `DescriptorIndex` → AZ-303 (Interfaces) + AZ-304/305/306/307/308
  - C7 `InferenceRuntime` → AZ-297 (Protocol) + AZ-298/299/300/301/302
  - C8 `FcAdapter` / `GcsAdapter` → AZ-390 (Protocols) + AZ-391..AZ-397
  - C10 Provisioning → AZ-321/322/323/324/325
  - C11 Tile Manager → AZ-316/317/318/319/320
  - C12 Operator Tooling → AZ-326/327/328/329/330 + AZ-489 (FlightsApiClient)
  - C13 FDR Writer → AZ-291..AZ-296

- **Cross-cutting product modules**:
  - Logging → AZ-266/267/268
  - Config + Composition Root → AZ-269/270/271
  - FDR Client → AZ-272..AZ-275
  - Shared helpers (IMU preintegrator, SE3, LightGlue runtime, WGS,
    SHA-256 sidecar, engine filename schema, RANSAC, descriptor
    normaliser) → AZ-276..AZ-283
  - Frame source + Clock → AZ-398
  - Replay sink → AZ-400
  - Replay composition + CLI + auto-sync → AZ-401/402/405

- **No unresolved `AZ-?` placeholders** in any task file (verified by grep on Step 4 close-out).

- **E-BBT (AZ-262 / blackbox tests) coverage** vs `traceability-matrix.md`:
  - **All 35 Covered ACs** map to ≥1 scenario task (AZ-409..AZ-443).
  - **All 3 PARTIAL ACs** carry the PARTIAL annotation in their pass
    criteria: AC-8.6 → AZ-423; AC-NEW-5 → AZ-443.
  - **All 3 NOT COVERED ACs** (AC-7.1, AC-7.2, RESTRICT-CAM-2) are
    handled by the conftest skip-rule embedded in AZ-406, not by
    a dedicated task.
  - **Fixture coverage**: 5 static fixtures (AZ-407) + 3 synthetic
    injectors (AZ-408) + cold-boot snapshot (AZ-407) cover every
    scenario's data needs.
  - **Tier-2-only scenarios**: AZ-428, AZ-430, AZ-440, AZ-443 (and
    optionally AZ-439's ASan-fuzz mode) all SKIP cleanly on Tier-1
    via the conftest tier-guard.
  - **Reporting**: AZ-445 + AZ-446 produce per-NFR JSONs,
    `traceability-status.json`, and `regression-baseline.json` for
    every scenario.

## Cycle Check

A static dependency-graph traversal (Kahn topological sort) visits all
142 nodes — no cycles. The 15 forward edges (dep ID > task ID) are all
declared, bounded, and documented:

- **AZ-267 → AZ-272** (FDR Log Bridge → FdrRecord Schema; shipped in
  lockstep).
- **AZ-298 → AZ-301**, **AZ-299 → AZ-301** (TensorRT / ONNX-RT runtimes
  → engine gate; runtime ships against the gate's published contract).
- **AZ-358 → AZ-381** (C4 OpenCV/GTSAM marginals → C5 SAM2 graph
  handle; ADR-003 co-development against the AZ-355 Protocol stub).
- **AZ-385 → AZ-391, AZ-397**, **AZ-388 → AZ-390, AZ-397** (C5 ↔ C8
  co-development; each side ships against the AZ-390 Protocol contract
  until the consumer task lands).
- **AZ-428, AZ-430, AZ-440, AZ-443 → AZ-444** (Tier-2 NFT scenarios
  → Tier-2 harness wrapper; AZ-439 carries the same forward dep
  optionally for the ASan-fuzz mode). AZ-444 is therefore scheduled
  as the first Tier-2 E-BBT deliverable; the dependent scenarios land
  on top of it.
- **AZ-326 → AZ-489, AZ-328 → AZ-489** (C12 CLI + orchestrator
  depend on the new C12 FlightsApiClient task added 2026-05-11; the
  client lands first inside the C12 epic and the CLI/orchestrator
  then plug it in).
- **AZ-419 → AZ-489, AZ-419 → AZ-490** (blackbox cold-start scenario
  forward-depends on both the C12 client + the new C5 entrypoint;
  the scenario lands after both product tasks).

The graph is therefore a strict DAG once these documented forward
edges are accounted for, and remains sortable by tracker ID modulo
those edges.
