Skip to content

Babashka launcher no longer installs shared constitution articles #32

Description

@darlingm

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.

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