Repository navigation
fix(plugins): catalog dependencies resolve without test-tool conflicts - #133451
Merged
ethernet8023 merged 2 commits intoOct 5, 2026
Merged
Conversation
… block installs The catalog-wide lock found 12 plugins that could not install for reasons unrelated to their real dependencies: - 6 ship a pyproject.toml holding only ruff/pytest settings, with no [project] table. PM treated any pyproject as the package definition, invented a [project] table with just a name, and uv refused it for lacking a version. A pyproject without [project] now leaves the plugin manifest in charge of dependencies. - 4 pin pytest/ruff/ty in a dev extra or dev group, conflicting with core's own dev group; one pins transformers in an optional extra; two route torch to different PyTorch indexes through extras. Hermes never installs a plugin's extras, and uv syncs a member's default dev group into Hermes's environment, so both are dropped from the workspace copy.
…leases Eight catalog plugins require a release younger than the 14-day window (their own SDKs, mostly). Each gets a per-package exclude-newer cutoff at the upload time of the oldest release the plugin accepts, so exactly that release gets through and anything newer still waits. Every line names its plugins and the date it becomes dead (cutoff + 14 days); the lasting fix is upstream, an exact pin plus the plugin's own exemption. uv.lock is relocked with the pinned uv 0.12.3, which writes the options table in its own order.
૮ >ﻌ< ა ci reviewrunning on c7f8e40 — build: temporary quarantine cutoffs for 8 catalog plugins on waiting for jobs to start… |
ethernet8023
added this pull request to stack #133452
October 5, 2026 18:47
15 of 17 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Hermes lists available plugins in a catalog. the parent PR, #133409, blocks dependency releases less than 14 days old and checks whether catalog plugins have compatible dependencies. this PR fixes two causes of dependency-resolution failures and adds temporary exceptions for specific recent releases.
pyproject.tomljust for its linter or tests; Hermes treats it as a Python package and loses the dependencies inplugin.yaml[project]when present. otherwise, it reads the dependencies from the plugin manifestthis is stacked on #133409. the changes here do not introduce the quarantine or the catalog CI job; those are in the parent PR.
Related Issue
follow-up to #133409.
credit to @fangliquanflq for the same tooling-only pyproject fix in #122164, and @webtecnica for stripping virtual members' test dependencies in #123960. the catalog run reproduced those problems across multiple entries. this branch applies the fixes to the shared install path.
Type of Change
Changes Made
pm/plugin_declarations.py: Hermes reads package dependencies frompyproject.tomlonly when it contains a[project]table. otherwise, it readspython_dependenciesorpip_dependenciesfrom the plugin manifest.pm/workspace.py: remove optional dependencies and development groups from the plugin copy used to resolve an install. the plugin repository itself is not changed. runtime dependencies and build requirements stay intact.pyproject.tomlanduv.lock: add eight temporary package cutoffs. each cutoff is just after the last file upload for the oldest accepted release. comments name the affected plugins and when the regular 14-day window catches up. these lines must then be removed; a fixed date left behind would keep blocking later releases.what's still open
this does not fix every catalog plugin. the earlier checks still found Python-version caps, incompatible runtime requirements, and mnemostack's dependency on
hermes-agentitself. upstream fixes and catalog updates are separate work.removing extras also removes optional runtime features from the install resolution, not just test tools. Hermes does not currently select plugin extras. this PR does not add a way to install those optional features.
How to Test
scripts/run_tests.sh tests/pm/test_workspace.py tests/pm/test_plugin_declarations.py tests/pm/test_workspace_build_inputs.py tests/hermes_cli/test_plugin_validate.pypython -m pm.build_env --source . --check-lockscripts/run-in-hermes-env python3 scripts/ci/catalog_resolve_all.py --report "$TMPDIR/catalog-fixes-report.json"live repro: both new workspace tests fail without their corresponding fix and pass with it. they run the real package resolver and install local wheels, rather than checking source text.
c7f8e40919scripts/check --only healththese catalog checks prove that dependency versions can resolve together. they do not prove every plugin feature works, and they do not perform a full installation of every catalog plugin. the entire catalog has not been rerun on this exact head.
Checklist
Code
python scripts/checkpasses — health passed; the earlier full run flagged archives in local worktreesDocumentation & Housekeeping
Screenshots / Logs
Stack
main → #133409 (quarantine and catalog check) → this PR (fixes found by that check).
Infographic