muse-crew 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -76,6 +76,19 @@ else
76
76
  fi
77
77
  git -C "$T" checkout -q -- f.txt
78
78
 
79
+ # require_clean_main ignores the crew's own .worktrees/ dir (2026-09-17,
80
+ # Gate 1 J2 canary): a repo WITHOUT .gitignore covering .worktrees/ must
81
+ # still prepare and integrate. The scratch repo T has no .gitignore, and
82
+ # .worktrees/ exists (with .registry/) from the prepares above.
83
+ export CREW_LIB="$REPO_DIR/lib"
84
+ out=$(bash "$LIFECYCLE" prepare "backendtest3") || fail "prepare failed with only .worktrees/ untracked: $out"
85
+ echo "$out" | grep -q '^CREATED' || fail "prepare: expected CREATED with only .worktrees/ untracked, got: $out"
86
+ echo taskwork >> "$T/.worktrees/backendtest3/f.txt"
87
+ (git -C "$T/.worktrees/backendtest3" commit -qam taskwork) || fail "worktree commit failed"
88
+ out=$(bash "$LIFECYCLE" integrate "backendtest3" "merge: backendtest3") || fail "integrate failed with .worktrees/ untracked: $out"
89
+ echo "$out" | grep -q '^MERGED: ' || fail "integrate: no MERGED line: $out"
90
+ "$REPO_DIR/lib/merge-lock.sh" release "backendtest3" >/dev/null || fail "integrate-test: lock release failed"
91
+
79
92
 
80
93
  # integrate reconciles a diverged remote under the merge lock (canary
81
94
  # a6d8b0c8, 2026-09-11): remote main advanced outside the lock; without the
@@ -138,8 +138,14 @@ validate_task_id() {
138
138
  require_clean_main() {
139
139
  cd "$REPO"
140
140
  git checkout main 2>/dev/null
141
+ # The crew's own worktree dir is crew state, not user changes: exclude it
142
+ # from the cleanliness check. (2026-09-17: 0.9.0 failed closed on every
143
+ # target repo whose .gitignore doesn't cover .worktrees/ — which is every
144
+ # repo except the crew's own. Gate 1 J2 canary.)
145
+ local wt_esc=${WORKTREE_DIR##*/}
146
+ wt_esc=${wt_esc//./\\.}
141
147
  local dirty
142
- dirty=$(git status --porcelain 2>/dev/null | wc -l)
148
+ dirty=$(git status --porcelain 2>/dev/null | grep -vE "^.{3}$wt_esc(/|$)" | wc -l)
143
149
  if [ "$dirty" -gt 0 ]; then
144
150
  echo "ERROR: main has $dirty uncommitted changes"
145
151
  git status --short
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "muse-crew",
3
- "version": "0.9.0",
4
- "description": "Opinionated orchestration for Muse workflows, identities, and tooling for autonomous software development.",
3
+ "version": "0.9.1",
4
+ "description": "Opinionated orchestration for Muse \u2014 workflows, identities, and tooling for autonomous software development.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
7
7
  "repository": {