Yuzviak
a2a9c2ca46
feat(02-05): create nightly.yml for sitl + e2e slow-test lanes
...
Scheduled at 03:00 UTC daily + workflow_dispatch.
- sitl job: pytest --collect-only -m sitl (scaffold; tests self-skip without
ARDUPILOT_SITL_HOST; real SITL containers remain in sitl.yml)
- e2e job: pytest -m 'e2e or e2e_slow' (soft-fail in Phase 2; datasets
self-skip via conftest fixtures; hard-fail enabled in Phase 6 / FIXTURE-01)
sitl.yml untouched per PATTERNS.md §4.3 item 3.
2026-05-11 18:33:04 +03:00
Yuzviak
2f360ec4ae
feat(02-05): rewrite ci.yml with per-marker jobs + ac-traceability gate
...
Replaces single 'test' job with 6 jobs per TEST-02 + AC-06:
- lint: ruff check (scripts/ added to scope)
- test-unit: pytest -m unit (Py3.11 + Py3.12 matrix)
- test-integration: pytest -m integration (Py3.11)
- test-blackbox: pytest -m blackbox (PR-only, Py3.11)
- ac-traceability: regenerate + git diff --exit-code + --check
- docker-build: build smoke test (needs test-unit + test-integration)
ac-traceability gate fails on: stale committed matrix, non-deferred orphan
AC, or unknown AC ID referenced in any test.
2026-05-11 18:32:36 +03:00
Yuzviak
97aa4d1cbe
ci: trigger workflow on PRs to stage* branches too
...
The comment above `on:` says "push and PR to main/dev/stage*" but the
pull_request trigger only listed [main, dev]. Result: PRs into stage
branches got no automated lint/test run — we noticed when PR #1
(into stage1) showed "no checks reported".
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-16 23:28:57 +03:00
Yuzviak
d0009f012b
fix(ci): remove --timeout flag (pytest-timeout not in dev deps)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-02 17:11:31 +03:00
Yuzviak
094895b21b
feat(phases 2-7): implement full GPS-denied navigation pipeline
...
Phase 2 — Visual Odometry:
- ORBVisualOdometry (dev/CI), CuVSLAMVisualOdometry (Jetson)
- TRTInferenceEngine (TensorRT FP16, conditional import)
- create_vo_backend() factory
Phase 3 — Satellite Matching + GPR:
- SatelliteDataManager: local z/x/y tiles, ESKF ±3σ tile selection
- GSD normalization (SAT-03), RANSAC inlier-ratio confidence (SAT-04)
- GlobalPlaceRecognition: Faiss index + numpy fallback
Phase 4 — MAVLink I/O:
- MAVLinkBridge: GPS_INPUT 15+ fields, IMU callback, 1Hz telemetry
- 3-consecutive-failure reloc request
- MockMAVConnection for CI
Phase 5 — Pipeline Wiring:
- ESKF wired into process_frame: VO update → satellite update
- CoordinateTransformer + SatelliteDataManager via DI
- MAVLink state push per frame (PIPE-07)
- Real pixel_to_gps via ray-ground projection (PIPE-06)
- GTSAM ISAM2 update when available (PIPE-03)
Phase 6 — Docker + CI:
- Multi-stage Dockerfile (python:3.11-slim)
- docker-compose.yml (dev), docker-compose.sitl.yml (ArduPilot SITL)
- GitHub Actions: ci.yml (lint+pytest+docker smoke), sitl.yml (nightly)
- tests/test_sitl_integration.py (8 tests, skip without SITL)
Phase 7 — Accuracy Validation:
- AccuracyBenchmark + SyntheticTrajectory
- AC-PERF-1: 80% within 50m ✅
- AC-PERF-2: 60% within 20m ✅
- AC-PERF-3: p95 latency < 400ms ✅
- AC-PERF-4: VO drift 1km < 100m ✅ (actual ~11m)
- scripts/benchmark_accuracy.py CLI
Tests: 195 passed / 8 skipped
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-02 17:00:41 +03:00
Oleksandr Bezdieniezhnykh
5b1739186e
Update README to reflect changes in test infrastructure organization and task decomposition workflow. Remove obsolete E2E test templates and clarify input specifications for integration tests. Enhance documentation for planning and implementation phases, including new directory structures and task management processes.
2026-03-18 23:55:57 +02:00