Back to Signal Feed
CodeTracked since May 19, 2026

Goose recipes now accept object/array structured parameters

The PR adds `object` and `array` as recipe parameter input types and routes those parameters through a structured MiniJinja rendering path in the build pipeline, enabling templates to use dot-notation, loops, and conditionals on nested data without changing existing `build_recipe_from_template` call patterns.

RecipeParameterInputTypebuild_recipe_from_templaterender_recipe_templateto_structured_params

What Happened

  • The PR adds `object` and `array` as recipe parameter input types and routes those parameters through a structured MiniJinja rendering path in the build pipeline, enabling templates to use dot-notation, loops, and conditionals on nested data without changing existing `build_recipe_from_template` call patterns.
  • The PR adds `object` and `array` as recipe parameter input types and routes those parameters through a structured MiniJinja rendering path in the build pipeline, enabling templates to use dot-notation, loops, and conditionals on nested data without changing existing `build_recipe_from_template` call patterns.
  • 1 evidence item attached for review.

What is Different

Before

Scattered source updates, isolated context, and manual follow-up across multiple feeds.

Now

Introduced an end-to-end structured-params path by adding `Object` and `Array` input variants, parsing matching `HashMap<String, String>` entries into `serde_json::Value`, and rendering templates with structured context only when such params are present.

Why Track This

Why It Matters

Developers and operators using Goose recipes can now handle richer inputs like nested signal objects and finding arrays directly in templates through existing parameters, which reduces manual data-flattening and brittle glue code for complex workflows and makes recipe behavior easier to express correctly. The change is implemented with dual-path rendering (structured vs existing string path), so string-only recipes keep prior behavior; teams should monitor malformed JSON payload handling, especially error clarity for nested/object parameters, and confirm downstream clients continue to pass valid JSON-encoded values when needed.

Impact

Developers and operators using Goose recipes can now handle richer inputs like nested signal objects and finding arrays directly in templates through existing parameters, which reduces manual data-flattening and brittle glue code for complex workflows and makes recipe behavior easier to express correctly. The change is implemented with dual-path rendering (structured vs existing string path), so string-only recipes keep prior behavior; teams should monitor malformed JSON payload handling, especially error clarity for nested/object parameters, and confirm downstream clients continue to pass valid JSON-encoded values when needed.

What To Watch Next

  • Watch whether RecipeParameterInputType becomes a repeated pattern.
  • Track follow-up changes around Structured Outputs.
  • Compare future signals against this evidence trail.
  • Re-check risk flags: malformed_json_in_object_array_inputs, error_feedback_for_invalid_structured_params.
Open Topic TimelineOpen Technical EventOpen Original Sourcemalformed_json_in_object_array_inputs / error_feedback_for_invalid_structured_params / json_aware_inputs_not_exposed_in_cli_editor_ui

Supporting Evidence