rafcode 1.2.0 → 2.0.0

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 (398) hide show
  1. package/CLAUDE.md +118 -22
  2. package/RAF/aaaabt-verbose-chronicle/decisions.md +25 -0
  3. package/RAF/aaaabt-verbose-chronicle/input.md +3 -0
  4. package/RAF/aaaabt-verbose-chronicle/outcomes/01-amend-iteration-references.md +25 -0
  5. package/RAF/aaaabt-verbose-chronicle/outcomes/02-verbose-task-name-display.md +31 -0
  6. package/RAF/aaaabt-verbose-chronicle/outcomes/03-verbose-streaming-fix.md +48 -0
  7. package/RAF/aaaabt-verbose-chronicle/outcomes/04-commit-verification-before-halt.md +56 -0
  8. package/RAF/aaaabt-verbose-chronicle/plans/01-amend-iteration-references.md +35 -0
  9. package/RAF/aaaabt-verbose-chronicle/plans/02-verbose-task-name-display.md +38 -0
  10. package/RAF/aaaabt-verbose-chronicle/plans/03-verbose-streaming-fix.md +45 -0
  11. package/RAF/aaaabt-verbose-chronicle/plans/04-commit-verification-before-halt.md +62 -0
  12. package/RAF/aaaacu-worktree-weaver/decisions.md +88 -0
  13. package/RAF/aaaacu-worktree-weaver/input.md +27 -0
  14. package/RAF/aaaacu-worktree-weaver/outcomes/01-git-worktree-utilities.md +41 -0
  15. package/RAF/aaaacu-worktree-weaver/outcomes/02-worktree-plan-command.md +44 -0
  16. package/RAF/aaaacu-worktree-weaver/outcomes/03-worktree-do-command.md +58 -0
  17. package/RAF/aaaacu-worktree-weaver/outcomes/04-auto-merge-and-cleanup.md +40 -0
  18. package/RAF/aaaacu-worktree-weaver/outcomes/05-worktree-tests.md +43 -0
  19. package/RAF/aaaacu-worktree-weaver/outcomes/06-update-documentation.md +33 -0
  20. package/RAF/aaaacu-worktree-weaver/plans/01-git-worktree-utilities.md +51 -0
  21. package/RAF/aaaacu-worktree-weaver/plans/02-worktree-plan-command.md +93 -0
  22. package/RAF/aaaacu-worktree-weaver/plans/03-worktree-do-command.md +81 -0
  23. package/RAF/aaaacu-worktree-weaver/plans/04-auto-merge-and-cleanup.md +51 -0
  24. package/RAF/aaaacu-worktree-weaver/plans/05-worktree-tests.md +52 -0
  25. package/RAF/aaaacu-worktree-weaver/plans/06-update-documentation.md +55 -0
  26. package/RAF/aaaacv-trim-the-fat/decisions.md +34 -0
  27. package/RAF/aaaacv-trim-the-fat/input.md +5 -0
  28. package/RAF/aaaacv-trim-the-fat/outcomes/01-add-worktree-support-to-status.md +43 -0
  29. package/RAF/aaaacv-trim-the-fat/outcomes/02-remove-multi-project-from-do.md +50 -0
  30. package/RAF/aaaacv-trim-the-fat/outcomes/03-commit-artifacts-on-amend.md +35 -0
  31. package/RAF/aaaacv-trim-the-fat/outcomes/04-worktree-aware-exit-messages.md +36 -0
  32. package/RAF/aaaacv-trim-the-fat/plans/01-add-worktree-support-to-status.md +43 -0
  33. package/RAF/aaaacv-trim-the-fat/plans/02-remove-multi-project-from-do.md +44 -0
  34. package/RAF/aaaacv-trim-the-fat/plans/03-commit-artifacts-on-amend.md +38 -0
  35. package/RAF/aaaacv-trim-the-fat/plans/04-worktree-aware-exit-messages.md +38 -0
  36. package/RAF/aaaacw-prune-cycle/decisions.md +25 -0
  37. package/RAF/aaaacw-prune-cycle/input.md +5 -0
  38. package/RAF/aaaacw-prune-cycle/outcomes/01-create-worktree-from-branch.md +32 -0
  39. package/RAF/aaaacw-prune-cycle/outcomes/02-cleanup-worktree-on-success.md +33 -0
  40. package/RAF/aaaacw-prune-cycle/outcomes/03-amend-recreate-worktree.md +40 -0
  41. package/RAF/aaaacw-prune-cycle/plans/01-create-worktree-from-branch.md +31 -0
  42. package/RAF/aaaacw-prune-cycle/plans/02-cleanup-worktree-on-success.md +38 -0
  43. package/RAF/aaaacw-prune-cycle/plans/03-amend-recreate-worktree.md +50 -0
  44. package/RAF/aaaacx-epoch-shift/decisions.md +25 -0
  45. package/RAF/aaaacx-epoch-shift/input.md +1 -0
  46. package/RAF/aaaacx-epoch-shift/outcomes/01-epoch-id-generation.md +34 -0
  47. package/RAF/aaaacx-epoch-shift/outcomes/02-update-pattern-matching.md +32 -0
  48. package/RAF/aaaacx-epoch-shift/outcomes/03-update-tests.md +59 -0
  49. package/RAF/aaaacx-epoch-shift/outcomes/04-update-documentation.md +30 -0
  50. package/RAF/aaaacx-epoch-shift/plans/01-epoch-id-generation.md +40 -0
  51. package/RAF/aaaacx-epoch-shift/plans/02-update-pattern-matching.md +60 -0
  52. package/RAF/aaaacx-epoch-shift/plans/03-update-tests.md +48 -0
  53. package/RAF/aaaacx-epoch-shift/plans/04-update-documentation.md +44 -0
  54. package/RAF/ahmpro-merge-guardian/decisions.md +25 -0
  55. package/RAF/ahmpro-merge-guardian/input.md +4 -0
  56. package/RAF/ahmpro-merge-guardian/outcomes/001-fix-amend-worktree-commit.md +45 -0
  57. package/RAF/ahmpro-merge-guardian/outcomes/002-base36-task-ids.md +55 -0
  58. package/RAF/ahmpro-merge-guardian/outcomes/003-worktree-pr-creation.md +41 -0
  59. package/RAF/ahmpro-merge-guardian/outcomes/004-post-execution-picker.md +53 -0
  60. package/RAF/ahmpro-merge-guardian/plans/001-fix-amend-worktree-commit.md +39 -0
  61. package/RAF/ahmpro-merge-guardian/plans/002-base36-task-ids.md +43 -0
  62. package/RAF/ahmpro-merge-guardian/plans/003-worktree-pr-creation.md +43 -0
  63. package/RAF/ahmpro-merge-guardian/plans/004-post-execution-picker.md +51 -0
  64. package/RAF/ahnbcu-letterjam/decisions.md +13 -0
  65. package/RAF/ahnbcu-letterjam/input.md +3 -0
  66. package/RAF/ahnbcu-letterjam/outcomes/01-base26-encoding.md +42 -0
  67. package/RAF/ahnbcu-letterjam/outcomes/02-update-tests.md +38 -0
  68. package/RAF/ahnbcu-letterjam/outcomes/03-migrate-command.md +51 -0
  69. package/RAF/ahnbcu-letterjam/outcomes/04-update-documentation.md +29 -0
  70. package/RAF/ahnbcu-letterjam/plans/01-base26-encoding.md +36 -0
  71. package/RAF/ahnbcu-letterjam/plans/02-update-tests.md +37 -0
  72. package/RAF/ahnbcu-letterjam/plans/03-migrate-command.md +49 -0
  73. package/RAF/ahnbcu-letterjam/plans/04-update-documentation.md +39 -0
  74. package/RAF/ahnwrk-worktree-weaver/decisions.md +19 -0
  75. package/RAF/ahnwrk-worktree-weaver/input.md +4 -0
  76. package/RAF/ahnwrk-worktree-weaver/outcomes/01-remove-co-authored-by.md +20 -0
  77. package/RAF/ahnwrk-worktree-weaver/outcomes/02-update-task-status-format.md +21 -0
  78. package/RAF/ahnwrk-worktree-weaver/outcomes/03-worktree-auto-discovery.md +34 -0
  79. package/RAF/ahnwrk-worktree-weaver/outcomes/04-fix-pr-description.md +30 -0
  80. package/RAF/ahnwrk-worktree-weaver/plans/01-remove-co-authored-by.md +26 -0
  81. package/RAF/ahnwrk-worktree-weaver/plans/02-update-task-status-format.md +27 -0
  82. package/RAF/ahnwrk-worktree-weaver/plans/03-worktree-auto-discovery.md +37 -0
  83. package/RAF/ahnwrk-worktree-weaver/plans/04-fix-pr-description.md +50 -0
  84. package/README.md +56 -10
  85. package/dist/commands/do.d.ts +15 -0
  86. package/dist/commands/do.d.ts.map +1 -1
  87. package/dist/commands/do.js +400 -131
  88. package/dist/commands/do.js.map +1 -1
  89. package/dist/commands/migrate.d.ts +14 -0
  90. package/dist/commands/migrate.d.ts.map +1 -0
  91. package/dist/commands/migrate.js +228 -0
  92. package/dist/commands/migrate.js.map +1 -0
  93. package/dist/commands/plan.d.ts.map +1 -1
  94. package/dist/commands/plan.js +237 -40
  95. package/dist/commands/plan.js.map +1 -1
  96. package/dist/commands/status.d.ts.map +1 -1
  97. package/dist/commands/status.js +221 -47
  98. package/dist/commands/status.js.map +1 -1
  99. package/dist/core/claude-runner.d.ts +52 -1
  100. package/dist/core/claude-runner.d.ts.map +1 -1
  101. package/dist/core/claude-runner.js +195 -17
  102. package/dist/core/claude-runner.js.map +1 -1
  103. package/dist/core/git.d.ts +29 -5
  104. package/dist/core/git.d.ts.map +1 -1
  105. package/dist/core/git.js +95 -18
  106. package/dist/core/git.js.map +1 -1
  107. package/dist/core/project-manager.d.ts.map +1 -1
  108. package/dist/core/project-manager.js +2 -2
  109. package/dist/core/project-manager.js.map +1 -1
  110. package/dist/core/pull-request.d.ts +84 -0
  111. package/dist/core/pull-request.d.ts.map +1 -0
  112. package/dist/core/pull-request.js +414 -0
  113. package/dist/core/pull-request.js.map +1 -0
  114. package/dist/core/state-derivation.d.ts +3 -3
  115. package/dist/core/state-derivation.d.ts.map +1 -1
  116. package/dist/core/state-derivation.js +18 -14
  117. package/dist/core/state-derivation.js.map +1 -1
  118. package/dist/core/worktree.d.ts +120 -0
  119. package/dist/core/worktree.d.ts.map +1 -0
  120. package/dist/core/worktree.js +322 -0
  121. package/dist/core/worktree.js.map +1 -0
  122. package/dist/index.js +2 -0
  123. package/dist/index.js.map +1 -1
  124. package/dist/parsers/stream-renderer.d.ts +42 -0
  125. package/dist/parsers/stream-renderer.d.ts.map +1 -0
  126. package/dist/parsers/stream-renderer.js +100 -0
  127. package/dist/parsers/stream-renderer.js.map +1 -0
  128. package/dist/prompts/amend.d.ts +1 -0
  129. package/dist/prompts/amend.d.ts.map +1 -1
  130. package/dist/prompts/amend.js +25 -10
  131. package/dist/prompts/amend.js.map +1 -1
  132. package/dist/prompts/execution.js +5 -5
  133. package/dist/prompts/execution.js.map +1 -1
  134. package/dist/prompts/planning.d.ts +1 -0
  135. package/dist/prompts/planning.d.ts.map +1 -1
  136. package/dist/prompts/planning.js +11 -10
  137. package/dist/prompts/planning.js.map +1 -1
  138. package/dist/types/config.d.ts +5 -0
  139. package/dist/types/config.d.ts.map +1 -1
  140. package/dist/ui/project-picker.d.ts +34 -3
  141. package/dist/ui/project-picker.d.ts.map +1 -1
  142. package/dist/ui/project-picker.js +78 -10
  143. package/dist/ui/project-picker.js.map +1 -1
  144. package/dist/utils/paths.d.ts +38 -43
  145. package/dist/utils/paths.d.ts.map +1 -1
  146. package/dist/utils/paths.js +123 -193
  147. package/dist/utils/paths.js.map +1 -1
  148. package/dist/utils/terminal-symbols.d.ts +2 -2
  149. package/dist/utils/terminal-symbols.js +3 -3
  150. package/dist/utils/terminal-symbols.js.map +1 -1
  151. package/dist/utils/validation.d.ts.map +1 -1
  152. package/dist/utils/validation.js +2 -8
  153. package/dist/utils/validation.js.map +1 -1
  154. package/package.json +1 -1
  155. package/src/commands/do.ts +471 -142
  156. package/src/commands/migrate.ts +269 -0
  157. package/src/commands/plan.ts +264 -40
  158. package/src/commands/status.ts +252 -45
  159. package/src/core/claude-runner.ts +270 -17
  160. package/src/core/git.ts +99 -19
  161. package/src/core/project-manager.ts +2 -1
  162. package/src/core/pull-request.ts +480 -0
  163. package/src/core/state-derivation.ts +18 -14
  164. package/src/core/worktree.ts +357 -0
  165. package/src/index.ts +2 -0
  166. package/src/parsers/stream-renderer.ts +139 -0
  167. package/src/prompts/amend.ts +27 -9
  168. package/src/prompts/execution.ts +5 -5
  169. package/src/prompts/planning.ts +12 -10
  170. package/src/types/config.ts +6 -0
  171. package/src/ui/project-picker.ts +110 -10
  172. package/src/utils/paths.ts +129 -214
  173. package/src/utils/terminal-symbols.ts +3 -3
  174. package/src/utils/validation.ts +2 -9
  175. package/tests/unit/amend-prompt.test.ts +85 -0
  176. package/tests/unit/claude-runner.test.ts +567 -1
  177. package/tests/unit/commit-planning-artifacts-worktree.test.ts +327 -0
  178. package/tests/unit/commit-planning-artifacts.test.ts +303 -35
  179. package/tests/unit/dependency-integration.test.ts +95 -95
  180. package/tests/unit/do-blocked-tasks.test.ts +53 -53
  181. package/tests/unit/do-command.test.ts +39 -132
  182. package/tests/unit/do-rerun.test.ts +65 -65
  183. package/tests/unit/do-worktree-cleanup.test.ts +151 -0
  184. package/tests/unit/execution-prompt.test.ts +71 -60
  185. package/tests/unit/failure-history.test.ts +19 -19
  186. package/tests/unit/git-commit-helpers.test.ts +103 -0
  187. package/tests/unit/git-stash.test.ts +4 -4
  188. package/tests/unit/migrate-command.test.ts +197 -0
  189. package/tests/unit/outcome-content.test.ts +20 -20
  190. package/tests/unit/paths.test.ts +269 -467
  191. package/tests/unit/plan-amend-worktree-recreate.test.ts +246 -0
  192. package/tests/unit/plan-command.test.ts +144 -93
  193. package/tests/unit/planning-prompt.test.ts +41 -4
  194. package/tests/unit/post-execution-picker.test.ts +251 -0
  195. package/tests/unit/project-manager.test.ts +20 -8
  196. package/tests/unit/project-picker.test.ts +425 -42
  197. package/tests/unit/pull-request.test.ts +852 -0
  198. package/tests/unit/state-derivation.test.ts +138 -137
  199. package/tests/unit/status-command.test.ts +344 -76
  200. package/tests/unit/stream-renderer.test.ts +286 -0
  201. package/tests/unit/terminal-symbols.test.ts +4 -4
  202. package/tests/unit/worktree-integration.test.ts +405 -0
  203. package/tests/unit/worktree.test.ts +523 -0
  204. package/tests/unit/do-multiproject.test.ts +0 -270
  205. /package/RAF/{001-raf-task-improvements → aaaaab-raf-task-improvements}/input.md +0 -0
  206. /package/RAF/{001-raf-task-improvements/outcomes/001-add-decisions-folder.md → aaaaab-raf-task-improvements/outcomes/01-add-decisions-folder.md} +0 -0
  207. /package/RAF/{001-raf-task-improvements/outcomes/002-fix-write-error-on-shutdown.md → aaaaab-raf-task-improvements/outcomes/02-fix-write-error-on-shutdown.md} +0 -0
  208. /package/RAF/{001-raf-task-improvements/outcomes/003-stash-changes-on-failure.md → aaaaab-raf-task-improvements/outcomes/03-stash-changes-on-failure.md} +0 -0
  209. /package/RAF/{001-raf-task-improvements/outcomes/004-add-project-name-to-commits.md → aaaaab-raf-task-improvements/outcomes/04-add-project-name-to-commits.md} +0 -0
  210. /package/RAF/{001-raf-task-improvements/outcomes/005-add-running-time-display.md → aaaaab-raf-task-improvements/outcomes/05-add-running-time-display.md} +0 -0
  211. /package/RAF/{001-raf-task-improvements/outcomes/006-add-task-name-to-logs.md → aaaaab-raf-task-improvements/outcomes/06-add-task-name-to-logs.md} +0 -0
  212. /package/RAF/{001-raf-task-improvements/outcomes/007-show-model-at-task-start.md → aaaaab-raf-task-improvements/outcomes/07-show-model-at-task-start.md} +0 -0
  213. /package/RAF/{001-raf-task-improvements/outcomes/009-remove-editor-placeholder-text.md → aaaaab-raf-task-improvements/outcomes/09-remove-editor-placeholder-text.md} +0 -0
  214. /package/RAF/{001-raf-task-improvements → aaaaab-raf-task-improvements}/outcomes/SUMMARY.md +0 -0
  215. /package/RAF/{001-raf-task-improvements/plans/001-add-decisions-folder.md → aaaaab-raf-task-improvements/plans/01-add-decisions-folder.md} +0 -0
  216. /package/RAF/{001-raf-task-improvements/plans/002-fix-write-error-on-shutdown.md → aaaaab-raf-task-improvements/plans/02-fix-write-error-on-shutdown.md} +0 -0
  217. /package/RAF/{001-raf-task-improvements/plans/003-stash-changes-on-failure.md → aaaaab-raf-task-improvements/plans/03-stash-changes-on-failure.md} +0 -0
  218. /package/RAF/{001-raf-task-improvements/plans/004-add-project-name-to-commits.md → aaaaab-raf-task-improvements/plans/04-add-project-name-to-commits.md} +0 -0
  219. /package/RAF/{001-raf-task-improvements/plans/005-add-running-time-display.md → aaaaab-raf-task-improvements/plans/05-add-running-time-display.md} +0 -0
  220. /package/RAF/{001-raf-task-improvements/plans/006-add-task-name-to-logs.md → aaaaab-raf-task-improvements/plans/06-add-task-name-to-logs.md} +0 -0
  221. /package/RAF/{001-raf-task-improvements/plans/009-remove-editor-placeholder-text.md → aaaaab-raf-task-improvements/plans/09-remove-editor-placeholder-text.md} +0 -0
  222. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/decisions/DECISIONS.md +0 -0
  223. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/input.md +0 -0
  224. /package/RAF/{002-raf-task-improvements-execution/outcomes/001-commit-show-model-at-task-start.md → aaaaac-raf-task-improvements-execution/outcomes/01-commit-show-model-at-task-start.md} +0 -0
  225. /package/RAF/{002-raf-task-improvements-execution/outcomes/002-delete-skipped-plan.md → aaaaac-raf-task-improvements-execution/outcomes/02-delete-skipped-plan.md} +0 -0
  226. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/outcomes/SUMMARY.md +0 -0
  227. /package/RAF/{002-raf-task-improvements-execution/plans/001-commit-show-model-at-task-start.md → aaaaac-raf-task-improvements-execution/plans/01-commit-show-model-at-task-start.md} +0 -0
  228. /package/RAF/{002-raf-task-improvements-execution/plans/002-delete-skipped-plan.md → aaaaac-raf-task-improvements-execution/plans/02-delete-skipped-plan.md} +0 -0
  229. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/decisions/DECISIONS.md +0 -0
  230. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/input.md +0 -0
  231. /package/RAF/{003-multi-project-execution/outcomes/001-remove-state-json.md → aaaaad-multi-project-execution/outcomes/01-remove-state-json.md} +0 -0
  232. /package/RAF/{003-multi-project-execution/outcomes/002-update-raf-status.md → aaaaad-multi-project-execution/outcomes/02-update-raf-status.md} +0 -0
  233. /package/RAF/{003-multi-project-execution/outcomes/003-simplify-git-logic.md → aaaaad-multi-project-execution/outcomes/03-simplify-git-logic.md} +0 -0
  234. /package/RAF/{003-multi-project-execution/outcomes/004-auto-commit-planning.md → aaaaad-multi-project-execution/outcomes/04-auto-commit-planning.md} +0 -0
  235. /package/RAF/{003-multi-project-execution/outcomes/005-rerun-failed-tasks.md → aaaaad-multi-project-execution/outcomes/05-rerun-failed-tasks.md} +0 -0
  236. /package/RAF/{003-multi-project-execution/outcomes/006-multi-project-execution.md → aaaaad-multi-project-execution/outcomes/06-multi-project-execution.md} +0 -0
  237. /package/RAF/{003-multi-project-execution/outcomes/007-verify-timeout.md → aaaaad-multi-project-execution/outcomes/07-verify-timeout.md} +0 -0
  238. /package/RAF/{003-multi-project-execution/outcomes/008-move-decisions-file.md → aaaaad-multi-project-execution/outcomes/08-move-decisions-file.md} +0 -0
  239. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/outcomes/SUMMARY.md +0 -0
  240. /package/RAF/{003-multi-project-execution/plans/001-remove-state-json.md → aaaaad-multi-project-execution/plans/01-remove-state-json.md} +0 -0
  241. /package/RAF/{003-multi-project-execution/plans/002-update-raf-status.md → aaaaad-multi-project-execution/plans/02-update-raf-status.md} +0 -0
  242. /package/RAF/{003-multi-project-execution/plans/003-simplify-git-logic.md → aaaaad-multi-project-execution/plans/03-simplify-git-logic.md} +0 -0
  243. /package/RAF/{003-multi-project-execution/plans/004-auto-commit-planning.md → aaaaad-multi-project-execution/plans/04-auto-commit-planning.md} +0 -0
  244. /package/RAF/{003-multi-project-execution/plans/005-rerun-failed-tasks.md → aaaaad-multi-project-execution/plans/05-rerun-failed-tasks.md} +0 -0
  245. /package/RAF/{003-multi-project-execution/plans/006-multi-project-execution.md → aaaaad-multi-project-execution/plans/06-multi-project-execution.md} +0 -0
  246. /package/RAF/{003-multi-project-execution/plans/007-verify-timeout.md → aaaaad-multi-project-execution/plans/07-verify-timeout.md} +0 -0
  247. /package/RAF/{003-multi-project-execution/plans/008-move-decisions-file.md → aaaaad-multi-project-execution/plans/08-move-decisions-file.md} +0 -0
  248. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/decisions.md +0 -0
  249. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/input.md +0 -0
  250. /package/RAF/{004-task-naming-optimization/outcomes/001-remove-summary-file.md → aaaaae-task-naming-optimization/outcomes/01-remove-summary-file.md} +0 -0
  251. /package/RAF/{004-task-naming-optimization/outcomes/002-base36-project-numbering.md → aaaaae-task-naming-optimization/outcomes/02-base36-project-numbering.md} +0 -0
  252. /package/RAF/{004-task-naming-optimization/outcomes/003-improve-haiku-prompt.md → aaaaae-task-naming-optimization/outcomes/03-improve-haiku-prompt.md} +0 -0
  253. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/outcomes/SUMMARY.md +0 -0
  254. /package/RAF/{004-task-naming-optimization/plans/001-remove-summary-file.md → aaaaae-task-naming-optimization/plans/01-remove-summary-file.md} +0 -0
  255. /package/RAF/{004-task-naming-optimization/plans/002-base36-project-numbering.md → aaaaae-task-naming-optimization/plans/02-base36-project-numbering.md} +0 -0
  256. /package/RAF/{004-task-naming-optimization/plans/003-improve-haiku-prompt.md → aaaaae-task-naming-optimization/plans/03-improve-haiku-prompt.md} +0 -0
  257. /package/RAF/{005-task-naming-improvements → aaaaaf-task-naming-improvements}/decisions.md +0 -0
  258. /package/RAF/{005-task-naming-improvements → aaaaaf-task-naming-improvements}/input.md +0 -0
  259. /package/RAF/{005-task-naming-improvements/outcomes/001-enhance-identifier-resolution.md → aaaaaf-task-naming-improvements/outcomes/01-enhance-identifier-resolution.md} +0 -0
  260. /package/RAF/{005-task-naming-improvements/outcomes/002-add-identifier-support-to-status.md → aaaaaf-task-naming-improvements/outcomes/02-add-identifier-support-to-status.md} +0 -0
  261. /package/RAF/{005-task-naming-improvements/outcomes/003-update-do-for-full-folder-names.md → aaaaaf-task-naming-improvements/outcomes/03-update-do-for-full-folder-names.md} +0 -0
  262. /package/RAF/{005-task-naming-improvements/outcomes/004-implement-amend-flag-for-plan.md → aaaaaf-task-naming-improvements/outcomes/04-implement-amend-flag-for-plan.md} +0 -0
  263. /package/RAF/{005-task-naming-improvements/outcomes/005-commit-outcomes-on-complete.md → aaaaaf-task-naming-improvements/outcomes/05-commit-outcomes-on-complete.md} +0 -0
  264. /package/RAF/{005-task-naming-improvements/outcomes/006-update-execution-prompt-commit-schema.md → aaaaaf-task-naming-improvements/outcomes/06-update-execution-prompt-commit-schema.md} +0 -0
  265. /package/RAF/{005-task-naming-improvements/outcomes/007-allow-pending-task-amendments.md → aaaaaf-task-naming-improvements/outcomes/07-allow-pending-task-amendments.md} +0 -0
  266. /package/RAF/{005-task-naming-improvements/outcomes/008-fix-timeout-label.md → aaaaaf-task-naming-improvements/outcomes/08-fix-timeout-label.md} +0 -0
  267. /package/RAF/{005-task-naming-improvements/plans/001-enhance-identifier-resolution.md → aaaaaf-task-naming-improvements/plans/01-enhance-identifier-resolution.md} +0 -0
  268. /package/RAF/{005-task-naming-improvements/plans/002-add-identifier-support-to-status.md → aaaaaf-task-naming-improvements/plans/02-add-identifier-support-to-status.md} +0 -0
  269. /package/RAF/{005-task-naming-improvements/plans/003-update-do-for-full-folder-names.md → aaaaaf-task-naming-improvements/plans/03-update-do-for-full-folder-names.md} +0 -0
  270. /package/RAF/{005-task-naming-improvements/plans/004-implement-amend-flag-for-plan.md → aaaaaf-task-naming-improvements/plans/04-implement-amend-flag-for-plan.md} +0 -0
  271. /package/RAF/{005-task-naming-improvements/plans/005-commit-outcomes-on-complete.md → aaaaaf-task-naming-improvements/plans/05-commit-outcomes-on-complete.md} +0 -0
  272. /package/RAF/{005-task-naming-improvements/plans/006-update-execution-prompt-commit-schema.md → aaaaaf-task-naming-improvements/plans/06-update-execution-prompt-commit-schema.md} +0 -0
  273. /package/RAF/{005-task-naming-improvements/plans/007-allow-pending-task-amendments.md → aaaaaf-task-naming-improvements/plans/07-allow-pending-task-amendments.md} +0 -0
  274. /package/RAF/{005-task-naming-improvements/plans/008-fix-timeout-label.md → aaaaaf-task-naming-improvements/plans/08-fix-timeout-label.md} +0 -0
  275. /package/RAF/{006-fix-double-summary-headers → aaaaag-fix-double-summary-headers}/decisions.md +0 -0
  276. /package/RAF/{006-fix-double-summary-headers → aaaaag-fix-double-summary-headers}/input.md +0 -0
  277. /package/RAF/{006-fix-double-summary-headers/outcomes/001-fix-double-summary-headers.md → aaaaag-fix-double-summary-headers/outcomes/01-fix-double-summary-headers.md} +0 -0
  278. /package/RAF/{006-fix-double-summary-headers/outcomes/002-update-readme-for-npm.md → aaaaag-fix-double-summary-headers/outcomes/02-update-readme-for-npm.md} +0 -0
  279. /package/RAF/{006-fix-double-summary-headers/outcomes/003-npm-publish-instructions.md → aaaaag-fix-double-summary-headers/outcomes/03-npm-publish-instructions.md} +0 -0
  280. /package/RAF/{006-fix-double-summary-headers/outcomes/004-flexible-project-lookup.md → aaaaag-fix-double-summary-headers/outcomes/04-flexible-project-lookup.md} +0 -0
  281. /package/RAF/{006-fix-double-summary-headers/plans/001-fix-double-summary-headers.md → aaaaag-fix-double-summary-headers/plans/01-fix-double-summary-headers.md} +0 -0
  282. /package/RAF/{006-fix-double-summary-headers/plans/002-update-readme-for-npm.md → aaaaag-fix-double-summary-headers/plans/02-update-readme-for-npm.md} +0 -0
  283. /package/RAF/{006-fix-double-summary-headers/plans/003-npm-publish-instructions.md → aaaaag-fix-double-summary-headers/plans/03-npm-publish-instructions.md} +0 -0
  284. /package/RAF/{006-fix-double-summary-headers/plans/004-flexible-project-lookup.md → aaaaag-fix-double-summary-headers/plans/04-flexible-project-lookup.md} +0 -0
  285. /package/RAF/{007-improve-outcome-format → aaaaah-improve-outcome-format}/decisions.md +0 -0
  286. /package/RAF/{007-improve-outcome-format → aaaaah-improve-outcome-format}/input.md +0 -0
  287. /package/RAF/{007-improve-outcome-format/outcomes/001-update-execution-prompt.md → aaaaah-improve-outcome-format/outcomes/01-update-execution-prompt.md} +0 -0
  288. /package/RAF/{007-improve-outcome-format/outcomes/002-update-state-derivation.md → aaaaah-improve-outcome-format/outcomes/02-update-state-derivation.md} +0 -0
  289. /package/RAF/{007-improve-outcome-format/outcomes/003-update-do-command-outcome-handling.md → aaaaah-improve-outcome-format/outcomes/03-update-do-command-outcome-handling.md} +0 -0
  290. /package/RAF/{007-improve-outcome-format/outcomes/004-implement-failure-analysis.md → aaaaah-improve-outcome-format/outcomes/04-implement-failure-analysis.md} +0 -0
  291. /package/RAF/{007-improve-outcome-format/outcomes/005-update-documentation.md → aaaaah-improve-outcome-format/outcomes/05-update-documentation.md} +0 -0
  292. /package/RAF/{007-improve-outcome-format/plans/001-update-execution-prompt.md → aaaaah-improve-outcome-format/plans/01-update-execution-prompt.md} +0 -0
  293. /package/RAF/{007-improve-outcome-format/plans/002-update-state-derivation.md → aaaaah-improve-outcome-format/plans/02-update-state-derivation.md} +0 -0
  294. /package/RAF/{007-improve-outcome-format/plans/003-update-do-command-outcome-handling.md → aaaaah-improve-outcome-format/plans/03-update-do-command-outcome-handling.md} +0 -0
  295. /package/RAF/{007-improve-outcome-format/plans/004-implement-failure-analysis.md → aaaaah-improve-outcome-format/plans/04-implement-failure-analysis.md} +0 -0
  296. /package/RAF/{007-improve-outcome-format/plans/005-update-documentation.md → aaaaah-improve-outcome-format/plans/05-update-documentation.md} +0 -0
  297. /package/RAF/{008-beautiful-do → aaaaai-beautiful-do}/decisions.md +0 -0
  298. /package/RAF/{008-beautiful-do → aaaaai-beautiful-do}/input.md +0 -0
  299. /package/RAF/{008-beautiful-do/outcomes/001-terminal-symbols.md → aaaaai-beautiful-do/outcomes/01-terminal-symbols.md} +0 -0
  300. /package/RAF/{008-beautiful-do/outcomes/002-refactor-do-output.md → aaaaai-beautiful-do/outcomes/02-refactor-do-output.md} +0 -0
  301. /package/RAF/{008-beautiful-do/outcomes/003-refactor-status-output.md → aaaaai-beautiful-do/outcomes/03-refactor-status-output.md} +0 -0
  302. /package/RAF/{008-beautiful-do/outcomes/004-simplify-logger.md → aaaaai-beautiful-do/outcomes/04-simplify-logger.md} +0 -0
  303. /package/RAF/{008-beautiful-do/outcomes/005-add-tests.md → aaaaai-beautiful-do/outcomes/05-add-tests.md} +0 -0
  304. /package/RAF/{008-beautiful-do/plans/001-terminal-symbols.md → aaaaai-beautiful-do/plans/01-terminal-symbols.md} +0 -0
  305. /package/RAF/{008-beautiful-do/plans/002-refactor-do-output.md → aaaaai-beautiful-do/plans/02-refactor-do-output.md} +0 -0
  306. /package/RAF/{008-beautiful-do/plans/003-refactor-status-output.md → aaaaai-beautiful-do/plans/03-refactor-status-output.md} +0 -0
  307. /package/RAF/{008-beautiful-do/plans/004-simplify-logger.md → aaaaai-beautiful-do/plans/04-simplify-logger.md} +0 -0
  308. /package/RAF/{008-beautiful-do/plans/005-add-tests.md → aaaaai-beautiful-do/plans/05-add-tests.md} +0 -0
  309. /package/RAF/{009-system-promt-ammend → aaaaaj-system-promt-ammend}/decisions.md +0 -0
  310. /package/RAF/{009-system-promt-ammend → aaaaaj-system-promt-ammend}/input.md +0 -0
  311. /package/RAF/{009-system-promt-ammend/outcomes/001-model-override.md → aaaaaj-system-promt-ammend/outcomes/01-model-override.md} +0 -0
  312. /package/RAF/{009-system-promt-ammend/outcomes/002-system-prompt-append.md → aaaaaj-system-promt-ammend/outcomes/02-system-prompt-append.md} +0 -0
  313. /package/RAF/{009-system-promt-ammend/outcomes/003-retry-context.md → aaaaaj-system-promt-ammend/outcomes/03-retry-context.md} +0 -0
  314. /package/RAF/{009-system-promt-ammend/plans/001-model-override.md → aaaaaj-system-promt-ammend/plans/01-model-override.md} +0 -0
  315. /package/RAF/{009-system-promt-ammend/plans/002-system-prompt-append.md → aaaaaj-system-promt-ammend/plans/02-system-prompt-append.md} +0 -0
  316. /package/RAF/{009-system-promt-ammend/plans/003-retry-context.md → aaaaaj-system-promt-ammend/plans/03-retry-context.md} +0 -0
  317. /package/RAF/{010-outcome-marker-fallback → aaaabk-outcome-marker-fallback}/decisions.md +0 -0
  318. /package/RAF/{010-outcome-marker-fallback → aaaabk-outcome-marker-fallback}/input.md +0 -0
  319. /package/RAF/{010-outcome-marker-fallback/outcomes/001-outcome-file-marker-fallback.md → aaaabk-outcome-marker-fallback/outcomes/01-outcome-file-marker-fallback.md} +0 -0
  320. /package/RAF/{010-outcome-marker-fallback/outcomes/002-creative-project-naming.md → aaaabk-outcome-marker-fallback/outcomes/02-creative-project-naming.md} +0 -0
  321. /package/RAF/{010-outcome-marker-fallback/plans/001-outcome-file-marker-fallback.md → aaaabk-outcome-marker-fallback/plans/01-outcome-file-marker-fallback.md} +0 -0
  322. /package/RAF/{010-outcome-marker-fallback/plans/002-creative-project-naming.md → aaaabk-outcome-marker-fallback/plans/02-creative-project-naming.md} +0 -0
  323. /package/RAF/{011-do-task-in-commit → aaaabl-do-task-in-commit}/decisions.md +0 -0
  324. /package/RAF/{011-do-task-in-commit → aaaabl-do-task-in-commit}/input.md +0 -0
  325. /package/RAF/{011-do-task-in-commit/outcomes/001-update-execution-prompt.md → aaaabl-do-task-in-commit/outcomes/01-update-execution-prompt.md} +0 -0
  326. /package/RAF/{011-do-task-in-commit/outcomes/002-update-tests.md → aaaabl-do-task-in-commit/outcomes/02-update-tests.md} +0 -0
  327. /package/RAF/{011-do-task-in-commit/outcomes/003-update-documentation.md → aaaabl-do-task-in-commit/outcomes/03-update-documentation.md} +0 -0
  328. /package/RAF/{011-do-task-in-commit/plans/001-update-execution-prompt.md → aaaabl-do-task-in-commit/plans/01-update-execution-prompt.md} +0 -0
  329. /package/RAF/{011-do-task-in-commit/plans/002-update-tests.md → aaaabl-do-task-in-commit/plans/02-update-tests.md} +0 -0
  330. /package/RAF/{011-do-task-in-commit/plans/003-update-documentation.md → aaaabl-do-task-in-commit/plans/03-update-documentation.md} +0 -0
  331. /package/RAF/{012-name-picker-buffet → aaaabm-name-picker-buffet}/decisions.md +0 -0
  332. /package/RAF/{012-name-picker-buffet → aaaabm-name-picker-buffet}/input.md +0 -0
  333. /package/RAF/{012-name-picker-buffet/outcomes/001-name-picker-for-raf-plan.md → aaaabm-name-picker-buffet/outcomes/01-name-picker-for-raf-plan.md} +0 -0
  334. /package/RAF/{012-name-picker-buffet/outcomes/002-interactive-project-picker-for-raf-do.md → aaaabm-name-picker-buffet/outcomes/02-interactive-project-picker-for-raf-do.md} +0 -0
  335. /package/RAF/{012-name-picker-buffet/outcomes/003-raf-status-truncation.md → aaaabm-name-picker-buffet/outcomes/03-raf-status-truncation.md} +0 -0
  336. /package/RAF/{012-name-picker-buffet/outcomes/004-failure-reason-details.md → aaaabm-name-picker-buffet/outcomes/04-failure-reason-details.md} +0 -0
  337. /package/RAF/{012-name-picker-buffet/outcomes/005-remove-raf-commits.md → aaaabm-name-picker-buffet/outcomes/05-remove-raf-commits.md} +0 -0
  338. /package/RAF/{012-name-picker-buffet/outcomes/006-update-execution-prompt-for-commits.md → aaaabm-name-picker-buffet/outcomes/06-update-execution-prompt-for-commits.md} +0 -0
  339. /package/RAF/{012-name-picker-buffet/outcomes/007-fix-plan-mode-user-prompt.md → aaaabm-name-picker-buffet/outcomes/07-fix-plan-mode-user-prompt.md} +0 -0
  340. /package/RAF/{012-name-picker-buffet/outcomes/008-add-auto-flag-for-plan-mode.md → aaaabm-name-picker-buffet/outcomes/08-add-auto-flag-for-plan-mode.md} +0 -0
  341. /package/RAF/{012-name-picker-buffet/plans/001-name-picker-for-raf-plan.md → aaaabm-name-picker-buffet/plans/01-name-picker-for-raf-plan.md} +0 -0
  342. /package/RAF/{012-name-picker-buffet/plans/002-interactive-project-picker-for-raf-do.md → aaaabm-name-picker-buffet/plans/02-interactive-project-picker-for-raf-do.md} +0 -0
  343. /package/RAF/{012-name-picker-buffet/plans/003-raf-status-truncation.md → aaaabm-name-picker-buffet/plans/03-raf-status-truncation.md} +0 -0
  344. /package/RAF/{012-name-picker-buffet/plans/004-failure-reason-details.md → aaaabm-name-picker-buffet/plans/04-failure-reason-details.md} +0 -0
  345. /package/RAF/{012-name-picker-buffet/plans/005-remove-raf-commits.md → aaaabm-name-picker-buffet/plans/05-remove-raf-commits.md} +0 -0
  346. /package/RAF/{012-name-picker-buffet/plans/006-update-execution-prompt-for-commits.md → aaaabm-name-picker-buffet/plans/06-update-execution-prompt-for-commits.md} +0 -0
  347. /package/RAF/{012-name-picker-buffet/plans/007-fix-plan-mode-user-prompt.md → aaaabm-name-picker-buffet/plans/07-fix-plan-mode-user-prompt.md} +0 -0
  348. /package/RAF/{012-name-picker-buffet/plans/008-add-auto-flag-for-plan-mode.md → aaaabm-name-picker-buffet/plans/08-add-auto-flag-for-plan-mode.md} +0 -0
  349. /package/RAF/{013-dependencies-watchdog → aaaabn-dependencies-watchdog}/decisions.md +0 -0
  350. /package/RAF/{013-dependencies-watchdog → aaaabn-dependencies-watchdog}/input.md +0 -0
  351. /package/RAF/{013-dependencies-watchdog/outcomes/001-define-dependency-syntax.md → aaaabn-dependencies-watchdog/outcomes/01-define-dependency-syntax.md} +0 -0
  352. /package/RAF/{013-dependencies-watchdog/outcomes/002-update-planning-prompts.md → aaaabn-dependencies-watchdog/outcomes/02-update-planning-prompts.md} +0 -0
  353. /package/RAF/{013-dependencies-watchdog/outcomes/003-parse-dependencies-update-state.md → aaaabn-dependencies-watchdog/outcomes/03-parse-dependencies-update-state.md} +0 -0
  354. /package/RAF/{013-dependencies-watchdog/outcomes/004-implement-dependency-checking-in-do.md → aaaabn-dependencies-watchdog/outcomes/04-implement-dependency-checking-in-do.md} +0 -0
  355. /package/RAF/{013-dependencies-watchdog/outcomes/005-update-execution-prompts.md → aaaabn-dependencies-watchdog/outcomes/05-update-execution-prompts.md} +0 -0
  356. /package/RAF/{013-dependencies-watchdog/outcomes/006-add-tests.md → aaaabn-dependencies-watchdog/outcomes/06-add-tests.md} +0 -0
  357. /package/RAF/{013-dependencies-watchdog/outcomes/007-add-act-alias.md → aaaabn-dependencies-watchdog/outcomes/07-add-act-alias.md} +0 -0
  358. /package/RAF/{013-dependencies-watchdog/outcomes/008-add-exit-message.md → aaaabn-dependencies-watchdog/outcomes/08-add-exit-message.md} +0 -0
  359. /package/RAF/{013-dependencies-watchdog/plans/001-define-dependency-syntax.md → aaaabn-dependencies-watchdog/plans/01-define-dependency-syntax.md} +0 -0
  360. /package/RAF/{013-dependencies-watchdog/plans/002-update-planning-prompts.md → aaaabn-dependencies-watchdog/plans/02-update-planning-prompts.md} +0 -0
  361. /package/RAF/{013-dependencies-watchdog/plans/003-parse-dependencies-update-state.md → aaaabn-dependencies-watchdog/plans/03-parse-dependencies-update-state.md} +0 -0
  362. /package/RAF/{013-dependencies-watchdog/plans/004-implement-dependency-checking-in-do.md → aaaabn-dependencies-watchdog/plans/04-implement-dependency-checking-in-do.md} +0 -0
  363. /package/RAF/{013-dependencies-watchdog/plans/005-update-execution-prompts.md → aaaabn-dependencies-watchdog/plans/05-update-execution-prompts.md} +0 -0
  364. /package/RAF/{013-dependencies-watchdog/plans/006-add-tests.md → aaaabn-dependencies-watchdog/plans/06-add-tests.md} +0 -0
  365. /package/RAF/{013-dependencies-watchdog/plans/007-add-act-alias.md → aaaabn-dependencies-watchdog/plans/07-add-act-alias.md} +0 -0
  366. /package/RAF/{013-dependencies-watchdog/plans/008-add-exit-message.md → aaaabn-dependencies-watchdog/plans/08-add-exit-message.md} +0 -0
  367. /package/RAF/{014-watchdog → aaaabo-watchdog}/decisions.md +0 -0
  368. /package/RAF/{014-watchdog → aaaabo-watchdog}/input.md +0 -0
  369. /package/RAF/{014-watchdog/outcomes/001-amend-flag-position.md → aaaabo-watchdog/outcomes/01-amend-flag-position.md} +0 -0
  370. /package/RAF/{014-watchdog/outcomes/002-details-only-on-failure.md → aaaabo-watchdog/outcomes/02-details-only-on-failure.md} +0 -0
  371. /package/RAF/{014-watchdog/plans/001-amend-flag-position.md → aaaabo-watchdog/plans/01-amend-flag-position.md} +0 -0
  372. /package/RAF/{014-watchdog/plans/002-details-only-on-failure.md → aaaabo-watchdog/plans/02-details-only-on-failure.md} +0 -0
  373. /package/RAF/{015-name-lottery → aaaabp-name-lottery}/decisions.md +0 -0
  374. /package/RAF/{015-name-lottery → aaaabp-name-lottery}/input.md +0 -0
  375. /package/RAF/{015-name-lottery/outcomes/001-auto-pick-project-name.md → aaaabp-name-lottery/outcomes/01-auto-pick-project-name.md} +0 -0
  376. /package/RAF/{015-name-lottery/outcomes/002-mention-plan-files-in-commit.md → aaaabp-name-lottery/outcomes/02-mention-plan-files-in-commit.md} +0 -0
  377. /package/RAF/{015-name-lottery/outcomes/003-fix-input-md-in-amend-flow.md → aaaabp-name-lottery/outcomes/03-fix-input-md-in-amend-flow.md} +0 -0
  378. /package/RAF/{015-name-lottery/plans/001-auto-pick-project-name.md → aaaabp-name-lottery/plans/01-auto-pick-project-name.md} +0 -0
  379. /package/RAF/{015-name-lottery/plans/002-mention-plan-files-in-commit.md → aaaabp-name-lottery/plans/02-mention-plan-files-in-commit.md} +0 -0
  380. /package/RAF/{015-name-lottery/plans/003-fix-input-md-in-amend-flow.md → aaaabp-name-lottery/plans/03-fix-input-md-in-amend-flow.md} +0 -0
  381. /package/RAF/{016-planning-scalpel → aaaabq-planning-scalpel}/decisions.md +0 -0
  382. /package/RAF/{016-planning-scalpel → aaaabq-planning-scalpel}/input.md +0 -0
  383. /package/RAF/{016-planning-scalpel/outcomes/001-update-git-commit-instructions.md → aaaabq-planning-scalpel/outcomes/01-update-git-commit-instructions.md} +0 -0
  384. /package/RAF/{016-planning-scalpel/plans/001-update-git-commit-instructions.md → aaaabq-planning-scalpel/plans/01-update-git-commit-instructions.md} +0 -0
  385. /package/RAF/{017-decision-vault → aaaabr-decision-vault}/decisions.md +0 -0
  386. /package/RAF/{017-decision-vault → aaaabr-decision-vault}/input.md +0 -0
  387. /package/RAF/{017-decision-vault/outcomes/001-create-git-commit-utility.md → aaaabr-decision-vault/outcomes/01-create-git-commit-utility.md} +0 -0
  388. /package/RAF/{017-decision-vault/outcomes/002-integrate-commit-into-plan.md → aaaabr-decision-vault/outcomes/02-integrate-commit-into-plan.md} +0 -0
  389. /package/RAF/{017-decision-vault/outcomes/003-add-tests-for-planning-commit.md → aaaabr-decision-vault/outcomes/03-add-tests-for-planning-commit.md} +0 -0
  390. /package/RAF/{017-decision-vault/plans/001-create-git-commit-utility.md → aaaabr-decision-vault/plans/01-create-git-commit-utility.md} +0 -0
  391. /package/RAF/{017-decision-vault/plans/002-integrate-commit-into-plan.md → aaaabr-decision-vault/plans/02-integrate-commit-into-plan.md} +0 -0
  392. /package/RAF/{017-decision-vault/plans/003-add-tests-for-planning-commit.md → aaaabr-decision-vault/plans/03-add-tests-for-planning-commit.md} +0 -0
  393. /package/RAF/{018-workflow-forge → aaaabs-workflow-forge}/decisions.md +0 -0
  394. /package/RAF/{018-workflow-forge → aaaabs-workflow-forge}/input.md +0 -0
  395. /package/RAF/{018-workflow-forge/outcomes/001-add-task-number-progress.md → aaaabs-workflow-forge/outcomes/01-add-task-number-progress.md} +0 -0
  396. /package/RAF/{018-workflow-forge/outcomes/002-update-plan-do-prompts.md → aaaabs-workflow-forge/outcomes/02-update-plan-do-prompts.md} +0 -0
  397. /package/RAF/{018-workflow-forge/plans/001-add-task-number-progress.md → aaaabs-workflow-forge/plans/01-add-task-number-progress.md} +0 -0
  398. /package/RAF/{018-workflow-forge/plans/002-update-plan-do-prompts.md → aaaabs-workflow-forge/plans/02-update-plan-do-prompts.md} +0 -0
