services: companion: extends: file: docker-compose.yml service: companion environment: LOG_LEVEL: INFO operator-orchestrator: extends: file: docker-compose.yml service: operator-orchestrator mock-sat: extends: file: docker-compose.yml service: mock-sat db: extends: file: docker-compose.yml service: db e2e-runner: build: context: . dockerfile: tests/e2e/Dockerfile image: gps-denied-onboard/e2e-runner:dev depends_on: companion: condition: service_healthy mock-sat: condition: service_healthy db: condition: service_healthy environment: # FullSystemConfig requires this full env set (see # src/gps_denied_onboard/config/loader.py:_check_required_env). # Values mirror the `companion` service in docker-compose.yml so # the subprocess invoked by the replay tests can resolve identically. GPS_DENIED_FC_PROFILE: ardupilot_plane GPS_DENIED_TIER: "1" DB_URL: postgresql://gps_denied:dev@db:5432/gps_denied SATELLITE_PROVIDER_URL: http://mock-sat:5100 COMPANION_URL: http://companion:8080 CAMERA_CALIBRATION_PATH: /opt/tests/fixtures/calibration/adti26.json LOG_LEVEL: INFO LOG_SINK: console INFERENCE_BACKEND: pytorch_fp16 FDR_PATH: /var/lib/gps-denied/fdr TILE_CACHE_PATH: /var/lib/gps-denied/tiles MAVLINK_SIGNING_KEY: /opt/tests/fixtures/mavlink_signing/dev_key # Track-1 bootstrap harness: enable the heavy replay-pipeline tests # in tests/e2e/replay/. AZ-602 / AZ-603 / AZ-604. RUN_REPLAY_E2E: "1" # NoopMavlinkTransport / JsonlReplaySink build flag — the binary # refuses to construct the replay transport without it (AZ-612). BUILD_REPLAY_SINK_JSONL: "ON" volumes: - ./tests:/opt/tests:ro # Derkachi fixture (~60 s clip) consumed by the replay e2e suite. # Mount path matches `tests/e2e/replay/conftest._derkachi_dir()`, # which resolves to /_docs/00_problem/input_data/... # where == /opt inside the container. - ./_docs/00_problem/input_data:/opt/_docs/00_problem/input_data:ro # Writable runtime dirs the SUT expects (FDR_PATH, TILE_CACHE_PATH). - fdr-data:/var/lib/gps-denied/fdr - tile-data:/var/lib/gps-denied/tiles volumes: db-data: {} fdr-data: {} tile-data: {}