plumbbob 0.13.3 → 0.13.5
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 +24 -24
- package/dist/cli-core.js +6 -5
- package/dist/lib/notice.js +42 -7
- package/dist/lib/orient.js +379 -11
- package/dist/lib/sidecar.js +53 -31
- package/dist/verbs/checkpoint.js +12 -12
- package/dist/verbs/finish.js +7 -7
- package/dist/verbs/handoff.js +368 -302
- package/dist/verbs/harvest.js +20 -21
- package/dist/verbs/order.js +65 -21
- package/dist/verbs/relay.js +48 -6
- package/dist/verbs/turn.js +111 -31
- package/package.json +1 -1
- package/skills/build/SKILL.md +55 -51
- package/skills/finish/SKILL.md +10 -4
- package/skills/harvest/SKILL.md +43 -25
- package/skills/order/SKILL.md +19 -16
- package/skills/plan/SKILL.md +10 -9
- package/skills/refine/SKILL.md +17 -10
- package/skills/run/SKILL.md +34 -23
- package/skills/step/SKILL.md +28 -23
- package/skills/verify/SKILL.md +44 -39
package/skills/build/SKILL.md
CHANGED
|
@@ -168,15 +168,16 @@ switch with `/model` and rerun to honor it, or wave you on. Advisory, never a ga
|
|
|
168
168
|
fence's 80 columns (13 of label, 67 of value); two or more items break onto indented
|
|
169
169
|
continuation lines opening with `-`, and a red row's evidence onto an indented `→` line.
|
|
170
170
|
|
|
171
|
-
The `## Summary` lead
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
171
|
+
The `## Summary` lead opens the card: handoff prints it behind the `**Summary**:` label.
|
|
172
|
+
The `## <n>` sections stay in the detail file, where `expand 2` opens `## 2` and the
|
|
173
|
+
build log's record keeps them; the card prints none of them and closes instead on a
|
|
174
|
+
`[more details](…)` link to the file, which handoff writes, so you type no path. Five
|
|
175
|
+
sections at most, each titled with one sentence and one move, plain English first, a
|
|
176
|
+
path in backticks only when the name itself is the news. A judgment or a flag (a stray
|
|
177
|
+
the seam row will name, a decision you had to bend, a doubt about the done-when) is one
|
|
178
|
+
of those sections, and the card carries it where it bears on the call: a bent row's `→`
|
|
179
|
+
line points at it, and your recommendation names it when it changes the move. It is
|
|
180
|
+
never a paragraph of its own. The recommendation is the last section: the move you would take as its own
|
|
180
181
|
sentence, closed by a period, then the reason as a capitalized sentence or two. The lead
|
|
181
182
|
and the recommendation are flowing prose and handoff unwraps both to the renderer's
|
|
182
183
|
width, so never hard-wrap them; handoff also prepends the bold `**Recommendation**:`
|
|
@@ -192,14 +193,15 @@ switch with `/model` and rerun to honor it, or wave you on. Advisory, never a ga
|
|
|
192
193
|
|
|
193
194
|
*Paste the turn.* Run `plumbbob handoff` and paste its output whole, verbatim, at top
|
|
194
195
|
level, trailing blank line included, then end the turn. Never nest it inside a fence of
|
|
195
|
-
your own; it carries fences of its own and they cannot nest. It prints the
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
rows,
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
196
|
+
your own; it carries fences of its own and they cannot nest. It prints the Summary, the
|
|
197
|
+
Readout fence (its measured `check`, `seam`, `diff`, and `spent` rows folded with your
|
|
198
|
+
three, the changed files listed beneath `diff`), a `diff` fence when the change is 20
|
|
199
|
+
lines or fewer, Your Call, the state table (the Verdict folded worst-of from the same
|
|
200
|
+
rows, the Now row naming the step in flight, Next Up, and the Range, Order, and Parked
|
|
201
|
+
rows when they apply), your recommendation, and the `more details` link last. Run it
|
|
202
|
+
once: a second run at the same pause prints the one-line reminder instead of the card,
|
|
203
|
+
so if that line comes back where the card belongs (you ran handoff earlier in this
|
|
204
|
+
turn), run `plumbbob handoff --full` and paste that. The gate verdict's one home is that `check`
|
|
203
205
|
row: no standalone verdict line exists, and you never restate the verdict in prose. A
|
|
204
206
|
narrowed run names the slots it skipped there (`· without test`), and that named
|
|
205
207
|
narrowing is the whole disclosure. The notice checkride's Stop hook appends after your
|
|
@@ -208,37 +210,39 @@ switch with `/model` and rerun to honor it, or wave you on. Advisory, never a ga
|
|
|
208
210
|
one, the write-versus-relay line of
|
|
209
211
|
[D78 (em-dash-ban)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d78).
|
|
210
212
|
|
|
211
|
-
*Then
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
the
|
|
213
|
+
*Then answer the reply in your own words.* The card shows once
|
|
214
|
+
([D110 (reply-after-the-card)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d110)):
|
|
215
|
+
every later turn at this pause is your reply, closed by one line. A message that
|
|
216
|
+
**asks** ("expand 2", "what does that mean?", "why did the seam row flag that?") is an
|
|
217
|
+
expand: answer it from the detail file, from `git diff`, or from the build-log's
|
|
218
|
+
`## Log` for an older step, never from recall. A message that **directs** is needs-work:
|
|
219
|
+
make the change, run the check, and say what moved and what the check found; when the
|
|
220
|
+
change moves what the card said (a judgment row, the Summary, the recommendation), write
|
|
221
|
+
the detail file again so the record matches what lands. Nothing lands until the human
|
|
222
|
+
says `looks good`. Either way, then run `plumbbob handoff` and paste its output beneath
|
|
223
|
+
your reply, whole and verbatim: at a pause whose card has shown it prints one line,
|
|
224
|
+
`**Next Up**: Back to Step <N> of <M> - <title>`, whatever changed since, so your reply
|
|
225
|
+
stays on screen. The turn is your reply, then that line, and nothing after it. The CLI
|
|
226
|
+
picks the form, never you: paste whichever one it prints, and never retype the card.
|
|
227
|
+
|
|
228
|
+
The card comes back one way: the human asks to see it (`show the pause`, or any wording
|
|
229
|
+
of it). Then run `plumbbob handoff --full` and paste its output whole, with nothing
|
|
230
|
+
written around it. Never run `--full` to read the card for yourself, after a compaction
|
|
231
|
+
or in a fresh session; what it prints is the turn's ending, and the relay check holds a
|
|
232
|
+
turn that does not close on it. Read the detail file and `plumbbob status` instead. A
|
|
233
|
+
tangent the human hands you at the pause is still a park.
|
|
232
234
|
|
|
233
235
|
**Then hand off with the next model.** `plumbbob checkpoint` prints the whole boundary
|
|
234
|
-
ending itself: `**Checkpoint**: Step N complete (<sha>)`,
|
|
235
|
-
|
|
236
|
-
this landing completes a range (
|
|
237
|
-
the build stops here),
|
|
238
|
-
(the relay check holds a boundary that dropped
|
|
239
|
-
nothing around it.
|
|
240
|
-
|
|
241
|
-
|
|
236
|
+
ending itself: `**Checkpoint**: Step N complete (<sha>)`, any advisory (a staged path
|
|
237
|
+
outside the seam is the common one), and the state table: the Verdict the step earned,
|
|
238
|
+
the Stop row when this landing completes a range (`| Stop | Range 3 of 5 landed - <its
|
|
239
|
+
stop> |`, the reason the build stops here), Next Up, and the rows beneath it. Relay that
|
|
240
|
+
block whole, the table with the rest (the relay check holds a boundary that dropped a
|
|
241
|
+
row), run no second command, and write nothing around it. A later turn at this boundary
|
|
242
|
+
is your reply; a `plumbbob handoff` there prints Next Up's one line, since the boundary
|
|
243
|
+
has shown. It is the
|
|
244
|
+
orientation tier (no Your Call block, no recommendation), and its Next Up points at the
|
|
245
|
+
next undone step carrying that step's `- model:` recommendation (the plan's
|
|
242
246
|
smallest-model-that-fits call) so the human knows which `/model` to select before
|
|
243
247
|
running `/plumbbob:build` again. It is what carries the plan's suggestion across a fresh
|
|
244
248
|
context window, which inherits the session model, not the plan's. No `- model:` line
|
|
@@ -376,13 +380,13 @@ out, or the next step in build order is one the range does not name),
|
|
|
376
380
|
the next one. A run's range ends on the stop card, which lists every open park with a
|
|
377
381
|
proposed class, and the reply that settles the card records them (the run skill's
|
|
378
382
|
section on the reply at a stop). A range landed here, by a typed range, ends on the plain
|
|
379
|
-
boundary instead; when the human asks what comes next there with parks open (the
|
|
380
|
-
`
|
|
383
|
+
boundary instead; when the human asks what comes next there with parks open (the table's
|
|
384
|
+
`Parked` row, `2 of 7 open`), the move is `/plumbbob:harvest`, then the run the card names.
|
|
381
385
|
- **After an early stop, settle the step, then rerun what is left.** A halt on trouble
|
|
382
386
|
inside a range ends at that step's pause, and the grant ends with the turn. Once the
|
|
383
|
-
human approves and the step lands, the
|
|
384
|
-
what is left of the range (
|
|
385
|
-
the human types to carry on; `/plumbbob:build 8-9` lands the same steps by hand.
|
|
387
|
+
human approves and the step lands, the state table's Range row names the run that lands
|
|
388
|
+
what is left of the range (`| Range | 3 of 5: /plumbbob:run (steps 8-9) |`), and that is
|
|
389
|
+
what the human types to carry on; `/plumbbob:build 8-9` lands the same steps by hand.
|
|
386
390
|
|
|
387
391
|
## The hard contracts
|
|
388
392
|
|
package/skills/finish/SKILL.md
CHANGED
|
@@ -41,7 +41,13 @@ record.
|
|
|
41
41
|
- `## Decisions and why`: the settled calls that shaped the build (the *why* behind
|
|
42
42
|
the log). Copy each one's `D# (slug)` from `intent.md` (never a bare `D#`) so
|
|
43
43
|
the report reads without flipping back to the intent.
|
|
44
|
-
- `## Parked & harvested`: what was captured and how each was classified
|
|
44
|
+
- `## Parked & harvested`: what was captured and how each was classified, as the
|
|
45
|
+
table the stop card's leans use, with the settled class where the card had the lean
|
|
46
|
+
([D112 (lean-table)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d112)):
|
|
47
|
+
`| Park | What it is | Why it matters | Settled |`, one row per park, its handle and a
|
|
48
|
+
short title, the park's text as the Park list holds it, why it matters (the why the
|
|
49
|
+
stop's record kept, or your own clause for a park harvested before the table), and
|
|
50
|
+
the class it settled as with its reason.
|
|
45
51
|
- `## Final status`: done or partial, and what is left.
|
|
46
52
|
- `## Deferred tangents`: the harvested items that become future work.
|
|
47
53
|
Stop there. `plumbbob finish` appends `## Checkpoints` (the baseline and step SHAs) and
|
|
@@ -74,9 +80,9 @@ record.
|
|
|
74
80
|
the `plumbbob finish` marker subject only.
|
|
75
81
|
4. **Point at the next goal.** Relay `plumbbob finish`'s output verbatim, blank lines
|
|
76
82
|
included: its lead line, which names the branch the tracked folder now rides into the
|
|
77
|
-
PR, any advisory beneath it, and
|
|
78
|
-
is the orientation tier's close
|
|
79
|
-
[turn anatomy](https://github.com/robmclarty/plumbbob/blob/main/docs/presentation.md)):
|
|
83
|
+
PR, any advisory beneath it, and its state table, whose one row is
|
|
84
|
+
`| **Next Up** | Nothing planned - /plumbbob:plan |`. That is the orientation tier's close
|
|
85
|
+
(the [turn anatomy](https://github.com/robmclarty/plumbbob/blob/main/docs/presentation.md)):
|
|
80
86
|
the lead line, then the forward pointer. `finish` renders that pointer itself rather
|
|
81
87
|
than leaving it to `plumbbob handoff`, because finish has just cleared the session
|
|
82
88
|
handoff would read one from. Relay the block and write nothing after it.
|
package/skills/harvest/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: harvest
|
|
3
3
|
description: "Triage the park list at a step boundary: propose one class (blocker/tangent/pivot) for every open parked item at once, and once the human settles them in one reply, fold a confirmed blocker into intent and record the rest with plumbbob harvest. A run's stop card carries its own harvest."
|
|
4
4
|
disable-model-invocation: true
|
|
5
|
-
allowed-tools: Read, Edit, Write, Bash(plumbbob status:*), Bash(plumbbob order:*), Bash(plumbbob harvest:*)
|
|
5
|
+
allowed-tools: Read, Edit, Write, Bash(plumbbob status:*), Bash(plumbbob order:*), Bash(plumbbob handoff:*), Bash(plumbbob harvest:*)
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# PlumbBob: harvest the park list
|
|
@@ -54,41 +54,59 @@ the call on each one theirs. The detail file you write first is the proposal; re
|
|
|
54
54
|
**only after** that reply confirms them:
|
|
55
55
|
|
|
56
56
|
- Write the proposals into `.plumbbob/detail.md` first, under a `# Detail · Harvest`
|
|
57
|
-
header, one
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
header, one proposal per open item in a `## Harvest` section, with two lines indented
|
|
58
|
+
beneath it:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
- P6 → tangent: <the reason, one clause>
|
|
62
|
+
- title: <two to five words naming the park>
|
|
63
|
+
- why: <why it matters, one clause>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The class is written `blocker`, `tangent`, or `pivot` (for a pivot signal). A park's
|
|
67
|
+
handle is `P` and its place in the Park list, counting the harvested lines too (the
|
|
68
|
+
count the state table's Parked row sizes as `3 of 8 open`), and it is the one name the
|
|
69
|
+
detail file, the turn, and the human's reply all use
|
|
63
70
|
([D105 (park-handles)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d105)).
|
|
64
|
-
Then
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
(
|
|
71
|
+
Then run `plumbbob handoff --harvest` and paste its output whole, verbatim, and end the
|
|
72
|
+
turn there: it prints the lean table, one row per open park with its handle and your
|
|
73
|
+
title, the park's text as the list holds it, your why, and your lean, then the moves that
|
|
74
|
+
settle it
|
|
75
|
+
([D112 (lean-table)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d112)).
|
|
76
|
+
Write nothing before or after it; the park's text is the CLI's to quote, never yours.
|
|
77
|
+
- A reply that changes a proposal (`make P7 a tangent`) is the human's call and your
|
|
78
|
+
reply: rewrite that line, say in your own words which lean moved, and end the turn
|
|
79
|
+
without printing the table again; the human who wants to see it asks, and
|
|
80
|
+
`plumbbob handoff --harvest` prints it. A reply that confirms them (`looks good`) is what
|
|
81
|
+
lets you write.
|
|
69
82
|
- On that confirmation, run `plumbbob harvest`
|
|
70
83
|
([D104 (harvest-records)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d104)).
|
|
71
84
|
It flips each settled item from `- [ ]` to `- [x]` in the Park list, so
|
|
72
85
|
`/plumbbob:status` stops counting it as open, and records each confirmed class under
|
|
73
86
|
`build-log.md`'s `## Harvest` section. Relay its ending whole, the `**Recorded**:` line
|
|
74
|
-
and the
|
|
87
|
+
and the state table beneath it. It refuses a proposal naming a handle the list lacks (`P9`
|
|
75
88
|
with eight parked) or a class other than blocker, tangent, or pivot; fix the line it
|
|
76
89
|
names and run it again.
|
|
77
90
|
- A confirmed **blocker** also folds its decision into `intent.md`, slugged at birth
|
|
78
91
|
like any Decision, anchored the same way
|
|
79
92
|
(`- <a id="d5"></a>**D5 (retry-cap)**: <the call>, *because* <why>`), never a bare `D5`.
|
|
80
|
-
A blocker that becomes a new step takes the next free number under `## Steps` and
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
carries `## Build ranges`, the
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
A blocker that becomes a new step takes the next free number under `## Steps` and its
|
|
94
|
+
place in the sequence through `plumbbob order 7 8 5` (the `## Build order` line, every
|
|
95
|
+
undone step in the sequence to build them), never by renumbering, even when it builds
|
|
96
|
+
last. When the plan carries `## Build ranges`, the verb files the new step for you: it
|
|
97
|
+
re-cuts the ranges to follow the sequence it writes, so the step joins the range still
|
|
98
|
+
to come that the order puts it in, the one it builds ahead of when it lands first, and
|
|
99
|
+
never a range that has landed, since that range's call was made and the step would
|
|
100
|
+
reopen it
|
|
101
|
+
([D109 (ranges-follow-the-order)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d109)).
|
|
102
|
+
Give the step a bare range of its own instead, written before you run the verb, when it
|
|
103
|
+
brings a call the human has to make before it lands. A new range takes the next free item
|
|
104
|
+
number, and no item is renumbered, because the stop card's stamp, the detail file's
|
|
105
|
+
header, and `plumbbob harvest` find a landed range by its number
|
|
106
|
+
([D92 (build-ranges)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d92)).
|
|
107
|
+
The verb's ending names each range it re-cut, and an advisory names any it left for
|
|
108
|
+
you; re-cut that one in the same confirmed edit, and `plumbbob status` afterward carries
|
|
109
|
+
a `⚠` row for any range still broken.
|
|
92
110
|
- Fold a confirmed blocker into `intent.md` before you run `plumbbob harvest`, so the
|
|
93
111
|
record and the plan agree when it lands.
|
|
94
112
|
- Never reclassify or resolve an item the human hasn't confirmed, and default every
|
package/skills/order/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: order
|
|
3
|
-
description: "Set the build order: turn the human's sequence (or a relative one, such as 7 and 8 before 5) into the full list of undone steps and write it by shelling `plumbbob order`, never by editing intent.md. A step keeps its number; the sequence moves."
|
|
3
|
+
description: "Set the build order: turn the human's sequence (or a relative one, such as 7 and 8 before 5) into the full list of undone steps and write it by shelling `plumbbob order`, never by editing intent.md. A step keeps its number; the sequence moves, and the CLI re-cuts the build ranges to follow it."
|
|
4
4
|
argument-hint: "[steps in the sequence to build them, such as 1, 6, 2-4, 7, 5]"
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
model: haiku
|
|
@@ -15,7 +15,10 @@ A step keeps its number for life, so once `/plumbbob:step` or `/plumbbob:refine`
|
|
|
15
15
|
that has to land before an existing one, the sequence to build them stops being the
|
|
16
16
|
numbering (`4, 7, 8, 5, 10, 6`). This skill writes that sequence down where every other move
|
|
17
17
|
reads it: the `## Build order` line in `intent.md`, which `plumbbob status`, a bare
|
|
18
|
-
`/plumbbob:build`, `plumbbob checkpoint`, and the card's Next Up all follow.
|
|
18
|
+
`/plumbbob:build`, `plumbbob checkpoint`, and the card's Next Up all follow. When the plan
|
|
19
|
+
carries `## Build ranges`, the same verb re-cuts them to follow the sequence, so
|
|
20
|
+
`/plumbbob:run` walks the steps the new order put in its range
|
|
21
|
+
([D109 (ranges-follow-the-order)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d109)).
|
|
19
22
|
|
|
20
23
|
## Wrong-state refusal
|
|
21
24
|
|
|
@@ -39,22 +42,22 @@ after the step in flight is the usual reason to run it.
|
|
|
39
42
|
as typed, and the line it writes spells the span out. `plumbbob order --reset` drops the
|
|
40
43
|
line, and the plan reads in document order again.
|
|
41
44
|
4. **Relay the ending verbatim, then stop.** The verb prints its whole ending: the
|
|
42
|
-
`**Build order**: 7, 8, 5, 10, 6` line
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
turn's last text. With no new `⚠` row, or no ranges block, relay the ending alone.
|
|
45
|
+
`**Build order**: 7, 8, 5, 10, 6` line; a
|
|
46
|
+
`**Build ranges**: range 2 of 3 re-cut (steps 10,4-6)` line when the new sequence moved a
|
|
47
|
+
step into or out of a range, naming each range it re-cut; an advisory for each range the
|
|
48
|
+
order left for the human, in the words its dashboard row carries
|
|
49
|
+
(`Range 2 of 3 needs a re-cut ⚠ (...)`), with
|
|
50
|
+
`→ /plumbbob:refine ranges` beneath the last; and the `**Next Up**` pointer (back at the
|
|
51
|
+
step in flight, or forward to the first step in the new sequence). Relay it whole as the
|
|
52
|
+
turn's last text and run no second command: the advisory already names the range and the
|
|
53
|
+
move, so there is no dashboard to read again. A refusal (a number the plan lacks, a
|
|
54
|
+
repeat, a step already checkpointed) is the CLI's call: report it verbatim, never retry
|
|
55
|
+
or work around it, and ask the human which number they meant.
|
|
54
56
|
|
|
55
57
|
## The one hard contract
|
|
56
58
|
|
|
57
59
|
The line is written by the **dumb CLI**, never by an edit. This skill carries **no Edit and
|
|
58
60
|
no Write tool** on purpose: you may not touch `intent.md` yourself. Compose, get approval,
|
|
59
|
-
then shell `plumbbob order`; that is the only write path,
|
|
60
|
-
|
|
61
|
+
then shell `plumbbob order`; that is the only write path, it validates every number against
|
|
62
|
+
the plan, and it is the one that re-cuts the ranges, so a range the order leaves for the
|
|
63
|
+
human is `/plumbbob:refine`'s to re-cut, never yours to edit here.
|
package/skills/plan/SKILL.md
CHANGED
|
@@ -163,8 +163,8 @@ The argument only seeds how you get there.
|
|
|
163
163
|
|
|
164
164
|
**The card names the run, not the item.** The item's command is the range's
|
|
165
165
|
definition: the form the parser reads, and the kind of stop it makes. The card names
|
|
166
|
-
`/plumbbob:run` beneath Next Up for the range holding the next step,
|
|
167
|
-
will land beside it, and `/plumbbob:run 3` runs range 3 by its item number
|
|
166
|
+
`/plumbbob:run` in the Range row beneath Next Up for the range holding the next step,
|
|
167
|
+
with the steps it will land beside it, and `/plumbbob:run 3` runs range 3 by its item number
|
|
168
168
|
([D95 (run-verb)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d95)).
|
|
169
169
|
A range grants nothing until the human types the run that names it, and then the turn
|
|
170
170
|
hook mints the grant from the plan as it stands
|
|
@@ -205,8 +205,9 @@ The argument only seeds how you get there.
|
|
|
205
205
|
its build ranges with it (each range's command and its stop, since a stop is where
|
|
206
206
|
the human will be asked, and moving one is cheapest now), then give it the cold
|
|
207
207
|
read (**§ The cold read**), write the result into `.plumbbob/detail.md`, and relay `plumbbob handoff --plan`'s block whole: the CLI
|
|
208
|
-
renders the your-call block with the moves that apply before anything is recorded
|
|
209
|
-
|
|
208
|
+
renders the your-call block with the moves that apply before anything is recorded,
|
|
209
|
+
the state table headed by Next Up, your recommendation, and a `more details` link to
|
|
210
|
+
the cold read (the decision tier of the
|
|
210
211
|
[turn anatomy](https://github.com/robmclarty/plumbbob/blob/main/docs/presentation.md)),
|
|
211
212
|
so the moves are relayed, never hand-composed. *looks good* marks the plan decided, and
|
|
212
213
|
its row names the move the human types next: `/plumbbob:run` for the range holding
|
|
@@ -224,9 +225,9 @@ The argument only seeds how you get there.
|
|
|
224
225
|
commit predates the ledger and stays guidance-governed; it lands without a
|
|
225
226
|
refusal.)
|
|
226
227
|
- **The plan commit prints its own close.** `plumbbob checkpoint --plan` emits the
|
|
227
|
-
whole boundary ending: `**Plan**: committed (<sha>)`, any advisory, and the
|
|
228
|
-
the step the build starts on,
|
|
229
|
-
the plan declares ranges. Relay that block whole and run no second command; the
|
|
228
|
+
whole boundary ending: `**Plan**: committed (<sha>)`, any advisory, and the state
|
|
229
|
+
table headed by the pointer at the step the build starts on, its Range row naming the
|
|
230
|
+
run that lands that step's range when the plan declares ranges. Relay that block whole and run no second command; the
|
|
230
231
|
plan-pause card above is the one place `handoff` is still called, because no verb has
|
|
231
232
|
run yet there.
|
|
232
233
|
- **Say what the commit publishes.** The close-out line names the tracked folder:
|
|
@@ -282,8 +283,8 @@ read checked and found sound. A plan with a hole gets `Sharpen <the one worst ho
|
|
|
282
283
|
and why it matters; when the read found more than one, say how many sit behind `expand`
|
|
283
284
|
and name `/plumbbob:refine` as the move that writes them up as Open questions, with their
|
|
284
285
|
plain and lean sub-lines, for the human to settle. Three findings at most; the rest is
|
|
285
|
-
refine's. `plumbbob handoff --plan` prints the label and your recommendation
|
|
286
|
-
|
|
286
|
+
refine's. `plumbbob handoff --plan` prints the label and your recommendation beneath the
|
|
287
|
+
state table, then the `more details` link to the file, "expand 2" opens `## 2`, and `checkpoint --plan` records the read beneath the
|
|
287
288
|
plan's line in the build-log's `## Log`, the build's first entry. The cold read is the tip of refine: it makes the
|
|
288
289
|
full attack discoverable at the moment it would pay, and lets a sound plan skip it. Refine
|
|
289
290
|
is where the real adversary looks; this is an estimate, and it says so by staying short.
|
package/skills/refine/SKILL.md
CHANGED
|
@@ -54,18 +54,25 @@ is fine; refining is always available.
|
|
|
54
54
|
Show the before/after for each, and **write only what the human approves**. A repair
|
|
55
55
|
that inserts a step, or moves one ahead of another, keeps every number where it is and
|
|
56
56
|
writes the sequence instead: shell `plumbbob order 7 8 5` with the undone steps in the
|
|
57
|
-
sequence to build them,
|
|
58
|
-
|
|
57
|
+
sequence to build them, an inserted step included even when it builds last, and the
|
|
58
|
+
`## Build order` line it writes is what every next-step pick follows. Never renumber,
|
|
59
|
+
and never edit that line by hand.
|
|
59
60
|
|
|
60
|
-
**A repair keeps the build ranges true.** When the plan carries `## Build ranges`,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
**A repair keeps the build ranges true.** When the plan carries `## Build ranges`,
|
|
62
|
+
`plumbbob order` re-cuts them to follow the sequence it writes
|
|
63
|
+
([D109 (ranges-follow-the-order)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d109)):
|
|
64
|
+
a step it places joins the range whose steps sit on both sides of it, else the one it
|
|
65
|
+
builds ahead of, else the one it builds after, never a bare range, and never a range that
|
|
66
|
+
has landed, since that range's call was made and the step would reopen it; its ending
|
|
67
|
+
names each range it re-cut. Edit a range yourself only where the
|
|
68
|
+
order cannot say it, and before you run the verb: a bare range of its own for a step
|
|
69
|
+
that brings a call the human has to make before it lands, or a re-cut that moves where a
|
|
70
|
+
call falls, shown in the same before/after
|
|
67
71
|
([D92 (build-ranges)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d92)).
|
|
68
|
-
|
|
72
|
+
A new range takes the next free item number, and no item is renumbered, because the stop
|
|
73
|
+
card's stamp, the detail file's header, and `plumbbob harvest` find a landed range by its
|
|
74
|
+
number. A range the verb's ending names as still needing a re-cut is yours to re-cut in
|
|
75
|
+
the same approved edit. Read `plumbbob status` once the edits are written: its ranges block carries a `⚠` row
|
|
69
76
|
for a range naming a step the plan lacks, a step two ranges name, a step the build order
|
|
70
77
|
puts inside a range that does not name it, and an undone step no range names, and none
|
|
71
78
|
once the section is sound.
|
package/skills/run/SKILL.md
CHANGED
|
@@ -111,7 +111,7 @@ ends there: relay the checkpoint's block whole and end the turn. A run whose lan
|
|
|
111
111
|
that step completed ends on the stop card, below, even when the paused step was the range's
|
|
112
112
|
last. Otherwise carry on through what is left, below. A halt the human approves with
|
|
113
113
|
`looks good` lands its step the same way, and when that landing completes the run's range
|
|
114
|
-
(its checkpoint block carries the
|
|
114
|
+
(its checkpoint block's table carries the `Stop` row for it), the run ends on the stop card
|
|
115
115
|
too.
|
|
116
116
|
|
|
117
117
|
**A range that lands its steps.** Walk it exactly as the build skill walks a typed range,
|
|
@@ -122,7 +122,7 @@ walk before it, since the checkpoint would refuse it. The halt list is the build
|
|
|
122
122
|
red check, a self-review mismatch, a bound agent's `blocked` or `drift`, or a new decision
|
|
123
123
|
ends at that step's pause card. `plumbbob build` names the top step as the top of the range
|
|
124
124
|
you granted when it enters it. Once that step lands, its checkpoint prints the boundary
|
|
125
|
-
with the Stop
|
|
125
|
+
with the Stop row (`| Stop | Range 3 of 5 landed - <its stop> |`); relay none of it, and end
|
|
126
126
|
the run on the stop card, below, in the same turn.
|
|
127
127
|
|
|
128
128
|
**A bare range.** `grant: none, as a bare range builds to its pause`: build the range's one
|
|
@@ -161,6 +161,8 @@ constraints all honored
|
|
|
161
161
|
## Harvest
|
|
162
162
|
|
|
163
163
|
- P<handle> → <blocker, tangent, or pivot>: <the reason, one clause>
|
|
164
|
+
- title: <two to five words naming the park>
|
|
165
|
+
- why: <why it matters, one clause>
|
|
164
166
|
|
|
165
167
|
## Recommendation
|
|
166
168
|
|
|
@@ -170,22 +172,28 @@ constraints all honored
|
|
|
170
172
|
The header names the range by its item number, and that is how `checkpoint` and
|
|
171
173
|
`plumbbob harvest` tell the file from a step's. The three rows judge the whole range: every
|
|
172
174
|
step's done-when, the decisions any step exercised, and the constraints. The Summary and the
|
|
173
|
-
|
|
175
|
+
numbered sections are the range's, not its last step's, and you draw them from the range's
|
|
174
176
|
checkpoint bodies (`git log` over its commits) and their entries in the build-log's `## Log`,
|
|
175
177
|
never from recall, since a long run can compact its context partway through and lose its
|
|
176
|
-
early steps. A step that landed a hair off comes first among the
|
|
178
|
+
early steps. A step that landed a hair off comes first among the sections; five at most. The
|
|
179
|
+
card prints the Summary and links the rest
|
|
180
|
+
([D113 (short-card)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d113)).
|
|
177
181
|
|
|
178
|
-
The `## Harvest` section carries one
|
|
182
|
+
The `## Harvest` section carries one proposal for every open park in the build-log's
|
|
179
183
|
`## Park list`. A park's handle is `P` and its place in that list, counting the harvested
|
|
180
|
-
lines too, which is the count the
|
|
181
|
-
parked is `P3` whether or not the two above it are flipped, and the card, the detail
|
|
182
|
-
and the human's reply all name it `P3`
|
|
184
|
+
lines too, which is the count the table's Parked row sizes as `3 of 8 open`: the third line
|
|
185
|
+
ever parked is `P3` whether or not the two above it are flipped, and the card, the detail
|
|
186
|
+
file, and the human's reply all name it `P3`
|
|
183
187
|
([D105 (park-handles)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d105)).
|
|
184
188
|
Propose one class per park by the harvest skill's rules, `tangent` for anything uncertain,
|
|
185
|
-
with the reason in one clause
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
+
with the reason in one clause, and beneath it two indented lines: a title of two to five
|
|
190
|
+
words that names the park, and why it matters in one clause. The card prints each park as a
|
|
191
|
+
row of the lean table: its handle and your title, the park's text as the list holds it, your
|
|
192
|
+
why, and the lean (`tangent: <the reason>`)
|
|
193
|
+
([D112 (lean-table)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d112)),
|
|
194
|
+
so write the class, the reason, the title, and the why alone and leave the table to handoff.
|
|
195
|
+
A park you leave out reads `no lean proposed` on the card and stays open, and a missing why
|
|
196
|
+
reads `not given`. The section vanishes when no park is open, and so does the card's Harvested part
|
|
189
197
|
([D100 (stop-card)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d100)).
|
|
190
198
|
The recommendation speaks to the plan's stop, the header's `stop:` line, and to the
|
|
191
199
|
proposals: the move you would take on both, then why.
|
|
@@ -210,29 +218,32 @@ and the Your Call block names the replies. Read the human's message as one of th
|
|
|
210
218
|
own, never into the range this card reviews: that range has landed, its call is the one
|
|
211
219
|
being made, and the step would reopen it. Relay the record's ending whole and end the
|
|
212
220
|
turn. It commits nothing; the record rides the next step's checkpoint.
|
|
213
|
-
- **A change** (`make P7 a tangent`, or a change to the review) is direction
|
|
214
|
-
|
|
215
|
-
|
|
221
|
+
- **A change** (`make P7 a tangent`, or a change to the review) is direction, and the turn
|
|
222
|
+
that makes it is your reply
|
|
223
|
+
([D110 (reply-after-the-card)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d110)).
|
|
224
|
+
Rewrite the detail file's line or section, say in your own words what moved, then run
|
|
225
|
+
`plumbbob handoff --stop` and paste the one-line reminder it prints beneath your reply.
|
|
226
|
+
The card does not come back for a change; nothing is recorded until `looks good`, which
|
|
227
|
+
records every lean as the detail file then reads.
|
|
216
228
|
- **A question**, or `expand 2`, is answered from the detail file, the range's commits, or
|
|
217
|
-
the Log, never from recall; then run `plumbbob handoff --stop` and paste
|
|
218
|
-
beneath your answer
|
|
219
|
-
`
|
|
220
|
-
`plumbbob handoff --stop --full`.
|
|
229
|
+
the Log, never from recall; then run `plumbbob handoff --stop` and paste the one-line
|
|
230
|
+
reminder it prints beneath your answer. Only `show the stop`, or any wording of it, takes
|
|
231
|
+
`plumbbob handoff --stop --full`, and never to read the card for yourself.
|
|
221
232
|
- **`/plumbbob:run`** typed at the card confirms everything the way `looks good` does, and
|
|
222
233
|
runs the next range. Record first: fold the blockers and run `plumbbob harvest`, then read
|
|
223
234
|
`plumbbob status --run "<the same argument>"` again. When its grant line says
|
|
224
235
|
`unlike the run`, the record re-cut the range the run would walk (a blocker added or moved a
|
|
225
236
|
step in it), and the grant the hook minted before the record no longer covers it: relay
|
|
226
|
-
the record's ending whole and end the turn there, where its
|
|
227
|
-
the human to type
|
|
237
|
+
the record's ending whole and end the turn there, where its Range row names the re-cut run
|
|
238
|
+
for the human to type
|
|
228
239
|
([D102 (settle-in-one-reply)](https://github.com/robmclarty/plumbbob/blob/main/docs/decisions.md#d102)).
|
|
229
240
|
Otherwise relay the record's ending and walk the run from section 4.
|
|
230
241
|
- **`/plumbbob:finish`** at the plan's last range is the finish skill's to settle: it
|
|
231
242
|
records the card the way `looks good` would before it writes the report.
|
|
232
243
|
|
|
233
244
|
`plumbbob harvest` refuses a proposal naming a handle the list lacks (`P9` with eight
|
|
234
|
-
parked) and a class outside the three, and it refuses a
|
|
235
|
-
`plumbbob handoff --stop` again, and end the turn on
|
|
245
|
+
parked) and a class outside the three, and it refuses a range no card showed; fix what the
|
|
246
|
+
refusal names, run `plumbbob handoff --stop` again, and end the turn on what it prints. One refusal takes another
|
|
236
247
|
path: `step 13 joined it after it landed` means a blocker went into the range the card
|
|
237
248
|
reviews. Move that step to a range still to come, or a bare range of its own, leave
|
|
238
249
|
`.plumbbob/detail.md` as it is, fold nothing again, and run `plumbbob harvest` once more in
|