@rallycry/conveyor-skills 1.0.3 → 1.0.4

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.3",
3
+ "version": "1.0.4",
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",
@@ -236,13 +236,14 @@ the merged base.
236
236
 
237
237
  The card is in ReviewPR. What happens next depends on who is driving:
238
238
 
239
- > **Environment — a pod is woken; a standalone local run is not.** In a **pod**
240
- > you stay wake-able: the system wakes you on CI results and review comments,
241
- > so go idle rather than polling. In a **standalone local run** there is no
242
- > wake mechanism report the card and PR state to the user and STOP. No
243
- > pacing, no loop, no babysitting; a follow-up CI fix is a fresh ask. Under
244
- > `conveyor-local-loop` the loop's own Babysit tier owns aftercare instead, and
245
- > its pacing rules govern.
239
+ > **Environment — a pod is woken; a standalone local run is not.** In a
240
+ > **pod** you stay wake-able: the system wakes you on CI results and review
241
+ > comments, so go idle rather than polling. That holds only once the PR exists
242
+ > — mid-pack, nothing wakes either environment (see the pack path's pacing
243
+ > rule). In a **standalone local run** there is no wake mechanism report the
244
+ > card and PR state to the user and STOP. No pacing, no loop, no babysitting;
245
+ > a follow-up CI fix is a fresh ask. Under `conveyor-local-loop` the loop's
246
+ > own Babysit tier owns aftercare instead, and its pacing rules govern.
246
247
 
247
248
  When you are the one handling it:
248
249
 
@@ -82,23 +82,44 @@ session memory for pack state.
82
82
 
83
83
  Work children **one at a time**. Interleaving them thrashes branch state.
84
84
 
85
- ## Pacing — a pack is many turns, not one
86
-
87
- A pack of any size will not fit in a single turn, and there is no partial
88
- credit for a tree left mid-child. Treat **one iteration = one step** (implement
89
- one child, or merge one, or the finale) and end the turn on a committed,
90
- pushed state.
91
-
92
- - Driven by `/loop` (locally) or woken by events (in a pod): do one step, then
93
- end the turn. Under `/loop` with no interval, arm the next wake before
94
- ending — short (60–90s) while there is a child ready to work, long
95
- (1200–1800s) while waiting on something external, and **stop the loop** once
96
- the finale PR is open and quiet.
97
- - Invoked bare with no loop: do one step, report where the pack stands and what
98
- the next step is, and stop. Do not self-schedule.
85
+ ## Pacing — a pack is many steps, not many turns
86
+
87
+ A child boundary is not a turn boundary. Keep driving the pack in the same
88
+ turn: merge, implement the next child, merge, cross-reference, finale. Nothing
89
+ wakes a pack session between children not locally, and not in a pod, where
90
+ children have no PRs, no builds, and no CI to generate an event. A turn that
91
+ ends with a child still ready is a stalled pack, not a paused one: locally it
92
+ sits until a human re-runs the skill; in a pod it idles out, sleeps, and waits
93
+ on the pack watchdog roughly an hour lost per occurrence.
94
+
95
+ End a turn with children remaining ONLY when a wake is guaranteed:
96
+
97
+ - **A background gate is in flight.** Its completion notification re-invokes
98
+ you. (Launch it with the harness's `run_in_background`; hand-rolled
99
+ backgrounding wakes nothing.)
100
+ - **You are blocked on a human** — the parked protocol below. The user's chat
101
+ reply is the wake.
102
+ - **The finale PR is open and quiet** — the Babysit tier. Green and quiet is
103
+ the end.
104
+
105
+ Any other end-of-turn must arm `ScheduleWakeup` first: 60–90s, prompt
106
+ restating which child comes next. That is the pod-sanctioned mechanism (the
107
+ pod prompt allows `ScheduleWakeup` exactly when nothing else will notify you),
108
+ and it is a rare exception, not the cadence. Never end a turn "to report
109
+ progress" — chat is where progress goes, and posting there does not end the
110
+ pack.
111
+
112
+ **Pre-exit invariant.** Before ending ANY turn, re-run
113
+ `mcp__conveyor__list_subtasks`. A child that is `Open` with its dependencies
114
+ met, or `InProgress` under your claim, plus no background job in flight and no
115
+ parked question outstanding, means you are not done: continue, or arm the
116
+ wake. Ending a turn in that state without a wake is the bug this section
117
+ exists to prevent.
99
118
 
100
119
  `conveyor-local-loop` supplies its own pacing table and its own claim-marker
101
- prefix; when running under it, those govern.
120
+ prefix; when running under it, those govern. Under `/loop` the invariant above
121
+ still holds — the loop's re-invocation is a fallback for a dropped wake, never
122
+ a reason to stop after one child.
102
123
 
103
124
  ## Implement a child
104
125