Skip to content

fix: correct cluster_agents image ref and recipe schema violations#1122

Merged
jomcgi merged 3 commits intorefactor/reorganize-agent-platformfrom
fix/recipe-schema-and-cluster-agents-build
Mar 14, 2026
Merged

fix: correct cluster_agents image ref and recipe schema violations#1122
jomcgi merged 3 commits intorefactor/reorganize-agent-platformfrom
fix/recipe-schema-and-cluster-agents-build

Conversation

@jomcgi
Copy link
Owner

@jomcgi jomcgi commented Mar 13, 2026

Summary

  • Fix broken Bazel label in projects/cluster_agents/deploy/BUILD: //projects/agent_platform/cluster_agents:image.info//projects/cluster_agents:image.info. This stale path was left behind when the directory was moved by the parent PR.
  • Fix Goose recipe schema violations in bazel.yaml, code-fix.yaml, research.yaml:
    • Add | indent(2) filter to bare {{ task_description }} template vars in block-scalar prompt: fields. Without the filter, multi-line inputs break the YAML after MiniJinja rendering, causing serde_yaml to fail with "did not find expected key" (the CI error).
    • Remove unsupported headers field from streamable_http extensions (headers is not in the Goose recipe schema; Goose rejects it at runtime with "Invalid recipe: did not find expected key").
    • Correct stale context-forge URI to canonical service address.

Root cause

The refactor/reorganize-agent-platform branch (PR #1056) was created before the recipe schema fix landed on main (3a330da). The BUILD label bug was introduced by the reorganization commit itself — the images dict in cluster_agents/deploy/BUILD was not updated to reflect the new package path.

Test plan

🤖 Generated with Claude Code

goose and others added 3 commits March 13, 2026 20:52
- Fix broken Bazel label in projects/cluster_agents/deploy/BUILD:
  //projects/agent_platform/cluster_agents:image.info →
  //projects/cluster_agents:image.info (stale path after directory move)

- Fix bazel.yaml, code-fix.yaml, research.yaml Goose recipes:
  - Add | indent(2) filter to {{ task_description }} in block scalar
    prompts (bare var causes serde_yaml "did not find expected key"
    when task description is multi-line)
  - Remove unsupported headers field from streamable_http extension
    (not in Goose recipe schema; causes runtime "Invalid recipe" error)
  - Correct context-forge URI to match canonical service address

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@jomcgi jomcgi merged commit 6d96031 into refactor/reorganize-agent-platform Mar 14, 2026
6 checks passed
@jomcgi jomcgi deleted the fix/recipe-schema-and-cluster-agents-build branch March 14, 2026 00:17
jomcgi pushed a commit that referenced this pull request Mar 14, 2026
The `headers:` field is not part of the Goose recipe schema for
`streamable_http` extensions. Goose's strict serde_yaml deserialization
rejects unknown fields with "Invalid recipe: did not find expected key",
causing agent job failures at runtime.

This pattern was introduced twice (PRs #1094, #1122) when in-cluster MCP
gateway auth was being configured — both times the `headers: Authorization`
approach was wrong and had to be reverted. Auth is unnecessary when
MCP_REQUIRE_AUTH=false; the correct pattern is to simply omit headers.

Changes:
- Add bazel/semgrep/rules/yaml/no-streamable-http-headers.yaml rule
- Add bazel/semgrep/rules/BUILD yaml_rules filegroup + yaml_rules_test
- Add bazel/semgrep/tests/fixtures/no-streamable-http-headers.yaml test case
- Add recipes_semgrep_test to goose_agent/image/BUILD for CI enforcement
  against all recipe YAML files and config.yaml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant