{"repo":"NousResearch/hermes-agent","public_id":"4178","display_label":"python-olm build breakage on Windows and extras","summary":"These issues and fixes relate to python-olm failing to build on Windows due to CMake 4.x incompatibility, with workarounds including skipping lazy refresh, patching CMake policy, and excluding the matrix extra from the [all] group.","subsystem":"agent","counts":{"members":16,"open_issues":2,"open_issues_distinct":2,"open_prs":2,"closed_issues":4,"merged_prs":2,"attempt_prs":8},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":4615},"resolution":{"state":"partially_resolved","by":"pr-4615,pr-72361"},"freshness":{"state":"verified","last_verified_at":"2026-07-27T02:28:55+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.121},"fix_edges":[{"issue_number":4178,"pr_number":4615,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":44404,"pr_number":72361,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":58458,"pr_number":72361,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":4178,"title":"[Bug]: python-olm build fail","url":null,"state":"closed"},{"kind":"issue","number":44404,"title":"fix(lazy-deps): active_features() presence-only check causes false-positive activation and unnecessary downgrades","url":null,"state":"closed"},{"kind":"issue","number":58063,"title":"[platform.matrix] Lazy backend refresh fails on Windows: python-olm source build incompatible with CMake 4.x","url":null,"state":"closed"},{"kind":"issue","number":58458,"title":"lazy_deps: shared aiohttp pin marks never-enabled backends active; matrix refresh then fails on Windows (python-olm needs make)","url":null,"state":"closed"},{"kind":"issue","number":62401,"title":"[Bug]: [platform.matrix] Matrix gateway blocked on macOS arm64 with E2EE off — _is_satisfied() ignores the [encryption] extra, so a mautrix pin-drift forces an unneeded python-olm build","url":null,"state":"open"},{"kind":"issue","number":64065,"title":"fix(platform.matrix): mark unsupported on macOS so 'hermes update' skips instead of failing","url":null,"state":"open"},{"kind":"pr","number":4615,"title":"fix: exclude matrix from [all] extras — python-olm is upstream-broken","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["pyproject.toml","tests/test_project_metadata.py"],"fix_hunks":[{"file":"pyproject.toml","hunks":["@@ -76,7 +76,10 @@ all = [\n   \"hermes-agent[modal]\",\n   \"hermes-agent[daytona]\",\n   \"hermes-agent[messaging]\",\n-  \"hermes-agent[matrix]\",\n+  # matrix excluded: python-olm (required by matrix-nio[e2e]) is upstream-broken\n+  # on modern macOS (archived libolm, C++ errors with Clang 21+). Including it\n+  # here causes the entire [all] install to fail, dropping all other extras.\n+  # Users who need Matrix can install manually: pip install 'hermes-agent[matrix]'\n   \"hermes-agent[cron]\",\n   \"hermes-agent[cli]\",\n   \"hermes-agent[dev]\","]},{"file":"tests/test_project_metadata.py","hunks":["@@ -11,8 +11,12 @@ def _load_optional_dependencies():\n     return project[\"optional-dependencies\"]\n \n \n-def test_all_extra_includes_matrix_dependency():\n+def test_matrix_extra_exists_but_excluded_from_all():\n+    \"\"\"matrix-nio[e2e] depends on python-olm which is upstream-broken on modern\n+    macOS (archived libolm, C++ errors with Clang 21+).  The [matrix] extra is\n+    kept for opt-in install but deliberately excluded from [all] so one broken\n+    upstream dep doesn't nuke every other extra during ``hermes update``.\"\"\"\n     optional_dependencies = _load_optional_dependencies()\n \n     assert \"matrix\" in optional_dependencies\n-    assert \"hermes-agent[matrix]\" in optional_dependencies[\"all\"]\n+    assert \"hermes-agent[matrix]\" not in optional_dependencies[\"all\"]\n"]}]},{"kind":"pr","number":44416,"title":"fix(lazy-deps): use version-aware check in active_features() to prevent unnecessary downgrades","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#72361","number":72361},{"kind":"pr","value":"#27878","number":27878}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":44461,"title":"fix(lazy-deps): use _is_satisfied in active_features() to prevent false-positive activation on transitive installs (#44404)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#44416","number":44416},{"kind":"pr","value":"#44404","number":44404}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":58416,"title":"fix(matrix): set CMake policy for Windows lazy install","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"058873805a85c1195afe23159c714c9522484423","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":58575,"title":"fix(lazy_deps): use sentinel package for active-feature detection","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#54178","number":54178},{"kind":"pr","value":"#54178","number":54178}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":58652,"title":"fix(lazy-deps): detect active features by primary package","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#72361","number":72361},{"kind":"pr","value":"#27878","number":27878}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":62433,"title":"fix(matrix): split lazy e2ee deps","url":null,"state":"open","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":64078,"title":"fix(gateway): hide platform.matrix on macOS too (#64065)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#64078","number":64078}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":72361,"title":"fix(lazy_deps): anchor-gated activation stops phantom backend refreshes","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["contributors/emails/[redacted:email]","tests/test_project_metadata.py","tests/tools/test_lazy_deps.py","tools/lazy_deps.py"]},{"kind":"pr","number":93860,"title":"fix(matrix): gate only the olm-bound E2EE part to Linux so plaintext Matrix installs on macOS","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#62401","number":62401},{"kind":"pr","value":"#122733","number":122733}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}