Summary
archon-workflow-builder generates single-node DAG workflows whose prompt templates describe how to handle the user's invocation message but do not reference the $ARGUMENTS substitution variable. As a result, the harness captures the user message as workflow_start.content but never injects it into the node's conversation. The agent sees an empty input section and asks the user for the missing parameter, even though the user did pass one.
Reproduction
- Run
archon-workflow-builder with a prompt asking for a single-node DAG that takes a user-provided string as input (e.g. 'Build sparc-research workflow: SPARC Phase 0 — single-node DAG that conducts research on a topic provided by the user').
- The generated YAML has a
## Input-style section in the prompt that says things like 'the subject provided by the user' but never includes $ARGUMENTS literally.
- Run the workflow with a user input:
archon workflow run <name> 'Subject: Foo'.
- Observe in
.archon/logs/<run-id>.jsonl:
workflow_start.content correctly captures 'Subject: Foo'
node_complete.tokens.input is ~9 (just the YAML system content, no user message)
- The agent in its response asks the user to provide the subject.
Diagnosis
references/variables.md (embedded in the binary) documents that $ARGUMENTS (alias $USER_MESSAGE) is the only mechanism to interpolate the user invocation message into a node prompt. The workflow-builder doesn't include this token when emitting single-node YAMLs that take user input.
Working bundled multi-node workflows like archon-workflow-builder itself reference $ARGUMENTS directly (e.g. Issue: $ARGUMENTS in the classify node).
Fix
Either (a) make the workflow-builder always include $ARGUMENTS in any ## Input / ## Subject section it generates for single-node workflows that take user input, or (b) add a YAML-level metadata flag like accepts_user_input: true that the harness uses to auto-prepend the user message as a user-role message.
Workaround
Manually patch the generated YAML to include $ARGUMENTS somewhere in the node prompt:
prompt: |
## Input
The user's invocation message (verbatim):
$ARGUMENTS
Treat the text above as <whatever the workflow expects>.
After this edit the user input flows through correctly (verified with sparc-research running successfully end-to-end after the patch, run id 18b13dd4e0da86838c5cc7b15a7ba40a, duration 6m4s).
Environment
- archon v0.3.9 (macOS arm64 binary at
~/.local/bin/archon)
- All three custom workflows generated by
archon-workflow-builder in the same session exhibited the same bug
Summary
archon-workflow-buildergenerates single-node DAG workflows whose prompt templates describe how to handle the user's invocation message but do not reference the$ARGUMENTSsubstitution variable. As a result, the harness captures the user message asworkflow_start.contentbut never injects it into the node's conversation. The agent sees an empty input section and asks the user for the missing parameter, even though the user did pass one.Reproduction
archon-workflow-builderwith a prompt asking for a single-node DAG that takes a user-provided string as input (e.g.'Build sparc-research workflow: SPARC Phase 0 — single-node DAG that conducts research on a topic provided by the user').## Input-style section in the prompt that says things like 'the subject provided by the user' but never includes$ARGUMENTSliterally.archon workflow run <name> 'Subject: Foo'..archon/logs/<run-id>.jsonl:workflow_start.contentcorrectly captures'Subject: Foo'node_complete.tokens.inputis ~9 (just the YAML system content, no user message)Diagnosis
references/variables.md(embedded in the binary) documents that$ARGUMENTS(alias$USER_MESSAGE) is the only mechanism to interpolate the user invocation message into a node prompt. The workflow-builder doesn't include this token when emitting single-node YAMLs that take user input.Working bundled multi-node workflows like
archon-workflow-builderitself reference$ARGUMENTSdirectly (e.g.Issue: $ARGUMENTSin the classify node).Fix
Either (a) make the workflow-builder always include
$ARGUMENTSin any## Input/## Subjectsection it generates for single-node workflows that take user input, or (b) add a YAML-level metadata flag likeaccepts_user_input: truethat the harness uses to auto-prepend the user message as a user-role message.Workaround
Manually patch the generated YAML to include
$ARGUMENTSsomewhere in the node prompt:After this edit the user input flows through correctly (verified with sparc-research running successfully end-to-end after the patch, run id 18b13dd4e0da86838c5cc7b15a7ba40a, duration 6m4s).
Environment
~/.local/bin/archon)archon-workflow-builderin the same session exhibited the same bug