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
package/CLAUDE.md CHANGED
@@ -30,15 +30,15 @@ src/
30
30
  Each RAF project follows this structure:
31
31
  ```
32
32
  RAF/
33
- └── NNN-project-name/ # e.g., 001-fix-bug or a00-feature
33
+ └── abcdef-project-name/ # 6-char epoch-based base26 ID (a-z only)
34
34
  ├── input.md # User requirements
35
35
  ├── decisions.md # Q&A from planning interviews
36
36
  ├── plans/ # Task breakdowns
37
- │ ├── 001-task-name.md
38
- │ └── 002-another-task.md
37
+ │ ├── 01-task-name.md # 2-char base36 task ID
38
+ │ └── 02-another-task.md
39
39
  └── outcomes/ # Completed task results
40
- ├── 001-task-name.md
41
- └── 002-another-task.md
40
+ ├── 01-task-name.md
41
+ └── 02-another-task.md
42
42
  ```
43
43
 
44
44
  ### Plan File Structure
@@ -54,7 +54,7 @@ Each plan file follows this structure:
54
54
  [Why this task is needed]
55
55
 
56
56
  ## Dependencies
57
- [Optional - comma-separated task IDs, e.g., "001, 002"]
57
+ [Optional - comma-separated task IDs, e.g., "01, 02"]
58
58
  [If a dependency fails, this task is blocked]
59
59
 
60
60
  ## Requirements
@@ -75,7 +75,7 @@ Each plan file follows this structure:
75
75
 
76
76
  **Dependencies Section**:
77
77
  - Optional - omit if task has no dependencies
78
- - Uses task IDs only (e.g., `001, 002`)
78
+ - Uses task IDs only (e.g., `01, 02`)
79
79
  - If a dependency fails, dependent tasks are automatically blocked
80
80
 
81
81
  ## Development Commands
@@ -134,16 +134,28 @@ npm run lint # Type check without emit
134
134
  - All failure outcomes end with `<promise>FAILED</promise>` marker
135
135
 
136
136
  ### Project Naming Convention
137
- - Format: `NNN-project-name` (001-999) then base36 `XXX-project-name` (a00-zzz)
137
+ - Format: `XXXXXX-project-name` where `XXXXXX` is a 6-character base26 ID (a-z only)
138
+ - ID is generated from `(current_unix_seconds - RAF_EPOCH)` encoded as base26, left-padded with 'a' to 6 characters
139
+ - Base26 encoding: a=0, b=1, ..., z=25 (lowercase letters only, no digits)
140
+ - RAF_EPOCH is 2026-01-01T00:00:00Z (Unix timestamp 1767225600)
138
141
  - Project name is kebab-case derived from core feature
139
- - Supports 46,000+ projects
142
+ - IDs are unique by timestamp and sort chronologically
143
+ - Project IDs are visually distinct from task IDs (which use base36 with digits)
144
+
145
+ ### Task ID Format
146
+ - Task IDs are 2-character base36 strings, zero-padded (e.g., `01`, `0a`, `1z`, `zz`)
147
+ - Base36 charset: 0-9, a-z (lowercase)
148
+ - Supports up to 1296 tasks per project (00-zz)
149
+ - Task numbering starts at `01` (not `00`)
150
+ - Sort order: 00, 01, ..., 09, 0a, 0b, ..., 0z, 10, 11, ..., zz
151
+ - Utilities in `src/utils/paths.ts`: `encodeTaskId()`, `decodeTaskId()`, `TASK_ID_PATTERN`
152
+ - File naming: `01-task-name.md`, `0a-task-name.md`, etc.
140
153
 
141
154
  ### Project Identifier Resolution
142
155
  Support multiple identifier formats in commands:
143
- 1. Numeric ID: `3` or `003`
144
- 2. Base36 ID: `a00`, `a01`
145
- 3. Project name: `fix-stuff` (case-insensitive, partial match)
146
- 4. Full folder name: `001-fix-stuff` (exact match)
156
+ 1. Base26 ID: `abcdef` (6-character epoch-based ID, a-z only)
157
+ 2. Project name: `fix-stuff` (case-insensitive, partial match)
158
+ 3. Full folder name: `abcdef-fix-stuff` (exact match)
147
159
 
148
160
  Use `resolveProjectIdentifierWithDetails()` from `src/utils/paths.ts`
149
161
 
@@ -159,9 +171,9 @@ Claude writes a concise description of what was accomplished, focusing on the ac
159
171
 
160
172
  Examples:
