Skip to content

fix(evo): install cross-platform workspace locking - #60

Merged
pai-scaffolde merged 1 commit into
mainfrom
fix/evo-portalocker-runtime-dep
Aug 8, 2026
Merged

fix(evo): install cross-platform workspace locking#60
pai-scaffolde merged 1 commit into
mainfrom
fix/evo-portalocker-runtime-dep

Conversation

@pai-scaffolde

Copy link
Copy Markdown
Collaborator

Summary

  • declare portalocker as a direct cross-platform Hermes runtime dependency
  • prevent fresh lean Linux installs from failing projected plugin workspace locks
  • add a packaging regression that rejects transitive-only availability

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)
  • fresh Linux uv sync --locked --no-install-project imports portalocker 3.2.0
  • strict Scaffolde Evo canary in progress against this exact revision

Co-Authored-By: Paperclip <noreply@paperclip.ing>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +56 to +59
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, (

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment thread pyproject.toml
Comment on lines +118 to +122
# 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",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@pai-scaffolde
pai-scaffolde merged commit 54d19ec into main Aug 8, 2026
37 checks passed
@pai-scaffolde
pai-scaffolde deleted the fix/evo-portalocker-runtime-dep branch August 8, 2026 22:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant