Commit Graph

107 Commits

Author SHA1 Message Date
Yuzviak c26aa3bcaf test(e2e): add EuRoCAdapter with local fabricated fixture tests
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:53:17 +03:00
Yuzviak 669d8e5653 test(e2e): add SHA256-verified dataset downloader + EuRoC registry entry
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:51:06 +03:00
Yuzviak 95accb8f7a test(e2e): implement harness skeleton + synthetic smoke test + pytest markers
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:48:41 +03:00
Yuzviak 568939cd35 test(e2e): add trajectory RMSE/ATE/RPE metrics
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:45:28 +03:00
Yuzviak 337176eb70 test(e2e): add SyntheticAdapter for harness self-tests
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:43:50 +03:00
Yuzviak 2f87621926 test(e2e): add DatasetAdapter base interface + capability dataclass
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:41:58 +03:00
Yuzviak a2620aee6c test(e2e): scaffold testing subpackage and tests/e2e/
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:40:25 +03:00
Yuzviak 6ff14a1a7d chore: import .claude command skills, CLAUDE.md, .gitignore, next_steps.md
- Vendor local .claude/ command skills (autopilot, plan, implement, etc.)
- Add CLAUDE.md pointing slash commands to .claude/commands/*/SKILL.md
- Untrack docs-Lokal/ and ignore .planning/ for local-only planning docs
- Include next_steps.md pulled from upstream

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 21:39:43 +03:00
Oleksandr Bezdieniezhnykh f7c8154a6f short audit 2026-04-10 03:54:12 +03:00
Yuzviak 78dcf7b4e7 fix: post-audit — runtime bugs, functional gaps, docs, hardening
Phase A — Runtime bugs:
  - SSE: add push_event() method to SSEEventStreamer (was missing, masked by mocks)
  - MAVLink: satellites_visible=10 (was 0, triggers ArduPilot failsafe)
  - MAVLink: horiz_accuracy=sqrt(P[0,0]+P[1,1]) per spec (was sqrt(avg))
  - MAVLink: MEDIUM confidence → fix_type=3 per solution.md (was 2)

Phase B — Functional gaps:
  - handle_user_fix() injects operator GPS into ESKF with noise=500m
  - app.py uses create_vo_backend() factory (was hardcoded SequentialVO)
  - ESKF: Mahalanobis gating on satellite updates (rejects outliers >5σ)
  - ESKF: public accessors (position, quaternion, covariance, last_timestamp)
  - Processor: no more private ESKF field access

Phase C — Documentation:
  - README: correct API endpoints, CLI command, 40+ env vars documented
  - Dockerfile: ENV prefixes match pydantic-settings (DB_, SATELLITE_, MAVLINK_)
  - tech_stack.md marked ARCHIVED (contradicts solution.md)

Phase D — Hardening:
  - JWT auth middleware (AUTH_ENABLED=false default, verify_token on /flights)
  - TLS config env vars (AUTH_SSL_CERTFILE, AUTH_SSL_KEYFILE)
  - SHA-256 tile manifest verification in SatelliteDataManager
  - AuthConfig, ESKFSettings, MAVLinkConfig, SatelliteConfig in config.py

Also: conftest.py shared fixtures, download_tiles.py, convert_to_trt.py scripts,
config wiring into app.py lifespan, config-driven ESKF, calculate_precise_angle fix.

Tests: 196 passed / 8 skipped. Ruff clean.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 18:27:35 +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 dd9835c0cd fix(lint): resolve all ruff errors — trailing whitespace, E501, F401
- ruff --fix: removed trailing whitespace (W293), sorted imports (I001)
- Manual: broke long lines (E501) in eskf, rotation, vo, gpr, metric, pipeline, rotation tests
- Removed unused imports (F401) in models.py, schemas/__init__.py
- pyproject.toml: line-length 100→120, E501 ignore for abstract interfaces

ruff check: 0 errors. pytest: 195 passed / 8 skipped.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-02 17:09:47 +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
Yuzviak a15bef5c01 docs(phase-01): complete Phase 1 — ESKF Core execution
Phase 1 status: Complete (3/3 plans, 35/35 tests)
- ESKF-01: 15-state IMU prediction ✓
- ESKF-02: VO measurement update ✓
- ESKF-03: Satellite measurement update ✓
- ESKF-04: GPS initialization ✓
- ESKF-05: Confidence tier computation ✓
- ESKF-06: Coordinate chain (pixel→GPS→pixel) ✓

Next: Phase 2 — Visual Odometry Pipeline

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:53:47 +03:00
Yuzviak ba00065e1d docs(phase-01): add test summary for plan 01-03
35 tests pass covering ESKF-01..06 (initialization, IMU prediction,
VO/satellite updates, confidence tiers, coordinate chain).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:53:18 +03:00
Yuzviak 2e5436a6c7 feat(tests): add comprehensive ESKF + coordinate chain tests (ESKF-01..06)
test_eskf.py: 18 tests covering initialization, IMU prediction, VO/satellite
updates, confidence tiers, and full fusion integration.
test_coordinates.py: 17 new tests for K matrix, ray-ground intersection,
pixel-GPS roundtrips, and cv2.perspectiveTransform homography.

All 35 tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:52:58 +03:00
Yuzviak dccadd4bf4 feat(coordinates): implement real pixel-to-GPS projection chain (ESKF-06)
Replace FAKE Math stubs with:
- K^-1 unprojection (camera intrinsics)
- R_cam_body rotation (nadir-pointing camera)
- Quaternion body-to-ENU rotation
- Ray-ground intersection at altitude
- cv2.perspectiveTransform for homography

gps_to_pixel is the exact inverse. Backward compatible defaults.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:48:22 +03:00
Yuzviak 9d5337ad72 feat(eskf): implement 15-state ESKF core algorithm (ESKF-01..05)
IMU prediction (F/Q matrices, bias propagation), VO measurement
update, satellite measurement update, GPS initialization, and
confidence tier computation. NumPy only, ENU convention.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:38:47 +03:00
Yuzviak 57c7a6b80a feat(eskf): add ESKF schema contracts (ESKF-01, ESKF-04, ESKF-05)
ConfidenceTier, IMUMeasurement, ESKFConfig, ESKFState Pydantic models.
Re-exported from schemas/__init__.py.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 23:37:14 +03:00
Yuzviak bf9bef19c8 docs(01-eskf-core): create phase plan — 3 plans in 2 waves 2026-04-01 22:11:57 +03:00
Yuzviak d2b431f17f docs: add project STATE.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 20:53:01 +03:00
Yuzviak 659050f20b docs: add requirements and roadmap
36 v1 requirements across 6 categories (ESKF, VO, SAT, GPR, MAV, PIPE, TEST).
7-phase roadmap ordered by dependency: ESKF → VO → Satellite → MAVLink → Pipeline → SITL → Validation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 20:52:42 +03:00
Yuzviak 06f9ccd28f chore: add project config 2026-04-01 20:48:56 +03:00
Yuzviak b3d2f8e5a2 docs: initialize project 2026-04-01 20:48:56 +03:00
Yuzviak 2dd60a0e37 Add codebase map to .planning/codebase/
7 structured documents covering stack, integrations, architecture,
structure, conventions, testing, and concerns.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 20:26:52 +03:00
Yuzviak 91047c5f19 Merge branch 'dev' into stage1 2026-04-01 20:14:22 +03:00
Oleksandr Bezdieniezhnykh 531a1301d5 Revise skills documentation to incorporate updated directory structure and terminology. Replace references to integration tests with blackbox tests in SKILL.md files and templates. Adjust paths in planning and deployment documentation to align with the new _docs/02_document/ structure, ensuring consistency and clarity throughout the documentation. 2026-03-25 06:35:41 +02:00
Oleksandr Bezdieniezhnykh 1c6e8f47b1 Update skills documentation to reflect changes in directory structure and terminology. Replace references to integration tests with blackbox tests across various SKILL.md files and templates. Revise paths in planning and deployment documentation to align with the updated _docs/02_document/ structure. Enhance clarity in task management processes and ensure consistency in terminology throughout the documentation. 2026-03-25 06:08:05 +02:00
Oleksandr Bezdieniezhnykh e720a949a8 Update documentation for skills and templates to reflect new directory structure and terminology changes. Replace references to integration tests with blackbox tests across various SKILL.md files and templates. Revise paths in planning and deployment documentation to align with the updated _docs/02_document/ structure. Enhance clarity in task management processes and ensure consistency in terminology throughout the documentation. 2026-03-25 06:07:21 +02:00
Oleksandr Bezdieniezhnykh b9ea2c1ae6 Revise UAV frame material research documentation to focus on material comparison between S2 fiberglass with carbon stiffeners and pure GFRP. Update question decomposition, source registry, fact cards, and comparison framework to reflect new insights on radio and radar transparency, impact survivability, and operational implications. Enhance reasoning chain and validation log with detailed analysis and real-world validation scenarios. 2026-03-25 05:51:19 +02:00
Yuzviak ca327034c0 fix: P0+P1 audit — memory leak, hardcoded camera/GPS, lifespan init, background processing, batch validation, ABC interfaces 2026-03-22 23:35:12 +02:00
Yuzviak 8649d13a78 docs: stage12 — Comprehensive README, full project documentation 2026-03-22 23:20:49 +02:00
Yuzviak 766cef1514 feat: stage11 — Acceptance tests & performance benchmarks (80 tests) 2026-03-22 23:18:40 +02:00
Yuzviak c86cdc2e82 feat: stage10 — Full processing cycle with State Machine 2026-03-22 23:14:33 +02:00
Yuzviak 74aa6454b8 feat: stage9 — Factor Graph and Chunks 2026-03-22 23:10:19 +02:00
Yuzviak 905d6992de feat: stage8 — Global Place Recognition and Metric Refinement 2026-03-22 23:03:54 +02:00
Yuzviak 058ed315dd feat: stage7 — Model Manager (F16) and Sequential VO (F07) 2026-03-22 22:59:55 +02:00
Yuzviak 9ef046d623 feat: stage6 — Image Pipeline (F05) and Rotation Manager (F06) 2026-03-22 22:51:00 +02:00
Yuzviak a2fb9ab404 feat: stage5 — Satellite tiles (F04) and Coordinates (F13) 2026-03-22 22:44:12 +02:00
Yuzviak d5b6925a14 feat: stage4 — SSE event streamer and ResultManager 2026-03-22 22:37:50 +02:00
Yuzviak f09061dd02 feat: stage3 — REST API endpoints and dummy FlightProcessor 2026-03-22 22:32:20 +02:00
Yuzviak e47274bcbd feat: stage2 — SQLite DB layer (ORM, async engine, repository, cascade delete, 9 DB tests) 2026-03-22 22:25:44 +02:00
Yuzviak 445f3bd099 feat: stage1 — domain schemas, SSE events, pydantic-settings config 2026-03-22 22:18:50 +02:00
Yuzviak 6ba883f4d6 feat: stage0 — init Python package, FastAPI health endpoint, tests 2026-03-22 22:10:09 +02:00
Yuzviak 6a48dd29fd docs: integrate LOCAL_DECISIONS into LOCAL_EXECUTION_PLAN 2026-03-22 21:47:38 +02:00
Oleksandr Bezdieniezhnykh 27febff23c Enhance research documentation for UAV frame materials and reliability assessment. Update SKILL.md with new guidelines for internet search depth and multi-perspective analysis. Revise quality checklists to include comprehensive search criteria. Improve source tiering with emphasis on broad and cross-domain searches. Refine solution draft and reasoning chain to focus on reliability comparisons between VTOL and catapult+parachute systems. 2026-03-21 18:40:58 +02:00
Oleksandr Bezdieniezhnykh f70d701979 Update deployment skill documentation to reflect new 7-step workflow and directory structure. Enhance README with detailed usage instructions for the autopilot feature and clarify skill descriptions. Adjust paths for deployment templates to align with the updated documentation structure. 2026-03-19 17:05:59 +02:00
Oleksandr Bezdieniezhnykh 05411d19b8 Refactor README to streamline project workflows and enhance clarity. Update sections for BUILD, SHIP, and EVOLVE phases, clarifying task specifications and output directories. Remove outdated rollback command documentation and improve the structure of the retrospective skill documentation. 2026-03-19 13:08:27 +02:00
Oleksandr Bezdieniezhnykh cfd09c79e1 Refactor README and command documentation to streamline deployment and CI/CD processes. Consolidate deployment strategies and remove obsolete commands related to CI/CD and observability. Enhance task decomposition workflow by adding data model and deployment planning sections, and update directory structures for improved clarity. 2026-03-19 12:10:11 +02: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