strikethroo 3.18.0 → 3.19.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.
- package/dist/validation/graph-checks.d.ts +1 -1
- package/dist/validation/graph-checks.js +1 -1
- package/dist-web/assets/{arc-BlSNa2QY.js → arc-DvupXdGQ.js} +1 -1
- package/dist-web/assets/{architectureDiagram-3BPJPVTR-CPcCF2a4.js → architectureDiagram-3BPJPVTR-CTAouh0m.js} +1 -1
- package/dist-web/assets/{blockDiagram-GPEHLZMM-ECDR0edZ.js → blockDiagram-GPEHLZMM-6x7jxaHN.js} +1 -1
- package/dist-web/assets/{c4Diagram-AAUBKEIU-oM3VnEAQ.js → c4Diagram-AAUBKEIU-CU3k_kSZ.js} +1 -1
- package/dist-web/assets/channel-C2A85Ka9.js +1 -0
- package/dist-web/assets/{chunk-2J33WTMH-DHk5SJLz.js → chunk-2J33WTMH-ufPtIfME.js} +1 -1
- package/dist-web/assets/{chunk-4BX2VUAB-CjBwgkMu.js → chunk-4BX2VUAB-DbkVZKkN.js} +1 -1
- package/dist-web/assets/{chunk-55IACEB6-D95zqyiV.js → chunk-55IACEB6-q5JDEQkn.js} +1 -1
- package/dist-web/assets/{chunk-727SXJPM-DCCPRUfv.js → chunk-727SXJPM-DsRSKKMC.js} +1 -1
- package/dist-web/assets/{chunk-AQP2D5EJ-qur7KQyD.js → chunk-AQP2D5EJ-C1kK9Q_8.js} +1 -1
- package/dist-web/assets/{chunk-FMBD7UC4-D46Su7Fv.js → chunk-FMBD7UC4-D0SBGkxh.js} +1 -1
- package/dist-web/assets/{chunk-ND2GUHAM-BioGsqxt.js → chunk-ND2GUHAM-B-hR70vT.js} +1 -1
- package/dist-web/assets/{chunk-QZHKN3VN-C8LdDiqn.js → chunk-QZHKN3VN-C2G8hCEM.js} +1 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-di7qa7rn.js +1 -0
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-di7qa7rn.js +1 -0
- package/dist-web/assets/{cose-bilkent-S5V4N54A-ccY03BRh.js → cose-bilkent-S5V4N54A-DonfmiRu.js} +1 -1
- package/dist-web/assets/{dagre-BM42HDAG-BYLmCViB.js → dagre-BM42HDAG-CcewaQrp.js} +1 -1
- package/dist-web/assets/{diagram-2AECGRRQ-DTvenvXR.js → diagram-2AECGRRQ-DaH4HSXb.js} +1 -1
- package/dist-web/assets/{diagram-5GNKFQAL-CCzsYDmr.js → diagram-5GNKFQAL-Bvrf4NB9.js} +1 -1
- package/dist-web/assets/{diagram-KO2AKTUF-QSff7J_V.js → diagram-KO2AKTUF-C8SR57fy.js} +1 -1
- package/dist-web/assets/{diagram-LMA3HP47-CVqlEmu2.js → diagram-LMA3HP47-DXTykpi0.js} +1 -1
- package/dist-web/assets/{diagram-OG6HWLK6-dBVz-I46.js → diagram-OG6HWLK6-Ll-Oq6Zy.js} +1 -1
- package/dist-web/assets/{erDiagram-TEJ5UH35-B_y4ftNu.js → erDiagram-TEJ5UH35-Ddz85tGo.js} +1 -1
- package/dist-web/assets/{flowDiagram-I6XJVG4X-M410hT_n.js → flowDiagram-I6XJVG4X-DAxnIFcz.js} +1 -1
- package/dist-web/assets/{ganttDiagram-6RSMTGT7-qiri2OJa.js → ganttDiagram-6RSMTGT7-C2rk55sl.js} +1 -1
- package/dist-web/assets/{gitGraphDiagram-PVQCEYII-FqGGBobG.js → gitGraphDiagram-PVQCEYII-ByPZrx6x.js} +1 -1
- package/dist-web/assets/{index-BaFSLlgl.js → index-BnRrzytN.js} +1 -1
- package/dist-web/assets/{index-1SV04K_c.js → index-CPn1wBQP.js} +1 -1
- package/dist-web/assets/{index-DrUIu0u6.js → index-dlrfecPM.js} +4 -4
- package/dist-web/assets/{infoDiagram-5YYISTIA-CczHqRr1.js → infoDiagram-5YYISTIA-CykUjGf_.js} +1 -1
- package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-ty1DRy6n.js → ishikawaDiagram-YF4QCWOH-FzmLKzqg.js} +1 -1
- package/dist-web/assets/{journeyDiagram-JHISSGLW-D_JYvt6i.js → journeyDiagram-JHISSGLW-BZQghjAa.js} +1 -1
- package/dist-web/assets/{kanban-definition-UN3LZRKU-CT67nUTK.js → kanban-definition-UN3LZRKU-Cwj2AaLr.js} +1 -1
- package/dist-web/assets/{linear-B1HaE_t1.js → linear-Bqh3Mqnj.js} +1 -1
- package/dist-web/assets/{mermaid.core-Dumx_iKV.js → mermaid.core-D9NvKuAa.js} +4 -4
- package/dist-web/assets/{mindmap-definition-RKZ34NQL-CVulJo63.js → mindmap-definition-RKZ34NQL-BPtK37je.js} +1 -1
- package/dist-web/assets/{pieDiagram-4H26LBE5-C1yD5ntZ.js → pieDiagram-4H26LBE5-DDnMysaq.js} +1 -1
- package/dist-web/assets/{quadrantDiagram-W4KKPZXB-B7PoiM8c.js → quadrantDiagram-W4KKPZXB-D-veqnnh.js} +1 -1
- package/dist-web/assets/{requirementDiagram-4Y6WPE33-COvHb3Mv.js → requirementDiagram-4Y6WPE33-DXZlZ67F.js} +1 -1
- package/dist-web/assets/{sankeyDiagram-5OEKKPKP-CAnwm5-J.js → sankeyDiagram-5OEKKPKP-Cyr7G3B1.js} +1 -1
- package/dist-web/assets/{sequenceDiagram-3UESZ5HK-C2KFLIUq.js → sequenceDiagram-3UESZ5HK-z_5peTGF.js} +1 -1
- package/dist-web/assets/{stateDiagram-AJRCARHV-CqmhS5P6.js → stateDiagram-AJRCARHV-ooM-zuUc.js} +1 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-qXQgUbwd.js +1 -0
- package/dist-web/assets/{timeline-definition-PNZ67QCA-DvPre9M_.js → timeline-definition-PNZ67QCA-CcVS8Rhj.js} +1 -1
- package/dist-web/assets/{vennDiagram-CIIHVFJN-Top6i7KH.js → vennDiagram-CIIHVFJN-CDe05zEn.js} +1 -1
- package/dist-web/assets/{wardley-L42UT6IY-_jVLsWqf.js → wardley-L42UT6IY-CYWVl3vs.js} +1 -1
- package/dist-web/assets/{wardleyDiagram-YWT4CUSO-BV4e5mP6.js → wardleyDiagram-YWT4CUSO-Dy1uWsKU.js} +1 -1
- package/dist-web/assets/{xychartDiagram-2RQKCTM6-Bn1hw4Jk.js → xychartDiagram-2RQKCTM6-CKb8TFhP.js} +1 -1
- package/dist-web/index.html +1 -1
- package/package.json +2 -1
- package/templates/harness/skills/st-code-review/scripts/code-review.cjs +2710 -264
- package/templates/harness/skills/st-create-plan/SKILL.md +5 -4
- package/templates/harness/skills/st-execute-blueprint/SKILL.md +5 -2
- package/templates/harness/skills/st-execute-blueprint/scripts/dispatch-task-execution.cjs +420 -213
- package/templates/harness/skills/st-execute-task/scripts/dispatch-task-execution.cjs +420 -213
- package/templates/harness/skills/st-full-workflow/SKILL.md +131 -43
- package/templates/harness/skills/st-full-workflow/scripts/dispatch-task-execution.cjs +420 -213
- package/templates/harness/skills/st-generate-tasks/SKILL.md +5 -4
- package/templates/strikethroo/config/config.yaml +95 -6
- package/templates/strikethroo/gitignore +13 -10
- package/dist-web/assets/channel-CmU4mBgT.js +0 -1
- package/dist-web/assets/classDiagram-4FO5ZUOK-D_FMKQsB.js +0 -1
- package/dist-web/assets/classDiagram-v2-Q7XG4LA2-D_FMKQsB.js +0 -1
- package/dist-web/assets/stateDiagram-v2-BHNVJYJU-C3Kw8ZDR.js +0 -1
|
@@ -55,7 +55,14 @@ For every subsequent step, treat the path printed by this script as `<root>`.
|
|
|
55
55
|
|
|
56
56
|
#### 2. Load project context
|
|
57
57
|
|
|
58
|
-
Read `<root>/config/STRIKETHROO.md` for directory structure conventions
|
|
58
|
+
Read `<root>/config/STRIKETHROO.md` for the directory structure conventions
|
|
59
|
+
this project uses. Read `<root>/config/hooks/PRE_PLAN.md` and execute the
|
|
60
|
+
instructions it contains before proceeding. Read
|
|
61
|
+
`<root>/config/templates/PLAN_TEMPLATE.md` so the plan you emit conforms
|
|
62
|
+
to its structure.
|
|
63
|
+
|
|
64
|
+
Also read `<root>/config/shared/anti-rationalization.md`. The steps below
|
|
65
|
+
require you to apply it.
|
|
59
66
|
|
|
60
67
|
#### 3. Analyze the work order
|
|
61
68
|
|
|
@@ -64,20 +71,36 @@ Identify:
|
|
|
64
71
|
- Objective and end goal.
|
|
65
72
|
- Scope and explicit boundaries.
|
|
66
73
|
- Success criteria.
|
|
67
|
-
- Dependencies, prerequisites,
|
|
74
|
+
- Dependencies, prerequisites, blockers.
|
|
68
75
|
- Technical requirements and constraints.
|
|
69
76
|
|
|
70
77
|
#### 4. Clarification loop
|
|
71
78
|
|
|
72
|
-
If any critical context is missing, ask the user targeted questions.
|
|
79
|
+
If any critical context is missing, ask the user targeted questions. Keep
|
|
80
|
+
looping until you have no further questions. Explicitly confirm whether
|
|
81
|
+
backwards compatibility is required. Never invent answers; never paper over
|
|
82
|
+
a missing answer.
|
|
83
|
+
|
|
84
|
+
If the user declines to clarify a blocking question, stop and report the
|
|
85
|
+
plan as needing clarification. Do not produce a partial plan.
|
|
73
86
|
|
|
74
|
-
|
|
87
|
+
Apply `<root>/config/shared/anti-rationalization.md` to this rationalization table:
|
|
88
|
+
|
|
89
|
+
| You catch yourself thinking… | The binding rule |
|
|
90
|
+
| --- | --- |
|
|
91
|
+
| "I can reasonably assume the answer." | An assumption is not an answer. Ask the question; never invent answers. |
|
|
92
|
+
| "Asking again is annoying." | A question the user can decline is recoverable; a silent wrong assumption is not. Ask. |
|
|
93
|
+
| "The user implied it, so it's settled." | An implication is not a confirmation. Surface it as a question and get an explicit answer. |
|
|
75
94
|
|
|
76
95
|
#### 5. Allocate the next plan ID
|
|
77
96
|
|
|
78
|
-
Run `scripts/get-next-plan-id.cjs` to obtain the next available plan ID.
|
|
97
|
+
Run `scripts/get-next-plan-id.cjs` to obtain the next available plan ID.
|
|
98
|
+
Pass `<root>` as the first argument when invoking the script from a working
|
|
99
|
+
directory that is not inside the project, otherwise no argument is required.
|
|
100
|
+
The script prints a single integer.
|
|
79
101
|
|
|
80
|
-
Compute the zero-padded form for directory naming (`{padded-id}--{slug}`)
|
|
102
|
+
Compute the zero-padded form for directory naming (`{padded-id}--{slug}`)
|
|
103
|
+
and use the unpadded integer in the plan frontmatter and the final summary.
|
|
81
104
|
|
|
82
105
|
#### 6. Emit the plan
|
|
83
106
|
|
|
@@ -87,9 +110,17 @@ Write the plan to:
|
|
|
87
110
|
<root>/plans/{padded-id}--{slug}/plan-{padded-id}--{slug}.md
|
|
88
111
|
```
|
|
89
112
|
|
|
90
|
-
The output must
|
|
113
|
+
The output must:
|
|
114
|
+
|
|
115
|
+
- Conform to `<root>/config/templates/PLAN_TEMPLATE.md`, including required
|
|
116
|
+
YAML frontmatter fields (at minimum `id`, `summary`, `created`).
|
|
117
|
+
- Contain the standard sections from the template body.
|
|
118
|
+
- Use Markdown, not free-form prose.
|
|
119
|
+
- Avoid time estimates, task lists, or code samples — those belong to the
|
|
120
|
+
later task-generation step.
|
|
91
121
|
|
|
92
|
-
The `<slug>` is derived from the plan summary: lowercase, alphanumeric and
|
|
122
|
+
The `<slug>` is derived from the plan summary: lowercase, alphanumeric and
|
|
123
|
+
hyphens only, collapsed, trimmed.
|
|
93
124
|
|
|
94
125
|
#### 7. Run post-plan hook
|
|
95
126
|
|
|
@@ -121,15 +152,31 @@ Using the Plan ID extracted from Step 1:
|
|
|
121
152
|
|
|
122
153
|
#### 1. Resolve the plan
|
|
123
154
|
|
|
124
|
-
Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the
|
|
155
|
+
Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the
|
|
156
|
+
absolute path of the plan file. The same script also accepts these field
|
|
157
|
+
names (single-field output mode) and exposes them on demand:
|
|
158
|
+
|
|
159
|
+
- `planDir` — absolute path of the plan directory
|
|
160
|
+
- `taskCount` — number of existing task files in that plan's `tasks/`
|
|
161
|
+
- `blueprintExists` — `yes` or `no`
|
|
162
|
+
- `taskManagerRoot` — absolute path of `<root>`
|
|
163
|
+
- `planId` — the resolved numeric plan ID
|
|
164
|
+
|
|
165
|
+
If the script exits non-zero, surface its stderr to the user and stop the
|
|
166
|
+
workflow.
|
|
167
|
+
Do not guess a different ID.
|
|
125
168
|
|
|
126
169
|
#### 2. Load project context
|
|
127
170
|
|
|
128
|
-
Read these files in order:
|
|
171
|
+
Read these files, in order:
|
|
129
172
|
|
|
130
|
-
- `<root>/config/STRIKETHROO.md` — directory conventions
|
|
131
|
-
|
|
132
|
-
-
|
|
173
|
+
- `<root>/config/STRIKETHROO.md` — directory conventions for plans, tasks,
|
|
174
|
+
and the archive layout.
|
|
175
|
+
- The plan body at the path returned by step 1 — this is the contract for
|
|
176
|
+
what tasks must exist.
|
|
177
|
+
- `<root>/config/templates/TASK_TEMPLATE.md` — every task file you emit must
|
|
178
|
+
conform to this template's frontmatter schema and section structure.
|
|
179
|
+
- `<root>/config/shared/anti-rationalization.md` — apply in step 3.
|
|
133
180
|
|
|
134
181
|
#### 3. Analyze and decompose the plan
|
|
135
182
|
|
|
@@ -159,6 +206,15 @@ Decompose each deliverable into atomic tasks only when genuinely needed.
|
|
|
159
206
|
not mention.
|
|
160
207
|
- Comprehensive test suites for trivial functionality.
|
|
161
208
|
|
|
209
|
+
Apply `<root>/config/shared/anti-rationalization.md` to this rationalization table:
|
|
210
|
+
|
|
211
|
+
| You catch yourself thinking… | The binding rule |
|
|
212
|
+
| --- | --- |
|
|
213
|
+
| "One extra task won't hurt." | It violates the 20–30% minimization target. Every task traces to an **explicitly stated** deliverable or it does not exist. |
|
|
214
|
+
| "This edge case deserves its own task." | Fold it into the task that owns the behavior. Do not split trivially small operations into separate units. |
|
|
215
|
+
| "I'll add a test suite to be safe." | Comprehensive tests for trivial functionality are gold-plating. Follow the test philosophy — meaningful tests only. |
|
|
216
|
+
| "Future extensibility justifies this task." | YAGNI. The plan does not mention it, so it is not a task. |
|
|
217
|
+
|
|
162
218
|
#### 4. Apply granularity and skill rules
|
|
163
219
|
|
|
164
220
|
Each task must be:
|
|
@@ -217,10 +273,12 @@ in that task's "Implementation Notes" so the executing agent applies it.
|
|
|
217
273
|
|
|
218
274
|
For each task, identify:
|
|
219
275
|
|
|
220
|
-
- Hard dependencies
|
|
221
|
-
- Soft dependencies
|
|
276
|
+
- **Hard dependencies**: tasks that MUST complete before this one can start.
|
|
277
|
+
- **Soft dependencies**: tasks that SHOULD complete for optimal execution.
|
|
222
278
|
|
|
223
|
-
A task B depends on A if B requires A's output or artifacts, modifies code
|
|
279
|
+
A task B depends on A if B requires A's output or artifacts, modifies code
|
|
280
|
+
created by A, or tests functionality implemented by A. Validate that the
|
|
281
|
+
final dependency graph is acyclic.
|
|
224
282
|
|
|
225
283
|
#### 7. Complexity analysis
|
|
226
284
|
|
|
@@ -259,9 +317,13 @@ blocker to the user.
|
|
|
259
317
|
|
|
260
318
|
#### 8. Allocate task IDs
|
|
261
319
|
|
|
262
|
-
Run `scripts/get-next-task-id.cjs <plan-id>` to obtain the first available
|
|
320
|
+
Run `scripts/get-next-task-id.cjs <plan-id>` to obtain the first available
|
|
321
|
+
task ID. Allocate subsequent IDs by incrementing in-process; do not invoke
|
|
322
|
+
the script repeatedly. Use the unpadded integer in the task frontmatter `id`
|
|
323
|
+
field and the zero-padded form (`{padded-id}--{slug}`) for the filename.
|
|
263
324
|
|
|
264
|
-
The slug derives from a short task title: lowercase, alphanumeric and
|
|
325
|
+
The slug derives from a short task title: lowercase, alphanumeric and
|
|
326
|
+
hyphens only, collapsed, trimmed.
|
|
265
327
|
|
|
266
328
|
#### 9. Emit the task files
|
|
267
329
|
|
|
@@ -365,10 +427,15 @@ target into task frontmatter or task bodies.
|
|
|
365
427
|
|
|
366
428
|
#### 12. Run the POST_TASK_GENERATION_ALL hook
|
|
367
429
|
|
|
368
|
-
Read `<root>/config/hooks/POST_TASK_GENERATION_ALL.md` and follow its
|
|
430
|
+
Read `<root>/config/hooks/POST_TASK_GENERATION_ALL.md` and follow its
|
|
431
|
+
instructions. Run it only after routing succeeded or reported routing off.
|
|
432
|
+
This typically requires:
|
|
369
433
|
|
|
370
|
-
- Appending an Execution Blueprint section to the plan document, including a
|
|
371
|
-
|
|
434
|
+
- Appending an Execution Blueprint section to the plan document, including a
|
|
435
|
+
Mermaid dependency diagram and explicit phase groupings (Phase 1 contains
|
|
436
|
+
zero-dependency tasks; each subsequent phase contains tasks whose
|
|
437
|
+
dependencies all live in earlier phases). Use
|
|
438
|
+
`<root>/config/templates/BLUEPRINT_TEMPLATE.md` for structure.
|
|
372
439
|
|
|
373
440
|
#### 13. Emit the Step 2 structured summary
|
|
374
441
|
|
|
@@ -394,50 +461,61 @@ Parse the `Tasks` count from this output and pass it to Step 3 for progress trac
|
|
|
394
461
|
|
|
395
462
|
Using the Plan ID from the previous phases:
|
|
396
463
|
|
|
397
|
-
#### 1. Resolve the plan
|
|
464
|
+
#### 1. Resolve the plan
|
|
398
465
|
|
|
399
|
-
Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the
|
|
466
|
+
Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the
|
|
467
|
+
absolute path of the plan file. The same script also accepts these field
|
|
468
|
+
names (single-field output mode) and exposes them on demand:
|
|
400
469
|
|
|
401
470
|
- `planDir` — absolute path of the plan directory
|
|
402
|
-
- `taskCount` — number of existing task files
|
|
471
|
+
- `taskCount` — number of existing task files in that plan's `tasks/`
|
|
403
472
|
- `blueprintExists` — `yes` or `no`
|
|
473
|
+
- `taskManagerRoot` — absolute path of `<root>`
|
|
474
|
+
- `planId` — the resolved numeric plan ID
|
|
475
|
+
|
|
476
|
+
If the script exits non-zero, surface its stderr to the user and stop the
|
|
477
|
+
workflow.
|
|
478
|
+
Do not guess a different ID.
|
|
479
|
+
|
|
480
|
+
#### 2. Validate tasks and blueprint existence
|
|
404
481
|
|
|
405
|
-
|
|
482
|
+
Inspect the `taskCount` and `blueprintExists` values returned by the validation script.
|
|
406
483
|
|
|
407
|
-
####
|
|
484
|
+
#### 3. Auto-generate tasks and blueprint if missing
|
|
408
485
|
|
|
409
486
|
If `taskCount` is 0 or `blueprintExists` is `no`:
|
|
410
487
|
|
|
411
488
|
- Notify the user: "Tasks or execution blueprint not found. Generating tasks automatically..."
|
|
412
489
|
- Execute the full task generation procedure from Step 2 for this plan ID.
|
|
413
490
|
- After generation completes, re-run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` (and the other fields) to refresh the resolved paths and counts.
|
|
414
|
-
- If generation still leaves the plan without tasks or a blueprint, stop and report failure. Do not attempt execution without a valid blueprint.
|
|
415
491
|
|
|
416
|
-
|
|
492
|
+
If generation still leaves the plan without tasks or a blueprint, stop and report failure. Do not attempt execution without a valid blueprint.
|
|
493
|
+
|
|
494
|
+
#### 4. Optionally create a feature branch
|
|
417
495
|
|
|
418
496
|
Run `scripts/create-feature-branch.cjs <plan-id>` once before phase execution. Branch creation is best-effort: when the script reports that it skipped creation (for example, not on `main`/`master`), continue on the current branch and do not retry or create a branch manually. Uncommitted or untracked changes are permitted only when every change is inside the repository-root `.ai/strikethroo` subtree, so a newly generated plan and tasks can remain uncommitted before execution. When the script exits with an error—including changes anywhere outside that subtree or an inability to inspect Git status on `main`/`master`—halt and report the error. Do not treat a skipped branch as a failure or spend effort working around a skip.
|
|
419
497
|
|
|
420
498
|
After the branch step, run `scripts/capture-base-commit.cjs <plan-id>` once. It records the commit the review gate diffs against. A `skipped` result is not a failure — continue execution and note that the review gate will skip. Only an `error` result halts.
|
|
421
499
|
|
|
422
|
-
####
|
|
500
|
+
#### 5. Load project context and execution blueprint
|
|
423
501
|
|
|
424
|
-
Read these files in order:
|
|
502
|
+
Read these files, in order:
|
|
425
503
|
|
|
426
504
|
- `<root>/config/STRIKETHROO.md` — directory conventions and project context.
|
|
427
|
-
- The plan document.
|
|
505
|
+
- The plan document at the path returned by step 1.
|
|
428
506
|
- The plan's Execution Blueprint section — this defines the phase groupings and task dispatch order.
|
|
429
|
-
- `<root>/config/shared/verification-gate.md` — apply in the phase loop below.
|
|
507
|
+
- `<root>/config/shared/verification-gate.md` and `<root>/config/shared/anti-rationalization.md` — apply in the phase loop below.
|
|
430
508
|
|
|
431
|
-
####
|
|
509
|
+
#### 6. Execute phases in order
|
|
432
510
|
|
|
433
511
|
Use an internal task or todo tracker to monitor progress. For each phase defined in the Execution Blueprint:
|
|
434
512
|
|
|
435
|
-
#####
|
|
513
|
+
##### 6a. Phase pre-execution
|
|
436
514
|
Run `scripts/check-phase-readiness.cjs <plan-id> <phase-number>`. If the script exits non-zero, halt the phase and report the blocking issues before continuing.
|
|
437
515
|
|
|
438
516
|
Read `<root>/config/hooks/PRE_PHASE.md` and execute its instructions before starting the phase.
|
|
439
517
|
|
|
440
|
-
#####
|
|
518
|
+
##### 6b. Task dispatch
|
|
441
519
|
Identify all tasks scheduled for this phase whose dependencies are fully satisfied. Read `<root>/config/hooks/PRE_TASK_ASSIGNMENT.md` and follow its instructions for agent selection before dispatching tasks.
|
|
442
520
|
|
|
443
521
|
Resolve every selected task's execution route first. Invoke one resolver per selected
|
|
@@ -489,19 +567,27 @@ Deploy all remaining native agents simultaneously using your internal Task tool.
|
|
|
489
567
|
|
|
490
568
|
Maximize parallelism within each phase. Run every task that is ready at the same time.
|
|
491
569
|
|
|
492
|
-
#####
|
|
570
|
+
##### 6c. Phase completion verification
|
|
493
571
|
Ensure every task in the phase has status `completed`. Collect and review all task outputs. Document any issues or exceptions encountered.
|
|
494
572
|
|
|
495
573
|
Do not accept a subagent's report of success as proof. Apply the evidence gate in `<root>/config/shared/verification-gate.md` before marking the phase complete. Do not mark a phase complete on an unverified claim.
|
|
496
574
|
|
|
497
|
-
#####
|
|
575
|
+
##### 6d. Phase post-execution
|
|
498
576
|
Read `<root>/config/hooks/POST_PHASE.md` and execute its instructions. Do not proceed to the next phase until this hook succeeds.
|
|
499
577
|
|
|
500
578
|
Update the phase status to `completed` in the plan's Execution Blueprint section.
|
|
501
579
|
|
|
502
580
|
Repeat for the next phase until all phases are complete.
|
|
503
581
|
|
|
504
|
-
|
|
582
|
+
Apply `<root>/config/shared/anti-rationalization.md` to this rationalization table:
|
|
583
|
+
|
|
584
|
+
| You catch yourself thinking… | The binding rule |
|
|
585
|
+
| --- | --- |
|
|
586
|
+
| "The subagent reported success, so the task is done." | A report is a claim, not evidence. Apply the verification gate before marking the phase complete. |
|
|
587
|
+
| "The tests probably pass." | "Probably" is a red flag. Run the proving command, read its output and exit code, then state the result. |
|
|
588
|
+
| "I'll verify later, after the next phase." | A phase is not complete until `POST_PHASE.md` succeeds against verified evidence. Verify now; do not advance on an unverified phase. |
|
|
589
|
+
|
|
590
|
+
#### 7. Post-execution validation
|
|
505
591
|
|
|
506
592
|
Read `<root>/config/hooks/POST_EXECUTION.md` and execute its instructions. If validation fails, halt execution. The plan remains in `plans/` for debugging.
|
|
507
593
|
|
|
@@ -549,7 +635,7 @@ Hard rules:
|
|
|
549
635
|
- The review runs once. Do not re-run the gate to check your own fixes.
|
|
550
636
|
- A certified review is not a correctness guarantee. It reduces the exposure a human PR approval reduces, and it leaves the same exposure behind.
|
|
551
637
|
|
|
552
|
-
####
|
|
638
|
+
#### 8. Append execution summary
|
|
553
639
|
|
|
554
640
|
Append an execution summary section to the plan document using the format described in `<root>/config/templates/EXECUTION_SUMMARY_TEMPLATE.md`. Populate:
|
|
555
641
|
|
|
@@ -559,7 +645,7 @@ Append an execution summary section to the plan document using the format descri
|
|
|
559
645
|
- **Noteworthy Events**: all decisions, issues, and outcomes encountered during execution. Always record the review gate's outcome here: the reviewer harness, the finding counts, and which findings you acted on versus ignored and why. When the gate did not run, record its `reason` and `detail` verbatim. If nothing else occurred, state "No significant issues encountered." after the review outcome.
|
|
560
646
|
- **Necessary follow-ups**: any follow-up actions or optimizations
|
|
561
647
|
|
|
562
|
-
####
|
|
648
|
+
#### 9. Archive the plan
|
|
563
649
|
|
|
564
650
|
Move the completed plan directory from `<root>/plans/<plan-folder>` to `<root>/archive/<plan-folder>`.
|
|
565
651
|
|
|
@@ -569,11 +655,13 @@ Preserve the entire folder structure (including all tasks and subdirectories) to
|
|
|
569
655
|
|
|
570
656
|
## Failure Modes
|
|
571
657
|
|
|
572
|
-
- **No strikethroo root found.** Stop and instruct the user to initialize the
|
|
658
|
+
- **No strikethroo root found.** Stop and instruct the user to initialize the
|
|
659
|
+
project. Do not write any files or execute any tasks.
|
|
660
|
+
- **Plan ID does not resolve, or the plan-ID script fails.** Re-check the
|
|
661
|
+
resolved root and re-run. If it continues to fail, surface the script's
|
|
662
|
+
stderr to the user and stop. Do not guess an ID and do not write any files.
|
|
573
663
|
- **User refuses to answer a clarifying question that blocks planning in Step 1.** Report `needs-clarification` and stop. Do not produce a partial plan.
|
|
574
|
-
- **Plan ID script fails.** Re-check the resolved root and re-run. If it continues to fail, surface stderr to the user and stop — do not guess an ID.
|
|
575
664
|
- **Plan directory already exists for the allocated ID in Step 1.** Re-run the next-plan-id script and retry once. If the conflict persists, stop and report.
|
|
576
|
-
- **Plan ID does not resolve in Step 2 or 3.** Stop and surface the script's stderr. Do not guess a different ID.
|
|
577
665
|
- **Execution routing fails in Step 2.** Surface the routing helper's JSON errors and stop before blueprint generation. Do not guess profile assignments, hand-write `execution_profile`, or continue with partially routed tasks.
|
|
578
666
|
- **Missing blueprint after auto-generation in Step 3.** If automatic task generation fails to produce tasks or a blueprint, stop and report failure. Do not attempt execution without a blueprint.
|
|
579
667
|
- **Hook failure during execution.** If `PRE_PHASE.md`, `POST_PHASE.md`, or `POST_EXECUTION.md` fails, halt execution. The plan remains in `plans/` for debugging and potential re-execution.
|