Repository navigation
fix(cli): refuse cascade sync while a server holds the memory root #526
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # CI is a thin wrapper over the Makefile — single source of truth for commands. | |
| # See docs/engineering.md and the Makefile for what each target does. | |
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| # Cancel superseded runs on the same ref to save CI minutes. | |
| concurrency: | |
| group: ci-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| lint: | |
| name: lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| # Full history: scripts/check_file_sizes.py diffs against the base | |
| # branch's merge base, which a shallow clone cannot resolve. | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v8.2.0 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: uv.lock | |
| - name: Set up Python | |
| run: uv python install 3.12 | |
| - name: Install dependencies (frozen) | |
| run: make install-deps | |
| - name: Lint (ruff + import-linter + repo gates + datetime + openapi drift) | |
| run: make lint | |
| unit: | |
| name: unit tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v8.2.0 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: uv.lock | |
| - name: Set up Python | |
| run: uv python install 3.12 | |
| - name: Install dependencies (frozen) | |
| run: make install-deps | |
| - name: Unit tests | |
| run: make test | |
| unit-py313: | |
| name: unit tests (3.13) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v8.2.0 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: uv.lock | |
| - name: Set up Python | |
| run: uv python install 3.13 | |
| - name: Install dependencies (frozen) | |
| run: make install-deps | |
| - name: Unit tests | |
| run: make test | |
| integration: | |
| name: integration tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v8.2.0 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: uv.lock | |
| - name: Set up Python | |
| run: uv python install 3.12 | |
| - name: Install dependencies (frozen) | |
| run: make install-deps | |
| - name: Integration tests | |
| run: make integration | |
| integration-py313: | |
| name: integration tests (3.13) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v8.2.0 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: uv.lock | |
| - name: Set up Python | |
| run: uv python install 3.13 | |
| - name: Install dependencies (frozen) | |
| run: make install-deps | |
| - name: Integration tests | |
| run: make integration | |
| integration-milvus: | |
| name: integration tests (Milvus 2.6) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v8.2.0 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: uv.lock | |
| - name: Set up Python | |
| run: uv python install 3.12 | |
| - name: Install dependencies (frozen) | |
| run: make install-deps | |
| - name: Start Milvus 2.6.22 | |
| run: | | |
| curl --fail --location --retry 3 \ | |
| --output /tmp/milvus-compose.yml \ | |
| https://github.com/milvus-io/milvus/releases/download/v2.6.22/milvus-standalone-docker-compose.yml | |
| # MinIO stopped publishing to Docker Hub (`minio/minio` now returns | |
| # "pull access denied"); the same tags live on quay.io, which is | |
| # where the etcd image in this compose file already comes from. | |
| sed -i 's#image: minio/minio:#image: quay.io/minio/minio:#' /tmp/milvus-compose.yml | |
| docker compose -f /tmp/milvus-compose.yml up -d | |
| for attempt in {1..60}; do | |
| if curl --fail --silent http://127.0.0.1:9091/healthz >/dev/null; then | |
| exit 0 | |
| fi | |
| sleep 2 | |
| done | |
| docker compose -f /tmp/milvus-compose.yml logs | |
| exit 1 | |
| - name: Milvus repository contract | |
| env: | |
| EVEROS_TEST_MILVUS_URI: http://127.0.0.1:19530 | |
| EVEROS_TEST_MILVUS_FULL_STARTUP: "1" | |
| run: uv run --frozen pytest tests/integration/test_milvus_remote.py -v | |
| - name: Milvus /get truncation telemetry | |
| env: | |
| EVEROS_TEST_MILVUS_URI: http://127.0.0.1:19530 | |
| run: >- | |
| uv run --frozen pytest | |
| tests/e2e/test_get_endpoint_e2e.py::test_get_truncates_above_max_fetch | |
| -v -k milvus | |
| # The contract tests above exercise the repository port directly. This | |
| # drives the same request path the application does -- /add, /flush, | |
| # cascade, every search method, /get -- against the remote backend, so a | |
| # break anywhere between the API and Milvus surfaces here rather than in | |
| # production. Deselecting the LanceDB half keeps the job to its subject. | |
| - name: Milvus end-to-end (tiered API suites) | |
| env: | |
| EVEROS_TEST_MILVUS_URI: http://127.0.0.1:19530 | |
| run: uv run --frozen pytest tests/integration/test_tiers -v -k milvus | |
| # The structural half of the port contract runs in the ordinary unit job | |
| # for both adapters. The behavioural half needs a server, so it only has | |
| # a backend to compare against here. | |
| - name: Derived-index port contract (both backends) | |
| env: | |
| EVEROS_TEST_MILVUS_URI: http://127.0.0.1:19530 | |
| run: uv run --frozen pytest tests/unit/test_infra/test_index_contract.py -v | |
| - name: Stop Milvus | |
| if: always() | |
| run: docker compose -f /tmp/milvus-compose.yml down -v | |
| package: | |
| name: package build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v8.2.0 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: uv.lock | |
| - name: Set up Python | |
| run: uv python install 3.12 | |
| - name: Build and smoke-test package | |
| run: make package |