Skip to content

Generated merge_and_process directive can be mistaken for a shell command #29

Description

@darlingm

Problem

For every git_handoff, main:swarmforge/scripts/swarm_handoff.bb generates:

Re-read your role and constitution.

merge_and_process <sender> <commit>

This appears to mean “merge the supplied commit, then process it according to
your role.” It is not an installed command, but its command-shaped spelling led
a Codex agent to pass it to Bash and stop when Bash reported command not found.

The failure was observed in a six-pack run against main at 9acd54d223 and
six-pack at 59803dadb3. Six-pack obtains its shared runtime scripts from
main; its local-workflow.prompt reference to merge_and_process QA <commit> describes the same operation, not a second implementation.

Observed behavior

After ready_for_next.sh accepted a valid specifier-to-coder handoff, Codex
ran:

merge_and_process specifier <valid-commit>

Bash reported merge_and_process: command not found, and the agent stopped.
The commit resolved on the sender branch, the receiving worktree was clean, the
role's scripts directory was on PATH, and upstream contains no corresponding
executable.

When the agent was told that merge_and_process only looks like a command and
is instead an instruction to merge and process the supplied commit, it
continued with the handoff. No executable, configuration, or PATH change was
needed. That isolates the generated wording as the problem.

Independent reports show the same ambiguity: agents improvised inconsistent
merges in gabadi/swarm-forge#44,
and two later sessions failed or skipped the merge in
gabadi/swarm-forge#76.

Expected behavior and scope

The generated payload should make it unambiguous that merge_and_process is an
agent-level instruction rather than a command on PATH. The high-level merge
strategy can remain flexible; this issue does not request a helper executable
or a mandatory conflict-resolution policy.

A focused change could update the generated wording, protocol examples,
existing payload assertions, and the matching six-pack local-workflow.prompt
reference.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions