mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-23 13:01:12 +00:00
7f76acfe29
- 02-07-SUMMARY.md: log_schemas.py shape, test counts, AC-TRACEABILITY delta, E2E smoke notes, Phase 2 DoD checklist (9/10 checked, ROADMAP human action) - 02-PHASE-SUMMARY.md: Phase 2 capstone — 236 tests, 15 ACs covered, 39 declared, 10 hot-path structlog files, 3 boundary schemas, handoff notes for Phase 3
62 lines
2.8 KiB
Markdown
62 lines
2.8 KiB
Markdown
---
|
|
phase: 02-acceptance-criteria-test-taxonomy-observability-spine
|
|
plans_completed: 7
|
|
tags: [acceptance-criteria, test-taxonomy, structlog, pydantic, ci-pipeline, traceability]
|
|
---
|
|
|
|
# Phase 2: Acceptance Criteria, Test Taxonomy, Observability Spine — Phase Summary
|
|
|
|
## Objective
|
|
|
|
Establish the verification infrastructure that Phase 3+ depends on:
|
|
1. Formal 39-AC document with unambiguous pass/fail criteria
|
|
2. pytest marker taxonomy (6 markers: unit/integration/blackbox/perf/hardware/ac)
|
|
3. AC↔test traceability matrix + CI enforcement
|
|
4. structlog hot-path spine (10 files, frame_id propagation)
|
|
5. Pydantic v2 boundary-log schemas (3 models)
|
|
|
|
## Plans Completed
|
|
|
|
| Plan | Name | Key Deliverable |
|
|
|------|------|-----------------|
|
|
| 02-01 | AC Document Rewrite | 39 formal ACs in `_docs/00_problem/acceptance_criteria.md` |
|
|
| 02-02 | (not in scope / skipped) | — |
|
|
| 02-03 | Pytest Marker Taxonomy | 6 markers registered, 37 test files decorated |
|
|
| 02-04 | AC Traceability Script | `gen_ac_traceability.py`, `AC-TRACEABILITY.md`, `@pytest.mark.ac` on 7 files |
|
|
| 02-05 | CI Pipeline + Orphan Reconciliation | `ci.yml` per-marker jobs, `nightly.yml`, 21 orphan ACs annotated |
|
|
| 02-06 | structlog Spine | `logging_config.py`, 10 hot-path files switched, frame_id via contextvars |
|
|
| 02-07 | Boundary-Log Schemas + Final Gate | `log_schemas.py` (3 models), 20 tests, 236 total passing, gate green |
|
|
|
|
## Final State
|
|
|
|
- **Total tests:** 236 passing, 8 skipped (hardware/SITL skips expected)
|
|
- **ACs declared:** 39
|
|
- **ACs covered by tests:** 15 (non-deferred ACs with ≥1 test)
|
|
- **ACs deferred:** 25 (annotated with pending-phase-N in traceability matrix)
|
|
- **Hot-path structlog files:** 10
|
|
- **Boundary-log schemas:** 3 (MavlinkGpsInputEmitted, ApiRequestCompleted, AnchorDecision)
|
|
|
|
## Requirements Satisfied
|
|
|
|
| Req ID | Description | Evidence |
|
|
|--------|-------------|----------|
|
|
| AC-01 | AC document with formal criteria | 39 ACs in acceptance_criteria.md |
|
|
| AC-02 | Every non-deferred AC has ≥1 test | 15 ACs covered, 25 annotated-deferred |
|
|
| TEST-01 | pytest marker taxonomy defined | 6 markers in pyproject.toml |
|
|
| TEST-02 | Markers applied to all test files | 37 files with module-level pytestmark |
|
|
| TEST-03 | CI enforces per-marker lanes | ci.yml: unit/integration/blackbox/perf jobs |
|
|
| OBS-01 | structlog spine on hot path | 10 files + boundary schemas |
|
|
|
|
## Handoff to Phase 3
|
|
|
|
Phase 3 (Visual Odometry + AnchorVerifier) can begin with:
|
|
- Known-good measurement floor: 236 tests, 8 skipped
|
|
- AC-2.1b (anchor verification) has schema contract tests; Phase 3 adds integration
|
|
- `AnchorDecision` schema ready for Phase 3 AnchorVerifier wiring
|
|
- `merge_contextvars` propagation verified; orchestrator binds `frame_id` at frame entry
|
|
|
|
## ROADMAP.md Update (Human Action Required)
|
|
|
|
After merging Phase 2 branch:
|
|
- Update Phase 2 row: `Plans Complete: 7/7`, `Status: Done`
|