From 576c2e13e3b35cbe56444dcbebb4809f649af725 Mon Sep 17 00:00:00 2001 From: Shay Date: Wed, 15 Jul 2026 19:48:18 -0700 Subject: [PATCH] ci: install locked dependency universe in all workflows (uv sync --locked) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause of the simultaneous lane-shas failures on PRs #46 and #47: workflows installed with unlocked 'uv pip install -e .' against floor-only specs (numpy>=1.26, ...) while the repo maintains uv.lock — so a PyPI release landing between runs shifts the runner's resolved set, and the byte-exact lane SHA pins move with it. Timeline: main lane run green at 23:40Z, both PR runs (diffs no lane executes) red after 00:02Z; the identical trees verify 9/9 locally against the locked venv, and 'uv lock --check' is clean. All six workflows now 'uv sync --locked' (--extra dev where [dev] was installed) — CI tests the locked universe, so lane pins can only move when code moves. Locked-sync also fails loudly on a stale lock instead of silently resolving fresh. Self-validating: this PR's own lane-shas run uses this branch's workflow. [Verification]: smoke suite passed locally (175 passed); lane repro on the failing PRs' tree: 9/9 pinned SHAs; uv lock --check clean. --- .github/workflows/contemplation.yml | 2 +- .github/workflows/full-pytest.yml | 2 +- .github/workflows/lane-shas.yml | 2 +- .github/workflows/nightly-full-pytest.yml | 2 +- .github/workflows/ratify-proposal.yml | 2 +- .github/workflows/smoke.yml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/contemplation.yml b/.github/workflows/contemplation.yml index e3a624e9..2face076 100644 --- a/.github/workflows/contemplation.yml +++ b/.github/workflows/contemplation.yml @@ -44,7 +44,7 @@ jobs: enable-cache: true - name: install dependencies - run: uv pip install -e ".[dev]" pyyaml + run: uv sync --locked --extra dev - name: run contemplation cycle id: run diff --git a/.github/workflows/full-pytest.yml b/.github/workflows/full-pytest.yml index 087ce13b..910eb078 100644 --- a/.github/workflows/full-pytest.yml +++ b/.github/workflows/full-pytest.yml @@ -53,7 +53,7 @@ jobs: - name: install dependencies run: | - uv pip install -e ".[dev]" pyyaml + uv sync --locked --extra dev - name: pytest (parallel, quarantine and slow excluded) env: diff --git a/.github/workflows/lane-shas.yml b/.github/workflows/lane-shas.yml index d0353253..9e979bd7 100644 --- a/.github/workflows/lane-shas.yml +++ b/.github/workflows/lane-shas.yml @@ -81,7 +81,7 @@ jobs: - name: install dependencies if: steps.paths.outputs.run == 'true' run: | - uv pip install -e . pyyaml pytest + uv sync --locked - name: verify lane SHAs if: steps.paths.outputs.run == 'true' diff --git a/.github/workflows/nightly-full-pytest.yml b/.github/workflows/nightly-full-pytest.yml index 1920e1fe..68c08d7e 100644 --- a/.github/workflows/nightly-full-pytest.yml +++ b/.github/workflows/nightly-full-pytest.yml @@ -50,7 +50,7 @@ jobs: - name: install dependencies run: | - uv pip install -e ".[dev]" pyyaml + uv sync --locked --extra dev - name: pytest (parallel, full suite, quarantine excluded) env: diff --git a/.github/workflows/ratify-proposal.yml b/.github/workflows/ratify-proposal.yml index c04a44da..a4a9643e 100644 --- a/.github/workflows/ratify-proposal.yml +++ b/.github/workflows/ratify-proposal.yml @@ -70,7 +70,7 @@ jobs: enable-cache: true - name: install dependencies - run: uv pip install -e ".[dev]" + run: uv sync --locked --extra dev - name: resolve review date id: date diff --git a/.github/workflows/smoke.yml b/.github/workflows/smoke.yml index acde38c1..bb052d5a 100644 --- a/.github/workflows/smoke.yml +++ b/.github/workflows/smoke.yml @@ -43,7 +43,7 @@ jobs: - name: install dependencies run: | - uv pip install -e ".[dev]" pyyaml + uv sync --locked --extra dev - name: pytest smoke suite env: