@sienklogic/plan-build-run 2.0.0 → 2.0.1

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 (225) hide show
  1. package/CHANGELOG.md +56 -56
  2. package/CLAUDE.md +149 -149
  3. package/LICENSE +21 -21
  4. package/README.md +247 -247
  5. package/dashboard/bin/cli.js +25 -25
  6. package/dashboard/package.json +34 -34
  7. package/dashboard/public/css/layout.css +406 -406
  8. package/dashboard/public/css/status-colors.css +98 -98
  9. package/dashboard/public/js/htmx-title.js +5 -5
  10. package/dashboard/public/js/sidebar-toggle.js +20 -20
  11. package/dashboard/src/app.js +78 -78
  12. package/dashboard/src/middleware/errorHandler.js +52 -52
  13. package/dashboard/src/middleware/notFoundHandler.js +9 -9
  14. package/dashboard/src/repositories/planning.repository.js +128 -128
  15. package/dashboard/src/routes/events.routes.js +40 -40
  16. package/dashboard/src/routes/index.routes.js +31 -31
  17. package/dashboard/src/routes/pages.routes.js +245 -195
  18. package/dashboard/src/server.js +42 -42
  19. package/dashboard/src/services/dashboard.service.js +222 -222
  20. package/dashboard/src/services/phase.service.js +220 -167
  21. package/dashboard/src/services/project.service.js +57 -57
  22. package/dashboard/src/services/roadmap.service.js +171 -171
  23. package/dashboard/src/services/sse.service.js +58 -58
  24. package/dashboard/src/services/todo.service.js +254 -254
  25. package/dashboard/src/services/watcher.service.js +48 -48
  26. package/dashboard/src/views/coming-soon.ejs +11 -11
  27. package/dashboard/src/views/error.ejs +13 -13
  28. package/dashboard/src/views/index.ejs +5 -5
  29. package/dashboard/src/views/layout.ejs +1 -1
  30. package/dashboard/src/views/partials/dashboard-content.ejs +77 -77
  31. package/dashboard/src/views/partials/footer.ejs +3 -3
  32. package/dashboard/src/views/partials/head.ejs +21 -21
  33. package/dashboard/src/views/partials/header.ejs +12 -12
  34. package/dashboard/src/views/partials/layout-bottom.ejs +15 -15
  35. package/dashboard/src/views/partials/layout-top.ejs +8 -8
  36. package/dashboard/src/views/partials/phase-content.ejs +188 -181
  37. package/dashboard/src/views/partials/phase-doc-content.ejs +38 -0
  38. package/dashboard/src/views/partials/phases-content.ejs +117 -117
  39. package/dashboard/src/views/partials/roadmap-content.ejs +142 -142
  40. package/dashboard/src/views/partials/sidebar.ejs +38 -38
  41. package/dashboard/src/views/partials/todo-create-content.ejs +53 -53
  42. package/dashboard/src/views/partials/todo-detail-content.ejs +38 -38
  43. package/dashboard/src/views/partials/todos-content.ejs +53 -53
  44. package/dashboard/src/views/phase-detail.ejs +5 -5
  45. package/dashboard/src/views/phase-doc.ejs +5 -0
  46. package/dashboard/src/views/phases.ejs +5 -5
  47. package/dashboard/src/views/roadmap.ejs +5 -5
  48. package/dashboard/src/views/todo-create.ejs +5 -5
  49. package/dashboard/src/views/todo-detail.ejs +5 -5
  50. package/dashboard/src/views/todos.ejs +5 -5
  51. package/package.json +57 -57
  52. package/plugins/pbr/.claude-plugin/plugin.json +13 -13
  53. package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -61
  54. package/plugins/pbr/agents/codebase-mapper.md +279 -271
  55. package/plugins/pbr/agents/debugger.md +281 -281
  56. package/plugins/pbr/agents/executor.md +428 -407
  57. package/plugins/pbr/agents/general.md +164 -164
  58. package/plugins/pbr/agents/integration-checker.md +169 -141
  59. package/plugins/pbr/agents/plan-checker.md +296 -280
  60. package/plugins/pbr/agents/planner.md +358 -358
  61. package/plugins/pbr/agents/researcher.md +363 -363
  62. package/plugins/pbr/agents/synthesizer.md +230 -230
  63. package/plugins/pbr/agents/verifier.md +489 -454
  64. package/plugins/pbr/commands/begin.md +5 -5
  65. package/plugins/pbr/commands/build.md +5 -5
  66. package/plugins/pbr/commands/config.md +5 -5
  67. package/plugins/pbr/commands/continue.md +5 -5
  68. package/plugins/pbr/commands/debug.md +5 -5
  69. package/plugins/pbr/commands/discuss.md +5 -5
  70. package/plugins/pbr/commands/explore.md +5 -5
  71. package/plugins/pbr/commands/health.md +5 -5
  72. package/plugins/pbr/commands/help.md +5 -5
  73. package/plugins/pbr/commands/import.md +5 -5
  74. package/plugins/pbr/commands/milestone.md +5 -5
  75. package/plugins/pbr/commands/note.md +5 -5
  76. package/plugins/pbr/commands/pause.md +5 -5
  77. package/plugins/pbr/commands/plan.md +5 -5
  78. package/plugins/pbr/commands/quick.md +5 -5
  79. package/plugins/pbr/commands/resume.md +5 -5
  80. package/plugins/pbr/commands/review.md +5 -5
  81. package/plugins/pbr/commands/scan.md +5 -5
  82. package/plugins/pbr/commands/setup.md +5 -5
  83. package/plugins/pbr/commands/status.md +5 -5
  84. package/plugins/pbr/commands/todo.md +5 -5
  85. package/plugins/pbr/contexts/dev.md +27 -27
  86. package/plugins/pbr/contexts/research.md +28 -28
  87. package/plugins/pbr/contexts/review.md +36 -36
  88. package/plugins/pbr/hooks/hooks.json +183 -183
  89. package/plugins/pbr/references/agent-anti-patterns.md +24 -24
  90. package/plugins/pbr/references/agent-interactions.md +134 -134
  91. package/plugins/pbr/references/agent-teams.md +54 -54
  92. package/plugins/pbr/references/checkpoints.md +157 -157
  93. package/plugins/pbr/references/common-bug-patterns.md +13 -13
  94. package/plugins/pbr/references/config-reference.md +441 -0
  95. package/plugins/pbr/references/continuation-format.md +212 -212
  96. package/plugins/pbr/references/deviation-rules.md +112 -112
  97. package/plugins/pbr/references/git-integration.md +226 -226
  98. package/plugins/pbr/references/integration-patterns.md +117 -117
  99. package/plugins/pbr/references/model-profiles.md +99 -99
  100. package/plugins/pbr/references/model-selection.md +31 -31
  101. package/plugins/pbr/references/pbr-rules.md +193 -193
  102. package/plugins/pbr/references/plan-authoring.md +181 -181
  103. package/plugins/pbr/references/plan-format.md +287 -283
  104. package/plugins/pbr/references/planning-config.md +213 -213
  105. package/plugins/pbr/references/questioning.md +214 -214
  106. package/plugins/pbr/references/reading-verification.md +127 -127
  107. package/plugins/pbr/references/stub-patterns.md +160 -160
  108. package/plugins/pbr/references/subagent-coordination.md +119 -119
  109. package/plugins/pbr/references/ui-formatting.md +461 -399
  110. package/plugins/pbr/references/verification-patterns.md +198 -198
  111. package/plugins/pbr/references/wave-execution.md +95 -95
  112. package/plugins/pbr/scripts/auto-continue.js +80 -80
  113. package/plugins/pbr/scripts/check-dangerous-commands.js +136 -136
  114. package/plugins/pbr/scripts/check-doc-sprawl.js +102 -102
  115. package/plugins/pbr/scripts/check-phase-boundary.js +196 -196
  116. package/plugins/pbr/scripts/check-plan-format.js +270 -270
  117. package/plugins/pbr/scripts/check-roadmap-sync.js +322 -252
  118. package/plugins/pbr/scripts/check-skill-workflow.js +262 -262
  119. package/plugins/pbr/scripts/check-state-sync.js +476 -476
  120. package/plugins/pbr/scripts/check-subagent-output.js +144 -144
  121. package/plugins/pbr/scripts/config-schema.json +251 -251
  122. package/plugins/pbr/scripts/context-budget-check.js +287 -287
  123. package/plugins/pbr/scripts/event-handler.js +151 -151
  124. package/plugins/pbr/scripts/event-logger.js +92 -92
  125. package/plugins/pbr/scripts/hook-logger.js +80 -76
  126. package/plugins/pbr/scripts/hooks-schema.json +79 -79
  127. package/plugins/pbr/scripts/log-subagent.js +164 -152
  128. package/plugins/pbr/scripts/log-tool-failure.js +88 -88
  129. package/plugins/pbr/scripts/pbr-tools.js +1378 -1301
  130. package/plugins/pbr/scripts/post-write-dispatch.js +66 -66
  131. package/plugins/pbr/scripts/post-write-quality.js +207 -207
  132. package/plugins/pbr/scripts/pre-bash-dispatch.js +86 -56
  133. package/plugins/pbr/scripts/pre-write-dispatch.js +97 -62
  134. package/plugins/pbr/scripts/progress-tracker.js +281 -228
  135. package/plugins/pbr/scripts/run-hook.js +92 -0
  136. package/plugins/pbr/scripts/session-cleanup.js +254 -254
  137. package/plugins/pbr/scripts/status-line.js +288 -285
  138. package/plugins/pbr/scripts/suggest-compact.js +119 -119
  139. package/plugins/pbr/scripts/task-completed.js +45 -45
  140. package/plugins/pbr/scripts/track-context-budget.js +149 -119
  141. package/plugins/pbr/scripts/validate-commit.js +200 -200
  142. package/plugins/pbr/scripts/validate-plugin-structure.js +183 -172
  143. package/plugins/pbr/scripts/validate-task.js +106 -0
  144. package/plugins/pbr/skills/begin/SKILL.md +594 -545
  145. package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -33
  146. package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -18
  147. package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -49
  148. package/plugins/pbr/skills/begin/templates/config.json.tmpl +64 -63
  149. package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -19
  150. package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -30
  151. package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -16
  152. package/plugins/pbr/skills/build/SKILL.md +943 -962
  153. package/plugins/pbr/skills/config/SKILL.md +256 -241
  154. package/plugins/pbr/skills/continue/SKILL.md +164 -127
  155. package/plugins/pbr/skills/debug/SKILL.md +515 -489
  156. package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -16
  157. package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -27
  158. package/plugins/pbr/skills/discuss/SKILL.md +347 -338
  159. package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -61
  160. package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -9
  161. package/plugins/pbr/skills/explore/SKILL.md +378 -362
  162. package/plugins/pbr/skills/health/SKILL.md +221 -186
  163. package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -30
  164. package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -63
  165. package/plugins/pbr/skills/help/SKILL.md +155 -140
  166. package/plugins/pbr/skills/import/SKILL.md +504 -490
  167. package/plugins/pbr/skills/milestone/SKILL.md +704 -673
  168. package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -48
  169. package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -30
  170. package/plugins/pbr/skills/note/SKILL.md +231 -212
  171. package/plugins/pbr/skills/pause/SKILL.md +249 -235
  172. package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -71
  173. package/plugins/pbr/skills/plan/SKILL.md +685 -628
  174. package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -98
  175. package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -21
  176. package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -32
  177. package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -38
  178. package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -19
  179. package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -23
  180. package/plugins/pbr/skills/quick/SKILL.md +354 -335
  181. package/plugins/pbr/skills/resume/SKILL.md +402 -388
  182. package/plugins/pbr/skills/review/SKILL.md +686 -652
  183. package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -60
  184. package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -40
  185. package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -115
  186. package/plugins/pbr/skills/scan/SKILL.md +304 -269
  187. package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -201
  188. package/plugins/pbr/skills/setup/SKILL.md +253 -227
  189. package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -35
  190. package/plugins/pbr/skills/shared/config-loading.md +102 -102
  191. package/plugins/pbr/skills/shared/context-budget.md +40 -40
  192. package/plugins/pbr/skills/shared/context-loader-task.md +86 -86
  193. package/plugins/pbr/skills/shared/digest-select.md +79 -79
  194. package/plugins/pbr/skills/shared/domain-probes.md +125 -125
  195. package/plugins/pbr/skills/shared/error-reporting.md +79 -79
  196. package/plugins/pbr/skills/shared/gate-prompts.md +388 -388
  197. package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -45
  198. package/plugins/pbr/skills/shared/progress-display.md +53 -53
  199. package/plugins/pbr/skills/shared/revision-loop.md +81 -81
  200. package/plugins/pbr/skills/shared/state-loading.md +62 -62
  201. package/plugins/pbr/skills/shared/state-update.md +161 -161
  202. package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -33
  203. package/plugins/pbr/skills/status/SKILL.md +367 -353
  204. package/plugins/pbr/skills/todo/SKILL.md +198 -181
  205. package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -52
  206. package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -151
  207. package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -97
  208. package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -40
  209. package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -81
  210. package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -116
  211. package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -98
  212. package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -93
  213. package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -104
  214. package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -78
  215. package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -78
  216. package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -80
  217. package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -107
  218. package/plugins/pbr/templates/continue-here.md.tmpl +73 -73
  219. package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -37
  220. package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -124
  221. package/plugins/pbr/templates/research/STACK.md.tmpl +71 -71
  222. package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -112
  223. package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -81
  224. package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -99
  225. package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +36 -36
