ContextLab / ContextLab/orchestrator

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

Open
#478 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
3
Forks
2
Avg merge
13m
Merged PRs (30d)
1

Description

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:

```yaml
- 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.

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the YAML pipeline in the issue and trace the create_parallel_queue entry point, since examples/ has no coverage for it. Verify that unresolved inner actions fail visibly, that $ references are not silently stripped, that templated on: values split correctly, and that the documented inner-action syntax is consistent. Add focused tests covering the reported behaviors and confirm failures reach the caller.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.