161
173
  ```
162
- RAF[005:001] Add validation for user input fields
163
- RAF[005:002] Fix null pointer in auth handler
164
- RAF[a01:003] Refactor database connection pooling
174
+ RAF[abcdef:01] Add validation for user input fields
175
+ RAF[abcdef:02] Fix null pointer in auth handler
176
+ RAF[abaaba:03] Refactor database connection pooling
165
177
  ```
166
178
 
167
179
  - Claude commits code changes and outcome file together in one commit per task
@@ -174,12 +186,96 @@ RAF[a01:003] Refactor database connection pooling
174
186
  - New tasks numbered sequentially after last task
175
187
  - No modification of existing plan files
176
188
 
177
- ### Multi-Project Execution
178
- - `raf do <projects...>` supports multiple projects
179
- - Sequential execution (not parallel) for git safety
180
- - Continue on failure, report results at end
181
- - Deduplicates repeated projects
182
- - Non-verbose per-project summaries reflect tasks executed in the current run (remaining tasks at start) so elapsed time matches the work performed
189
+ ### Worktree Mode
190
+ - `raf plan --worktree` and `raf do --worktree` run in an isolated git worktree
191
+ - Worktree path: `~/.raf/worktrees/<repo-basename>/<project-id>` (e.g., `~/.raf/worktrees/myapp/abcdef-my-feature`)
192
+ - Branch name matches the project folder name (e.g., `abcdef-my-feature`)
193
+ - `--worktree` flag is required on `plan`; on `do` it is auto-detected when a worktree project is selected from the picker
194
+ - `raf do` without arguments auto-discovers pending worktree projects and merges them into the project picker
195
+ - Worktree projects are labeled with `[worktree]` suffix in the picker
196
+ - Selecting a worktree project automatically enables worktree mode (post-action picker, worktree cwd)
197
+ - Projects are deduplicated: when a folder exists in both local and worktree, the worktree version is shown
198
+ - Mixed local and worktree projects are sorted chronologically
199
+ - `raf status` automatically discovers and displays worktree projects (no flag needed)
200
+ - List mode: worktree projects that differ from main repo shown under `Worktrees:` header
201
+ - Single project mode: shows both main and worktree state when they differ
202
+ - Identical worktree projects are hidden; worktree-only projects always shown
203
+ - Lifecycle: create worktree -> plan in worktree -> pick post-action -> execute in worktree -> auto-run chosen action
204
+ - **Post-execution picker**: Before task execution, an interactive picker asks what to do after tasks complete:
205
+ 1. **Merge** — merge branch into original branch (fast-forward preferred, merge-commit fallback)
206
+ 2. **Create PR** — push branch and create a GitHub PR (uses `createPullRequest()` from `pull-request.ts`)
207
+ 3. **Leave branch** — do nothing, keep the branch as-is
208
+ - PR option runs preflight checks immediately; falls back to "leave" if `gh` CLI is missing or unauthenticated
209
+ - On task failure, the chosen post-action is skipped with a message
210
+ - Worktree cleanup: all post-actions (merge, PR, leave) clean up the worktree directory (branch preserved in git)
211
+ - On failure, worktree is kept for inspection
212
+ - `raf plan --amend --worktree` auto-recreates the worktree when it was cleaned up:
213
+ - If the branch exists (common after cleanup): recreates worktree from the existing branch
214
+ - If no branch exists: creates a fresh worktree and copies project files from the main repo
215
+ - On plan failure with no plan files created, the worktree is cleaned up automatically
216
+ - Core utilities in `src/core/worktree.ts`: `createWorktree()`, `createWorktreeFromBranch()`, `branchExists()`, `validateWorktree()`, `mergeWorktreeBranch()`, `removeWorktree()`, `listWorktreeProjects()`
217
+ - Post-execution picker: `pickPostExecutionAction()` and `PostExecutionAction` type exported from `src/commands/do.ts`
218
+
219
+ ### PR Creation from Worktree
220
+ - `src/core/pull-request.ts` provides `createPullRequest()` to create GitHub PRs from worktree branches
221
+ - Requires `gh` CLI installed and authenticated (`gh auth login`)
222
+ - Auto-detects base branch (from `refs/remotes/origin/HEAD`, falling back to `main`/`master`)
223
+ - PR title derived from project name (kebab-case to human-readable)
224
+ - PR body generated by Claude Haiku summarizing input.md, decisions.md, and outcomes
225
+ - Falls back to simple body if Claude is unavailable
226
+ - Auto-pushes branch to origin if not already pushed
227
+ - Preflight checks: `prPreflight()` validates gh CLI, authentication, GitHub remote
228
+ - Key functions: `createPullRequest()`, `prPreflight()`, `generatePrBody()`, `generatePrTitle()`, `detectBaseBranch()`
229
+
230
+
231
+ ## PR Review
232
+
233
+ When reviewing a PR or addressing PR comments, use `gh` CLI to read PR details:
234
+
235
+ ```bash
236
+ # View PR description and metadata
237
+ gh pr view <number>
238
+
239
+ # View PR diff
240
+ gh pr diff <number>
241
+
242
+ # View review comments (inline code comments)
243
+ gh api repos/{owner}/{repo}/pulls/<number>/comments
244
+
245
+ # View PR review summaries
246
+ gh api repos/{owner}/{repo}/pulls/<number>/reviews
247
+
248
+ # View general PR conversation comments (non-inline)
249
+ gh api repos/{owner}/{repo}/issues/<number>/comments
250
+
251
+ # List PR files changed
252
+ gh pr diff <number> --name-only
253
+
254
+ # View PR checks/CI status
255
+ gh pr checks <number>
256
+ ```
257
+
258
+ ### Checking Out PR Branches
259
+
260
+ PR branches are often checked out in git worktrees. Before creating a new checkout, check for existing worktrees:
261
+
262
+ ```bash
263
+ # List existing worktrees
264
+ git worktree list
265
+
266
+ # Find the branch name from the PR
267
+ gh pr view <number> --json headRefName -q .headRefName
268
+
269
+ # If gh is rate-limited, list remote branches to find it
270
+ git ls-remote --heads origin
271
+
272
+ # Check if branch is already in a worktree (look for the path in worktree list output)
273
+ # If it is, work directly in that worktree path (e.g., /Users/eremeev/.raf/worktrees/Paperi/<branch>)
274
+ # If not, checkout normally:
275
+ git fetch origin <branch> && git checkout <branch>
276
+ ```
277
+
278
+ When working in a worktree, use absolute paths to the worktree directory for all file operations and builds.
183
279
 