@@ -1,157 +1,157 @@
1
- # Checkpoints Reference
2
-
3
- How Plan-Build-Run uses checkpoint tasks to pause execution and involve the human.
4
-
5
- ---
6
-
7
- ## What Are Checkpoints?
8
-
9
- Checkpoints are special task types that cause the executor agent to **stop execution** and return control to the orchestrator (or the human). They exist because some tasks require human judgment, manual action, or verification that cannot be automated.
10
-
11
- Checkpoints are defined in plan task XML via the `type` attribute. When the executor encounters a checkpoint task, it follows a specific protocol depending on the checkpoint type.
12
-
13
- ---
14
-
15
- ## Checkpoint Types
16
-
17
- Plan-Build-Run supports three checkpoint types:
18
-
19
- ### checkpoint:human-verify
20
-
21
- **Purpose**: The executor has completed work, but a human needs to visually inspect or manually test the result before proceeding.
22
-
23
- **Executor behavior**:
24
- 1. Execute the task's `<action>` steps normally
25
- 2. Commit the changes
26
- 3. **STOP execution**
27
- 4. Return a structured `CHECKPOINT: HUMAN-VERIFY` response containing:
28
- - What was done (summary of action taken)
29
- - What to verify (from the task's `<done>` condition)
30
- - How to verify (instructions derived from `<verify>`)
31
- - Completed tasks table
32
- - Remaining tasks list
33
-
34
- **Use when**: The result requires subjective judgment (UI looks correct, behavior feels right, output makes sense) that automated verification cannot cover.
35
-
36
- **Example scenario**: A template was created and needs visual review in the browser, or an API integration needs manual testing with real credentials.
37
-
38
- ### checkpoint:decision
39
-
40
- **Purpose**: The plan reaches a point where a human decision is needed before the executor can continue. The task is NOT executed — execution pauses before the task starts.
41
-
42
- **Executor behavior**:
43
- 1. **STOP before executing the task**
44
- 2. Return a structured `CHECKPOINT: DECISION` response containing:
45
- - The decision that needs to be made (from `<action>`)
46
- - Available options
47
- - Context to help the human decide
48
- - Completed tasks table
49
-
50
- **Use when**: The plan has a fork point where different approaches are possible and the right choice depends on human preference, business context, or information the planner could not determine.
51
-
52
- **Example scenario**: Choosing between two authentication providers, deciding whether to use a specific third-party library or build in-house.
53
-
54
- ### checkpoint:human-action
55
-
56
- **Purpose**: The task requires something the executor cannot do — a manual step that involves the human interacting with external systems, creating accounts, or performing physical actions.
57
-
58
- **Executor behavior**:
59
- 1. **STOP before executing the task**
60
- 2. Return a structured `CHECKPOINT: HUMAN-ACTION` response containing:
61
- - What the human needs to do (from `<action>`)
62
- - Step-by-step instructions
63
- - Prompt to tell the executor when done
64
- - Completed tasks table
65
-
66
- **Use when**: External setup is required — creating API keys, configuring DNS, setting up OAuth applications, or any action that requires credentials or permissions the agent does not have.
67
-
68
- **Example scenario**: The human needs to create a Discord application in the Developer Portal and paste the client ID and secret into `.env`.
69
-
70
- ---
71
-
72
- ## Checkpoint in Plan Format
73
-
74
- Checkpoints are declared in the task's `type` attribute in the plan XML:
75
-
76
- ```xml
77
- <task id="02-01-T3" type="checkpoint:human-verify" tdd="false">
78
- <name>Verify OAuth login flow in browser</name>
79
- <files>...</files>
80
- <action>...</action>
81
- <verify>Open browser to localhost:3000/auth/login and complete the flow</verify>
82
- <done>User can log in via Discord OAuth and see their profile</done>
83
- </task>
84
- ```
85
-
86
- Valid checkpoint type values:
87
- - `checkpoint:human-verify`
88
- - `checkpoint:decision`
89
- - `checkpoint:human-action`
90
-
91
- Non-checkpoint task types use `type="auto"`.
92
-
93
- ---
94
-
95
- ## Autonomous vs Non-Autonomous Plans
96
-
97
- The plan frontmatter field `autonomous: true|false` indicates whether a plan contains checkpoint tasks:
98
-
99
- | Value | Meaning |
100
- |-------|---------|
101
- | `autonomous: true` | No checkpoint tasks. The executor can complete all tasks without human intervention. |
102
- | `autonomous: false` | Contains at least one checkpoint task. Execution will pause at some point. |
103
-
104
- The build orchestrator uses this field to determine execution strategy:
105
- - Autonomous plans can be executed in parallel with other autonomous plans in the same wave
106
- - Non-autonomous plans may block the wave while waiting for human input
107
- - The orchestrator tracks checkpoint state in `.checkpoint-manifest.json`
108
-
109
- ---
110
-
111
- ## Continuation Protocol
112
-
113
- After a checkpoint is resolved (human provides their answer, completes their action, or confirms verification), the orchestrator spawns a **fresh continuation executor** to resume from where the checkpoint paused.
114
-
115
- The continuation executor receives:
116
- 1. The full plan content
117
- 2. A table of completed tasks with their commit hashes
118
- 3. The checkpoint resolution (what the human decided or confirmed)
119
- 4. The task number to resume from
120
- 5. The same project context as the original executor
121
-
122
- **Key rules for continuation**:
123
- - The continuation executor does NOT re-execute completed tasks
124
- - It reads the partial SUMMARY.md if one exists
125
- - It verifies prior commits exist via `git log`
126
- - It resumes from the next uncompleted task after the checkpoint
127
-
128
- ---
129
-
130
- ## Authentication Gate (Implicit Checkpoint)
131
-
132
- The executor also supports an implicit checkpoint for authentication failures. If the executor encounters an authentication error (missing API key, expired token, invalid credentials) during any task, it immediately stops and returns a `CHECKPOINT: AUTH-GATE` response.
133
-
134
- This is not declared in the plan — it triggers automatically when an auth error is detected. The response includes:
135
- - Which task was blocked
136
- - What credential is needed
137
- - Where to configure it
138
- - The actual error message
139
-
140
- ---
141
-
142
- ## Architectural Deviation (Implicit Checkpoint)
143
-
144
- Similarly, if the executor discovers that the plan's approach cannot work (API changed, framework limitation, dependency conflict), it stops with a `CHECKPOINT: ARCHITECTURAL-DEVIATION` response. This follows Deviation Rule 4 from the executor's deviation handling protocol.
145
-
146
- ---
147
-
148
- ## Best Practices for Planners
149
-
150
- When creating plans that include checkpoints:
151
-
152
- 1. **Minimize checkpoint tasks** — each one pauses execution and requires human attention
153
- 2. **Place checkpoints at natural boundaries** — after a feature is complete, not in the middle of wiring
154
- 3. **Group manual actions** — combine related human actions into a single checkpoint rather than multiple stops
155
- 4. **Provide clear instructions** — the `<action>` and `<verify>` elements should give the human everything they need
156
- 5. **Consider autonomous alternatives** — if a task CAN be verified automatically, prefer `type="auto"` with a robust `<verify>` command
157
- 6. **Set `autonomous: false`** in the plan frontmatter when any task is a checkpoint
1
+ # Checkpoints Reference
2
+
3
+ How Plan-Build-Run uses checkpoint tasks to pause execution and involve the human.
4
+
5
+ ---
6
+
7
+ ## What Are Checkpoints?
8
+
9
+ Checkpoints are special task types that cause the executor agent to **stop execution** and return control to the orchestrator (or the human). They exist because some tasks require human judgment, manual action, or verification that cannot be automated.
10
+
11
+ Checkpoints are defined in plan task XML via the `type` attribute. When the executor encounters a checkpoint task, it follows a specific protocol depending on the checkpoint type.
12
+
13
+ ---
14
+
15
+ ## Checkpoint Types
16
+
17
+ Plan-Build-Run supports three checkpoint types:
18
+
19
+ ### checkpoint:human-verify
20
+
21
+ **Purpose**: The executor has completed work, but a human needs to visually inspect or manually test the result before proceeding.
22
+
23
+ **Executor behavior**:
24
+ 1. Execute the task's `<action>` steps normally
25
+ 2. Commit the changes
26
+ 3. **STOP execution**
27
+ 4. Return a structured `CHECKPOINT: HUMAN-VERIFY` response containing:
28
+ - What was done (summary of action taken)
29
+ - What to verify (from the task's `<done>` condition)
30
+ - How to verify (instructions derived from `<verify>`)
31
+ - Completed tasks table
32
+ - Remaining tasks list
33
+
34
+ **Use when**: The result requires subjective judgment (UI looks correct, behavior feels right, output makes sense) that automated verification cannot cover.
35
+
36
+ **Example scenario**: A template was created and needs visual review in the browser, or an API integration needs manual testing with real credentials.
37
+
38
+ ### checkpoint:decision
39
+
40
+ **Purpose**: The plan reaches a point where a human decision is needed before the executor can continue. The task is NOT executed — execution pauses before the task starts.
41
+
42
+ **Executor behavior**:
43
+ 1. **STOP before executing the task**
44
+ 2. Return a structured `CHECKPOINT: DECISION` response containing:
45
+ - The decision that needs to be made (from `<action>`)
46
+ - Available options
47
+ - Context to help the human decide
48
+ - Completed tasks table
49
+
50
+ **Use when**: The plan has a fork point where different approaches are possible and the right choice depends on human preference, business context, or information the planner could not determine.
51
+
52
+ **Example scenario**: Choosing between two authentication providers, deciding whether to use a specific third-party library or build in-house.
53
+
54
+ ### checkpoint:human-action
55
+
56
+ **Purpose**: The task requires something the executor cannot do — a manual step that involves the human interacting with external systems, creating accounts, or performing physical actions.
57
+
58
+ **Executor behavior**:
59
+ 1. **STOP before executing the task**
60
+ 2. Return a structured `CHECKPOINT: HUMAN-ACTION` response containing:
61
+ - What the human needs to do (from `<action>`)
62
+ - Step-by-step instructions
63
+ - Prompt to tell the executor when done
64
+ - Completed tasks table
65
+
66
+ **Use when**: External setup is required — creating API keys, configuring DNS, setting up OAuth applications, or any action that requires credentials or permissions the agent does not have.
67
+
68
+ **Example scenario**: The human needs to create a Discord application in the Developer Portal and paste the client ID and secret into `.env`.
69
+
70
+ ---
71
+
72
+ ## Checkpoint in Plan Format
73
+
74
+ Checkpoints are declared in the task's `type` attribute in the plan XML:
75
+
76
+ ```xml
77
+ <task id="02-01-T3" type="checkpoint:human-verify" tdd="false">
78
+ <name>Verify OAuth login flow in browser</name>
79
+ <files>...</files>
80
+ <action>...</action>
81
+ <verify>Open browser to localhost:3000/auth/login and complete the flow</verify>
82
+ <done>User can log in via Discord OAuth and see their profile</done>
83
+ </task>
84
+ ```
85
+
86
+ Valid checkpoint type values:
87
+ - `checkpoint:human-verify`
88
+ - `checkpoint:decision`
89
+ - `checkpoint:human-action`
90
+
91
+ Non-checkpoint task types use `type="auto"`.
92
+
93
+ ---
94
+
95
+ ## Autonomous vs Non-Autonomous Plans
96
+
97
+ The plan frontmatter field `autonomous: true|false` indicates whether a plan contains checkpoint tasks:
98
+
99
+ | Value | Meaning |
100
+ |-------|---------|
101
+ | `autonomous: true` | No checkpoint tasks. The executor can complete all tasks without human intervention. |
102
+ | `autonomous: false` | Contains at least one checkpoint task. Execution will pause at some point. |
103
+
104
+ The build orchestrator uses this field to determine execution strategy:
105
+ - Autonomous plans can be executed in parallel with other autonomous plans in the same wave
106
+ - Non-autonomous plans may block the wave while waiting for human input
107
+ - The orchestrator tracks checkpoint state in `.checkpoint-manifest.json`
108
+
109
+ ---
110
+
111
+ ## Continuation Protocol
112
+
113
+ After a checkpoint is resolved (human provides their answer, completes their action, or confirms verification), the orchestrator spawns a **fresh continuation executor** to resume from where the checkpoint paused.
114
+
115
+ The continuation executor receives:
116
+ 1. The full plan content
117
+ 2. A table of completed tasks with their commit hashes
118
+ 3. The checkpoint resolution (what the human decided or confirmed)
119
+ 4. The task number to resume from
120
+ 5. The same project context as the original executor
121
+
122
+ **Key rules for continuation**:
123
+ - The continuation executor does NOT re-execute completed tasks
124
+ - It reads the partial SUMMARY.md if one exists
125
+ - It verifies prior commits exist via `git log`
126
+ - It resumes from the next uncompleted task after the checkpoint
127
+
128
+ ---
129
+
130
+ ## Authentication Gate (Implicit Checkpoint)
131
+
132
+ The executor also supports an implicit checkpoint for authentication failures. If the executor encounters an authentication error (missing API key, expired token, invalid credentials) during any task, it immediately stops and returns a `CHECKPOINT: AUTH-GATE` response.
133
+
134
+ This is not declared in the plan — it triggers automatically when an auth error is detected. The response includes:
135
+ - Which task was blocked
136
+ - What credential is needed
137
+ - Where to configure it
138
+ - The actual error message
139
+
140
+ ---
141
+
142
+ ## Architectural Deviation (Implicit Checkpoint)
143
+
144
+ Similarly, if the executor discovers that the plan's approach cannot work (API changed, framework limitation, dependency conflict), it stops with a `CHECKPOINT: ARCHITECTURAL-DEVIATION` response. This follows Deviation Rule 4 from the executor's deviation handling protocol.
145
+
146
+ ---
147
+
148
+ ## Best Practices for Planners
149
+
150
+ When creating plans that include checkpoints:
151
+
152
+ 1. **Minimize checkpoint tasks** — each one pauses execution and requires human attention
153
+ 2. **Place checkpoints at natural boundaries** — after a feature is complete, not in the middle of wiring
154
+ 3. **Group manual actions** — combine related human actions into a single checkpoint rather than multiple stops
155
+ 4. **Provide clear instructions** — the `<action>` and `<verify>` elements should give the human everything they need
156
+ 5. **Consider autonomous alternatives** — if a task CAN be verified automatically, prefer `type="auto"` with a robust `<verify>` command
157
+ 6. **Set `autonomous: false`** in the plan frontmatter when any task is a checkpoint
@@ -1,13 +1,13 @@
1
- # Common Bug Patterns
2
-
3
- Quick reference for the debugger agent. Check these patterns early — they cover ~80% of bugs.
4
-
5
- | Category | Patterns to Check |
6
- |----------|------------------|
7
- | **Off-by-one** | Loop bounds (`<` vs `<=`), 0-based vs 1-based indexing, string slice boundaries |
8
- | **Null/undefined** | Missing optional chaining (`?.`), default params, DB query returning null, OOB array access |
9
- | **Async/timing** | Missing `await`, race conditions, stale closures, handlers registered before element exists |
10
- | **State management** | Direct mutation vs new object, update not triggering re-render, duplicated sources of truth, stale state in closures |
11
- | **Import/module** | Circular imports, default vs named export mismatch, wrong file (similar names), resolution path |
12
- | **Environment** | Missing/wrong env var, dev vs prod differences, case sensitivity (Windows vs Linux paths) |
13
- | **Data shape** | API response format changed, schema/model mismatch, type mismatch between layers, missing field |
1
+ # Common Bug Patterns
2
+
3
+ Quick reference for the debugger agent. Check these patterns early — they cover ~80% of bugs.
4
+
5
+ | Category | Patterns to Check |
6
+ |----------|------------------|
7
+ | **Off-by-one** | Loop bounds (`<` vs `<=`), 0-based vs 1-based indexing, string slice boundaries |
8
+ | **Null/undefined** | Missing optional chaining (`?.`), default params, DB query returning null, OOB array access |
9
+ | **Async/timing** | Missing `await`, race conditions, stale closures, handlers registered before element exists |
10
+ | **State management** | Direct mutation vs new object, update not triggering re-render, duplicated sources of truth, stale state in closures |
11
+ | **Import/module** | Circular imports, default vs named export mismatch, wrong file (similar names), resolution path |
12
+ | **Environment** | Missing/wrong env var, dev vs prod differences, case sensitivity (Windows vs Linux paths) |
13
+ | **Data shape** | API response format changed, schema/model mismatch, type mismatch between layers, missing field |