diff --git a/.github/workflows/spec_zero.yml b/.github/workflows/spec_zero.yml
index 6a45f2876b6..73a1c6174f3 100644
--- a/.github/workflows/spec_zero.yml
+++ b/.github/workflows/spec_zero.yml
@@ -60,3 +60,9 @@ jobs:
PR_NUM=$(gh pr create --base main --head spec_zero --title "MAINT: Update dependency specifiers" --body "Created by spec_zero [GitHub action](https://github.com/mne-tools/mne-python/actions/runs/${{ github.run_id }}).
*Adjustments may need to be made to shims in \`mne/fixes.py\` in this or another PR. \`git grep TODO VERSION\` is a good starting point for finding potential updates.*" --label "no-changelog-entry-needed")
echo "Opened https://github.com/mne-tools/mne-python/pull/${PR_NUM}" >> $GITHUB_STEP_SUMMARY
if: steps.status.outputs.dirty == 'true'
+ # TODO add one or more steps here to (re)create the lockfile based on the pins
+ # found in pyproject.toml. For now, any dependency that has a >= pin should
+ # become an == pin, and all other pins should be unchanged. Don't forget to
+ # pin Python version based on the `requires-python` field. Ideally, this step
+ # should only run if the pins in pyproject.toml have changed (e.g., see how
+ # we use "dirty" above to make the "Create PR" step conditional).
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 507bf4ebfb1..45b31234f68 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -152,7 +152,10 @@ jobs:
python=${{ env.PYTHON_VERSION }}
-v
if: ${{ !startswith(matrix.kind, 'pip') }}
+ # TODO this ↑↑↑ will include matrix.kind == 'old' but we no longer want it to
timeout-minutes: 20
+ # TODO add a step here to install uv or pixi using their provided action
+ # it should only happen for matrix.kind == 'old'
- run: bash ./tools/github_actions_dependencies.sh
# Minimal commands on Linux (macOS stalls)
- run: bash ./tools/get_minimal_commands.sh
diff --git a/tools/github_actions_dependencies.sh b/tools/github_actions_dependencies.sh
index f9a60080f4b..50dc24d5af9 100755
--- a/tools/github_actions_dependencies.sh
+++ b/tools/github_actions_dependencies.sh
@@ -27,6 +27,8 @@ if [ ! -z "$CONDA_ENV" ]; then
GROUP="test_extra"
EXTRAS="[hdf5]"
fi
+# TODO add a conditional branch here, that uses uv/pixi to recreate the "old" env
+# from its lockfile, activate the env, and exit the bash script
elif [[ "${MNE_CI_KIND}" == "pip" ]]; then
GROUP="test_extra"
EXTRAS="[full-pyside6]"
diff --git a/tools/github_actions_env_vars.sh b/tools/github_actions_env_vars.sh
index 9f424ae5f48..28326994b24 100755
--- a/tools/github_actions_env_vars.sh
+++ b/tools/github_actions_env_vars.sh
@@ -15,6 +15,8 @@ if [[ "$MNE_CI_KIND" == "pip"* ]]; then
fi
else # conda-like
echo "Setting conda env vars for $MNE_CI_KIND"
+ # TODO pull this ↓↓↓ conditional branch out of its parent "else" clause, and
+ # adjust so it no longer sets a CONDA_ENV environment variable
if [[ "$MNE_CI_KIND" == "old" ]]; then
echo "CONDA_ENV=tools/environment_old.yml" | tee -a $GITHUB_ENV
echo "MNE_IGNORE_WARNINGS_IN_TESTS=true" | tee -a $GITHUB_ENV