fix(evo): install cross-platform workspace locking - #60
Conversation
Co-Authored-By: Paperclip <noreply@paperclip.ing>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: edcac95371
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| data = tomllib.loads((REPO_ROOT / "pyproject.toml").read_text(encoding="utf-8")) | ||
| core = data["project"]["dependencies"] | ||
| names = {_distribution_name(dep) for dep in core} | ||
| assert "portalocker" in names, ( |
There was a problem hiding this comment.
Replace the literal dependency guard with a lock-path test
When the workspace-lock implementation or providing package changes while preserving behavior, this test still fails solely because the literal portalocker name disappeared from pyproject.toml; conversely, it passes without proving that a lean installation can import and exercise the projected-plugin lock path. Replace it with an installation/runtime test that acquires the actual workspace lock so the regression guard follows the behavior rather than the current dependency choice.
AGENTS.md reference: AGENTS.md:L1373-L1380
Useful? React with 👍 / 👎.
| # Host-projected plugins use cross-process locks on every platform. Keep | ||
| # portalocker direct: its existing lockfile entries are otherwise reachable | ||
| # only through platform/optional transitive dependencies, so a fresh lean | ||
| # Linux install can load the plugin but fail closed on its first lock. | ||
| "portalocker>=2.8.0,<4", |
There was a problem hiding this comment.
Keep plugin-only locking out of base dependencies
On Linux and macOS installations without the opt-in host-projected plugin, a repo-wide search of this commit shows no in-tree runtime use of portalocker (the POSIX MCP lock uses fcntl), yet this unconditional base dependency installs it for every user and makes the core update verifier treat it as mandatory. Declare it in the plugin package or its gated installation path instead of expanding Hermes core to compensate for a plugin's undeclared runtime dependency.
AGENTS.md reference: AGENTS.md:L122-L125
Useful? React with 👍 / 👎.
Summary
Verification
uv run --extra dev --frozen pytest -q tests/test_packaging_metadata.py(7 passed)uv run --extra dev --frozen pytest -q tests/hermes_cli/test_verify_core_dependencies.py(4 passed)uv sync --locked --no-install-projectimports portalocker 3.2.0