Problem
Runnable pack branches stage the shared constitution articles downloaded from main under swarmforge/scripts/shared-articles/. Agents read swarmforge/constitution/articles/, but the Babashka launcher no longer installs the staged articles into that active directory.
This was reproduced with main at 9acd54d223 and two-pack at 892b1f22a5. On a fresh two-pack installation, handoffs.prompt existed in scripts/shared-articles but not in either agent's active constitution. Both agents had the correct scripts directory on PATH; without the shared handoff rules, they mistook the git_handoff message type for a missing executable and stopped.
Reconstructed history
- Project-root and role-worktree installation was introduced in
27b7e83 (Install shared constitution articles).
- Two-pack initially carried its own
handoffs.prompt, then deliberately deleted it in 25be210 (Inherit shared handoff rules in two-pack).
- Forty-one minutes later, the large shell-to-Babashka port in
9afcb6f replaced the launcher but omitted the installer function and both call sites.
- The bootstrap still stages shared articles, and the README still describes shared-article installation. No later commit or documentation indicates that removing the behavior was intentional.
Why this can stay hidden
- Projects that already contain installed articles continue to work.
- Fresh packs still have local project and workflow articles, so startup does not fail validation merely because shared articles are absent.
- The missing article remains visibly present under
scripts/shared-articles, which makes a filesystem inspection look healthy even though the constitution never reads that location.
- Tests on
main run from the source layout, where the shared articles already live in the active constitution. The Babashka-port tests covered parsing and runtime state, but not the staged-pack installation path.
Pack-specific impact
The installation defect affects all three runnable packs; what differs is how clearly their role prompts identify git_handoff as a file format rather than a command.
- Two-pack says
Send a git_handoff. That command-like wording caused the reproduced stop when the shared article was absent.
- Six-pack usually says
using the file-based handoff format. A six-pack workflow was confirmed to complete without the active shared article because its agents still produced and processed handoff files.
- Four-pack also lacks the active shared article. Most roles say
using the file-based handoff format, and the architect says git_handoff files, so it is less ambiguous like six-pack. No four-pack failure has been reproduced, but it is still running without the authoritative shared instructions.
Expected behavior
Port the former installer behavior to the Babashka launcher: install missing shared articles in the project before agents start, install missing project and shared articles in role worktrees during synchronization, and never overwrite an article already present in the target. Add regression coverage for both installation paths.
Problem
Runnable pack branches stage the shared constitution articles downloaded from
mainunderswarmforge/scripts/shared-articles/. Agents readswarmforge/constitution/articles/, but the Babashka launcher no longer installs the staged articles into that active directory.This was reproduced with
mainat9acd54d223andtwo-packat892b1f22a5. On a fresh two-pack installation,handoffs.promptexisted inscripts/shared-articlesbut not in either agent's active constitution. Both agents had the correct scripts directory onPATH; without the shared handoff rules, they mistook thegit_handoffmessage type for a missing executable and stopped.Reconstructed history
27b7e83(Install shared constitution articles).handoffs.prompt, then deliberately deleted it in25be210(Inherit shared handoff rules in two-pack).9afcb6freplaced the launcher but omitted the installer function and both call sites.Why this can stay hidden
scripts/shared-articles, which makes a filesystem inspection look healthy even though the constitution never reads that location.mainrun from the source layout, where the shared articles already live in the active constitution. The Babashka-port tests covered parsing and runtime state, but not the staged-pack installation path.Pack-specific impact
The installation defect affects all three runnable packs; what differs is how clearly their role prompts identify
git_handoffas a file format rather than a command.Send a git_handoff. That command-like wording caused the reproduced stop when the shared article was absent.using the file-based handoff format. A six-pack workflow was confirmed to complete without the active shared article because its agents still produced and processed handoff files.using the file-based handoff format, and the architect saysgit_handoff files, so it is less ambiguous like six-pack. No four-pack failure has been reproduced, but it is still running without the authoritative shared instructions.Expected behavior
Port the former installer behavior to the Babashka launcher: install missing shared articles in the project before agents start, install missing project and shared articles in role worktrees during synchronization, and never overwrite an article already present in the target. Add regression coverage for both installation paths.