@rallycry/conveyor-skills 1.0.13 → 1.0.15

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": "@rallycry/conveyor-skills",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "Shared Claude Code skills for Conveyor consumer repos, linked into .claude/skills via the conveyor-skills CLI",
5
5
  "keywords": [
6
6
  "claude",
@@ -52,7 +52,8 @@ or the finish line is true.
52
52
  **Pack path goal:** the WHOLE pack, not one child. Per child the goal covers
53
53
  the full cycle: plan reviewed and promoted → implemented on the pack branch →
54
54
  gated → reviewer-of-record pass → merged (locally) or
55
- `mcp__conveyor__update_task` → ReviewDev (pod) → base synced. Then
55
+ `mcp__conveyor__update_task` → ReviewDev (pod). Base readiness happens once at
56
+ the finale unless an active child needs the newer base to proceed. Then
56
57
  cross-reference, then the finale.
57
58
  **Finish line:** every child is ReviewDev, Complete, or Cancelled AND the
58
59
  parent's finale PR into the base branch is open with CI started. One child done
@@ -290,6 +291,30 @@ in chat and mark it Complete.
290
291
 
291
292
  ## Open the PR
292
293
 
294
+ ### Readiness policy
295
+
296
+ A newer base alone is not a reason to refresh an already-green branch. Keep that
297
+ head stable until a real readiness boundary: final pre-PR verification, a merge
298
+ conflict, or an active dependency blocked on the newer base. When a sync or
299
+ repair is necessary, combine the base merge, conflict resolution, and CI repair
300
+ locally, run the required local verification on the resulting head, then push
301
+ once. Remote CI validates that exact pushed head. Adopt a shared repair at that
302
+ same boundary unless it blocks active work now.
303
+
304
+ Use the existing task chat to make the reason auditable, without a new tracking
305
+ system:
306
+
307
+ ```
308
+ [branch-readiness] reason: final_readiness | conflict_resolution | dependency_unblock | shared_repair
309
+ prior_head: <sha>
310
+ base: <branch>
311
+ base_sha: <sha>
312
+ ```
313
+
314
+ A no-change merge already creates no new head. The policy avoids creating a new
315
+ head just because the base advanced. A changed branch needs fresh CI on that
316
+ exact head; a prior green result does not carry forward.
317
+
293
318
  Refresh against the card's base first, then gate, then open — in that order, so
294
319
  nothing invalidates the verification you just did:
295
320
 
@@ -244,23 +244,29 @@ leave the branch pushed, and stop.
244
244
  real pack branch. Fix the parent record (`mcp__conveyor__update_task` with
245
245
  `githubBranch: <pack>`), advance the child by hand (`update_task` →
246
246
  `ReviewDev`), and post the drift to parent chat so it is visible.
247
- 3. **Sync `dev` into the pack branch — yours to do, in either environment.**
248
- Nothing server-side syncs the pack branch for you; a session driving the
249
- pack resolves conflicts in-session.
247
+ 3. **Do not sync after every child.** A pod pack has no child PRs, so those
248
+ repeated merges are not child CI boundaries. Sync once immediately before
249
+ the finale's verification pass. Sync earlier only when an active child needs
250
+ the newer base to proceed or when resolving a real conflict.
250
251
 
251
252
  ```bash
252
- git checkout <pack> && git pull && git fetch origin <base> && git merge origin/<base> --no-edit && git push
253
+ git checkout <pack> && git pull && git fetch origin <base>:refs/remotes/origin/<base> && git merge origin/<base> --no-edit
253
254
  ```
254
255
 
255
- **Merge, never rebase** — the pack branch is shared with open child PRs and
256
- WIP refs, and rewriting it breaks them. Conflicts are yours to resolve
257
- properly; you wrote the code.
256
+ Run the required local gate against the resulting head, then push once.
257
+ Remote CI validates that exact pushed head.
258
258
 
259
- If the merge drags in unrelated changes or errors, `dev` may have been
260
- rewound (a revert or force-push). Verify the previous sync point is still an
261
- ancestor of `origin/<base>` (`git merge-base --is-ancestor`); if it is not,
262
- abort the merge and escalate rather than chasing the noise.
263
- 4. Report the merge to parent chat in a line or two.
259
+ **Merge, never rebase.** The pack branch is shared with open child PRs and
260
+ WIP refs, and rewriting it breaks them. Conflicts are yours to resolve
261
+ properly; you wrote the code. If the merge drags in unrelated changes or
262
+ errors, `dev` may have been rewound. Verify the previous sync point is still
263
+ an ancestor of `origin/<base>` (`git merge-base --is-ancestor`); if it is
264
+ not, abort the merge and escalate rather than chasing the noise.
265
+
266
+ When an early sync changes the branch, post `[branch-readiness]` to parent
267
+ chat with `reason`, `prior_head`, `base`, and `base_sha`. The final sync uses
268
+ the same record when it creates a new head. Run the finale gate against that
269
+ exact resulting head.
264
270
 
265
271
  ## Finale
266
272
 
@@ -71,7 +71,7 @@ mutation applied before the reply — is a stalled run, not a paused one.
71
71
  4. Skip, and list under "deliberately not touched":
72
72
  - rows with `parentTaskId` set — prune the pack parent; its children follow
73
73
  the parent's disposition;
74
- - rows with a non-null `codespaceStatus` — something is running on it;
74
+ - rows with a non-null `workspaceStatus` (`codespaceStatus` on older servers) — something is running on it;
75
75
  - rows with a `githubPRUrl` — work exists; that is a review question, not
76
76
  a prune question.
77
77
  5. `mcp__conveyor__list_tags` once — the project's vocabulary, and whether a