plumbbob 0.8.13 → 0.8.17

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 (93) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/lib/agents.js +1 -1
  3. package/dist/lib/check.js +9 -6
  4. package/dist/lib/intent.js +20 -0
  5. package/dist/lib/orient.js +4 -3
  6. package/dist/verbs/checkpoint.js +30 -11
  7. package/dist/verbs/finish.js +24 -8
  8. package/node_modules/checkride/CHANGELOG.md +234 -0
  9. package/node_modules/checkride/README.md +134 -31
  10. package/node_modules/checkride/dist/adapters.d.ts +50 -1
  11. package/node_modules/checkride/dist/adapters.d.ts.map +1 -1
  12. package/node_modules/checkride/dist/adapters.js +123 -7
  13. package/node_modules/checkride/dist/adapters.js.map +1 -1
  14. package/node_modules/checkride/dist/agent-setup/hook.d.ts.map +1 -1
  15. package/node_modules/checkride/dist/agent-setup/hook.js +15 -1
  16. package/node_modules/checkride/dist/agent-setup/hook.js.map +1 -1
  17. package/node_modules/checkride/dist/agent-setup/index.d.ts +0 -1
  18. package/node_modules/checkride/dist/agent-setup/index.d.ts.map +1 -1
  19. package/node_modules/checkride/dist/agent-setup/index.js.map +1 -1
  20. package/node_modules/checkride/dist/baseline/fallow.d.ts +64 -0
  21. package/node_modules/checkride/dist/baseline/fallow.d.ts.map +1 -0
  22. package/node_modules/checkride/dist/baseline/fallow.js +256 -0
  23. package/node_modules/checkride/dist/baseline/fallow.js.map +1 -0
  24. package/node_modules/checkride/dist/baseline/fingerprint.d.ts +4 -6
  25. package/node_modules/checkride/dist/baseline/fingerprint.d.ts.map +1 -1
  26. package/node_modules/checkride/dist/baseline/fingerprint.js +9 -4
  27. package/node_modules/checkride/dist/baseline/fingerprint.js.map +1 -1
  28. package/node_modules/checkride/dist/baseline/index.d.ts +4 -5
  29. package/node_modules/checkride/dist/baseline/index.d.ts.map +1 -1
  30. package/node_modules/checkride/dist/baseline/index.js +2 -2
  31. package/node_modules/checkride/dist/baseline/index.js.map +1 -1
  32. package/node_modules/checkride/dist/{baseline/command.d.ts → baseline-command.d.ts} +11 -9
  33. package/node_modules/checkride/dist/baseline-command.d.ts.map +1 -0
  34. package/node_modules/checkride/dist/{baseline/command.js → baseline-command.js} +9 -7
  35. package/node_modules/checkride/dist/baseline-command.js.map +1 -0
  36. package/node_modules/checkride/dist/cli.d.ts.map +1 -1
  37. package/node_modules/checkride/dist/cli.js +95 -8
  38. package/node_modules/checkride/dist/cli.js.map +1 -1
  39. package/node_modules/checkride/dist/config.d.ts +37 -12
  40. package/node_modules/checkride/dist/config.d.ts.map +1 -1
  41. package/node_modules/checkride/dist/config.js +268 -60
  42. package/node_modules/checkride/dist/config.js.map +1 -1
  43. package/node_modules/checkride/dist/digest/digest.d.ts +0 -6
  44. package/node_modules/checkride/dist/digest/digest.d.ts.map +1 -1
  45. package/node_modules/checkride/dist/digest/digest.js +3 -3
  46. package/node_modules/checkride/dist/digest/digest.js.map +1 -1
  47. package/node_modules/checkride/dist/digest/index.d.ts +1 -2
  48. package/node_modules/checkride/dist/digest/index.d.ts.map +1 -1
  49. package/node_modules/checkride/dist/digest/index.js +1 -1
  50. package/node_modules/checkride/dist/digest/index.js.map +1 -1
  51. package/node_modules/checkride/dist/doctor.d.ts +14 -1
  52. package/node_modules/checkride/dist/doctor.d.ts.map +1 -1
  53. package/node_modules/checkride/dist/doctor.js +124 -55
  54. package/node_modules/checkride/dist/doctor.js.map +1 -1
  55. package/node_modules/checkride/dist/init.d.ts +6 -0
  56. package/node_modules/checkride/dist/init.d.ts.map +1 -1
  57. package/node_modules/checkride/dist/init.js +347 -121
  58. package/node_modules/checkride/dist/init.js.map +1 -1
  59. package/node_modules/checkride/dist/links.d.ts.map +1 -1
  60. package/node_modules/checkride/dist/links.js +8 -9
  61. package/node_modules/checkride/dist/links.js.map +1 -1
  62. package/node_modules/checkride/dist/orchestrator.d.ts +56 -1
  63. package/node_modules/checkride/dist/orchestrator.d.ts.map +1 -1
  64. package/node_modules/checkride/dist/orchestrator.js +506 -138
  65. package/node_modules/checkride/dist/orchestrator.js.map +1 -1
  66. package/node_modules/checkride/dist/pack.d.ts +76 -0
  67. package/node_modules/checkride/dist/pack.d.ts.map +1 -0
  68. package/node_modules/checkride/dist/pack.js +217 -0
  69. package/node_modules/checkride/dist/pack.js.map +1 -0
  70. package/node_modules/checkride/dist/pm/translate.d.ts +18 -10
  71. package/node_modules/checkride/dist/pm/translate.d.ts.map +1 -1
  72. package/node_modules/checkride/dist/pm/translate.js +27 -13
  73. package/node_modules/checkride/dist/pm/translate.js.map +1 -1
  74. package/node_modules/checkride/dist/smoke.d.ts +86 -0
  75. package/node_modules/checkride/dist/smoke.d.ts.map +1 -0
  76. package/node_modules/checkride/dist/smoke.js +346 -0
  77. package/node_modules/checkride/dist/smoke.js.map +1 -0
  78. package/node_modules/checkride/dist/snippets.d.ts +215 -0
  79. package/node_modules/checkride/dist/snippets.d.ts.map +1 -0
  80. package/node_modules/checkride/dist/snippets.js +360 -0
  81. package/node_modules/checkride/dist/snippets.js.map +1 -0
  82. package/node_modules/checkride/package.json +4 -2
  83. package/node_modules/checkride/schema/checkride.config.schema.json +11 -6
  84. package/package.json +3 -2
  85. package/skills/pb-build/SKILL.md +7 -0
  86. package/skills/pb-park/SKILL.md +3 -2
  87. package/skills/pb-plan/SKILL.md +30 -9
  88. package/skills/pb-refine/SKILL.md +21 -6
  89. package/skills/pb-step/SKILL.md +10 -5
  90. package/skills/pb-verify/SKILL.md +12 -1
  91. package/templates/intent.md +55 -11
  92. package/node_modules/checkride/dist/baseline/command.d.ts.map +0 -1
  93. package/node_modules/checkride/dist/baseline/command.js.map +0 -1
