- Move pytestmark after all imports in 35 test files (E402: not-at-top)
- Add TYPE_CHECKING guard for FlightProcessor in composition.py (F821)
- Sort import blocks in src/ and tests/ (I001 auto-fix via ruff --fix)
- ruff check src/ tests/ now exits 0 with no errors
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add pytestmark = [pytest.mark.<category>] to all 23 root test files and 14 e2e test files
- Marker distribution: 22 unit, 7 integration, 1 blackbox, 1 sitl, 5 e2e + 2 e2e integration
- Add import pytest to test_models.py, test_download.py, test_synthetic_adapter.py (were missing)
- Convert test_sitl_integration.py's bare pytestmark to list form preserving skipif guard
- Union of all 5 markers = 298/298 = 100% coverage; 216 tests pass with --strict-markers
GlobalPlaceRecognition already implements AnyLoc-VLAD-DINOv2 (existing code).
This change makes the sprint 1 GPR technology selection explicit:
- Expand class docstring with selection rationale vs NetVLAD / SP+LG
- Document INT8 quantization as known-broken for ViT on Jetson
- Reference design doc §2.3 and stage2 backlog
- Add two marker tests asserting 4096-d descriptor + DINOv2 engine name
No behavioral change — existing Mock/TRT path unchanged.
Ref: docs/superpowers/specs/2026-04-18-oss-stack-tech-audit-design.md §2.3
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>