@@ -28,32 +28,32 @@ describe('Plan Command - Amend Functionality', () => {
28
28
  describe('Project Resolution for Amend', () => {
29
29
  beforeEach(() => {
30
30
  // Create a project with tasks
31
- const projectDir = path.join(tempDir, '003-my-project');
31
+ const projectDir = path.join(tempDir, 'aaaaad-my-project');
32
32
  fs.mkdirSync(projectDir);
33
33
  fs.mkdirSync(path.join(projectDir, 'plans'));
34
34
  fs.writeFileSync(
35
- path.join(projectDir, 'plans', '001-first-task.md'),
35
+ path.join(projectDir, 'plans', '01-first-task.md'),
36
36
  '# Task: First Task\n'
37
37
  );
38
38
  fs.writeFileSync(
39
- path.join(projectDir, 'plans', '002-second-task.md'),
39
+ path.join(projectDir, 'plans', '02-second-task.md'),
40
40
  '# Task: Second Task\n'
41
41
  );
42
42
  });
43
43
 
44
- it('should resolve project by numeric ID for amend', () => {
45
- const result = resolveProjectIdentifier(tempDir, '3');
46
- expect(result).toBe(path.join(tempDir, '003-my-project'));
44
+ it('should resolve project by 6-char base26 ID for amend', () => {
45
+ const result = resolveProjectIdentifier(tempDir, 'aaaaad');
46
+ expect(result).toBe(path.join(tempDir, 'aaaaad-my-project'));
47
47
  });
48
48
 
49
49
  it('should resolve project by name for amend', () => {
50
50
  const result = resolveProjectIdentifier(tempDir, 'my-project');
51
- expect(result).toBe(path.join(tempDir, '003-my-project'));
51
+ expect(result).toBe(path.join(tempDir, 'aaaaad-my-project'));
52
52
  });
53
53
 
54
54
  it('should resolve project by full folder name for amend', () => {
55
- const result = resolveProjectIdentifier(tempDir, '003-my-project');
56
- expect(result).toBe(path.join(tempDir, '003-my-project'));
55
+ const result = resolveProjectIdentifier(tempDir, 'aaaaad-my-project');
56
+ expect(result).toBe(path.join(tempDir, 'aaaaad-my-project'));
57
57
  });
58
58
 
59
59
  it('should return null for non-existent project', () => {
@@ -62,39 +62,39 @@ describe('Plan Command - Amend Functionality', () => {
62
62
  });
63
63
  });
64
64
 
65
- describe('Base36 Project Resolution for Amend', () => {
65
+ describe('Base26 Project Resolution for Amend', () => {
66
66
  beforeEach(() => {
67
- const projectDir = path.join(tempDir, 'a01-important-project');
67
+ const projectDir = path.join(tempDir, 'abcdef-important-project');
68
68
  fs.mkdirSync(projectDir);
69
69
  fs.mkdirSync(path.join(projectDir, 'plans'));
70
70
  fs.writeFileSync(
71
- path.join(projectDir, 'plans', '001-initial-task.md'),
71
+ path.join(projectDir, 'plans', '01-initial-task.md'),
72
72
  '# Task: Initial Task\n'
73
73
  );
74
74
  });
75
75
 
76
- it('should resolve project by base36 prefix for amend', () => {
77
- const result = resolveProjectIdentifier(tempDir, 'a01');
78
- expect(result).toBe(path.join(tempDir, 'a01-important-project'));
76
+ it('should resolve project by 6-char base26 prefix for amend', () => {
77
+ const result = resolveProjectIdentifier(tempDir, 'abcdef');
78
+ expect(result).toBe(path.join(tempDir, 'abcdef-important-project'));
79
79
  });
80
80
 
81
- it('should resolve project by full base36 folder name for amend', () => {
82
- const result = resolveProjectIdentifier(tempDir, 'a01-important-project');
83
- expect(result).toBe(path.join(tempDir, 'a01-important-project'));
81
+ it('should resolve project by full base26 folder name for amend', () => {
82
+ const result = resolveProjectIdentifier(tempDir, 'abcdef-important-project');
83
+ expect(result).toBe(path.join(tempDir, 'abcdef-important-project'));
84
84
  });
85
85
  });
86
86
 
87
87
  describe('Existing Project State Loading', () => {
88
88
  it('should load pending tasks', () => {
89
- const projectDir = path.join(tempDir, '001-test-project');
89
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
90
90
  fs.mkdirSync(projectDir);
91
91
  fs.mkdirSync(path.join(projectDir, 'plans'));
92
92
  fs.writeFileSync(
93
- path.join(projectDir, 'plans', '001-task-one.md'),
93
+ path.join(projectDir, 'plans', '01-task-one.md'),
94
94
  '# Task: Task One\n'
95
95
  );
96
96
  fs.writeFileSync(
97
- path.join(projectDir, 'plans', '002-task-two.md'),
97
+ path.join(projectDir, 'plans', '02-task-two.md'),
98
98
  '# Task: Task Two\n'
99
99
  );
100
100
 
@@ -105,16 +105,16 @@ describe('Plan Command - Amend Functionality', () => {
105
105
  });
106
106
 
107
107
  it('should load completed tasks', () => {
108
- const projectDir = path.join(tempDir, '001-test-project');
108
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
109
109
  fs.mkdirSync(projectDir);
110
110
  fs.mkdirSync(path.join(projectDir, 'plans'));
111
111
  fs.mkdirSync(path.join(projectDir, 'outcomes'));
112
112
  fs.writeFileSync(
113
- path.join(projectDir, 'plans', '001-task-one.md'),
113
+ path.join(projectDir, 'plans', '01-task-one.md'),
114
114
  '# Task: Task One\n'
115
115
  );
116
116
  fs.writeFileSync(
117
- path.join(projectDir, 'outcomes', '001-task-one.md'),
117
+ path.join(projectDir, 'outcomes', '01-task-one.md'),
118
118
  'Task completed.\n\n<promise>COMPLETE</promise>'
119
119
  );
120
120
 
@@ -124,16 +124,16 @@ describe('Plan Command - Amend Functionality', () => {
124
124
  });
125
125
 
126
126
  it('should load failed tasks', () => {
127
- const projectDir = path.join(tempDir, '001-test-project');
127
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
128
128
  fs.mkdirSync(projectDir);
129
129
  fs.mkdirSync(path.join(projectDir, 'plans'));
130
130
  fs.mkdirSync(path.join(projectDir, 'outcomes'));
131
131
  fs.writeFileSync(
132
- path.join(projectDir, 'plans', '001-task-one.md'),
132
+ path.join(projectDir, 'plans', '01-task-one.md'),
133
133
  '# Task: Task One\n'
134
134
  );
135
135
  fs.writeFileSync(
136
- path.join(projectDir, 'outcomes', '001-task-one.md'),
136
+ path.join(projectDir, 'outcomes', '01-task-one.md'),
137
137
  'Task failed.\n\n<promise>FAILED</promise>'
138
138
  );
139
139
 
@@ -143,28 +143,28 @@ describe('Plan Command - Amend Functionality', () => {
143
143
  });
144
144
 
145
145
  it('should load mixed task statuses', () => {
146
- const projectDir = path.join(tempDir, '001-test-project');
146
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
147
147
  fs.mkdirSync(projectDir);
148
148
  fs.mkdirSync(path.join(projectDir, 'plans'));
149
149
  fs.mkdirSync(path.join(projectDir, 'outcomes'));
150
150
  fs.writeFileSync(
151
- path.join(projectDir, 'plans', '001-task-one.md'),
151
+ path.join(projectDir, 'plans', '01-task-one.md'),
152
152
  '# Task: Task One\n'
153
153
  );
154
154
  fs.writeFileSync(
155
- path.join(projectDir, 'plans', '002-task-two.md'),
155
+ path.join(projectDir, 'plans', '02-task-two.md'),
156
156
  '# Task: Task Two\n'
157
157
  );
158
158
  fs.writeFileSync(
159
- path.join(projectDir, 'plans', '003-task-three.md'),
159
+ path.join(projectDir, 'plans', '03-task-three.md'),
160
160
  '# Task: Task Three\n'
161
161
  );
162
162
  fs.writeFileSync(
163
- path.join(projectDir, 'outcomes', '001-task-one.md'),
163
+ path.join(projectDir, 'outcomes', '01-task-one.md'),
164
164
  'Task completed.\n\n<promise>COMPLETE</promise>'
165
165
  );
166
166
  fs.writeFileSync(
167
- path.join(projectDir, 'outcomes', '002-task-two.md'),
167
+ path.join(projectDir, 'outcomes', '02-task-two.md'),
168
168
  'Task failed.\n\n<promise>FAILED</promise>'
169
169
  );
170
170
  // Task three has no outcome - pending
@@ -179,24 +179,24 @@ describe('Plan Command - Amend Functionality', () => {
179
179
 
180
180
  describe('Fully Completed Project Detection', () => {
181
181
  it('should detect fully completed project', () => {
182
- const projectDir = path.join(tempDir, '001-test-project');
182
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
183
183
  fs.mkdirSync(projectDir);
184
184
  fs.mkdirSync(path.join(projectDir, 'plans'));
185
185
  fs.mkdirSync(path.join(projectDir, 'outcomes'));
186
186
  fs.writeFileSync(
187
- path.join(projectDir, 'plans', '001-task-one.md'),
187
+ path.join(projectDir, 'plans', '01-task-one.md'),
188
188
  '# Task: Task One\n'
189
189
  );
190
190
  fs.writeFileSync(
191
- path.join(projectDir, 'plans', '002-task-two.md'),
191
+ path.join(projectDir, 'plans', '02-task-two.md'),
192
192
  '# Task: Task Two\n'
193
193
  );
194
194
  fs.writeFileSync(
195
- path.join(projectDir, 'outcomes', '001-task-one.md'),
195
+ path.join(projectDir, 'outcomes', '01-task-one.md'),
196
196
  'Task completed.\n\n<promise>COMPLETE</promise>'
197
197
  );
198
198
  fs.writeFileSync(
199
- path.join(projectDir, 'outcomes', '002-task-two.md'),
199
+ path.join(projectDir, 'outcomes', '02-task-two.md'),
200
200
  'Task completed.\n\n<promise>COMPLETE</promise>'
201
201
  );
202
202
 
@@ -205,20 +205,20 @@ describe('Plan Command - Amend Functionality', () => {
205
205
  });
206
206
 
207
207
  it('should not mark project as complete with pending tasks', () => {
208
- const projectDir = path.join(tempDir, '001-test-project');
208
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
209
209
  fs.mkdirSync(projectDir);
210
210
  fs.mkdirSync(path.join(projectDir, 'plans'));
211
211
  fs.mkdirSync(path.join(projectDir, 'outcomes'));
212
212
  fs.writeFileSync(
213
- path.join(projectDir, 'plans', '001-task-one.md'),
213
+ path.join(projectDir, 'plans', '01-task-one.md'),
214
214
  '# Task: Task One\n'
215
215
  );
216
216
  fs.writeFileSync(
217
- path.join(projectDir, 'plans', '002-task-two.md'),
217
+ path.join(projectDir, 'plans', '02-task-two.md'),
218
218
  '# Task: Task Two\n'
219
219
  );
220
220
  fs.writeFileSync(
221
- path.join(projectDir, 'outcomes', '001-task-one.md'),
221
+ path.join(projectDir, 'outcomes', '01-task-one.md'),
222
222
  'Task completed.\n\n<promise>COMPLETE</promise>'
223
223
  );
224
224
 
@@ -227,16 +227,16 @@ describe('Plan Command - Amend Functionality', () => {
227
227
  });
228
228
 
229
229
  it('should not mark project as complete with failed tasks', () => {
230
- const projectDir = path.join(tempDir, '001-test-project');
230
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
231
231
  fs.mkdirSync(projectDir);
232
232
  fs.mkdirSync(path.join(projectDir, 'plans'));
233
233
  fs.mkdirSync(path.join(projectDir, 'outcomes'));
234
234
  fs.writeFileSync(
235
- path.join(projectDir, 'plans', '001-task-one.md'),
235
+ path.join(projectDir, 'plans', '01-task-one.md'),
236
236
  '# Task: Task One\n'
237
237
  );
238
238
  fs.writeFileSync(
239
- path.join(projectDir, 'outcomes', '001-task-one.md'),
239
+ path.join(projectDir, 'outcomes', '01-task-one.md'),
240
240
  'Task failed.\n\n<promise>FAILED</promise>'
241
241
  );
242
242
 
@@ -247,12 +247,12 @@ describe('Plan Command - Amend Functionality', () => {
247
247
 
248
248
  describe('Task Name Extraction', () => {
249
249
  it('should extract task name from plan file', () => {
250
- const name = extractTaskNameFromPlanFile('001-fix-login-bug.md');
250
+ const name = extractTaskNameFromPlanFile('01-fix-login-bug.md');
251
251
  expect(name).toBe('fix-login-bug');
252
252
  });
253
253
 
254
254
  it('should extract task name from plan file with multiple hyphens', () => {
255
- const name = extractTaskNameFromPlanFile('002-add-user-registration-flow.md');
255
+ const name = extractTaskNameFromPlanFile('02-add-user-registration-flow.md');
256
256
  expect(name).toBe('add-user-registration-flow');
257
257
  });
258
258
 
@@ -269,19 +269,19 @@ describe('Plan Command - Amend Functionality', () => {
269
269
 
270
270
  describe('Next Task Number Calculation', () => {
271
271
  it('should calculate next task number correctly', () => {
272
- const projectDir = path.join(tempDir, '001-test-project');
272
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
273
273
  fs.mkdirSync(projectDir);
274
274
  fs.mkdirSync(path.join(projectDir, 'plans'));
275
275
  fs.writeFileSync(
276
- path.join(projectDir, 'plans', '001-task-one.md'),
276
+ path.join(projectDir, 'plans', '01-task-one.md'),
277
277
  '# Task: Task One\n'
278
278
  );
279
279
  fs.writeFileSync(
280
- path.join(projectDir, 'plans', '002-task-two.md'),
280
+ path.join(projectDir, 'plans', '02-task-two.md'),
281
281
  '# Task: Task Two\n'
282
282
  );
283
283
  fs.writeFileSync(
284
- path.join(projectDir, 'plans', '003-task-three.md'),
284
+ path.join(projectDir, 'plans', '03-task-three.md'),
285
285
  '# Task: Task Three\n'
286
286
  );
287
287
 
@@ -294,11 +294,11 @@ describe('Plan Command - Amend Functionality', () => {
294
294
  });
295
295
 
296
296
  it('should handle single task project', () => {
297
- const projectDir = path.join(tempDir, '001-test-project');
297
+ const projectDir = path.join(tempDir, 'aaaaab-test-project');
298
298
  fs.mkdirSync(projectDir);
299
299
  fs.mkdirSync(path.join(projectDir, 'plans'));
300
300
  fs.writeFileSync(
301
- path.join(projectDir, 'plans', '001-task-one.md'),
301
+ path.join(projectDir, 'plans', '01-task-one.md'),
302
302
  '# Task: Task One\n'
303
303
  );
304
304
 
@@ -316,8 +316,8 @@ describe('Plan Command - Amend Functionality', () => {
316
316
  const params: AmendPromptParams = {
317
317
  projectPath: '/test/project',
318
318
  existingTasks: [
319
- { id: '001', planFile: 'plans/001-first.md', status: 'completed', taskName: 'first' },
320
- { id: '002', planFile: 'plans/002-second.md', status: 'pending', taskName: 'second' },
319
+ { id: '01', planFile: 'plans/01-first.md', status: 'completed', taskName: 'first' },
320
+ { id: '02', planFile: 'plans/02-second.md', status: 'pending', taskName: 'second' },
321
321
  ],
322
322
  nextTaskNumber: 3,
323
323
  newTaskDescription: 'Add new feature X',
@@ -335,8 +335,8 @@ describe('Plan Command - Amend Functionality', () => {
335
335
  const params: AmendPromptParams = {
336
336
  projectPath: '/test/project',
337
337
  existingTasks: [
338
- { id: '001', planFile: 'plans/001-first.md', status: 'completed', taskName: 'first' },
339
- { id: '002', planFile: 'plans/002-second.md', status: 'pending', taskName: 'second' },
338
+ { id: '01', planFile: 'plans/01-first.md', status: 'completed', taskName: 'first' },
339
+ { id: '02', planFile: 'plans/02-second.md', status: 'pending', taskName: 'second' },
340
340
  ],
341
341
  nextTaskNumber: 3,
342
342
  newTaskDescription: 'Add new feature X',
@@ -345,9 +345,9 @@ describe('Plan Command - Amend Functionality', () => {
345
345
  const { systemPrompt } = getAmendPrompt(params);
346
346
 
347
347
  expect(systemPrompt).toContain('AMENDMENT MODE');
348
- expect(systemPrompt).toContain('Task 001: first [COMPLETED] [PROTECTED]');
349
- expect(systemPrompt).toContain('Task 002: second [PENDING] [MODIFIABLE]');
350
- expect(systemPrompt).toContain('starting from number 003');
348
+ expect(systemPrompt).toContain('Task 01: first [COMPLETED] [PROTECTED]');
349
+ expect(systemPrompt).toContain('Task 02: second [PENDING] [MODIFIABLE]');
350
+ expect(systemPrompt).toContain('starting from number 03');
351
351
  expect(systemPrompt).toContain('/test/project');
352
352
  });
353
353
 
@@ -369,7 +369,7 @@ describe('Plan Command - Amend Functionality', () => {
369
369
  const params: AmendPromptParams = {
370
370
  projectPath: '/test/project',
371
371
  existingTasks: [
372
- { id: '001', planFile: 'plans/001-first.md', status: 'completed', taskName: 'first' },
372
+ { id: '01', planFile: 'plans/01-first.md', status: 'completed', taskName: 'first' },
373
373
  ],
374
374
  nextTaskNumber: 2,
375
375
  newTaskDescription: 'New tasks',
@@ -388,7 +388,7 @@ describe('Plan Command - Amend Functionality', () => {
388
388
  const params: AmendPromptParams = {
389
389
  projectPath: '/test/project',
390
390
  existingTasks: [
391
- { id: '001', planFile: 'plans/001-first.md', status: 'failed', taskName: 'first' },
391
+ { id: '01', planFile: 'plans/01-first.md', status: 'failed', taskName: 'first' },
392
392
  ],
393
393
  nextTaskNumber: 2,
394
394
  newTaskDescription: 'New tasks',
@@ -396,16 +396,16 @@ describe('Plan Command - Amend Functionality', () => {
396
396
 
397
397
  const { systemPrompt } = getAmendPrompt(params);
398
398
 
399
- expect(systemPrompt).toContain('Task 001: first [FAILED] [MODIFIABLE]');
399
+ expect(systemPrompt).toContain('Task 01: first [FAILED] [MODIFIABLE]');
400
400
  });
401
401
 
402
402
  it('should list protected tasks separately', () => {
403
403
  const params: AmendPromptParams = {
404
404
  projectPath: '/test/project',
405
405
  existingTasks: [
406
- { id: '001', planFile: 'plans/001-first.md', status: 'completed', taskName: 'first' },
407
- { id: '002', planFile: 'plans/002-second.md', status: 'completed', taskName: 'second' },
408
- { id: '003', planFile: 'plans/003-third.md', status: 'pending', taskName: 'third' },
406
+ { id: '01', planFile: 'plans/01-first.md', status: 'completed', taskName: 'first' },
407
+ { id: '02', planFile: 'plans/02-second.md', status: 'completed', taskName: 'second' },
408
+ { id: '03', planFile: 'plans/03-third.md', status: 'pending', taskName: 'third' },
409
409
  ],
410
410
  nextTaskNumber: 4,
411
411
  newTaskDescription: 'New tasks',
@@ -414,17 +414,17 @@ describe('Plan Command - Amend Functionality', () => {
414
414
  const { systemPrompt } = getAmendPrompt(params);
415
415
 
416
416
  expect(systemPrompt).toContain('### Protected Tasks (COMPLETED - cannot be modified)');
417
- expect(systemPrompt).toContain('- Task 001: first');
418
- expect(systemPrompt).toContain('- Task 002: second');
417
+ expect(systemPrompt).toContain('- Task 01: first');
418
+ expect(systemPrompt).toContain('- Task 02: second');
419
419
  });
420
420
 
421
421
  it('should list modifiable tasks separately', () => {
422
422
  const params: AmendPromptParams = {
423
423
  projectPath: '/test/project',
424
424
  existingTasks: [
425
- { id: '001', planFile: 'plans/001-first.md', status: 'completed', taskName: 'first' },
426
- { id: '002', planFile: 'plans/002-second.md', status: 'pending', taskName: 'second' },
427
- { id: '003', planFile: 'plans/003-third.md', status: 'failed', taskName: 'third' },
425
+ { id: '01', planFile: 'plans/01-first.md', status: 'completed', taskName: 'first' },
426
+ { id: '02', planFile: 'plans/02-second.md', status: 'pending', taskName: 'second' },
427
+ { id: '03', planFile: 'plans/03-third.md', status: 'failed', taskName: 'third' },
428
428
  ],
429
429
  nextTaskNumber: 4,
430
430
  newTaskDescription: 'New tasks',
@@ -433,15 +433,15 @@ describe('Plan Command - Amend Functionality', () => {
433
433
  const { systemPrompt } = getAmendPrompt(params);
434
434
 
435
435
  expect(systemPrompt).toContain('### Modifiable Tasks (PENDING/FAILED - can be modified if requested)');
436
- expect(systemPrompt).toContain('- Task 002: second');
437
- expect(systemPrompt).toContain('- Task 003: third');
436
+ expect(systemPrompt).toContain('- Task 02: second');
437
+ expect(systemPrompt).toContain('- Task 03: third');
438
438
  });
439
439
 
440
440
  it('should show (none) when there are no protected tasks', () => {
441
441
  const params: AmendPromptParams = {
442
442
  projectPath: '/test/project',
443
443
  existingTasks: [
444
- { id: '001', planFile: 'plans/001-first.md', status: 'pending', taskName: 'first' },
444
+ { id: '01', planFile: 'plans/01-first.md', status: 'pending', taskName: 'first' },
445
445
  ],
446
446
  nextTaskNumber: 2,
447
447
  newTaskDescription: 'New tasks',
@@ -456,7 +456,7 @@ describe('Plan Command - Amend Functionality', () => {
456
456
  const params: AmendPromptParams = {
457
457
  projectPath: '/test/project',
458
458
  existingTasks: [
459
- { id: '001', planFile: 'plans/001-first.md', status: 'completed', taskName: 'first' },
459
+ { id: '01', planFile: 'plans/01-first.md', status: 'completed', taskName: 'first' },
460
460
  ],
461
461
  nextTaskNumber: 2,
462
462
  newTaskDescription: 'New tasks',
@@ -471,10 +471,10 @@ describe('Plan Command - Amend Functionality', () => {
471
471
  const params: AmendPromptParams = {
472
472
  projectPath: '/test/project',
473
473
  existingTasks: [
474
- { id: '001', planFile: 'plans/001-first.md', status: 'completed', taskName: 'setup' },
475
- { id: '002', planFile: 'plans/002-second.md', status: 'completed', taskName: 'database' },
476
- { id: '003', planFile: 'plans/003-third.md', status: 'failed', taskName: 'api' },
477
- { id: '004', planFile: 'plans/004-fourth.md', status: 'pending', taskName: 'tests' },
474
+ { id: '01', planFile: 'plans/01-first.md', status: 'completed', taskName: 'setup' },
475
+ { id: '02', planFile: 'plans/02-second.md', status: 'completed', taskName: 'database' },
476
+ { id: '03', planFile: 'plans/03-third.md', status: 'failed', taskName: 'api' },
477
+ { id: '04', planFile: 'plans/04-fourth.md', status: 'pending', taskName: 'tests' },
478
478
  ],
479
479
  nextTaskNumber: 5,
480
480
  newTaskDescription: 'New tasks',
@@ -483,10 +483,10 @@ describe('Plan Command - Amend Functionality', () => {
483
483
  const { systemPrompt } = getAmendPrompt(params);
484
484
 
485
485
  // Check summary list
486
- expect(systemPrompt).toContain('Task 001: setup [COMPLETED] [PROTECTED]');
487
- expect(systemPrompt).toContain('Task 002: database [COMPLETED] [PROTECTED]');
488
- expect(systemPrompt).toContain('Task 003: api [FAILED] [MODIFIABLE]');
489
- expect(systemPrompt).toContain('Task 004: tests [PENDING] [MODIFIABLE]');
486
+ expect(systemPrompt).toContain('Task 01: setup [COMPLETED] [PROTECTED]');
487
+ expect(systemPrompt).toContain('Task 02: database [COMPLETED] [PROTECTED]');
488
+ expect(systemPrompt).toContain('Task 03: api [FAILED] [MODIFIABLE]');
489
+ expect(systemPrompt).toContain('Task 04: tests [PENDING] [MODIFIABLE]');
490
490
 
491
491
  // Check separate lists
492
492
  expect(systemPrompt).toContain('### Protected Tasks (COMPLETED - cannot be modified)');
@@ -497,7 +497,7 @@ describe('Plan Command - Amend Functionality', () => {
497
497
  const params: AmendPromptParams = {
498
498
  projectPath: '/my/project/path',
499
499
  existingTasks: [
500
- { id: '001', planFile: 'plans/001-task.md', status: 'pending', taskName: 'task' },
500
+ { id: '01', planFile: 'plans/01-task.md', status: 'pending', taskName: 'task' },
501
501
  ],
502
502
  nextTaskNumber: 2,
503
503
  newTaskDescription: 'New tasks',
@@ -505,8 +505,8 @@ describe('Plan Command - Amend Functionality', () => {
505
505
 
506
506
  const { systemPrompt } = getAmendPrompt(params);
507
507
 
508
- expect(systemPrompt).toContain('/my/project/path/plans/002-task-name.md');
509
- expect(systemPrompt).toContain('/my/project/path/plans/003-task-name.md');
508
+ expect(systemPrompt).toContain('/my/project/path/plans/02-task-name.md');
509
+ expect(systemPrompt).toContain('/my/project/path/plans/03-task-name.md');
510
510
  });
511
511
 
512
512
  it('should include new task description in user message', () => {
@@ -550,29 +550,80 @@ describe('Plan Command - Amend Functionality', () => {
550
550
  expect(userMessage).toContain('Add a caching layer for API responses');
551
551
  expect(userMessage).toContain('planning interview');
552
552
  });
553
+
554
+ it('should include outcome file paths for completed tasks in task summary', () => {
555
+ const params: AmendPromptParams = {
556
+ projectPath: '/test/project',
557
+ existingTasks: [
558
+ { id: '01', planFile: 'plans/01-setup.md', status: 'completed', taskName: 'setup' },
559
+ { id: '02', planFile: 'plans/02-database.md', status: 'completed', taskName: 'database' },
560
+ ],
561
+ nextTaskNumber: 3,
562
+ newTaskDescription: 'Fix setup issues',
563
+ };
564
+
565
+ const { systemPrompt } = getAmendPrompt(params);
566
+
567
+ expect(systemPrompt).toContain('Outcome: /test/project/outcomes/01-setup.md');
568
+ expect(systemPrompt).toContain('Outcome: /test/project/outcomes/02-database.md');
569
+ });
570
+
571
+ it('should not include outcome file paths for non-completed tasks', () => {
572
+ const params: AmendPromptParams = {
573
+ projectPath: '/test/project',
574
+ existingTasks: [
575
+ { id: '01', planFile: 'plans/01-pending-task.md', status: 'pending', taskName: 'pending-task' },
576
+ { id: '02', planFile: 'plans/02-failed-task.md', status: 'failed', taskName: 'failed-task' },
577
+ ],
578
+ nextTaskNumber: 3,
579
+ newTaskDescription: 'New tasks',
580
+ };
581
+
582
+ const { systemPrompt } = getAmendPrompt(params);
583
+
584
+ expect(systemPrompt).not.toContain('Outcome: /test/project/outcomes/01-pending-task.md');
585
+ expect(systemPrompt).not.toContain('Outcome: /test/project/outcomes/02-failed-task.md');
586
+ });
587
+
588
+ it('should include follow-up task instructions in system prompt', () => {
589
+ const params: AmendPromptParams = {
590
+ projectPath: '/test/project',
591
+ existingTasks: [
592
+ { id: '01', planFile: 'plans/01-first.md', status: 'completed', taskName: 'first' },
593
+ ],
594
+ nextTaskNumber: 2,
595
+ newTaskDescription: 'Fix issues from first task',
596
+ };
597
+
598
+ const { systemPrompt } = getAmendPrompt(params);
599
+
600
+ expect(systemPrompt).toContain('Identifying Follow-up Tasks');
601
+ expect(systemPrompt).toContain('follow-up to task NN');
602
+ expect(systemPrompt).toContain('outcome file paths for completed tasks are listed above');
603
+ });
553
604
  });
554
605
 
555
606
  describe('Existing Project Detection Without Amend Flag', () => {
556
607
  it('should find existing project by name', () => {
557
- fs.mkdirSync(path.join(tempDir, '001-existing-project'));
608
+ fs.mkdirSync(path.join(tempDir, 'aaaaab-existing-project'));
558
609
  const result = resolveProjectIdentifier(tempDir, 'existing-project');
559
610
  expect(result).not.toBeNull();
560
611
  });
561
612
 
562
- it('should find existing project by number', () => {
563
- fs.mkdirSync(path.join(tempDir, '001-existing-project'));
564
- const result = resolveProjectIdentifier(tempDir, '1');
613
+ it('should find existing project by 6-char base26 ID', () => {
614
+ fs.mkdirSync(path.join(tempDir, 'aaaaab-existing-project'));
615
+ const result = resolveProjectIdentifier(tempDir, 'aaaaab');
565
616
  expect(result).not.toBeNull();
566
617
  });
567
618
 
568
619
  it('should find existing project by full folder name', () => {
569
- fs.mkdirSync(path.join(tempDir, '001-existing-project'));
570
- const result = resolveProjectIdentifier(tempDir, '001-existing-project');
620
+ fs.mkdirSync(path.join(tempDir, 'aaaaab-existing-project'));
621
+ const result = resolveProjectIdentifier(tempDir, 'aaaaab-existing-project');
571
622
  expect(result).not.toBeNull();
572
623
  });
573
624
 
574
625
  it('should return null for non-existing project', () => {
575
- fs.mkdirSync(path.join(tempDir, '001-existing-project'));
626
+ fs.mkdirSync(path.join(tempDir, 'aaaaab-existing-project'));
576
627
  const result = resolveProjectIdentifier(tempDir, 'new-project');
577
628
  expect(result).toBeNull();
578
629
  });
@@ -76,8 +76,8 @@ describe('Planning Prompt', () => {
76
76
 
77
77
  const { systemPrompt } = getPlanningPrompt(params);
78
78
 
79
- expect(systemPrompt).toContain('/test/project/plans/001-task-name.md');
80
- expect(systemPrompt).toContain('/test/project/plans/002-task-name.md');
79
+ expect(systemPrompt).toContain('/test/project/plans/01-task-name.md');
80
+ expect(systemPrompt).toContain('/test/project/plans/02-task-name.md');
81
81
  });
82
82
 
83
83
  it('should include task guidelines in system prompt', () => {
@@ -88,7 +88,7 @@ describe('Planning Prompt', () => {
88
88
 
89
89
  const { systemPrompt } = getPlanningPrompt(params);
90
90
 
91
- expect(systemPrompt).toContain('3-8 distinct');
91
+ expect(systemPrompt).toContain('identify distinct');
92
92
  expect(systemPrompt).toContain('independently completable');
93
93
  expect(systemPrompt).toContain('10-30 minutes');
94
94
  });
@@ -117,10 +117,47 @@ describe('Planning Prompt', () => {
117
117
  const { systemPrompt } = getPlanningPrompt(params);
118
118
 
119
119
  expect(systemPrompt).toContain('ALWAYS interview the user before creating plans');
120
- expect(systemPrompt).toContain('numbered order (001, 002, 003');
120
+ expect(systemPrompt).toContain('numbered order (01, 02, 03');
121
121
  expect(systemPrompt).toContain('kebab-case names');
122
122
  });
123
123
 
124
+ it('should show raf do without --worktree when worktreeMode is false', () => {
125
+ const params: PlanningPromptParams = {
126
+ projectPath: '/test/project',
127
+ inputContent: 'Some project',
128
+ worktreeMode: false,
129
+ };
130
+
131
+ const { systemPrompt } = getPlanningPrompt(params);
132
+
133
+ expect(systemPrompt).toContain('raf do <project>');
134
+ expect(systemPrompt).not.toContain('--worktree');
135
+ });
136
+
137
+ it('should show raf do without --worktree when worktreeMode is undefined', () => {
138
+ const params: PlanningPromptParams = {
139
+ projectPath: '/test/project',
140
+ inputContent: 'Some project',
141
+ };
142
+
143
+ const { systemPrompt } = getPlanningPrompt(params);
144
+
145
+ expect(systemPrompt).toContain('raf do <project>');
146
+ expect(systemPrompt).not.toContain('--worktree');
147
+ });
148
+
149
+ it('should show raf do with --worktree when worktreeMode is true', () => {
150
+ const params: PlanningPromptParams = {
151
+ projectPath: '/test/project',
152
+ inputContent: 'Some project',
153
+ worktreeMode: true,
154
+ };
155
+
156
+ const { systemPrompt } = getPlanningPrompt(params);
157
+
158
+ expect(systemPrompt).toContain('raf do <project> --worktree');
159
+ });
160
+
124
161
  it('should include project description in user message', () => {
125
162
  const params: PlanningPromptParams = {
126
163
  projectPath: '/test/project',