hermes: keep agent web reachable during lane deferral

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jenkins 2026-08-17 15:20:43 -03:00
parent df75479069
commit 6f993c049e
4 changed files with 20 additions and 5 deletions

View File

@ -903,8 +903,8 @@ spec:
- /opt/coordinator/cli_lane_capabilities.py
initialDelaySeconds: 2
periodSeconds: 5
timeoutSeconds: 2
failureThreshold: 1
timeoutSeconds: 5
failureThreshold: 3
resources:
requests: {cpu: 100m, memory: 256Mi}
limits: {cpu: "2", memory: 6Gi}

View File

@ -16,6 +16,9 @@ metadata:
spec:
selector:
app: hermes-agent
# The agent dashboard and terminal must stay reachable while the
# cli-lane-runner readiness probe holds the shared pod NotReady.
publishNotReadyAddresses: true
ports:
- {name: http, port: 80, targetPort: auth-http}
---

View File

@ -91,7 +91,6 @@
"junit": "build/junit-unit.xml",
"coverage_sources": [
"ci/scripts",
"scripts.render.dashboards_render_atlas",
"services/hermes/scripts",
"services/mailu/scripts",
"testing"

View File

@ -285,6 +285,19 @@ def test_broker_services_survive_sibling_container_readiness_loss():
):
assert services[name]["spec"]["publishNotReadyAddresses"] is True
# The agent web endpoints route through this Service to the same pod the
# cli-lane-runner readiness probe gates; a deferred lane image must not
# take down the dashboard or terminal.
agent_auth = next(
item
for item in yaml.safe_load_all((HERMES / "oauth2-proxy.yaml").read_text())
if item
and item["kind"] == "Service"
and item["metadata"]["name"] == "oauth2-proxy-hermes-agent"
)
assert agent_auth["spec"]["selector"] == {"app": "hermes-agent"}
assert agent_auth["spec"]["publishNotReadyAddresses"] is True
def test_cli_lane_domain_modules_are_all_mounted_with_the_runner():
manifest = yaml.safe_load((HERMES / "kustomization.yaml").read_text())
@ -354,8 +367,8 @@ def test_cli_lane_config_refresh_does_not_restart_active_work():
},
"initialDelaySeconds": 2,
"periodSeconds": 5,
"timeoutSeconds": 2,
"failureThreshold": 1,
"timeoutSeconds": 5,
"failureThreshold": 3,
}
environment = {item["name"]: item["value"] for item in lane["env"]}
assert environment["HERMES_CLI_HEALTH_MAX_AGE_SECONDS"] == "60"