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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +15 -10
- package/dist/cli-core.js +25 -3
- package/dist/lib/git.js +20 -8
- package/dist/lib/notice.js +15 -1
- package/dist/lib/orient.js +266 -19
- package/dist/lib/sidecar.js +149 -3
- package/dist/verbs/abandon.js +19 -14
- package/dist/verbs/build.js +45 -22
- package/dist/verbs/checkpoint.js +34 -25
- package/dist/verbs/doctor.js +23 -4
- package/dist/verbs/finish.js +21 -17
- package/dist/verbs/handoff.js +235 -65
- package/dist/verbs/order.js +110 -0
- package/dist/verbs/park.js +6 -2
- package/dist/verbs/recover.js +31 -1
- package/dist/verbs/relay.js +306 -0
- package/dist/verbs/revert.js +17 -11
- package/dist/verbs/spike.js +50 -38
- package/dist/verbs/start.js +13 -9
- package/dist/verbs/status.js +2 -2
- package/dist/verbs/turn.js +14 -7
- package/dist/verbs/use.js +21 -17
- package/hooks/hooks.json +7 -0
- package/node_modules/checkride/.claude-plugin/plugin.json +1 -1
- package/node_modules/checkride/CHANGELOG.md +117 -0
- package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
- package/node_modules/checkride/dist/adapters.js +14 -10
- package/node_modules/checkride/dist/adapters.js.map +1 -1
- package/node_modules/checkride/dist/baseline/fallow.d.ts +4 -3
- package/node_modules/checkride/dist/baseline/fallow.d.ts.map +1 -1
- package/node_modules/checkride/dist/baseline/fallow.js +15 -8
- package/node_modules/checkride/dist/baseline/fallow.js.map +1 -1
- package/node_modules/checkride/dist/gate.d.ts.map +1 -1
- package/node_modules/checkride/dist/gate.js +62 -44
- package/node_modules/checkride/dist/gate.js.map +1 -1
- package/node_modules/checkride/dist/init.js +3 -3
- package/node_modules/checkride/dist/init.js.map +1 -1
- package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
- package/node_modules/checkride/dist/orchestrator.js +53 -8
- package/node_modules/checkride/dist/orchestrator.js.map +1 -1
- package/node_modules/checkride/dist/pack.js +3 -3
- package/node_modules/checkride/dist/security.d.ts +4 -2
- package/node_modules/checkride/dist/security.d.ts.map +1 -1
- package/node_modules/checkride/dist/security.js +42 -8
- package/node_modules/checkride/dist/security.js.map +1 -1
- package/node_modules/checkride/dist/triage/render.js +1 -1
- package/node_modules/checkride/dist/triage/render.js.map +1 -1
- package/node_modules/checkride/package.json +10 -10
- package/node_modules/checkride/skills/check/SKILL.md +4 -3
- package/node_modules/checkride/templates/shared/cspell.json +3 -24
- package/package.json +3 -3
- package/skills/build/SKILL.md +47 -20
- package/skills/harvest/SKILL.md +4 -1
- package/skills/order/SKILL.md +50 -0
- package/skills/park/SKILL.md +7 -0
- package/skills/plan/SKILL.md +4 -1
- package/skills/refine/SKILL.md +6 -2
- package/skills/step/SKILL.md +8 -3
- package/skills/verify/SKILL.md +42 -22
- package/templates/intent.md +9 -0
package/skills/verify/SKILL.md
CHANGED
|
@@ -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
|
|
117
|
-
level, trailing blank line included, then end the
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
|
133
|
-
`git diff`, or from the build-log's `## Log` for an older step,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
|
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
|
|
224
|
-
handoff
|
|
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
|
package/templates/intent.md
CHANGED
|
@@ -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
|