@@ -45,6 +45,14 @@ this skill verifies it the same way: **it reads the diff, not the author**.
45
45
  findings), and the validation, then
46
46
  **stop and wait for the human's explicit approval.** This is the convergence beat;
47
47
  the human is the clock. Never checkpoint without it.
48
+ - **Reconcile a drifted subject here, in the open (D5).** The planned title *is* the
49
+ checkpoint subject (D1). If the diff drifted from it — the step landed something the
50
+ title no longer describes — the body pass may propose a corrected subject, but it
51
+ **presents** it at this pause for explicit approval: show `planned title → proposed
52
+ subject`, one line, as part of what the human OKs. This is the exception, not the
53
+ default (D6): with **nothing presented**, the deterministic title-derived subject
54
+ lands untouched. A silent `-m` swap is exactly the agent-authored subject D68 refuses
55
+ — so a reconcile is *only ever* the visible, approved kind.
48
56
  6. **Checkpoint** *(only after approval)*. Run `plumbbob checkpoint`: it makes the WIP
49
57
  commit, records the SHA, flips the step to done, appends the step to the build-log's
50
58
  `## Log`, and returns to DESIGN. The CLI owns the commit **subject** — a Conventional
@@ -62,7 +70,10 @@ this skill verifies it the same way: **it reads the diff, not the author**.
62
70
  Do **not** run a TIL scan or reach for a separate commit skill — the body is yours to