184
280
  ## Important Reminders
185
281
 
@@ -0,0 +1,25 @@
1
+ # Project Decisions
2
+
3
+ ## For the amendment iteration reference feature — when a new task looks like a follow-up/fix to a previous completed task, how should the reference appear in the new plan?
4
+ Context section, make sure to put file path to prev task outcome.
5
+
6
+ ## Should the iteration reference be determined automatically by the planning Claude (via prompt instructions), or should RAF code analyze task content programmatically?
7
+ Prompt-based (Recommended) — update the amend system prompt to instruct Claude to identify follow-ups and include references to previous tasks in new plans.
8
+
9
+ ## For verbose task name display — should the task name appear everywhere task ID is shown, or just in the main header?
10
+ Everywhere — show task name alongside ID in all verbose log messages, status updates, and summaries.
11
+
12
+ ## For streaming Claude output in verbose mode — is it currently broken or is there a different streaming behavior wanted?
13
+ In verbose mode only a summary of completed work is shown, not constant stream of how Claude executes. Need to investigate and fix — streaming should show real-time Claude output.
14
+
15
+ ## For verifying git commits before halting Claude — how should RAF check that the commit landed?
16
+ All three checks combined: (1) HEAD changed from before task, (2) new commit message starts with RAF[project:task], and (3) outcome file is committed in git.
17
+
18
+ ## If the commit hasn't landed when the grace period expires, what should happen?
19
+ Extend grace period — keep waiting (with a maximum cap) until the commit appears or a hard timeout is reached.
20
+
21
+ ## What should the maximum cap be for the extended grace period when waiting for commit?
22
+ 180 seconds (3 minutes total max wait for commit). Current grace period is 60 seconds.
23
+
24
+ ## For the verbose streaming fix — any suspicion about what's wrong?
25
+ Investigate fully — debug the entire verbose code path end-to-end to find why streaming isn't working.
@@ -0,0 +1,3 @@
1
+ - [ ] in amendment, if new task looks like follow up or fix to previous completed task in the project - you should reference it in new plan (iteration plan)
2
+ - [ ] in 'raf do --verbose' add task name (not just "Executing task 011..."). also steam output from claude into terminal in verbose mode
3
+ - [ ] raf halted before commit was done. make sure commit is there before halting claude by checking commits. see previous halt work in commit 4d3868c3ef4c607c59829e94462ffd0490d82a98
@@ -0,0 +1,25 @@
1
+ # Outcome: Amend Iteration References
2
+
3
+ ## Summary
4
+ Enhanced the amend planning prompt to include outcome file paths for completed tasks and instruct Claude to reference previous task outcomes when creating follow-up/fix plans.
5
+
6
+ ## Changes Made
7
+
8
+ ### `src/prompts/amend.ts`
9
+ - **Enhanced `existingTasksSummary`**: Completed tasks now include an `Outcome:` line with the full path to their outcome file (e.g., `Outcome: /project/outcomes/001-setup.md`). Non-completed tasks are unaffected.
10
+ - **Added follow-up task instructions**: New "Identifying Follow-up Tasks" paragraph in Step 2 instructs Claude to reference previous task outcomes in the Context section when creating follow-up, fix, or iteration tasks. Includes the exact format to use.
11
+ - **Updated plan template**: Added a placeholder line in the Context section showing the follow-up reference format.
12
+
13
+ ### `tests/unit/plan-command.test.ts`
14
+ - Added 3 new tests:
15
+ - Verifies outcome file paths appear for completed tasks in the task summary
16
+ - Verifies outcome file paths do NOT appear for pending/failed tasks
17
+ - Verifies follow-up task instructions are present in the system prompt
18
+
19
+ ## Acceptance Criteria
20
+ - [x] Amend prompt includes outcome file paths for completed tasks in the task summary
21
+ - [x] Prompt instructs Claude to identify follow-up/fix tasks and reference outcomes in Context section
22
+ - [x] Existing amend functionality is not broken (all 40 plan-command tests pass)
23
+ - [x] All tests pass (1 pre-existing failure in planning-prompt.test.ts is unrelated)
24
+
25
+ <promise>COMPLETE</promise>
@@ -0,0 +1,31 @@
1
+ # Outcome: Verbose Task Name Display
2
+
3
+ ## Summary
4
+ Updated all verbose mode log messages in `do.ts` to include the task name alongside the task ID, using the format `task 011 (fix-login-bug)` instead of just `task 011`.
5
+
6
+ ## Changes Made
7
+
8
+ ### `src/commands/do.ts`
9
+ - **Added `taskLabel` variable** (line 449): Computes `${task.id} (${displayName})` when the name differs from the ID, or just `${task.id}` when they're the same (to avoid redundant `001 (001)` display).
10
+ - **Updated 7 verbose log messages** to use `taskLabel`:
11
+ - Blocked task warning: `Task ${taskLabel} blocked by failed dependency: ...`
12
+ - Retry message: `Retrying task ${taskLabel} (previously failed)...`
13
+ - Force re-run message: `Re-running task ${taskLabel} (force mode)...`
14
+ - Execute message: `Executing task ${taskLabel}...`
15
+ - Retry loop message: `Retry N/M for task ${taskLabel}...`
16
+ - Completion message: `Task ${taskLabel} completed (elapsed)`
17
+ - Stash message: `Changes for task ${taskLabel} stashed as: ...`
18
+ - Failure message: `Task ${taskLabel} failed: reason (elapsed)`
19
+
20
+ ### No test changes needed
21
+ - The `formatRetryHistoryForConsole` function already supported task name display
22
+ - No existing tests assert on verbose log message format directly
23
+ - All 757 tests pass (1 pre-existing failure in planning-prompt.test.ts is unrelated)
24
+
25
+ ## Acceptance Criteria
26
+ - [x] All verbose log messages that mention a task ID also show the task name
27
+ - [x] Format is consistent across all messages (`taskLabel` pattern)
28
+ - [x] Non-verbose mode is unaffected (uses `formatTaskProgress` separately)
29
+ - [x] All tests pass
30
+
31
+ <promise>COMPLETE</promise>
@@ -0,0 +1,48 @@
1
+ # Outcome: Verbose Streaming Fix
2
+
3
+ ## Summary
4
+ Fixed `runVerbose()` to stream Claude's real-time execution output (tool calls, file operations, text) by using `--output-format stream-json --verbose` instead of plain `-p` mode which only showed the final summary.
5
+
6
+ ## Root Cause
7
+ The `runVerbose()` method used the same `-p` (print) flag as `run()`, which runs Claude in non-interactive mode and only outputs the final assistant response text. This meant users saw a summary of completed work rather than real-time streaming of Claude's activity.
8
+
9
+ ## Changes Made
10
+
11
+ ### `src/parsers/stream-renderer.ts` (NEW)
12
+ - **Stream event parser**: Parses NDJSON lines from Claude CLI `stream-json` output
13
+ - **Human-readable rendering**: Converts events to user-friendly display:
14
+ - Text blocks: displayed directly
15
+ - Tool calls: descriptive one-line summaries (e.g., `→ Reading /src/main.ts`, `→ Running: npm test`)
16
+ - System/result events: suppressed (not useful for display)
17
+ - **Tool descriptions**: Custom formatting for Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, TodoWrite, Task, and NotebookEdit tools
18
+ - **Text content extraction**: Returns text content separately for completion marker detection and output parsing
19
+
20
+ ### `src/core/claude-runner.ts`
21
+ - **Modified `runVerbose()` spawn args**: Added `--output-format stream-json --verbose` flags to get real-time NDJSON streaming events
22
+ - **NDJSON line buffering**: Added line buffer to handle data chunks that split across NDJSON line boundaries
23
+ - **Event rendering pipeline**: Each complete NDJSON line is parsed by `renderStreamEvent()`, display text goes to stdout, text content accumulates in `output` for completion detection and parsing
24
+ - **Preserved all existing behavior**: Timeout, context overflow detection, completion marker detection, outcome file polling, and kill mechanisms all work unchanged
25
+ - **`run()` method unchanged**: Non-verbose mode remains exactly as before
26
+
27
+ ### `tests/unit/stream-renderer.test.ts` (NEW)
28
+ - 25 tests covering all event types: system, assistant (text), assistant (tool_use), user (tool results), result
29
+ - Edge cases: empty lines, invalid JSON, empty content, unknown events
30
+ - Tool-specific rendering: all 11 supported tools tested
31
+
32
+ ### `tests/unit/claude-runner.test.ts`
33
+ - Added 4 new tests in `verbose stream-json output` describe block:
34
+ - Verifies `runVerbose()` includes `--output-format stream-json --verbose` flags
35
+ - Verifies `run()` does NOT include these flags
36
+ - Verifies NDJSON assistant events are parsed and text extracted correctly
37
+ - Verifies tool_use events don't add text to output
38
+
39
+ ## Acceptance Criteria
40
+ - [x] `raf do --verbose` shows Claude's real-time execution (tool calls, file operations, thinking)
41
+ - [x] Completion marker detection still works correctly
42
+ - [x] Timeout mechanism still functions
43
+ - [x] Context overflow detection still works
44
+ - [x] Non-verbose mode (`raf do`) is completely unaffected
45
+ - [x] Success/failure parsing still works from the captured output
46
+ - [x] All existing tests pass (786 pass, 1 pre-existing failure in planning-prompt.test.ts is unrelated)
47
+
48
+ <promise>COMPLETE</promise>
@@ -0,0 +1,56 @@
1
+ # Outcome: Commit Verification Before Halt
2
+
3
+ ## Summary
4
+ Added commit verification to the grace period logic so that when a COMPLETE marker is detected, the system verifies the expected git commit has actually landed before terminating. If the commit hasn't landed within the initial 60-second grace period, it extends polling up to a hard maximum of 180 seconds.
5
+
6
+ ## Changes Made
7
+
8
+ ### `src/core/git.ts`
9
+ - **`getHeadCommitHash()`**: Returns the current HEAD commit hash (or null if not in a git repo)
10
+ - **`getHeadCommitMessage()`**: Returns the HEAD commit message first line (or null)
11
+ - **`isFileCommittedInHead(filePath)`**: Checks if a file exists in HEAD's tree using `git ls-tree`
12
+
13
+ ### `src/core/claude-runner.ts`
14
+ - **New exports**: `COMPLETION_HARD_MAX_MS` (180s), `COMMIT_POLL_INTERVAL_MS` (10s), `CommitContext` interface
15
+ - **New `commitContext` field in `ClaudeRunnerOptions`**: Allows passing pre-execution HEAD hash, expected commit prefix, and outcome file path
16
+ - **`verifyCommit()` helper**: Checks all three conditions (HEAD changed, message prefix matches, outcome file committed)
17
+ - **Updated `createCompletionDetector()`**: Accepts optional `commitContext` parameter. On grace period expiry:
18
+ - If COMPLETE marker and `commitContext` provided: verifies commit before killing
19
+ - If commit not verified: starts polling every 10s up to 180s total
20
+ - If FAILED marker or no `commitContext`: kills immediately (existing behavior)
21
+ - **Both `run()` and `runVerbose()`**: Pass `commitContext` through to completion detector
22
+
23
+ ### `src/commands/do.ts`
24
+ - **Captures HEAD hash** before each task execution attempt using `getHeadCommitHash()`
25
+ - **Builds `commitContext`** with `preExecutionHead`, `expectedPrefix` (e.g., `RAF[005:001]`), and `outcomeFilePath`
26
+ - **Passes `commitContext`** to both `run()` and `runVerbose()` calls
27
+ - Gracefully handles non-git-repo case (skips commit verification)
28
+
29
+ ### `tests/unit/git-commit-helpers.test.ts` (NEW)
30
+ - 11 tests covering all three new git functions:
31
+ - `getHeadCommitHash`: normal, not-in-repo, empty output, whitespace trimming
32
+ - `getHeadCommitMessage`: normal, not-in-repo, empty output
33
+ - `isFileCommittedInHead`: file exists, file missing, not-in-repo, command failure
34
+
35
+ ### `tests/unit/claude-runner.test.ts`
36
+ - Added mock for `git.js` module (`getHeadCommitHash`, `getHeadCommitMessage`, `isFileCommittedInHead`)
37
+ - Added 7 new tests in `commit verification during grace period` describe block:
38
+ - Commit verified within initial grace period (kills normally)
39
+ - Commit found during extended polling (extends, then kills)
40
+ - Commit never lands (hard max at 180s)
41
+ - FAILED markers don't trigger commit verification
42
+ - Backward compatible without commitContext
43
+ - Verifies commit message prefix must match
44
+ - Verifies outcome file must be committed
45
+
46
+ ## Acceptance Criteria
47
+ - [x] HEAD hash is recorded before each task execution
48
+ - [x] Grace period checks for commit matching `RAF[project:task]` pattern
49
+ - [x] Grace period checks that outcome file is committed
50
+ - [x] Grace period extends up to 180 seconds if commit not found
51
+ - [x] Process is killed with a warning after 180 seconds if commit never lands
52
+ - [x] Normal flow (commit lands within 60s) is not affected
53
+ - [x] All existing tests pass (805 pass, 1 pre-existing failure in planning-prompt.test.ts is unrelated)
54
+ - [x] New tests cover: commit found within grace, commit found in extended grace, commit never found (hard timeout)
55
+
56
+ <promise>COMPLETE</promise>
@@ -0,0 +1,35 @@
1
+ # Task: Amend Iteration References
2
+
3
+ ## Objective
4
+ When amending a project, instruct the planning Claude to reference previous completed tasks (with outcome file paths) in the Context section of new plans that are follow-ups or fixes.
5
+
6
+ ## Context
7
+ Currently, amendment mode shows existing tasks with their status (COMPLETED/PENDING/FAILED) but doesn't guide Claude to treat new tasks as iterations on previous work. When a user amends a project to fix or follow up on a completed task, the new plan should reference the previous task's outcome file so the executing agent has full context about what was done before.
8
+
9
+ ## Requirements
10
+ - Update the amend system prompt in `src/prompts/amend.ts` to instruct Claude to:
11
+ - Identify when new tasks are follow-ups, fixes, or iterations of previously completed tasks
12
+ - Include a reference to the previous task's outcome file path in the Context section of the new plan
13
+ - Use the format: "This is a follow-up to task NNN. See outcome: {projectPath}/outcomes/NNN-task-name.md"
14
+ - The existing tasks summary already includes task IDs and names — enhance it to also show the outcome file path for completed tasks so Claude has the information readily available
15
+ - This is purely a prompt engineering change — no programmatic detection logic needed
16
+ - Do NOT modify the plan template structure (no new dedicated fields) — use the existing Context section
17
+
18
+ ## Implementation Steps
19
+ 1. Read the current amend prompt in `src/prompts/amend.ts`
20
+ 2. Enhance the `existingTasksSummary` generation to include outcome file paths for completed tasks
21
+ 3. Add instructions in the system prompt (Step 2: Analyze New Requirements section) telling Claude to identify follow-up/fix tasks and reference previous outcomes in the Context section
22
+ 4. Add an example in the prompt showing how to reference a previous task's outcome
23
+ 5. Update tests for the amend prompt if any exist
24
+
25
+ ## Acceptance Criteria
26
+ - [ ] Amend prompt includes outcome file paths for completed tasks in the task summary
27
+ - [ ] Prompt instructs Claude to identify follow-up/fix tasks and reference outcomes in Context section
28
+ - [ ] Existing amend functionality is not broken
29
+ - [ ] All tests pass
30
+
31
+ ## Notes
32
+ - The outcome file path follows the pattern: `{projectPath}/outcomes/{taskId}-{taskName}.md`
33
+ - Only completed tasks have meaningful outcome files to reference
34
+ - The `AmendPromptParams` interface already includes `projectPath` which can be used to construct outcome paths
35
+ - The `existingTasks` array includes `planFile` from which the task name can be extracted for outcome path construction
@@ -0,0 +1,38 @@
1
+ # Task: Verbose Task Name Display
2
+
3
+ ## Objective
4
+ Show the task name alongside the task ID in all verbose mode log messages (e.g., "Executing task 011 (fix-login-bug)..." instead of "Executing task 011...").
5
+
6
+ ## Context
7
+ Currently in verbose mode, log messages reference tasks by ID only (e.g., "Executing task 011..."). The task name is available via `extractTaskNameFromPlanFile()` and is already stored in `displayName`, but not consistently used in all log messages. Users need the task name to quickly understand what's running without cross-referencing plan files.
8
+
9
+ ## Requirements
10
+ - Add task name to ALL verbose log messages that reference a task ID, including:
11
+ - "Executing task 011..." → "Executing task 011 (fix-login-bug)..."
12
+ - "Retrying task 011 (previously failed)..." → include name
13
+ - "Re-running task 011 (force mode)..." → include name
14
+ - "Task 011 completed (2m 30s)" → include name
15
+ - "Task 011 failed: reason (2m 30s)" → include name
16
+ - "Task 011 blocked by failed dependency: 003" → include name
17
+ - Retry messages
18
+ - Changes stashed messages
19
+ - The task name is already computed as `displayName` in `do.ts` — use it consistently
20
+ - Also update the `logger.setContext()` call if it's being used (currently no-op but may be restored)
21
+ - Update the verbose summary section to include task names where applicable
22
+
23
+ ## Implementation Steps
24
+ 1. Read `src/commands/do.ts` and identify all verbose log messages that reference task IDs
25
+ 2. Update each message to include `displayName` in parentheses after the task ID
26
+ 3. Ensure the format is consistent: `task ${task.id} (${displayName})` everywhere
27
+ 4. Update tests if any test verbose output format
28
+
29
+ ## Acceptance Criteria
30
+ - [ ] All verbose log messages that mention a task ID also show the task name
31
+ - [ ] Format is consistent across all messages
32
+ - [ ] Non-verbose mode is unaffected
33
+ - [ ] All tests pass
34
+
35
+ ## Notes
36
+ - `displayName` is already computed at line 447 of `do.ts` as `taskName ?? task.id`
37
+ - When `displayName` equals `task.id` (name extraction failed), showing it in parens would be redundant — consider only showing parens when name differs from ID
38
+ - The `setContext` and `clearContext` methods on logger are currently no-ops (deprecated) but the calls remain in do.ts
@@ -0,0 +1,45 @@
1
+ # Task: Verbose Streaming Fix
2
+
3
+ ## Objective
4
+ Investigate and fix why verbose mode only shows a summary of completed work instead of streaming Claude's real-time execution output.
5
+
6
+ ## Context
7
+ The `runVerbose()` method in `claude-runner.ts` does call `process.stdout.write(text)` on stdout data, but users report only seeing a summary rather than a real-time stream. The likely root cause is that Claude CLI is invoked with the `-p` (print/pipe) flag, which runs in non-interactive mode and only outputs the final assistant response text — not the intermediate tool calls, file reads, code edits, and thinking steps that constitute the real-time execution flow.
8
+
9
+ The non-verbose `run()` method correctly uses `-p` since it only needs the final output for parsing. But `runVerbose()` needs a different approach to show Claude's work as it happens.
10
+
11
+ ## Requirements
12
+ - Investigate the exact cause of why streaming doesn't show real-time Claude activity
13
+ - Fix `runVerbose()` to stream Claude's real-time execution output (tool calls, file operations, code writing, etc.)
14
+ - The fix likely involves either:
15
+ - Removing `-p` flag and using a different mode that streams intermediate output
16
+ - Using `--output-format stream-json` to get streaming JSON events and rendering them
17
+ - Using PTY-based execution (like `runInteractive`) but without stdin interaction
18
+ - The completion marker detection must still work with the new approach
19
+ - Output parsing for success/failure must still function correctly
20
+ - The timeout mechanism must still work
21
+ - Non-verbose mode must remain unchanged
22
+
23
+ ## Implementation Steps
24
+ 1. Investigate what Claude CLI output modes are available (check `claude --help` or documentation)
25
+ 2. Determine the best approach for streaming real-time output while maintaining completion detection
26
+ 3. Modify `runVerbose()` to use the chosen streaming approach
27
+ 4. Ensure completion markers can still be detected in the new output format
28
+ 5. Test that timeout, context overflow detection, and kill mechanisms still work
29
+ 6. Verify output can still be parsed for success/failure determination
30
+
31
+ ## Acceptance Criteria
32
+ - [ ] `raf do --verbose` shows Claude's real-time execution (tool calls, file operations, thinking)
33
+ - [ ] Completion marker detection still works correctly
34
+ - [ ] Timeout mechanism still functions
35
+ - [ ] Context overflow detection still works
36
+ - [ ] Non-verbose mode (`raf do`) is completely unaffected
37
+ - [ ] Success/failure parsing still works from the captured output
38
+ - [ ] All existing tests pass (update as needed for new implementation)
39
+
40
+ ## Notes
41
+ - The `run()` method must NOT be changed — only `runVerbose()` needs modification
42
+ - Claude CLI streaming options may include `--output-format stream-json` which outputs JSON events
43
+ - If using stream-json, a renderer/formatter will be needed to display events in a human-readable way
44
+ - PTY-based approach (similar to `runInteractive`) could work but would need `--dangerously-skip-permissions` to avoid interactive prompts
45
+ - The `activeProcess` tracking needs to work with whichever approach is chosen for the shutdown handler
@@ -0,0 +1,62 @@
1
+ # Task: Commit Verification Before Halt
2
+
3
+ ## Objective
4
+ Before halting Claude after detecting a completion marker, verify that the expected git commit has actually been made, extending the grace period if the commit hasn't landed yet.
5
+
6
+ ## Context
7
+ The current halt mechanism in `claude-runner.ts` detects completion markers (`<promise>COMPLETE/FAILED</promise>`) and starts a fixed 60-second grace period before killing Claude. However, if Claude hasn't finished its git commit within that window, the process gets killed mid-commit, potentially leaving the repository in a broken state. The previous halt work was introduced in commit `4d3868c`. This task adds commit verification to ensure the grace period only expires after the commit is confirmed.
8
+
9
+ See previous halt work: commit `4d3868c3ef4c607c59829e94462ffd0490d82a98`
10
+
11
+ ## Dependencies
12
+ 003
13
+
14
+ ## Requirements
15
+ - Record the HEAD commit hash before task execution begins
16
+ - After the grace period triggers, verify the commit landed by checking ALL three conditions:
17
+ 1. HEAD has changed from the pre-execution hash
18
+ 2. The new HEAD commit message starts with the expected `RAF[project:task]` pattern
19
+ 3. The outcome file is tracked in git (committed, not just on disk)
20
+ - If the commit hasn't landed when the initial grace period (60s) expires:
21
+ - Extend the grace period by polling for the commit
22
+ - Continue extending until either the commit is confirmed or a hard maximum of 180 seconds is reached
23
+ - Poll at a reasonable interval (e.g., every 10 seconds)
24
+ - If the hard maximum is reached without commit confirmation, kill the process and log a warning
25
+ - Add git helper functions to `src/core/git.ts` for:
26
+ - Getting the current HEAD hash
27
+ - Checking if a commit message matches a pattern
28
+ - Checking if a file is committed in HEAD
29
+ - The completion detector factory (`createCompletionDetector`) needs additional parameters:
30
+ - Pre-execution HEAD hash
31
+ - Expected commit message prefix (e.g., `RAF[005:001]`)
32
+ - Outcome file path (already available)
33
+ - Pass the necessary context from `do.ts` when creating the completion detector
34
+
35
+ ## Implementation Steps
36
+ 1. Add new git utility functions to `src/core/git.ts`:
37
+ - `getHeadCommitHash()`: returns current HEAD hash
38
+ - `getHeadCommitMessage()`: returns HEAD commit message
39
+ - `isFileCommittedInHead(filePath)`: checks if file is in HEAD commit
40
+ 2. Update `createCompletionDetector` in `claude-runner.ts` to accept commit verification parameters
41
+ 3. Modify the grace period logic: instead of a single `setTimeout`, use an interval that checks for the commit
42
+ 4. If initial 60s grace period expires without commit, continue polling up to 180s total
43
+ 5. Update `do.ts` to capture HEAD hash before task execution and pass commit context to the runner
44
+ 6. Add unit tests for the new git functions
45
+ 7. Add unit tests for the extended grace period behavior
46
+
47
+ ## Acceptance Criteria
48
+ - [ ] HEAD hash is recorded before each task execution
49
+ - [ ] Grace period checks for commit matching `RAF[project:task]` pattern
50
+ - [ ] Grace period checks that outcome file is committed
51
+ - [ ] Grace period extends up to 180 seconds if commit not found
52
+ - [ ] Process is killed with a warning after 180 seconds if commit never lands
53
+ - [ ] Normal flow (commit lands within 60s) is not affected
54
+ - [ ] All existing tests pass
55
+ - [ ] New tests cover: commit found within grace, commit found in extended grace, commit never found (hard timeout)
56
+
57
+ ## Notes
58
+ - The `ClaudeRunnerOptions` interface may need new fields for the commit context
59
+ - On task failure, Claude does NOT commit (changes are stashed) — the commit check should only apply when a COMPLETE marker is detected, not FAILED
60
+ - The project number and task ID are already available in `do.ts` where the runner is called
61
+ - Use `execSync` for git commands (consistent with existing `git.ts` functions)
62
+ - Handle "not in git repo" gracefully — skip commit verification if not in a git repo