{"repo":"NousResearch/hermes-agent","public_id":"15187","display_label":"Hermetic systemd tests for non-systemd environments","summary":"These issues and PRs address gateway service refresh tests that fail in environments without systemd (e.g., containers or root contexts). The work involves mocking or bypassing the systemd D-Bus preflight check to make the tests self-contained and reliably runnable anywhere.","subsystem":"gateway","counts":{"members":6,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":2,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":61384},"resolution":{"state":"partially_resolved","by":"pr-61384"},"freshness":{"state":"verified","last_verified_at":"2026-07-09T09:05:10+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.2906666666666667},"fix_edges":[{"issue_number":15187,"pr_number":61384,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":15187,"title":"[Bug]: test_gateway_service systemd refresh tests fail in non-systemd environments after user D-Bus preflight","url":null,"state":"closed"},{"kind":"issue","number":18630,"title":"Stabilize gateway service tests in container/root environments","url":null,"state":"closed"},{"kind":"pr","number":15190,"title":"test(gateway): make systemd refresh tests hermetic with user D-Bus preflight","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#15254","number":15254},{"kind":"pr","value":"#15243","number":15243},{"kind":"pr","value":"#15244","number":15244}],"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":15435,"title":"fix(cli): mock systemd preflight in gateway service tests for non-systemd environments (#15187)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#61384","number":61384},{"kind":"pr","value":"#61384","number":61384},{"kind":"pr","value":"#61384","number":61384}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":23787,"title":"test(cli): keep systemd refresh unit tests hermetic after preflight (#15187)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#15435","number":15435},{"kind":"pr","value":"#15187","number":15187}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":61384,"title":"test(gateway): mock systemd preflight in service-refresh tests for non-systemd hosts (salvage #15435)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["tests/hermes_cli/test_gateway_service.py"],"fix_hunks":[{"file":"tests/hermes_cli/test_gateway_service.py","hunks":["@@ -68,6 +68,10 @@ def test_systemd_start_refreshes_outdated_unit(self, tmp_path, monkeypatch):\n \n         monkeypatch.setattr(gateway_cli, \"get_systemd_unit_path\", lambda system=False: unit_path)\n         monkeypatch.setattr(gateway_cli, \"generate_systemd_unit\", lambda system=False, run_as_user=None: \"new unit\\n\")\n+        # Bypass systemd availability checks — this test targets unit-file\n+        # refresh logic, not D-Bus reachability (fails on macOS/WSL/Docker).\n+        monkeypatch.setattr(gateway_cli, \"_preflight_user_systemd\", lambda **kw: None)\n+        monkeypatch.setattr(gateway_cli, \"_select_systemd_scope\", lambda system=False: False)\n \n         calls = []\n ","@@ -91,6 +95,10 @@ def test_systemd_restart_refreshes_outdated_unit(self, tmp_path, monkeypatch):\n \n         monkeypatch.setattr(gateway_cli, \"get_systemd_unit_path\", lambda system=False: unit_path)\n         monkeypatch.setattr(gateway_cli, \"generate_systemd_unit\", lambda system=False, run_as_user=None: \"new unit\\n\")\n+        # Bypass systemd availability checks — this test targets unit-file\n+        # refresh logic, not D-Bus reachability (fails on macOS/WSL/Docker).\n+        monkeypatch.setattr(gateway_cli, \"_preflight_user_systemd\", lambda **kw: None)\n+        monkeypatch.setattr(gateway_cli, \"_select_systemd_scope\", lambda system=False: False)\n \n         calls = []\n         monkeypatch.setattr(\"gateway.status.get_running_pid\", lambda: None)\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}