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.
Files changed (66) hide show
  1. package/dist/validation/graph-checks.d.ts +1 -1
  2. package/dist/validation/graph-checks.js +1 -1
  3. package/dist-web/assets/{arc-BlSNa2QY.js → arc-DvupXdGQ.js} +1 -1
  4. package/dist-web/assets/{architectureDiagram-3BPJPVTR-CPcCF2a4.js → architectureDiagram-3BPJPVTR-CTAouh0m.js} +1 -1
  5. package/dist-web/assets/{blockDiagram-GPEHLZMM-ECDR0edZ.js → blockDiagram-GPEHLZMM-6x7jxaHN.js} +1 -1
  6. package/dist-web/assets/{c4Diagram-AAUBKEIU-oM3VnEAQ.js → c4Diagram-AAUBKEIU-CU3k_kSZ.js} +1 -1
  7. package/dist-web/assets/channel-C2A85Ka9.js +1 -0
  8. package/dist-web/assets/{chunk-2J33WTMH-DHk5SJLz.js → chunk-2J33WTMH-ufPtIfME.js} +1 -1
  9. package/dist-web/assets/{chunk-4BX2VUAB-CjBwgkMu.js → chunk-4BX2VUAB-DbkVZKkN.js} +1 -1
  10. package/dist-web/assets/{chunk-55IACEB6-D95zqyiV.js → chunk-55IACEB6-q5JDEQkn.js} +1 -1
  11. package/dist-web/assets/{chunk-727SXJPM-DCCPRUfv.js → chunk-727SXJPM-DsRSKKMC.js} +1 -1
  12. package/dist-web/assets/{chunk-AQP2D5EJ-qur7KQyD.js → chunk-AQP2D5EJ-C1kK9Q_8.js} +1 -1
  13. package/dist-web/assets/{chunk-FMBD7UC4-D46Su7Fv.js → chunk-FMBD7UC4-D0SBGkxh.js} +1 -1
  14. package/dist-web/assets/{chunk-ND2GUHAM-BioGsqxt.js → chunk-ND2GUHAM-B-hR70vT.js} +1 -1
  15. package/dist-web/assets/{chunk-QZHKN3VN-C8LdDiqn.js → chunk-QZHKN3VN-C2G8hCEM.js} +1 -1
  16. package/dist-web/assets/classDiagram-4FO5ZUOK-di7qa7rn.js +1 -0
  17. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-di7qa7rn.js +1 -0
  18. package/dist-web/assets/{cose-bilkent-S5V4N54A-ccY03BRh.js → cose-bilkent-S5V4N54A-DonfmiRu.js} +1 -1
  19. package/dist-web/assets/{dagre-BM42HDAG-BYLmCViB.js → dagre-BM42HDAG-CcewaQrp.js} +1 -1
  20. package/dist-web/assets/{diagram-2AECGRRQ-DTvenvXR.js → diagram-2AECGRRQ-DaH4HSXb.js} +1 -1
  21. package/dist-web/assets/{diagram-5GNKFQAL-CCzsYDmr.js → diagram-5GNKFQAL-Bvrf4NB9.js} +1 -1
  22. package/dist-web/assets/{diagram-KO2AKTUF-QSff7J_V.js → diagram-KO2AKTUF-C8SR57fy.js} +1 -1
  23. package/dist-web/assets/{diagram-LMA3HP47-CVqlEmu2.js → diagram-LMA3HP47-DXTykpi0.js} +1 -1
  24. package/dist-web/assets/{diagram-OG6HWLK6-dBVz-I46.js → diagram-OG6HWLK6-Ll-Oq6Zy.js} +1 -1
  25. package/dist-web/assets/{erDiagram-TEJ5UH35-B_y4ftNu.js → erDiagram-TEJ5UH35-Ddz85tGo.js} +1 -1
  26. package/dist-web/assets/{flowDiagram-I6XJVG4X-M410hT_n.js → flowDiagram-I6XJVG4X-DAxnIFcz.js} +1 -1
  27. package/dist-web/assets/{ganttDiagram-6RSMTGT7-qiri2OJa.js → ganttDiagram-6RSMTGT7-C2rk55sl.js} +1 -1
  28. package/dist-web/assets/{gitGraphDiagram-PVQCEYII-FqGGBobG.js → gitGraphDiagram-PVQCEYII-ByPZrx6x.js} +1 -1
  29. package/dist-web/assets/{index-BaFSLlgl.js → index-BnRrzytN.js} +1 -1
  30. package/dist-web/assets/{index-1SV04K_c.js → index-CPn1wBQP.js} +1 -1
  31. package/dist-web/assets/{index-DrUIu0u6.js → index-dlrfecPM.js} +4 -4
  32. package/dist-web/assets/{infoDiagram-5YYISTIA-CczHqRr1.js → infoDiagram-5YYISTIA-CykUjGf_.js} +1 -1
  33. package/dist-web/assets/{ishikawaDiagram-YF4QCWOH-ty1DRy6n.js → ishikawaDiagram-YF4QCWOH-FzmLKzqg.js} +1 -1
  34. package/dist-web/assets/{journeyDiagram-JHISSGLW-D_JYvt6i.js → journeyDiagram-JHISSGLW-BZQghjAa.js} +1 -1
  35. package/dist-web/assets/{kanban-definition-UN3LZRKU-CT67nUTK.js → kanban-definition-UN3LZRKU-Cwj2AaLr.js} +1 -1
  36. package/dist-web/assets/{linear-B1HaE_t1.js → linear-Bqh3Mqnj.js} +1 -1
  37. package/dist-web/assets/{mermaid.core-Dumx_iKV.js → mermaid.core-D9NvKuAa.js} +4 -4
  38. package/dist-web/assets/{mindmap-definition-RKZ34NQL-CVulJo63.js → mindmap-definition-RKZ34NQL-BPtK37je.js} +1 -1
  39. package/dist-web/assets/{pieDiagram-4H26LBE5-C1yD5ntZ.js → pieDiagram-4H26LBE5-DDnMysaq.js} +1 -1
  40. package/dist-web/assets/{quadrantDiagram-W4KKPZXB-B7PoiM8c.js → quadrantDiagram-W4KKPZXB-D-veqnnh.js} +1 -1
  41. package/dist-web/assets/{requirementDiagram-4Y6WPE33-COvHb3Mv.js → requirementDiagram-4Y6WPE33-DXZlZ67F.js} +1 -1
  42. package/dist-web/assets/{sankeyDiagram-5OEKKPKP-CAnwm5-J.js → sankeyDiagram-5OEKKPKP-Cyr7G3B1.js} +1 -1
  43. package/dist-web/assets/{sequenceDiagram-3UESZ5HK-C2KFLIUq.js → sequenceDiagram-3UESZ5HK-z_5peTGF.js} +1 -1
  44. package/dist-web/assets/{stateDiagram-AJRCARHV-CqmhS5P6.js → stateDiagram-AJRCARHV-ooM-zuUc.js} +1 -1
  45. package/dist-web/assets/stateDiagram-v2-BHNVJYJU-qXQgUbwd.js +1 -0
  46. package/dist-web/assets/{timeline-definition-PNZ67QCA-DvPre9M_.js → timeline-definition-PNZ67QCA-CcVS8Rhj.js} +1 -1
  47. package/dist-web/assets/{vennDiagram-CIIHVFJN-Top6i7KH.js → vennDiagram-CIIHVFJN-CDe05zEn.js} +1 -1
  48. package/dist-web/assets/{wardley-L42UT6IY-_jVLsWqf.js → wardley-L42UT6IY-CYWVl3vs.js} +1 -1
  49. package/dist-web/assets/{wardleyDiagram-YWT4CUSO-BV4e5mP6.js → wardleyDiagram-YWT4CUSO-Dy1uWsKU.js} +1 -1
  50. package/dist-web/assets/{xychartDiagram-2RQKCTM6-Bn1hw4Jk.js → xychartDiagram-2RQKCTM6-CKb8TFhP.js} +1 -1
  51. package/dist-web/index.html +1 -1
  52. package/package.json +2 -1
  53. package/templates/harness/skills/st-code-review/scripts/code-review.cjs +2710 -264
  54. package/templates/harness/skills/st-create-plan/SKILL.md +5 -4
  55. package/templates/harness/skills/st-execute-blueprint/SKILL.md +5 -2
  56. package/templates/harness/skills/st-execute-blueprint/scripts/dispatch-task-execution.cjs +420 -213
  57. package/templates/harness/skills/st-execute-task/scripts/dispatch-task-execution.cjs +420 -213
  58. package/templates/harness/skills/st-full-workflow/SKILL.md +131 -43
  59. package/templates/harness/skills/st-full-workflow/scripts/dispatch-task-execution.cjs +420 -213
  60. package/templates/harness/skills/st-generate-tasks/SKILL.md +5 -4
  61. package/templates/strikethroo/config/config.yaml +95 -6
  62. package/templates/strikethroo/gitignore +13 -10
  63. package/dist-web/assets/channel-CmU4mBgT.js +0 -1
  64. package/dist-web/assets/classDiagram-4FO5ZUOK-D_FMKQsB.js +0 -1
  65. package/dist-web/assets/classDiagram-v2-Q7XG4LA2-D_FMKQsB.js +0 -1
  66. 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. Read `<root>/config/hooks/PRE_PLAN.md` and execute its instructions before proceeding. Read `<root>/config/templates/PLAN_TEMPLATE.md` so the plan conforms to the project's template.
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, and blockers.
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. Loop until no further questions remain. Explicitly confirm whether backwards compatibility is required. Never invent answers.
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
- If the user declines to clarify a blocking question, stop and report the plan as needing clarification. Do not produce a partial plan.
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. The script prints a single integer.
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}`) and use the unpadded integer in the plan frontmatter and the final summary.
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 conform to `<root>/config/templates/PLAN_TEMPLATE.md`, including required YAML frontmatter fields (`id`, `summary`, `created`). Avoid time estimates, task lists, or code samples — those belong to the later task-generation step.
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 hyphens only, collapsed, trimmed.
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 absolute path of the plan file. If the script exits non-zero, stop and report the error. Do not guess a different ID.
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
- - The plan body at the path returned above — this is the contract for what tasks must exist.
132
- - `<root>/config/templates/TASK_TEMPLATE.md` — every task file must conform to this template.
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 — tasks that MUST complete before this one can start.
221
- - Soft dependencies — tasks that SHOULD complete for optimal execution.
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 created by A, or tests functionality implemented by A. Validate that the final dependency graph is acyclic.
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 task ID. Allocate subsequent IDs by incrementing in-process. Use the unpadded integer in the task frontmatter `id` field and the zero-padded form (`{padded-id}--{slug}`) for the filename.
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 hyphens only, collapsed, trimmed.
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 instructions. Run it only after routing succeeded or reported routing off. This typically requires:
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 Mermaid dependency diagram and explicit phase groupings.
371
- - Use `<root>/config/templates/BLUEPRINT_TEMPLATE.md` for structure.
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 and validate readiness
464
+ #### 1. Resolve the plan
398
465
 
399
- Run `scripts/validate-plan-blueprint.cjs <plan-id> planFile` to obtain the plan file path. Also query:
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
- If the script exits non-zero, stop and report the error.
482
+ Inspect the `taskCount` and `blueprintExists` values returned by the validation script.
406
483
 
407
- #### 2. Auto-generate tasks and blueprint if missing
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
- #### 3. Optionally create a feature branch
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
- #### 4. Load execution blueprint
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
- #### 5. Execute phases in order
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
- ##### 5a. Phase pre-execution
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
- ##### 5b. Task dispatch
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
- ##### 5c. Phase completion verification
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
- ##### 5d. Phase post-execution
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
- #### 6. Post-execution validation
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
- #### 7. Append execution summary
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
- #### 8. Archive the plan
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 project. Do not write any files or execute any tasks.
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.