63
71
  write in one breath. Omit `--body` entirely and the CLI writes a deterministic body
64
72
  (done-when + seam + diffstat) on its own. Either way, do **not** bump the version or
65
- touch the changelog — that is the human's `/version` call.
73
+ touch the changelog — that is the human's `/version` call. And if step 5 surfaced a
74
+ drifted subject the human approved, land *that* subject by adding `-m "<subject>"` —
75
+ overriding the title-derived default for this one commit; unpresented, the CLI's
76
+ deterministic subject stands.
66
77
  7. **Hand off with the next model** *(once the checkpoint lands)*. `plumbbob checkpoint`
67
78
  returns to DESIGN; then run `plumbbob handoff` and relay its boundary block. With the
68
79
  step gone from in-flight it renders `step N checkpointed — back at the boundary` and
@@ -5,12 +5,18 @@ head; the chat is the hand. When the model floods you, read this, not your memor
5
5
  Size to the work: a small change fills Frame + a couple of Decisions and deletes
6
6
  the rest; a medium feature fills it all. Opinionated where decided, explicit where
7
7
  open. If the implementor (you-later, or the LLM) has to guess, the doc failed.
8
+
9
+ One rule runs through the whole doc: compress what's settled; expand what's pending.
10
+ Decisions and Constraints stay one line each — they re-inject into every build step,
11
+ so their tokens recur. Open questions expand into plain-then-lean prose — a human
12
+ reads them once, to decide, and that legibility buys back a chat round-trip.
8
13
  -->
9
14
 
10
15
  # {{TITLE}}
11
16
 
12
17
  **Phase** (your own bookkeeping while framing): frame
13
18
  **Size:** tiny | small | medium
19
+ **Scope:** <short-scope> <!-- the build's default commit scope (D4): a short feature-level name each step's own `(scope)` overrides. Leave the `<…>` placeholder (or blank) and it parses as absent — commits fall through to the build slug (D7). -->
14
20
 
15
21
  ## Frame
16
22
 
@@ -31,16 +37,20 @@ open. If the implementor (you-later, or the LLM) has to guess, the doc failed.
31
37
 
32
38
  ## Decisions
33
39
 
34
- *(One line each. Settled, not re-litigated in the chat. Grows as you resolve the
35
- holes `/pb-refine` surfaces, and as blockers fold in during BUILD.)*
40
+ *(One line each — settled, not re-litigated in the chat. Grows as you resolve the
41
+ holes `/pb-refine` surfaces, and as blockers fold in during BUILD. Mint a two- or
42
+ three-word slug where each item is born — `D1 (slug-here)` — and copy that slug at
43
+ every reference site, so a later `D4 (default-waves)` never decays into a bare `D4`
44
+ a cold reader has to hunt down.)*
36
45
 
37
- - D1: <decision> — *because* <the one reason that mattered>
46
+ - D1 (slug-here): <decision> — *because* <the one reason that mattered>
38
47
 
39
48
  ## Constraints
40
49
 
41
- *(Hard rules the build must honor. `/pb-verify` and `/pb-refine` read against these.)*
50
+ *(Hard rules the build must honor. `/pb-verify` and `/pb-refine` read against these.
51
+ Slug and gloss them at birth too — `C1 (no-new-deps)` — same one line, same rule.)*
42
52
 
43
- - C1: <e.g. functional/procedural only; no new dependencies>
53
+ - C1 (no-new-deps): <e.g. functional/procedural only; no new dependencies>
44
54
 
45
55
  ## Steps
46
56
 
