{"repo":"NousResearch/hermes-agent","public_id":"5502","display_label":"Nix build missing hermes_logging py-module fix","summary":"A bug was identified where `hermes_logging` was absent from `py-modules` in `pyproject.toml`, causing gateway crashes on NixOS. The members address diagnosing and patching this omission in the Nix build configuration.","subsystem":"environments","counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":5651,"merged_at":"2026-04-06T22:51:19+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"stale","last_verified_at":"2026-04-06T22:51:19+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":5502,"pr_number":5651,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-04-06T22:51:19+00:00"}],"members":[{"kind":"issue","number":5502,"title":"Nix build: `hermes_logging` missing from pyproject.toml `py-modules` — gateway crashes on NixOS","url":null,"state":"closed"},{"kind":"pr","number":5642,"title":"fix(nix): add hermes_logging to py-modules in pyproject.toml","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#5651","number":5651}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":5651,"title":"fix(nix): read version, regen uv.lock, fix packages.nix to add hermes_logging","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["nix/nixosModules.nix","nix/packages.nix","pyproject.toml"],"fix_hunks":[{"file":"nix/nixosModules.nix","hunks":["@@ -561,7 +561,7 @@\n \n       # ── Activation: link config + auth + documents ────────────────────\n       {\n-        system.activationScripts.\"hermes-agent-setup\" = lib.stringAfter [ \"users\" ] ''\n+        system.activationScripts.\"hermes-agent-setup\" = lib.stringAfter [ \"users\" \"setupSecrets\" ] ''\n           # Ensure directories exist (activation runs before tmpfiles)\n           mkdir -p ${cfg.stateDir}/.hermes\n           mkdir -p ${cfg.stateDir}/home"]},{"file":"nix/packages.nix","hunks":["@@ -21,7 +21,7 @@\n     in {\n       packages.default = pkgs.stdenv.mkDerivation {\n         pname = \"hermes-agent\";\n-        version = \"0.1.0\";\n+        version = (builtins.fromTOML (builtins.readFile ../pyproject.toml)).project.version;\n \n         dontUnpack = true;\n         dontBuild = true;"]},{"file":"pyproject.toml","hunks":["@@ -102,7 +102,7 @@ hermes-agent = \"run_agent:main\"\n hermes-acp = \"acp_adapter.entry:main\"\n \n [tool.setuptools]\n-py-modules = [\"run_agent\", \"model_tools\", \"toolsets\", \"batch_runner\", \"trajectory_compressor\", \"toolset_distributions\", \"cli\", \"hermes_constants\", \"hermes_state\", \"hermes_time\", \"rl_cli\", \"utils\"]\n+py-modules = [\"run_agent\", \"model_tools\", \"toolsets\", \"batch_runner\", \"trajectory_compressor\", \"toolset_distributions\", \"cli\", \"hermes_constants\", \"hermes_state\", \"hermes_time\", \"hermes_logging\", \"rl_cli\", \"utils\"]\n \n [tool.setuptools.packages.find]\n include = [\"agent\", \"tools\", \"tools.*\", \"hermes_cli\", \"gateway\", \"gateway.*\", \"cron\", \"acp_adapter\", \"plugins\", \"plugins.*\"]"]},{"file":"uv.lock","hunks":["@@ -10,14 +10,14 @@ resolution-markers = [\n \n [[package]]\n name = \"agent-client-protocol\"\n-version = \"0.8.1\"\n+version = \"0.9.0\"\n source = { registry = \"https://pypi.org/simple\" }\n dependencies = [\n     { name = \"pydantic\" },\n ]\n-sdist = { url = \"https://files.pythonhosted.org/packages/1b/7b/7cdac86db388809d9e3bc58cac88cc7dfa49b7615b98fab304a828cd7f8a/agent_client_protocol-0.8.1.tar.gz\", hash = \"sha256:1bbf15663bf51f64942597f638e32a6284c5da918055d9672d3510e965143dbd\", size = 68866, upload-time = \"2026-02-13T15:34:54.567Z\" }\n+sdist = { url = \"https://files.pythonhosted.org/packages/eb/13/3b893421369767e7043cc115d6ef0df417c298b84563be3a12df0416158d/agent_client_protocol-0.9.0.tar.gz\", hash = \"sha256:f744c48ab9af0f0b4452e5ab5498d61bcab97c26dbe7d6feec5fd36de49be30b\", size = 71853, upload-time = \"2026-03-26T01:21:00.379Z\" }\n wheels = [\n-    { url = \"https://files.pythonhosted.org/packages/4b/f3/219eeca0ad4a20843d4b9eaac5532f87018b9d25730a62a16f54f6c52d1a/agent_client_protocol-0.8.1-py3-none-any.whl\", hash = \"sha256:9421a11fd435b4831660272d169c3812d553bb7247049c138c3ca127e4b8af8e\", size = 54529, upload-time = \"2026-02-13T15:34:53.344Z\" },\n+    { url = \"https://files.pythonhosted.org/packages/8f/ed/c284543c08aa443a4ef2c8bd120be51da8433dd174c01749b5d87c333f22/agent_client_protocol-0.9.0-py3-none-any.whl\", hash = \"sha256:06911500b51d8cb69112544e2be01fc5e7db39ef88fecbc3848c5c6f194798ee\", size = 56850, upload-time = \"2026-03-26T01:20:59.252Z\" },\n ]\n \n [[package]]","@@ -1725,6 +1725,7 @@ honcho = [\n     { name = \"honcho-ai\" },\n ]\n matrix = [\n+    { name = \"markdown\" },\n     { name = \"matrix-nio\", extra = [\"e2e\"] },\n ]\n mcp = [","@@ -1772,7 +1773,7 @@ yc-bench = [\n \n [package.metadata]\n requires-dist = [\n-    { name = \"agent-client-protocol\", marker = \"extra == 'acp'\", specifier = \">=0.8.1,<0.9\" },\n+    { name = \"agent-client-protocol\", marker = \"extra == 'acp'\", specifier = \">=0.9.0,<1.0\" },\n     { name = \"aiohttp\", marker = \"extra == 'homeassistant'\", specifier = \">=3.9.0,<4\" },\n     { name = \"aiohttp\", marker = \"extra == 'messaging'\", specifier = \">=3.13.3,<4\" },\n     { name = \"aiohttp\", marker = \"extra == 'sms'\", specifier = \">=3.9.0,<4\" },","@@ -1812,6 +1813,7 @@ requires-dist = [\n     { name = \"httpx\", specifier = \">=0.28.1,<1\" },\n     { name = \"jinja2\", specifier = \">=3.1.5,<4\" },\n     { name = \"lark-oapi\", marker = \"extra == 'feishu'\", specifier = \">=1.5.3,<2\" },\n+    { name = \"markdown\", marker = \"extra == 'matrix'\", specifier = \">=3.6,<4\" },\n     { name = \"matrix-nio\", extras = [\"e2e\"], marker = \"extra == 'matrix'\", specifier = \">=0.24.0,<1\" },\n     { name = \"mcp\", marker = \"extra == 'dev'\", specifier = \">=1.2.0,<2\" },\n     { name = \"mcp\", marker = \"extra == 'mcp'\", specifier = \">=1.2.0,<2\" },\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}