plumbbob 0.12.0 → 0.13.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.
Files changed (61) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +15 -10
  3. package/dist/cli-core.js +25 -3
  4. package/dist/lib/git.js +20 -8
  5. package/dist/lib/notice.js +15 -1
  6. package/dist/lib/orient.js +266 -19
  7. package/dist/lib/sidecar.js +149 -3
  8. package/dist/verbs/abandon.js +19 -14
  9. package/dist/verbs/build.js +45 -22
  10. package/dist/verbs/checkpoint.js +34 -25
  11. package/dist/verbs/doctor.js +23 -4
  12. package/dist/verbs/finish.js +21 -17
  13. package/dist/verbs/handoff.js +235 -65
  14. package/dist/verbs/order.js +110 -0
  15. package/dist/verbs/park.js +6 -2
  16. package/dist/verbs/recover.js +31 -1
  17. package/dist/verbs/relay.js +306 -0
  18. package/dist/verbs/revert.js +17 -11
  19. package/dist/verbs/spike.js +50 -38
  20. package/dist/verbs/start.js +13 -9
  21. package/dist/verbs/status.js +2 -2
  22. package/dist/verbs/turn.js +14 -7
  23. package/dist/verbs/use.js +21 -17
  24. package/hooks/hooks.json +7 -0
  25. package/node_modules/checkride/.claude-plugin/plugin.json +1 -1
  26. package/node_modules/checkride/CHANGELOG.md +117 -0
  27. package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
  28. package/node_modules/checkride/dist/adapters.js +14 -10
  29. package/node_modules/checkride/dist/adapters.js.map +1 -1
  30. package/node_modules/checkride/dist/baseline/fallow.d.ts +4 -3
  31. package/node_modules/checkride/dist/baseline/fallow.d.ts.map +1 -1
  32. package/node_modules/checkride/dist/baseline/fallow.js +15 -8
  33. package/node_modules/checkride/dist/baseline/fallow.js.map +1 -1
  34. package/node_modules/checkride/dist/gate.d.ts.map +1 -1
  35. package/node_modules/checkride/dist/gate.js +62 -44
  36. package/node_modules/checkride/dist/gate.js.map +1 -1
  37. package/node_modules/checkride/dist/init.js +3 -3
  38. package/node_modules/checkride/dist/init.js.map +1 -1
  39. package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
  40. package/node_modules/checkride/dist/orchestrator.js +53 -8
  41. package/node_modules/checkride/dist/orchestrator.js.map +1 -1
  42. package/node_modules/checkride/dist/pack.js +3 -3
  43. package/node_modules/checkride/dist/security.d.ts +4 -2
  44. package/node_modules/checkride/dist/security.d.ts.map +1 -1
  45. package/node_modules/checkride/dist/security.js +42 -8
  46. package/node_modules/checkride/dist/security.js.map +1 -1
  47. package/node_modules/checkride/dist/triage/render.js +1 -1
  48. package/node_modules/checkride/dist/triage/render.js.map +1 -1
  49. package/node_modules/checkride/package.json +10 -10
  50. package/node_modules/checkride/skills/check/SKILL.md +4 -3
  51. package/node_modules/checkride/templates/shared/cspell.json +3 -24
  52. package/package.json +3 -3
  53. package/skills/build/SKILL.md +47 -20
  54. package/skills/harvest/SKILL.md +4 -1
  55. package/skills/order/SKILL.md +50 -0
  56. package/skills/park/SKILL.md +7 -0
  57. package/skills/plan/SKILL.md +4 -1
  58. package/skills/refine/SKILL.md +6 -2
  59. package/skills/step/SKILL.md +8 -3
  60. package/skills/verify/SKILL.md +42 -22
  61. package/templates/intent.md +9 -0
@@ -76,6 +76,7 @@ this skill verifies it the same way: **it reads the diff, not the author**
76
76
  short paragraph when the step needs explaining>
77
77
 
