@tablation/crew 0.16.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tablation/crew",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "A standing team of headless agents that picks work off a Tablation board, does it on a machine you control, and reports back.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -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
@@ -562,11 +573,17 @@ if `report_type` is either of those.
562
573
  found, and QA never sees it. When it matches, the runner records
563
574
  `pushed <sha> to <remote>/<branch>` on the ticket itself; you still state the
564
575
  sha in your last progress comment.
565
- Leave the worktree and branch exactly where they are, unmerged: QA boots
566
- *your worktree* on its derived ports to test the fix, so removing it
567
- would leave QA nothing to test. Your last progress comment is what QA
568
- reads first — say what you changed, how you verified it, which ports and
569
- database the worktree uses, and anything you could not test yourself.
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.
570
587
 
571
588
  ## Question and Investigation tickets
572
589
 
@@ -56,6 +56,10 @@ 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 —
@@ -127,7 +131,12 @@ human review, so "probably fine" is not a pass.
127
131
  write itself conditional on the `updated_at` you just read, with an
128
132
  `X-Expected-Updated-At` header; a 409 means the same thing.
129
133
 
130
- - **It holds up** → `status` = `verified`, and clear `assignee_id`. That
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
131
140
  is the merge trigger: the release phase will squash-merge the branch,
132
141
  bump the version, and deploy this cycle or the next. Say in
133
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
@@ -544,11 +555,17 @@ if `report_type` is either of those.
544
555
  found, and QA never sees it. When it matches, the runner records
545
556
  `pushed <sha> to <remote>/<branch>` on the ticket itself; you still state the
546
557
  sha in your last progress comment.
547
- Leave the worktree and branch exactly where they are, unmerged: QA boots
548
- *your worktree* on its derived ports to test the fix, so removing it
549
- would leave QA nothing to test. Your last progress comment is what QA
550
- reads first — say what you changed, how you verified it, which ports and
551
- database the worktree uses, and anything you could not test yourself.
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.
552
569
 
553
570
  ## Question and Investigation tickets
554
571
 
@@ -118,7 +118,12 @@ human review, so "probably fine" is not a pass.
118
118
  write itself conditional on the `updated_at` you just read, with an
119
119
  `X-Expected-Updated-At` header; a 409 means the same thing.
120
120
 
121
- - **It holds up** → `status` = `verified`, and clear `assignee_id`. That
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
122
127
  is the merge trigger: the release phase will squash-merge the branch,
123
128
  bump the version, and deploy this cycle or the next. Say in
124
129
  the comment what you exercised, so the record shows what "verified"