Skip to content

test: project-scope distribution — beads-config across mixed subrepos #19

@arcaven

Description

@arcaven

Context

sideshow init --scope project landed on main (b9394f7). This distributes pack artifacts to all subrepos listed in repos.yaml. The first real pack is beads-config — distributes bd hooks, rules, CLAUDE.md sections, symlinks, and gitignore entries.

What to test

An aae-orc checkout with mixed subrepo state:

  • Some repos have existing .beads symlinks and .gitignore entries (manually created)
  • switchboard has a full _bmad/ install (68 commands, _bmad-custom/, _bmad-output/)
  • ThreeDoors has .claude/settings.json with a PreToolUse hook
  • Most repos have hand-authored CLAUDE.md files
  • Some repos (ai, ourbot, akey, director) may have minimal or no .claude/ setup

Steps

1. Update sideshow

cd sideshow
git pull
go build -o sideshow ./cmd/sideshow/
# or: brew upgrade sideshow (once tap CI completes)

2. Install the beads-config pack

cd /path/to/aae-orc
./sideshow/sideshow install beads-config --from _packs/beads-config --yes --no-permissions
./sideshow/sideshow list   # should show bmad + beads-config

3. Dry-run first

./sideshow/sideshow init --scope project --dry-run

Check:

  • All present subrepos listed with per-artifact status
  • Absent repos (director if not cloned) show "not cloned (skipped)"
  • Existing .beads symlinks show - (skipped, already correct)
  • Existing .gitignore entries show - (skipped, already present)
  • No files actually created (verify with git status after)

4. Apply for real

./sideshow/sideshow init --scope project

Check per artifact type:

  • Rules (.claude/rules/task-workflow.md): Created in each repo with <!-- managed by sideshow:beads-config:1.0.0 --> marker as first line
  • Hooks (.claude/settings.json): Created or merged with SessionStart and PreCompact hooks in Claude Code's nested format (matcher + hooks array)
  • CLAUDE.md injection: Section appended between <!-- sideshow:beads-tracker:begin --> and <!-- sideshow:beads-tracker:end --> markers. Existing content preserved.
  • Symlinks (.beads): Skipped where already correct, created where missing
  • Gitignore (.beads): Skipped where already present, appended where missing

5. Mixed-state edge cases

  • ThreeDoors: settings.json should have BOTH its existing PreToolUse hook AND the new SessionStart/PreCompact hooks. Permissions section untouched.
  • switchboard: Existing _bmad/, _bmad-custom/, _bmad-output/ dirs untouched. New beads artifacts added alongside.
  • Repos with hand-authored CLAUDE.md: Original content intact, beads section appended at end with markers.

6. Idempotency

./sideshow/sideshow init --scope project   # run again
  • All artifacts show skipped or no-op (no duplicate hooks, no duplicate CLAUDE.md sections, no duplicate gitignore lines)
  • settings.json not bloated with repeated entries

7. Start a Claude session in a subrepo

cd forestage   # or any subrepo
# start a new Claude Code session
  • bd prime fires on session start (from the hook)
  • Agent can see the beads-tracker section in CLAUDE.md
  • Agent can run bd ready, bd show, etc. (symlink works)

8. Registry verification

cat ~/.local/share/sideshow/registry.yaml
  • projects: section exists with UUID matching .sideshow/project.yaml
  • Installation root path recorded
  • Per-repo artifact ledger populated

Failure reporting

If anything behaves unexpectedly, report:

  1. Which step failed
  2. The exact command output
  3. The state of the affected file before and after (if applicable)
  4. git diff in the affected subrepo

Files of interest

File Purpose
_packs/beads-config/pack.yaml Pack manifest with distribute section
.sideshow/project.yaml Project identity (UUID)
repos.yaml Subrepo registry
~/.local/share/sideshow/registry.yaml Distribution ledger

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions