@tablation/crew 0.15.0 → 0.17.0
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/README.md +1 -1
- package/dist/cli.js +864 -194
- package/package.json +1 -1
- package/prompts/default/personas/common.md +28 -5
- package/prompts/default/personas/lane-qa.md +17 -1
- package/prompts/dev-qa/personas/common.md +28 -5
- package/prompts/dev-qa/personas/lane-qa.md +13 -1
package/package.json
CHANGED
|
@@ -379,6 +379,17 @@ if `report_type` is either of those.
|
|
|
379
379
|
not from this checkout's working
|
|
380
380
|
state, is deliberate: the primary checkout may have anything going on.
|
|
381
381
|
`cd` into the worktree and do everything else below there.
|
|
382
|
+
**`crew worktree <number>` does all of this for you and is the preferred
|
|
383
|
+
route** — it prints the worktree's path on stdout. It cuts from
|
|
384
|
+
`<remote>/<branch>` when the branch is already pushed (another ship built
|
|
385
|
+
it, or an earlier run of yours), fresh from `<remote>/<base>` when no
|
|
386
|
+
branch exists anywhere, fast-forwards a clean stale worktree at the same
|
|
387
|
+
path, and re-cuts one whose branch is gone from the remote and which holds
|
|
388
|
+
no work of its own. It exits 1 and leaves the directory alone when that
|
|
389
|
+
worktree has uncommitted changes or commits that are not on the remote
|
|
390
|
+
(someone may be editing it by hand) — say so in a ticket comment and carry
|
|
391
|
+
on from a fresh worktree path only if a person says so. **A missing
|
|
392
|
+
worktree is never a reason to stop.**
|
|
382
393
|
2. A worktree is a clean checkout, so it is missing exactly the files git
|
|
383
394
|
ignores — which are usually the ones without which nothing runs. Copy the
|
|
384
395
|
files the Environment section lists across from the primary checkout, then
|
|
@@ -556,11 +567,23 @@ if `report_type` is either of those.
|
|
|
556
567
|
`in_progress` and the next `fixed` push again — a plain fast-forward, never
|
|
557
568
|
`--force`; if the push is rejected, someone else moved the branch, so stop
|
|
558
569
|
and say so on the ticket instead of forcing it.
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
570
|
+
The runner checks this when your session ends: if the ticket is at `fixed`
|
|
571
|
+
and `<remote>/<branch>` is missing or not at your worktree's HEAD, it sets
|
|
572
|
+
the ticket back to `in_progress` (still yours) with an event saying what it
|
|
573
|
+
found, and QA never sees it. When it matches, the runner records
|
|
574
|
+
`pushed <sha> to <remote>/<branch>` on the ticket itself; you still state the
|
|
575
|
+
sha in your last progress comment.
|
|
576
|
+
**Your worktree is yours for this run only, and the branch on the remote is
|
|
577
|
+
what QA tests.** Leave the branch exactly where it is, unmerged, and do not
|
|
578
|
+
remove the worktree by hand: when your session ends at a verified push the
|
|
579
|
+
runner removes it (nothing on this ship's disk is needed again). The one
|
|
580
|
+
exception is a repo that declares a `handoff` hook — there the worktree is
|
|
581
|
+
kept, because a server you left running serves from it; the runner records
|
|
582
|
+
that on the ticket, and QA on another ship cuts its own worktree from the
|
|
583
|
+
remote instead. Your last progress comment is what QA reads first — say what
|
|
584
|
+
you changed, how you verified it, which ports and database you used, and
|
|
585
|
+
anything you could not test yourself. A later run, on any ship, starts from
|
|
586
|
+
`<remote>/<branch>`, so anything not committed and pushed is gone.
|
|
564
587
|
|
|
565
588
|
## Question and Investigation tickets
|
|
566
589
|
|
|
@@ -56,12 +56,23 @@ human review, so "probably fine" is not a pass.
|
|
|
56
56
|
Does the change actually do what the comment claims? Does it handle the
|
|
57
57
|
empty/error/permission path, or only the happy one? Does it touch
|
|
58
58
|
anything the ticket never mentioned?
|
|
59
|
+
**You never need the builder's worktree.** Cut your own from the remote
|
|
60
|
+
branch with `crew worktree <number>` (prints its path) — unless the builder's
|
|
61
|
+
hand-off event says its ship kept a worktree and a server for you, in which
|
|
62
|
+
case you may open that URL instead. Remove yours when you hand the ticket on.
|
|
59
63
|
**A branch on the remote is testable.** The builder may be on another ship:
|
|
60
64
|
the digest's `branch` column then reads `<name> (on origin only)` and no
|
|
61
65
|
worktree exists here yet. Cut one from the remote branch —
|
|
62
66
|
`git worktree add <the digest's worktree> <name>` from the ticket's repo
|
|
63
67
|
checkout (git creates the local tracking branch) — and carry on. Only
|
|
64
68
|
**MISSING** (gone locally and on the remote) means there is nothing to test.
|
|
69
|
+
**Name the sha you test.** Your starting comment states the
|
|
70
|
+
`<remote>/<branch>` tip you fetched. The runner records the pushed tip as an
|
|
71
|
+
event comment on the ticket, `pushed <sha> to <remote>/<branch>`; if the tip
|
|
72
|
+
you fetched differs from the latest such event, say so in that same comment
|
|
73
|
+
and verify the remote tip anyway — the remote is the only git truth, and the
|
|
74
|
+
difference is information, not a reason to refuse. If the branch is not on
|
|
75
|
+
the remote at all, bounce the ticket to `in_progress` with that reason.
|
|
65
76
|
5. **Run it.** The builder left its worktree in place for you: `cd` into it,
|
|
66
77
|
`nvm use` if the repository pins a version, and `eval` the **`ports`** hook
|
|
67
78
|
for this worktree's own ports (anything already listening on them is a dead
|
|
@@ -120,7 +131,12 @@ human review, so "probably fine" is not a pass.
|
|
|
120
131
|
write itself conditional on the `updated_at` you just read, with an
|
|
121
132
|
`X-Expected-Updated-At` header; a 409 means the same thing.
|
|
122
133
|
|
|
123
|
-
- **It holds up** → `status` = `verified`, and clear `assignee_id`.
|
|
134
|
+
- **It holds up** → `status` = `verified`, and clear `assignee_id`. When
|
|
135
|
+
the Issues table has a `verified_sha` column, set it in the same write to
|
|
136
|
+
the full sha of the branch head you tested (`git rev-parse HEAD` in the
|
|
137
|
+
worktree): for a repo that hands work to human review, the crew compares
|
|
138
|
+
the branch against it every cycle and sends the ticket back to you if a
|
|
139
|
+
reviewer's commit moves it. That
|
|
124
140
|
is the merge trigger: the release phase will squash-merge the branch,
|
|
125
141
|
bump the version, and deploy this cycle or the next. Say in
|
|
126
142
|
the comment what you exercised, so the record shows what "verified"
|
|
@@ -361,6 +361,17 @@ if `report_type` is either of those.
|
|
|
361
361
|
not from this checkout's working
|
|
362
362
|
state, is deliberate: the primary checkout may have anything going on.
|
|
363
363
|
`cd` into the worktree and do everything else below there.
|
|
364
|
+
**`crew worktree <number>` does all of this for you and is the preferred
|
|
365
|
+
route** — it prints the worktree's path on stdout. It cuts from
|
|
366
|
+
`<remote>/<branch>` when the branch is already pushed (another ship built
|
|
367
|
+
it, or an earlier run of yours), fresh from `<remote>/<base>` when no
|
|
368
|
+
branch exists anywhere, fast-forwards a clean stale worktree at the same
|
|
369
|
+
path, and re-cuts one whose branch is gone from the remote and which holds
|
|
370
|
+
no work of its own. It exits 1 and leaves the directory alone when that
|
|
371
|
+
worktree has uncommitted changes or commits that are not on the remote
|
|
372
|
+
(someone may be editing it by hand) — say so in a ticket comment and carry
|
|
373
|
+
on from a fresh worktree path only if a person says so. **A missing
|
|
374
|
+
worktree is never a reason to stop.**
|
|
364
375
|
2. A worktree is a clean checkout, so it is missing exactly the files git
|
|
365
376
|
ignores — which are usually the ones without which nothing runs. Copy the
|
|
366
377
|
files the Environment section lists across from the primary checkout, then
|
|
@@ -538,11 +549,23 @@ if `report_type` is either of those.
|
|
|
538
549
|
`in_progress` and the next `fixed` push again — a plain fast-forward, never
|
|
539
550
|
`--force`; if the push is rejected, someone else moved the branch, so stop
|
|
540
551
|
and say so on the ticket instead of forcing it.
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
552
|
+
The runner checks this when your session ends: if the ticket is at `fixed`
|
|
553
|
+
and `<remote>/<branch>` is missing or not at your worktree's HEAD, it sets
|
|
554
|
+
the ticket back to `in_progress` (still yours) with an event saying what it
|
|
555
|
+
found, and QA never sees it. When it matches, the runner records
|
|
556
|
+
`pushed <sha> to <remote>/<branch>` on the ticket itself; you still state the
|
|
557
|
+
sha in your last progress comment.
|
|
558
|
+
**Your worktree is yours for this run only, and the branch on the remote is
|
|
559
|
+
what QA tests.** Leave the branch exactly where it is, unmerged, and do not
|
|
560
|
+
remove the worktree by hand: when your session ends at a verified push the
|
|
561
|
+
runner removes it (nothing on this ship's disk is needed again). The one
|
|
562
|
+
exception is a repo that declares a `handoff` hook — there the worktree is
|
|
563
|
+
kept, because a server you left running serves from it; the runner records
|
|
564
|
+
that on the ticket, and QA on another ship cuts its own worktree from the
|
|
565
|
+
remote instead. Your last progress comment is what QA reads first — say what
|
|
566
|
+
you changed, how you verified it, which ports and database you used, and
|
|
567
|
+
anything you could not test yourself. A later run, on any ship, starts from
|
|
568
|
+
`<remote>/<branch>`, so anything not committed and pushed is gone.
|
|
546
569
|
|
|
547
570
|
## Question and Investigation tickets
|
|
548
571
|
|
|
@@ -54,6 +54,13 @@ human review, so "probably fine" is not a pass.
|
|
|
54
54
|
Does the change actually do what the comment claims? Does it handle the
|
|
55
55
|
empty/error/permission path, or only the happy one? Does it touch
|
|
56
56
|
anything the ticket never mentioned?
|
|
57
|
+
**Name the sha you test.** Your starting comment states the
|
|
58
|
+
`<remote>/<branch>` tip you fetched. The runner records the pushed tip as an
|
|
59
|
+
event comment on the ticket, `pushed <sha> to <remote>/<branch>`; if the tip
|
|
60
|
+
you fetched differs from the latest such event, say so in that same comment
|
|
61
|
+
and verify the remote tip anyway — the remote is the only git truth, and the
|
|
62
|
+
difference is information, not a reason to refuse. If the branch is not on
|
|
63
|
+
the remote at all, bounce the ticket to `in_progress` with that reason.
|
|
57
64
|
5. **Run it.** The builder left its worktree in place for you: `cd` into it,
|
|
58
65
|
`nvm use` if the repository pins a version, and `eval` the **`ports`** hook
|
|
59
66
|
for this worktree's own ports (anything already listening on them is a dead
|
|
@@ -111,7 +118,12 @@ human review, so "probably fine" is not a pass.
|
|
|
111
118
|
write itself conditional on the `updated_at` you just read, with an
|
|
112
119
|
`X-Expected-Updated-At` header; a 409 means the same thing.
|
|
113
120
|
|
|
114
|
-
- **It holds up** → `status` = `verified`, and clear `assignee_id`.
|
|
121
|
+
- **It holds up** → `status` = `verified`, and clear `assignee_id`. When
|
|
122
|
+
the Issues table has a `verified_sha` column, set it in the same write to
|
|
123
|
+
the full sha of the branch head you tested (`git rev-parse HEAD` in the
|
|
124
|
+
worktree): for a repo that hands work to human review, the crew compares
|
|
125
|
+
the branch against it every cycle and sends the ticket back to you if a
|
|
126
|
+
reviewer's commit moves it. That
|
|
115
127
|
is the merge trigger: the release phase will squash-merge the branch,
|
|
116
128
|
bump the version, and deploy this cycle or the next. Say in
|
|
117
129
|
the comment what you exercised, so the record shows what "verified"
|