Skip to content

fix(release): keep the protocol's extras when the release pins it - #364

Merged
earakely-scale merged 2 commits into
mainfrom
fix/release-pin-keeps-protocol-extras
Oct 28, 2026
Merged

earakely-scale merged 2 commits into
mainfrom
fix/release-pin-keeps-protocol-extras

Conversation

@earakely-scale

@earakely-scale earakely-scale commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

What's broken

Every published agentenv-framework from 0.9.1367 on fails to start on a bare install:

$ pip install agentenv-framework==0.9.1368 && agent-env --version
...
    import av
ModuleNotFoundError: No module named 'av'

pyproject.toml requires agentenv-framework-protocol[computer]>=0.1.0. The release's pin step in publish-pypi.yml is a sed that rewrites the whole quoted requirement, so the extra is dropped and the wheel ships agentenv-framework-protocol==0.1.383.

  • Wheels from 0.9.1363 on (when [computer] joined core's requirements) lack the extra.
  • From 0.9.1367 on, core imports av through the protocol's recording module (teardown_sandboxes → computer_recording → agentenv_protocol.computer), so import agent_env.task and the CLI fail.

CI didn't catch it because the clean-install gate builds from the unpinned pyproject.toml, which keeps [computer].

Fix

  • .github/scripts/shipped_bundles.py pin-pyproject pins the framework's one quoted requirement on the protocol and keeps its extras. It's the same rule pin already applies to the shipped bundles' requirements files. The release runs it in place of the sed.
  • The clean-install gate builds the framework with that pin, so it installs what a release actually ships. It restores pyproject.toml afterwards.
  • Tests in tst/unit/test_release_protocol_pins.py:
    • the real pyproject.toml pins to agentenv-framework-protocol[computer]==<version>;
    • only the quoted requirement is rewritten, not -tools-style names, the sdist include list or [tool.uv.sources];
    • pinning twice changes nothing;
    • the workflow no longer has the sed.

Verified

  • Both wheels built with pin-pyproject applied, then installed into a fresh venv from public PyPI: agent-env --version prints agent-env 0.9.1369, and agent_env.task, av and PIL import.
  • The same check on PyPI's 0.9.1368 fails as shown above.
  • tst/unit/test_release_protocol_pins.py: 14 passed.

The bump-version label is set so that merging ships a working release.

🤖 Generated with Claude Code

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge.

Summary

The release now pins the protocol version without dropping its extras. The clean-install check builds with that same pin and restores pyproject.toml afterward.

  • Release wheels keep the protocol’s computer extra when pinning its version.
  • The clean-install gate builds the framework with the release’s protocol pin.

Reviews (2) · Last reviewed commit: "test(release): count the pin command apa..." · Reviewed by Greptile

The release pinned the framework's requirement on agentenv-framework-protocol
with a sed that rewrote the whole quoted requirement, so
"agentenv-framework-protocol[computer]>=0.1.0" shipped as
"agentenv-framework-protocol==<version>". Wheels from 0.9.1363 on lack the
computer extra. Since 0.9.1367, core imports av through the protocol's
recording module, so on a bare `pip install agentenv-framework`,
`agent-env --version` fails with "No module named 'av'".

`shipped_bundles.py pin-pyproject` now pins the requirement, keeping its
extras, and the release runs it in place of the sed. The clean-install
gate builds the framework with the same pin, so it installs what a
release ships.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@earakely-scale
earakely-scale merged commit 8414736 into main Oct 28, 2026
13 of 14 checks passed
@earakely-scale
earakely-scale deleted the fix/release-pin-keeps-protocol-extras branch October 28, 2026 02:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant