Skip to content

create_parallel_queue reports success while silently skipping a step that did not render #478

Description

@jeremymanning

Observed while probing loop bindings by execution.

Inside a create_parallel_queue, a step whose template references an unbound bare name does not write its file, and the pipeline still reports success:

- id: loop
  action: create_parallel_queue
  create_parallel_queue:
    "on": "['A']"
    action_loop:
      - action: filesystem
        parameters:
          action: write
          path: "out/probe.txt"
          content: "{{ nosuch_name }}"

The write is refused internally with still contains unresolved template references, no file appears, and the run's result reports success. Nothing surfaces to the caller.

The $ spelling fails differently and just as quietly: {{ $nosuch }} is stripped to nothing and the literal text is written to the file, so the artifact exists and its contents are wrong.

Two more findings from the same probe, same construct:

  1. A template in on: breaks queue splitting. "on": "['x', '{{ 1 + 1 }}']" yields a single queue item whose value is the list ['x', '2'], rather than two items. Without a template it splits correctly.
  2. Inner actions cannot use tool:. tool: filesystem inside the nested action_loop raises Could not import tool filesystem: No module named 'orchestrator.tools.filesystem_tools'; action: filesystem is required. So the step syntax inside this construct differs from the step syntax everywhere else, undocumented.

The silent-success case is the serious one: it is the failure mode the resilience work was meant to remove, and no test covers this construct. examples/ contains no create_parallel_queue pipeline that validates, so nothing exercises it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions