# Traceability Matrix

## Acceptance Criteria Coverage

| AC / Restriction | Test IDs | Coverage |
|------------------|----------|----------|
| Dataset split 70/20/10 | BT-DSF-01, RL-DSF-01 | Full |
| Dataset directory structure | BT-DSF-02 | Full |
| Dataset integrity (no data loss) | BT-DSF-03, RL-DSF-02 | Full |
| Corrupted label filtering | BT-DSF-04, BT-LBL-01 to BT-LBL-05 | Full |
| AES-256-CBC encryption | BT-ENC-01 to BT-ENC-06, ST-ENC-01, ST-ENC-02 | Full |
| Model encryption roundtrip | BT-ENC-02 | Full |
| Model split ≤3KB or 20% | BT-SPL-01, BT-SPL-02 | Full |
| 17 base classes | BT-CLS-01 | Full |
| 3 weather modes (Norm/Wint/Night) | BT-CLS-02 | Full |
| 80 total class slots | BT-CLS-03, RL-CLS-01 | Full |
| YAML generation (nc: 80) | BT-CLS-03 | Full |
| Hardware hash determinism | BT-HSH-01 to BT-HSH-03, ST-HSH-01, ST-HSH-02 | Full |
| Hardware-bound API encryption | ST-HSH-03, ST-HSH-04 | Full |
| ONNX inference loads model | BT-INF-01 | Full |
| ONNX inference returns detections | BT-INF-02, BT-INF-03 | Full |
| NMS overlap removal (IoU 0.3) | BT-NMS-01, BT-NMS-02, BT-NMS-03 | Full |
| Annotation message parsing | BT-AQM-01 to BT-AQM-04, RT-AQM-01 | Full |
| Encryption size overhead bounded | RL-ENC-01 | Full |
| Static model encryption key | ST-ENC-03 | Full |
| Random IV per encryption | ST-ENC-01 | Full |

## Removed (augmentation now built into YOLO training)

The following tests were removed because external augmentation (`augmentation.py`) is no longer part of the training pipeline. YOLO's built-in augmentation replaces it.

| Removed Test IDs | Reason |
|-------------------|--------|
| BT-AUG-01 to BT-AUG-08 | External augmentation replaced by YOLO built-in |
| PT-AUG-01, PT-AUG-02 | Augmentation performance no longer relevant |
| RT-AUG-01 to RT-AUG-03 | Augmentation resilience no longer relevant |
| RL-AUG-01 | Augmentation resource limits no longer relevant |

## Uncovered (Require External Services)

| AC / Restriction | Reason |
|------------------|--------|
| TensorRT inference (54s for 200s video) | Requires NVIDIA GPU + TensorRT runtime |
| API upload/download with JWT auth | Requires live Azaion API |
| CDN upload/download (S3) | Requires live S3-compatible CDN |
| Queue offset persistence | Requires live RabbitMQ Streams |
| Auto-relogin on 401/403 | Requires live Azaion API |
| Frame sampling every 4th frame | Requires video file (fixture not provided) |
| Confidence threshold 0.3 filtering | Partially covered by BT-INF-03 (validates range, not exact threshold) |

## Summary

| Metric | Value |
|--------|-------|
| Total AC + Restrictions | 27 |
| Covered by tests | 20 |
| Uncovered (external deps) | 7 |
| **Coverage** | **74.1%** |

## Test Count Summary

| Category | Count |
|----------|-------|
| Blackbox tests | 21 |
| Performance tests | 3 |
| Resilience tests | 3 |
| Security tests | 7 |
| Resource limit tests | 4 |
| **Total** | **38** |
