You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix the repository-wide Bundle format contract failure by making the existing setup-uv step the single Python-version owner and removing the stale reference to the deleted apps/protspace/.python-version file.
Description
Reproduction
Freshly fetched origin/main and confirmed the isolated worktree was exactly at fbbaefa1ff558bbea365572297cf976472a93c2e before branching.
Main push run 30459291713 checked out that exact SHA and failed in actions/setup-python@v6 before any project code ran:
The specified python version file at: apps/protspace/.python-version doesn't exist.
A local pre-fix validation extracted python-version-file: apps/protspace/.python-version from the workflow, checked the path, and deterministically exited 1 because it did not exist.
Root cause
The contract workflow began referencing apps/protspace/.python-version in dae249c9 on July 21. PR #382 (f93f9c6a) deliberately deleted that file on July 24 while standardizing repository Python workflows on explicit per-job setup-uv pins. The older contract branch then merged on July 29 without adapting its stale reference.
This is a branch-ordering/configuration integration defect: actions/setup-python receives a path that no longer exists on main, so the job terminates before installing dependencies or running the contract suite.
Why this fix is durable
The workflow already installs uv. Setting python-version: '3.12' on setup-uv binds UV_PYTHON, so both uv sync and the contract test's nested uv run --no-dev use the supported floor. Removing actions/setup-python avoids two competing interpreter-selection mechanisms.
Re-adding .python-version would reverse PR #382's deliberate repository convention and recreate an implicit shared version source. Comparable working workflows (protspace-ci.yml, protspace-publish.yml, and protspace-release.yml) pin Python explicitly through setup-uv; prep-ci.yml also pins 3.12 directly rather than using a version file.
Verification
Red/green configuration validation:
before: extracted version-file path was absent (exit 1)
after: no workflow contains a python-version-file YAML key, and the contract workflow's setup-uv pin extracts as 3.12
mise x actionlint@1.7.12 shellcheck@0.11.0 -- actionlint .github/workflows/bundle-contract.yml — exit 0
Parsed all 10 workflow YAML files successfully with Ruby's YAML parser
Does it solve the reported failure? Yes — bundle-contract.yml passed python-version-file: apps/protspace/.python-version to actions/setup-python@v6, but PR #382 deleted that file, so the job died during setup and every open PR showed a red "Bundle format contract" check. This PR drops the actions/setup-python step and moves the pin onto the astral-sh/setup-uv@v7 step already in the job as python-version: '3.12' — the same value the deleted file held, so the interpreter is unchanged. I confirmed no .python-version file remains anywhere in the tree and no python-version-file key remains in any of the 10 workflows; python-version on setup-uv is the mechanism protspace-ci, protspace-publish, protspace-release and protspace-future-python already use, and it sets UV_PYTHON, which the nested uv run --package protspace --no-dev --locked python in bundle.contract.test.ts inherits. All eight bundle-contract runs since the merge are green.
No blocking issues found. Checked correctness, issue coverage, reuse, simplification, efficiency, and repository conventions.
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
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TLDR
Fix the repository-wide
Bundle format contractfailure by making the existingsetup-uvstep the single Python-version owner and removing the stale reference to the deletedapps/protspace/.python-versionfile.Description
Reproduction
Freshly fetched
origin/mainand confirmed the isolated worktree was exactly atfbbaefa1ff558bbea365572297cf976472a93c2ebefore branching.Main push run 30459291713 checked out that exact SHA and failed in
actions/setup-python@v6before any project code ran:PRs fix(search): mark already-selected proteins in search suggestions #398 through fix(explore): preserve shape size across projection reloads #407 all reported the same failing
Bundle format contractcheck; representative PR fix(search): mark already-selected proteins in search suggestions #398 logs show the identical missing-file error.A local pre-fix validation extracted
python-version-file: apps/protspace/.python-versionfrom the workflow, checked the path, and deterministically exited 1 because it did not exist.Root cause
The contract workflow began referencing
apps/protspace/.python-versionindae249c9on July 21. PR #382 (f93f9c6a) deliberately deleted that file on July 24 while standardizing repository Python workflows on explicit per-jobsetup-uvpins. The older contract branch then merged on July 29 without adapting its stale reference.This is a branch-ordering/configuration integration defect:
actions/setup-pythonreceives a path that no longer exists on main, so the job terminates before installing dependencies or running the contract suite.Why this fix is durable
The workflow already installs uv. Setting
python-version: '3.12'onsetup-uvbindsUV_PYTHON, so bothuv syncand the contract test's nesteduv run --no-devuse the supported floor. Removingactions/setup-pythonavoids two competing interpreter-selection mechanisms.Re-adding
.python-versionwould reverse PR #382's deliberate repository convention and recreate an implicit shared version source. Comparable working workflows (protspace-ci.yml,protspace-publish.yml, andprotspace-release.yml) pin Python explicitly throughsetup-uv;prep-ci.ymlalso pins 3.12 directly rather than using a version file.Verification
python-version-fileYAML key, and the contract workflow'ssetup-uvpin extracts as3.12mise x actionlint@1.7.12 shellcheck@0.11.0 -- actionlint .github/workflows/bundle-contract.yml— exit 0UV_PYTHON=3.12 uv 0.12.0 sync --package protspace --no-dev --locked— exit 0, 58 packages checked/installedUV_PYTHON=3.12 uv run --package protspace --no-dev python ...— CPython 3.12.13 assertedpnpm install --frozen-lockfile— exit 0UV_PYTHON=3.12 pnpm test:contract— 1 file passed, 11/11 tests passedpnpm precommit— exit 0 before commit, in the commit hook, and again immediately before pushgit diff --check origin/main...HEAD— exit 0