mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 08:41:12 +00:00
[AZ-701] Fix Jetson e2e harness infrastructure blockers
- gtsam_isam2_estimator: shim for gtsam>=4.3a0 aarch64 pre-release where IncrementalFixedLagSmoother/FixedLagSmootherKeyTimestampMap moved from gtsam_unstable to gtsam - inference_factory: eager import of c7_inference package so register_component_block runs before config.components is read - docker-compose.test.jetson.yml: remove companion and operator-orchestrator (not needed by replay CLI tests and crash in test env due to AZ-618 live-mode deps); add db-migrate and tile-init setup-profile services for Alembic migrations and FAISS fixture provisioning; update e2e-runner depends_on to db only - scripts/mk_test_faiss_fixture.py: generate minimal HNSW32 FAISS descriptor index into the tile-data volume for the test harness Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -33,31 +33,66 @@
|
||||
# gps-denied client (AZ-691) lands.
|
||||
|
||||
services:
|
||||
companion:
|
||||
extends:
|
||||
file: docker-compose.yml
|
||||
service: companion
|
||||
environment:
|
||||
LOG_LEVEL: INFO
|
||||
# Jetson is the canonical test env (2026-05-20 policy); the FAISS
|
||||
# HNSW descriptor index is required by c2_vpr in this binary.
|
||||
# Without this flag airborne_bootstrap fails at
|
||||
# _build_c6_descriptor_index → RuntimeNotAvailableError. faiss-cpu
|
||||
# is installed via the [dev] extra; the gate is build-flag, not
|
||||
# wheel availability.
|
||||
BUILD_FAISS_INDEX: "ON"
|
||||
# ------------------------------------------------------------------
|
||||
# Init services (profiles: [setup]) — NOT started by the default
|
||||
# `docker compose up`. They are invoked explicitly as one-shot jobs
|
||||
# via `docker compose run --rm --profile setup <service>` before the
|
||||
# main harness run:
|
||||
#
|
||||
# 1. db-migrate — applies Alembic migrations so companion's
|
||||
# FreshnessGate / PostgresFilesystemStore find their tables.
|
||||
# (AZ-618 ordering gap: build_pre_constructed queries the DB
|
||||
# before the composition root can call apply_migrations.)
|
||||
#
|
||||
# 2. tile-init — writes a minimal valid HNSW32 FAISS descriptor
|
||||
# index into the tile-data volume so FaissDescriptorIndex._load()
|
||||
# succeeds during build_pre_constructed.
|
||||
# (AZ-618 gap: the production provisioning pipeline normally
|
||||
# writes the index; in the test harness it must pre-exist.)
|
||||
#
|
||||
# They are in profile "setup" so they do not participate in the
|
||||
# default `docker compose up` and do not trip --abort-on-container-exit.
|
||||
# ------------------------------------------------------------------
|
||||
db-migrate:
|
||||
profiles: ["setup"]
|
||||
image: gps-denied-onboard/e2e-runner:jetson
|
||||
entrypoint: ["alembic"]
|
||||
command: ["upgrade", "head"]
|
||||
working_dir: /opt/project
|
||||
volumes:
|
||||
- .:/opt/project:ro
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
restart: "no"
|
||||
|
||||
operator-orchestrator:
|
||||
extends:
|
||||
file: docker-compose.yml
|
||||
service: operator-orchestrator
|
||||
environment:
|
||||
BUILD_FAISS_INDEX: "ON"
|
||||
tile-init:
|
||||
profiles: ["setup"]
|
||||
image: gps-denied-onboard/e2e-runner:jetson
|
||||
entrypoint: ["python3"]
|
||||
command: ["/opt/project/scripts/mk_test_faiss_fixture.py"]
|
||||
volumes:
|
||||
- .:/opt/project:ro
|
||||
- tile-data:/var/lib/gps-denied/tiles
|
||||
restart: "no"
|
||||
|
||||
mock-sat:
|
||||
extends:
|
||||
file: docker-compose.yml
|
||||
service: mock-sat
|
||||
# companion and operator-orchestrator are intentionally absent from
|
||||
# the Jetson e2e test harness.
|
||||
#
|
||||
# Every test in tests/e2e/replay/ invokes the ``gps-denied-replay``
|
||||
# console-script directly as a subprocess and does not call the
|
||||
# companion or operator-orchestrator HTTP APIs. Including either
|
||||
# service caused the harness to abort before any test could run:
|
||||
#
|
||||
# * companion crashes at startup because live-mode requires a
|
||||
# production-provisioned C7 inference engine (PyTorch FP16 or
|
||||
# TensorRT) that is absent from the test environment. This is the
|
||||
# pre-existing AZ-618 gap (build_pre_constructed fails before the
|
||||
# composition root can apply_migrations + engine artifacts).
|
||||
# * operator-orchestrator crashed for the same C7 inference reason.
|
||||
#
|
||||
# When the AZ-618 epic ships the full airborne boot-up in a sandboxed
|
||||
# environment (Phase E / engine stubs), companion can be re-added here.
|
||||
|
||||
db:
|
||||
extends:
|
||||
@@ -81,10 +116,6 @@ services:
|
||||
count: all
|
||||
capabilities: [gpu]
|
||||
depends_on:
|
||||
companion:
|
||||
condition: service_healthy
|
||||
mock-sat:
|
||||
condition: service_healthy
|
||||
db:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
@@ -96,6 +127,9 @@ services:
|
||||
# execute. This is the WHOLE POINT of the Jetson harness.
|
||||
GPS_DENIED_TIER: "2"
|
||||
DB_URL: postgresql://gps_denied:dev@db:5432/gps_denied
|
||||
# SATELLITE_PROVIDER_URL / COMPANION_URL are set but not used by
|
||||
# the replay CLI tests (gps-denied-replay runs as a subprocess and
|
||||
# does not call the companion or satellite-provider HTTP APIs).
|
||||
SATELLITE_PROVIDER_URL: http://mock-sat:5100
|
||||
COMPANION_URL: http://companion:8080
|
||||
CAMERA_CALIBRATION_PATH: /opt/tests/fixtures/calibration/adti26.json
|
||||
|
||||
Reference in New Issue
Block a user