diff --git a/services/hermes/agent-deployment.yaml b/services/hermes/agent-deployment.yaml index 66514071..7e700f4c 100644 --- a/services/hermes/agent-deployment.yaml +++ b/services/hermes/agent-deployment.yaml @@ -25,7 +25,7 @@ spec: ai.bstein.dev/execution: Hermes Kanban with durable direct Codex and Claude Code CLI workers ai.bstein.dev/model-policy: Jetson-assisted AUTO routing, low through xhigh, cross-provider fallback ai.bstein.dev/placement: rpi5 preferred; Jetson deferred until state storage is available - ai.bstein.dev/config-rev: "20260816-review-findings-contract-v3" + ai.bstein.dev/config-rev: "20260816-review-findings-contract-v4" prometheus.io/scrape: "true" prometheus.io/path: /metrics prometheus.io/port: "9010" diff --git a/services/hermes/scripts/cli_lane_runner.py b/services/hermes/scripts/cli_lane_runner.py index 2b91501f..5191ef2d 100644 --- a/services/hermes/scripts/cli_lane_runner.py +++ b/services/hermes/scripts/cli_lane_runner.py @@ -60,7 +60,15 @@ NO_CODEX_THREAD = "no rollout found for thread id" RESULT_SCHEMA: dict[str, Any] = { "type": "object", "additionalProperties": False, - "required": ["status", "summary", "changed_files", "tests_run", "artifacts", "blockers"], + "required": [ + "status", + "summary", + "changed_files", + "tests_run", + "artifacts", + "findings", + "blockers", + ], "properties": { "status": { "type": "string", diff --git a/testing/tests/test_hermes_cli_lanes.py b/testing/tests/test_hermes_cli_lanes.py index 0a007388..cd4ad422 100644 --- a/testing/tests/test_hermes_cli_lanes.py +++ b/testing/tests/test_hermes_cli_lanes.py @@ -952,6 +952,9 @@ def test_worker_contract_separates_review_findings_from_task_blockers(tmp_path: assert "put defects and risks in findings" in prompt assert "blockers array must be empty whenever status is completed" in prompt assert "findings" in lanes.RESULT_SCHEMA["properties"] + assert set(lanes.RESULT_SCHEMA["required"]) == set( + lanes.RESULT_SCHEMA["properties"] + ) assert "assigned task itself" in lanes.RESULT_SCHEMA["properties"]["blockers"]["description"]