[AZ-240] [AZ-241] [AZ-242] Refresh testability assessment

Record that the remediated runtime remains directly testable and
advance autodev to test decomposition.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Oleksandr Bezdieniezhnykh
2026-05-05 06:09:21 +03:00
parent 70f786f2d1
commit 6869aed602
2 changed files with 10 additions and 8 deletions
@@ -1,6 +1,6 @@
# Code Testability Assessment
**Date**: 2026-05-04
**Date**: 2026-05-05
**Autodev step**: Greenfield Step 8 — Code Testability Revision
**Outcome**: Code is testable — no changes needed
@@ -11,6 +11,7 @@
- Runtime source under `src/`
- Existing unit tests under `tests/`
- Product implementation report `_docs/03_implementation/implementation_report_product_runtime_cycle1.md`
- Product completeness report `_docs/03_implementation/implementation_completeness_cycle1_report.md`
## Testability Result
@@ -19,14 +20,16 @@ The implemented product runtime can support the planned tests without a testabil
- Runtime components expose public package-level APIs through `__init__.py`, `types.py`, and `interfaces.py`.
- Component behavior is expressed through data models and class/protocol boundaries that can be constructed directly in tests.
- External systems are represented as boundary objects or planned black-box fixtures, not hardwired network calls.
- No direct filesystem, environment, subprocess, socket, HTTP, global singleton, or wall-clock usage was found in `src/` that would block deterministic tests.
- VIO engine, local VPR descriptor index, and anchor matcher paths are injectable through protocol/class boundaries.
- The only runtime filesystem read found in `src/` is `LocalVprIndexPackage.from_json_file(package_path)`, which accepts a caller-supplied path and is directly testable with temporary fixture files.
- No direct environment, subprocess, socket, HTTP, global singleton, or non-configurable heavy dependency construction was found in `src/` that would block deterministic tests.
- Planned hardware, SITL, Jetson, and dataset dependencies belong in test harness tasks and can report `blocked` when prerequisites are unavailable.
## Scenario Review
| Scenario Area | Testability Assessment |
|---------------|------------------------|
| Unit/component tests | Current public classes and DTOs are directly constructible and already covered by 49 passing tests. |
| Unit/component tests | Current public classes and DTOs are directly constructible and already covered by 58 passing tests. |
| Black-box replay | The planned harness can drive public frame, telemetry, cache, MAVLink, status, and FDR boundaries without importing runtime internals. |
| VIO and anchor replay | Heavy BASALT, FAISS, and matcher dependencies can be represented by test harness fixtures or backend boundaries in test tasks. |
| SITL/MAVLink tests | The MAVLink/GCS gateway exposes validation and status behavior without requiring live hardware for unit-level coverage. |
@@ -47,9 +50,8 @@ The implemented product runtime can support the planned tests without a testabil
## Verification
- `.venv/bin/python -m black --check src tests e2e/replay` passed.
- `.venv/bin/python -m ruff check src tests e2e/replay` passed.
- `.venv/bin/python -m pytest` passed: 49 tests.
- `python3 -m pytest` passed: 58 tests.
- `python3 -m black ...` and `python3 -m ruff ...` could not run because those optional dev tool modules are not installed in the current interpreter.
## Next Step
+2 -2
View File
@@ -2,8 +2,8 @@
## Current Step
flow: greenfield
step: 8
name: Code Testability Revision
step: 9
name: Decompose Tests
status: not_started
tracker: jira
sub_step: