mirror of
https://github.com/azaion/autopilot.git
synced 2026-06-21 19:11:10 +00:00
[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:
@@ -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 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user