@@ -50,9 +60,13 @@ which `/pb-build` records in the build folder's `SEAM` for orientation — aware
50
60
  An optional **model** line recommends the smallest model that can carry the step —
51
61
  mechanical work runs fine on a small model; subtle or creative work earns a frontier
52
62
  one. Advisory for the human, never a gate; write it plain, no backticks (D62).
53
- A step title may open with a Conventional-Commit type (`fix:`, `feat(scope):`) — it
54
- becomes the checkpoint's commit subject; skip it and the subject defaults to `feat`,
55
- scoped by the build slug (D68). Then drive `/pb-build` until done. Later steps may be
63
+ The step title *is* the checkpoint's commit subject: write it as one plain line,
64
+ `type(scope): description` — load-bearing paths live in `seam`, never jammed into the
65
+ title (D2) — aiming for ≤72 characters (GitHub's subject convention: soft, no gate, D9).
66
+ The `(scope)` names the primary code area the step touches (`pb-plan`, `commitmsg`); the
67
+ build's `**Scope:**` header is the feature-level catch-all a step overrides (D8). Scope
68
+ resolves title-scope → `**Scope:**` default → build slug → bare, and type resolves
69
+ title-type → `feat` (D3/D68). Then drive `/pb-build` until done. Later steps may be
56
70
  fuzzier than the first; sharpen the next one just-in-time with `/pb-step` (empty input
57
71
  auto-syncs it), and use `/pb-refine` to repair the whole plan when a blocker rewrites it.)*
58
72
 
@@ -64,10 +78,40 @@ auto-syncs it), and use `/pb-refine` to repair the whole plan when a blocker rew
64
78
 
65
79
  ## Open questions
66
80
 
67
- *(Holes you could NOT resolve on paper. Do not guess them into Decisions. A genuine
68
- fork goes to a SPIKE; record the verdict below and in Decisions.)*
81
+ *(Holes you could NOT resolve on paper — the one section that expands rather than
82
+ compresses. Do not guess them into Decisions; a genuine fork goes to a SPIKE, with
83
+ the verdict recorded below and in Decisions.)*
84
+
85
+ <!--
86
+ Write each open question so a cold reader could answer it without flipping back to
87
+ the code or the chat — that cold-reader test is the whole point of expanding it.
88
+ Three lines:
89
+
90
+ · the opener — the hole as a question, slugged at birth, tagged
91
+ *resolve by:* decide | spike | ask
92
+ · *plain:* — what's at stake, in plain words: the context and the cost of getting
93
+ it wrong, enough to judge it cold
94
+ · *lean:* — the model's proposed resolution: one answer to react to, not a menu
95
+
96
+ The human reads *plain* to understand, then *lean* to approve or redirect — one
97
+ pass, no round-trip.
98
+
99
+ When a question resolves, swap *resolve by:* for *resolved:* <date, the call> ON THE
100
+ OPENER LINE, e.g.
101
+
102
+ - Q3 (default-waves): *resolved:* 2026-07-18, default off
103
+
104
+ The status counter reads opener lines only, so a *resolved:* left on a *plain:* or
105
+ *lean:* sub-line leaves the question still counted as open.
106
+
107
+ Size to the work: a tiny build's single, obvious question may stay one bare line —
108
+ the *plain:*/*lean:* pair earns its keep only when a human decision genuinely waits
109
+ on it.
110
+ -->
69
111
 
70
- - Q1: <unresolved> — *resolve by:* decide | spike | ask
112
+ - Q1 (slug-here): <the unresolved hole, framed as a question> — *resolve by:* decide | spike | ask
113
+ - *plain:* <what's at stake, in plain words — enough to judge it cold>
114
+ - *lean:* <the model's proposed resolution — the answer to react to>
71
115
 
72
116
  ## Verdicts
73
117
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/baseline/command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAc,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,sEAAsE;IACtE,EAAE,CAAC,EAAE,cAAc,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEnF,gFAAgF;AAChF,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAsCnF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/baseline/command.ts"],"names":[],"mappings":"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"}