78
78
  ## 1 <the first highlight: one sentence, one move>
79
+
79
80
  <the full story: what moved, why, what was tried and dropped>
80
81
 
81
82
  ## 2 ...
@@ -113,28 +114,47 @@ this skill verifies it the same way: **it reads the diff, not the author**
113
114
  `## Log` and then truncates it (the detail plane in the
114
115
  [turn anatomy](https://github.com/robmclarty/plumbbob/blob/main/docs/presentation.md)).
115
116
 
116
- *Paste the turn.* Run `plumbbob handoff` and paste its output whole, verbatim, at top
117
- level, trailing blank line included, then end the turn. Never nest it inside a fence of
118
- your own; it carries fences of its own and they cannot nest. It prints the Summary and
119
- its highlights, the Readout fence (its measured `check`, `seam`, `diff`, and `spent`
120
- rows folded with your three), a `diff` fence when the change is 20 lines or fewer, the
121
- Verdict folded worst-of from the same rows, Next Up, Your Call, and your recommendation
122
- last. At the pause the check row reads green, since a red one stopped you back at step
123
- 1. The gate verdict's one home is that row: no standalone verdict line exists, and you
124
- never restate the verdict in prose. A narrowed run names the slots it skipped there
125
- (`· without test`), and that named narrowing is the whole disclosure. The notice
126
- checkride's Stop hook appends after your turn is not yours to relay or repeat; the
127
- trailing blank line you kept is what lands it on its own line. Relayed CLI strings keep
128
- their em-dashes; your own lines never use one, the write-versus-relay line of
117
+ *Paste the turn.* Run `plumbbob handoff <n>`, naming the step you reviewed, and paste
118
+ its output whole, verbatim, at top level, trailing blank line included, then end the
119
+ turn. The number is what lets a diff built outside `/plumbbob:build` reach its pause:
120
+ nothing is in flight for that diff, and a bare `handoff` would read the moment as a
121
+ boundary and render no Your Call block. Never nest it inside a fence of
122
+ your own; it carries fences of its own and they cannot nest. It prints the Now line
123
+ naming the step you reviewed, the Summary and its highlights, the Readout fence (its
124
+ measured `check`, `seam`, `diff`, and `spent` rows folded with your three), a `diff`
125
+ fence when the change is 20 lines or fewer, the Verdict folded worst-of from the same
126
+ rows, Next Up, Your Call, and your recommendation last. Run it once: a second run at an
127
+ unchanged pause prints the one-line reminder instead of the card, so if that line comes
128
+ back where the card belongs (you ran handoff earlier in this turn), run
129
+ `plumbbob handoff <n> --full` and paste that. At the pause the check row reads green,
130
+ since a red one stopped you back at step 1. The gate verdict's one home is that row:
131
+ no standalone verdict line exists, and you never restate the verdict in prose. A
132
+ narrowed run names the slots it skipped there (`· without test`), and that named
133
+ narrowing is the whole disclosure. The notice checkride's Stop hook appends after your
134
+ turn is not yours to relay or repeat; the trailing blank line you kept is what lands it
135
+ on its own line. Relayed CLI strings keep their em-dashes; your own lines never use
136
+ one, the write-versus-relay line of
129
137
  [D78 (em-dash-ban)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d78).
130
138
 
131
139
  *Then read the reply as an ask or a direction.* A message that **asks** ("expand 2",
132
- "what does that mean?", "why did the seam row flag that?") is an expand: answer it from the detail file, from
133
- `git diff`, or from the build-log's `## Log` for an older step, never from recall, then run `plumbbob handoff` again and
134
- paste it. The step is still in flight, so it renders the same pause, and the Your Call
135
- block stays the CLI's to render rather than yours to retype. A message that **directs**
136
- is needs-work: take it as what to change, and nothing lands until the human says
137
- `looks good`.
140
+ "what does that mean?", "why did the seam row flag that?") is an expand: answer it from
141
+ the detail file, from `git diff`, or from the build-log's `## Log` for an older step,
142
+ never from recall, then run `plumbbob handoff <n>` and paste its output beneath your
143
+ answer, whole and verbatim. The turn is your answer, then that output, and nothing after
144
+ it. The pause renders its card once
145
+ ([D87 (pause-once)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d87)):
146
+ while nothing about it has changed, handoff prints one line,
147
+ `**Next Up**: Back to Step <N> of <M> - <title>`, in place of the card the human already
148
+ read, so your answer stays on screen. The CLI picks the form, never you: paste whichever
149
+ one it prints, and never retype the card or reach for `--full` to put it beneath an
150
+ answer.
151
+
152
+ Two moments bring the whole card back, and in both you run `plumbbob handoff <n> --full`
153
+ and paste its output whole, with nothing written around it: the human asks to see the
154
+ pause (`show the pause`, or any wording of it), or the card is not in this conversation
155
+ (a fresh session, or one after `/clear`, that finds the step still at its pause). A
156
+ message that **directs** is needs-work: take it as what to change, and nothing lands
157
+ until the human says `looks good`.
138
158
 
139
159
  - **Reconcile a drifted subject here, in the open.** The planned title *is* the
140
160
  checkpoint subject ([D68 (conventional-subjects)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d68)). If the diff drifted from it (the
@@ -194,7 +214,7 @@ When this session runs under plumbbob's turn hook, `plumbbob checkpoint` **refus
194
214
  land a step in the same turn it was entered**, and that refusal **is** this pause, not
195
215
  an error to route around. If the checkpoint prints `checkpoint refused — no human turn
196
216
  since this step began`, you have reached the pause the hard way: write the file, run
197
- `plumbbob handoff`, paste its block as step 5 says, **end the turn there**, and the
217
+ `plumbbob handoff <n>`, paste its block as step 5 says, **end the turn there**, and the
198
218
  human's next message is the tick that lets
199
219
  the checkpoint land when you run it again. **Never reach for a raw `git commit` to force the
200
220
  land**; that forges the very record the latch exists to keep honest, and the
@@ -220,8 +240,8 @@ instead.**
220
240
  self-review; checkride gates, the human approves. `blocked` → unblock and re-run;
221
241
  `drift` → `/plumbbob:refine` before checkpointing. No code path makes them blocking.
222
242
  - **A refused checkpoint is the pause, never a workaround.** Under the turn
223
- hook a same-turn checkpoint is refused *by design*: write the file, run `plumbbob
224
- handoff`, paste its block, **end the turn there**, and let the human's next message
243
+ hook a same-turn checkpoint is refused *by design*: write the file, run
244
+ `plumbbob handoff <n>`, paste its block, **end the turn there**, and let the human's next message
225
245
  re-tick it. Never route around it with a
226
246
  raw `git commit`; the latch guards the record, not the work.
227
247
  - **Close with the next model.** When the checkpoint lands it prints the whole boundary
@@ -79,6 +79,15 @@ auto-syncs it), and use `/plumbbob:refine` to repair the whole plan when a block
79
79
  2. [ ] <step>, **done when:** <criterion>
80
80
  - seam: `<file>`
81
81
 
82
+ ## Build order
83
+
84
+ *(Optional. The sequence to build the steps in once it stops being their numbering: one
85
+ line of comma-separated step numbers, such as `7, 8, 5, 10, 6`; empty means document
86
+ order. `plumbbob order 7 8 5 10 6` (`/plumbbob:order`) writes it, and `status`, `build`,
87
+ `checkpoint`, and `handoff` all read it, so the dashboard's `← next`, a bare
88
+ `/plumbbob:build`, and the card's Next Up agree. A step keeps its number for life; this
89
+ line is where the sequence lives.)*
90
+
82
91
  ## Open questions
83
92
 
84
93
  *(Holes you could NOT resolve on paper: the one section that expands rather than