@tablation/crew 0.40.0 → 0.40.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.
- package/dist/cli.js +2 -2
- package/package.json +1 -1
- package/prompts/default/personas/lane-qa.md +5 -0
- package/prompts/default/skills/crew-lane-agent.md +19 -7
- package/prompts/default/skills/worktree-setup.md +4 -2
- package/prompts/dev-qa/personas/lane-qa.md +5 -0
- package/prompts/dev-qa/skills/crew-lane-agent.md +19 -7
- package/prompts/dev-qa/skills/worktree-setup.md +4 -2
package/dist/cli.js
CHANGED
|
@@ -6466,7 +6466,7 @@ function handBackComment(b, merged) {
|
|
|
6466
6466
|
|
|
6467
6467
|
\`${b.branch}\` was verified, but squash-merging it into \`${b.base}\` conflicts in ${list}. Work that landed on \`${b.base}\` after this branch was cut has changed the same lines.
|
|
6468
6468
|
|
|
6469
|
-
${merged ? `\`${b.base}\` has been merged into \`${b.branch}\` in its worktree and the conflict is left in place, so \`git status\` there shows exactly what disagrees. Resolve it, commit, and hand back to QA as usual \u2014 \`git merge --abort\` backs the merge out if you would rather start differently.` : `This ship has no worktree for \`${b.branch}\`, so nothing has been merged for you. Merge \`${b.base}\` into the branch wherever it lives, resolve the conflict, and commit.`}
|
|
6469
|
+
${merged ? `\`${b.base}\` has been merged into \`${b.branch}\` in its worktree and the conflict is left in place, so \`git status\` there shows exactly what disagrees. Resolve it, commit, push as a plain fast-forward (the branch is pushed, so rebasing it is not an option) and hand back to QA as usual \u2014 \`git merge --abort\` backs the merge out if you would rather start differently.` : `This ship has no worktree for \`${b.branch}\`, so nothing has been merged for you. Merge \`${b.base}\` into the branch wherever it lives, resolve the conflict, and commit.`}
|
|
6470
6470
|
|
|
6471
6471
|
Nothing was written to \`${b.base}\`: the failed merge was rewound, and the rest of the release shipped without this ticket. Re-verifying is what puts it back in the merge queue.`;
|
|
6472
6472
|
}
|
|
@@ -6476,7 +6476,7 @@ function escalateComment(b) {
|
|
|
6476
6476
|
|
|
6477
6477
|
\`${b.branch}\` was handed back once for a merge conflict, verified again, and conflicts against \`${b.base}\` a second time${b.paths.length ? ` (${b.paths.map((p) => `\`${p}\``).join(", ")})` : ""}.
|
|
6478
6478
|
|
|
6479
|
-
Either \`${b.base}\` is moving faster than this branch can
|
|
6479
|
+
Either \`${b.base}\` is moving faster than this branch can absorb it, or this ticket overlaps work that has already shipped and needs rethinking rather than merging. That is a call for a person, not another lap through the lanes.`;
|
|
6480
6480
|
}
|
|
6481
6481
|
async function applyConflictBounce(writer, b, contract, memberId, log, dryRun) {
|
|
6482
6482
|
const t = { ticket: b.ticket.issue_id, step: "merge" };
|
package/package.json
CHANGED
|
@@ -153,6 +153,11 @@ pass.
|
|
|
153
153
|
base branch or the primary checkout.** The release phase merges verified
|
|
154
154
|
branches and removes their worktrees; a merge may be in flight while you
|
|
155
155
|
run.
|
|
156
|
+
- **You never ask a builder to rewrite a pushed branch.** If you check
|
|
157
|
+
mergeability (`git merge-tree`) and the branch conflicts with or trails the
|
|
158
|
+
base, the bounce says to merge `<remote>/<base>` into the branch, resolve and
|
|
159
|
+
push fast-forward; a rebase would need a force push the builder cannot make.
|
|
160
|
+
Or pass the ticket and let the release's conflict path do the merge.
|
|
156
161
|
- **You only ever enter the worktree of the ticket you are verifying.**
|
|
157
162
|
- Throwaway verification scripts go in a scratch directory outside the
|
|
158
163
|
repository — not the worktree root either.
|
|
@@ -149,10 +149,11 @@ Then:
|
|
|
149
149
|
has posted a new comment since your last one — the comment clears you to
|
|
150
150
|
act, never the flag. Clearing either flag is always the operator's move.
|
|
151
151
|
- **Before resuming in an existing worktree, run `crew sync`** (fetches and
|
|
152
|
-
fast-forwards every worktree branch that tracks a remote
|
|
153
|
-
|
|
154
|
-
printed and park the ticket for a person (see "Stopping");
|
|
155
|
-
|
|
152
|
+
fast-forwards every worktree branch that tracks a remote and does nothing
|
|
153
|
+
else to it). If it reports your branch as diverged, stop: comment with what
|
|
154
|
+
it printed and park the ticket for a person (see "Stopping"); do not try to
|
|
155
|
+
reconcile it yourself. A branch that is merely stale or conflicts with the
|
|
156
|
+
base is not this case: Step 4.4 says how to fix it.
|
|
156
157
|
- A ticket QA bounced back arrives as `in_progress`, reassigned to your row
|
|
157
158
|
(or unassigned, when your ship holds it), with a comment saying what still
|
|
158
159
|
fails. Treat it as new direction: fix what it names and take it back to
|
|
@@ -336,7 +337,8 @@ before going further, and never change a ticket's `report_type` yourself.
|
|
|
336
337
|
first**: `git push --set-upstream <remote> <branch>` from the worktree
|
|
337
338
|
(the remote is `origin` unless the repository's configuration says
|
|
338
339
|
otherwise; a repository with no remote has nothing to push to — say so and
|
|
339
|
-
skip it). Push as a plain fast-forward, never `--force
|
|
340
|
+
skip it). Push as a plain fast-forward, never `--force` (Step 4.4 covers a stale
|
|
341
|
+
branch); a rejected push
|
|
340
342
|
means someone else moved the branch, so stop and say so on the ticket.
|
|
341
343
|
Then, in one write, set `status` to `fixed` and hand the ticket to QA: in
|
|
342
344
|
an `automatic` project **clear `assignee_id`**; in a `hybrid` project set
|
|
@@ -376,8 +378,18 @@ worktree, runs the test gate and deploys. Three consequences:
|
|
|
376
378
|
reads the diff later to fill them in.
|
|
377
379
|
3. **A branch that no longer squash-merges cleanly comes back to you** at
|
|
378
380
|
`in_progress`, reassigned to your lane, with a comment naming the
|
|
379
|
-
conflict. Fix it in the same worktree and take it to `fixed` again
|
|
380
|
-
merge
|
|
381
|
+
conflict. Fix it in the same worktree and take it to `fixed` again. "Never
|
|
382
|
+
merge" above means never merge INTO the base; merging the base INTO your
|
|
383
|
+
own ticket branch is the expected fix (rule 4), and it is not "by hand to
|
|
384
|
+
help".
|
|
385
|
+
4. **A pushed branch is never rewritten; merge `<remote>/<base>` into it.**
|
|
386
|
+
Never rebase, reset or amend a branch you have pushed: that needs a force
|
|
387
|
+
push, which this ship denies, and it strands every other ship's copy. When
|
|
388
|
+
the branch is stale or conflicts with `<base>`, run `git fetch <remote>`
|
|
389
|
+
then `git merge <remote>/<base>` in the ticket's worktree, resolve any
|
|
390
|
+
conflict, commit, run the suite, and `git push` as a plain fast-forward.
|
|
391
|
+
The merge commit disappears when the release squash-merges, so the ticket's
|
|
392
|
+
own diff is all that ships.
|
|
381
393
|
|
|
382
394
|
Never set `verified` yourself — that is QA's call (or the operator's), and
|
|
383
395
|
setting it is what queues a branch for merge. The deployed status is set by
|
|
@@ -33,7 +33,7 @@ person says so. **A missing worktree is never a reason to stop.**
|
|
|
33
33
|
1. From the primary checkout, run `crew sync` (name the route if this ship
|
|
34
34
|
serves more than one). It fetches the remote and fast-forwards the primary
|
|
35
35
|
checkout's base branch, and every worktree branch that tracks a remote,
|
|
36
|
-
|
|
36
|
+
doing nothing else to them. It is quiet about a checkout that is not cleanly
|
|
37
37
|
on the base — something else may be mid-edit there; that is expected.
|
|
38
38
|
2. If it prints `DO NOT CUT A WORKTREE FROM THIS BASE` and exits non-zero, the
|
|
39
39
|
base has diverged from the remote: **hard stop.** Do not `git worktree
|
|
@@ -50,7 +50,9 @@ person says so. **A missing worktree is never a reason to stop.**
|
|
|
50
50
|
When resuming an existing worktree, run `crew sync` first; if it reports your
|
|
51
51
|
branch as diverged (local commits not on the remote *and* the remote has
|
|
52
52
|
moved), stop, comment with what it printed, and park the ticket for a person
|
|
53
|
-
(`needs_info`, operator as assignee).
|
|
53
|
+
(`needs_info`, operator as assignee). A branch that is only stale or conflicts
|
|
54
|
+
with the base is a different case: merge `<remote>/<base>` into it, per the lane
|
|
55
|
+
policy, and push fast-forward.
|
|
54
56
|
|
|
55
57
|
## Making the worktree runnable
|
|
56
58
|
|
|
@@ -152,6 +152,11 @@ pass.
|
|
|
152
152
|
base branch or the primary checkout.** The release phase merges verified
|
|
153
153
|
branches and removes their worktrees; a merge may be in flight while you
|
|
154
154
|
run.
|
|
155
|
+
- **You never ask a builder to rewrite a pushed branch.** If you check
|
|
156
|
+
mergeability (`git merge-tree`) and the branch conflicts with or trails the
|
|
157
|
+
base, the bounce says to merge `<remote>/<base>` into the branch, resolve and
|
|
158
|
+
push fast-forward; a rebase would need a force push the builder cannot make.
|
|
159
|
+
Or pass the ticket and let the release's conflict path do the merge.
|
|
155
160
|
- **You only ever enter the worktree of the ticket you are verifying.**
|
|
156
161
|
- Throwaway verification scripts go in a scratch directory outside the
|
|
157
162
|
repository — not the worktree root either.
|
|
@@ -149,10 +149,11 @@ Then:
|
|
|
149
149
|
has posted a new comment since your last one — the comment clears you to
|
|
150
150
|
act, never the flag. Clearing either flag is always the operator's move.
|
|
151
151
|
- **Before resuming in an existing worktree, run `crew sync`** (fetches and
|
|
152
|
-
fast-forwards every worktree branch that tracks a remote
|
|
153
|
-
|
|
154
|
-
printed and park the ticket for a person (see "Stopping");
|
|
155
|
-
|
|
152
|
+
fast-forwards every worktree branch that tracks a remote and does nothing
|
|
153
|
+
else to it). If it reports your branch as diverged, stop: comment with what
|
|
154
|
+
it printed and park the ticket for a person (see "Stopping"); do not try to
|
|
155
|
+
reconcile it yourself. A branch that is merely stale or conflicts with the
|
|
156
|
+
base is not this case: Step 4.4 says how to fix it.
|
|
156
157
|
- A ticket QA bounced back arrives as `in_progress`, reassigned to your row
|
|
157
158
|
(or unassigned, when your ship holds it), with a comment saying what still
|
|
158
159
|
fails. Treat it as new direction: fix what it names and take it back to
|
|
@@ -336,7 +337,8 @@ before going further, and never change a ticket's `report_type` yourself.
|
|
|
336
337
|
first**: `git push --set-upstream <remote> <branch>` from the worktree
|
|
337
338
|
(the remote is `origin` unless the repository's configuration says
|
|
338
339
|
otherwise; a repository with no remote has nothing to push to — say so and
|
|
339
|
-
skip it). Push as a plain fast-forward, never `--force
|
|
340
|
+
skip it). Push as a plain fast-forward, never `--force` (Step 4.4 covers a stale
|
|
341
|
+
branch); a rejected push
|
|
340
342
|
means someone else moved the branch, so stop and say so on the ticket.
|
|
341
343
|
Then, in one write, set `status` to `fixed` and hand the ticket to QA: in
|
|
342
344
|
an `automatic` project **clear `assignee_id`**; in a `hybrid` project set
|
|
@@ -376,8 +378,18 @@ worktree, runs the test gate and deploys. Three consequences:
|
|
|
376
378
|
reads the diff later to fill them in.
|
|
377
379
|
3. **A branch that no longer squash-merges cleanly comes back to you** at
|
|
378
380
|
`in_progress`, reassigned to your lane, with a comment naming the
|
|
379
|
-
conflict. Fix it in the same worktree and take it to `fixed` again
|
|
380
|
-
merge
|
|
381
|
+
conflict. Fix it in the same worktree and take it to `fixed` again. "Never
|
|
382
|
+
merge" above means never merge INTO the base; merging the base INTO your
|
|
383
|
+
own ticket branch is the expected fix (rule 4), and it is not "by hand to
|
|
384
|
+
help".
|
|
385
|
+
4. **A pushed branch is never rewritten; merge `<remote>/<base>` into it.**
|
|
386
|
+
Never rebase, reset or amend a branch you have pushed: that needs a force
|
|
387
|
+
push, which this ship denies, and it strands every other ship's copy. When
|
|
388
|
+
the branch is stale or conflicts with `<base>`, run `git fetch <remote>`
|
|
389
|
+
then `git merge <remote>/<base>` in the ticket's worktree, resolve any
|
|
390
|
+
conflict, commit, run the suite, and `git push` as a plain fast-forward.
|
|
391
|
+
The merge commit disappears when the release squash-merges, so the ticket's
|
|
392
|
+
own diff is all that ships.
|
|
381
393
|
|
|
382
394
|
Never set `verified` yourself — that is QA's call (or the operator's), and
|
|
383
395
|
setting it is what queues a branch for merge. The deployed status is set by
|
|
@@ -33,7 +33,7 @@ person says so. **A missing worktree is never a reason to stop.**
|
|
|
33
33
|
1. From the primary checkout, run `crew sync` (name the route if this ship
|
|
34
34
|
serves more than one). It fetches the remote and fast-forwards the primary
|
|
35
35
|
checkout's base branch, and every worktree branch that tracks a remote,
|
|
36
|
-
|
|
36
|
+
doing nothing else to them. It is quiet about a checkout that is not cleanly
|
|
37
37
|
on the base — something else may be mid-edit there; that is expected.
|
|
38
38
|
2. If it prints `DO NOT CUT A WORKTREE FROM THIS BASE` and exits non-zero, the
|
|
39
39
|
base has diverged from the remote: **hard stop.** Do not `git worktree
|
|
@@ -50,7 +50,9 @@ person says so. **A missing worktree is never a reason to stop.**
|
|
|
50
50
|
When resuming an existing worktree, run `crew sync` first; if it reports your
|
|
51
51
|
branch as diverged (local commits not on the remote *and* the remote has
|
|
52
52
|
moved), stop, comment with what it printed, and park the ticket for a person
|
|
53
|
-
(`needs_info`, operator as assignee).
|
|
53
|
+
(`needs_info`, operator as assignee). A branch that is only stale or conflicts
|
|
54
|
+
with the base is a different case: merge `<remote>/<base>` into it, per the lane
|
|
55
|
+
policy, and push fast-forward.
|
|
54
56
|
|
|
55
57
|
## Making the worktree runnable
|
|
56
58
|
|