fix/Env-picks-newest-python · L-261023-b7d250

Merged
LC
6d ago
+326-15

The environment was built on whatever Python was newest on the machine, so a new worktree landed on 3.15 and failed to load pydantic-core. The repo now pins 3.13 in .python-version, the Makefile reads and exports it as UV_PYTHON, and the local MCP launcher keeps that export out of the session it starts.

Closes L-261023-b7d250
Advances L-261023-8192c0

🤖 Generated with Claude Code

https://claude.ai/code/session_01TuqArJByf4EdN7khSDRiPe


Summary by cubic

Pins the development environment to Python 3.13, which previously was whichever Python was newest on the machine. A new worktree could land on 3.15, where pydantic-core has no published wheel and the one uv compiled from source failed to load, breaking every integrate gate test.

  • Commits .python-version and has the Makefile export it as UV_PYTHON, so every uv command uses the pinned version; PYTHON_VERSION=<version> make install tries another interpreter.
  • CI workflows now read .python-version via python-version-file, and the recipes workflow re-runs when it changes.
  • make check fails when the pin disagrees with a floor in pyproject.toml or a workflow names a Python of its own.
  • The local MCP launcher keeps the Makefile's UV_PYTHON export and a command-line PYTHON_VERSION out of the session it starts, so the project the agent works in keeps its own pin.

Closes L-261023-b7d250