[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>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-19 11:02:01 +03:00
parent f7d6cb4a3a
commit bc40ea7300
235 changed files with 12585 additions and 15097 deletions
@@ -0,0 +1,32 @@
{
"$schema": "./expected_detections.schema.json",
"_meta": {
"fixture_version": "0.1.0-placeholder",
"video": "sample.mp4",
"video_sha256": "TBD-after-fixture-recording",
"model": {
"_comment": "Pinned model + classes that detections must run when this baseline applies. Refresh this block (and counts/bboxes below) whenever detections ships a new model.",
"name": "TBD",
"revision": "TBD",
"classes_source": "annotations/src/Database/DatabaseMigrator.cs (ids 0..18)"
},
"tolerance": {
"_comment": "Spec asserts ranges, not exact values. INT8 calibration drift can move pixel positions by a few units; absolute count can drift by ±1 across re-runs of the same engine on the same Jetson.",
"count_delta": 1,
"bbox_iou_min": 0.8,
"confidence_delta": 0.1
}
},
"expected": {
"total_annotations": 0,
"by_class": [
{
"class_id": 0,
"class_name": "ArmorVehicle",
"count": 0,
"bbox_samples": []
}
],
"_placeholder_note": "Replace this block with the real baseline once sample.mp4 is recorded. Each entry under `by_class` carries: class_id, class_name (must match detection_classes.name), count, and bbox_samples (an array of {time_sec, center_x, center_y, width, height, confidence} entries the spec uses for IoU comparison)."
}
}
@@ -0,0 +1,66 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Suite e2e expected detections baseline",
"type": "object",
"required": ["_meta", "expected"],
"properties": {
"$schema": { "type": "string" },
"_meta": {
"type": "object",
"required": ["fixture_version", "video", "video_sha256", "model", "tolerance"],
"properties": {
"fixture_version": { "type": "string" },
"video": { "type": "string" },
"video_sha256": { "type": "string" },
"model": {
"type": "object",
"required": ["name", "revision", "classes_source"],
"additionalProperties": true
},
"tolerance": {
"type": "object",
"required": ["count_delta", "bbox_iou_min", "confidence_delta"],
"properties": {
"count_delta": { "type": "integer", "minimum": 0 },
"bbox_iou_min": { "type": "number", "minimum": 0, "maximum": 1 },
"confidence_delta": { "type": "number", "minimum": 0, "maximum": 1 }
}
}
}
},
"expected": {
"type": "object",
"required": ["total_annotations", "by_class"],
"properties": {
"total_annotations": { "type": "integer", "minimum": 0 },
"by_class": {
"type": "array",
"items": {
"type": "object",
"required": ["class_id", "class_name", "count"],
"properties": {
"class_id": { "type": "integer", "minimum": 0 },
"class_name": { "type": "string" },
"count": { "type": "integer", "minimum": 0 },
"bbox_samples": {
"type": "array",
"items": {
"type": "object",
"required": ["time_sec", "center_x", "center_y", "width", "height"],
"properties": {
"time_sec": { "type": "number", "minimum": 0 },
"center_x": { "type": "number" },
"center_y": { "type": "number" },
"width": { "type": "number", "minimum": 0 },
"height": { "type": "number", "minimum": 0 },
"confidence": { "type": "number", "minimum": 0, "maximum": 1 }
}
}
}
}
}
}
}
}
}
}