rafcode 1.3.2 → 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 (391) hide show
  1. package/CLAUDE.md +118 -22
  2. package/RAF/aaaacu-worktree-weaver/decisions.md +88 -0
  3. package/RAF/aaaacu-worktree-weaver/input.md +27 -0
  4. package/RAF/aaaacu-worktree-weaver/outcomes/01-git-worktree-utilities.md +41 -0
  5. package/RAF/aaaacu-worktree-weaver/outcomes/02-worktree-plan-command.md +44 -0
  6. package/RAF/aaaacu-worktree-weaver/outcomes/03-worktree-do-command.md +58 -0
  7. package/RAF/aaaacu-worktree-weaver/outcomes/04-auto-merge-and-cleanup.md +40 -0
  8. package/RAF/aaaacu-worktree-weaver/outcomes/05-worktree-tests.md +43 -0
  9. package/RAF/aaaacu-worktree-weaver/outcomes/06-update-documentation.md +33 -0
  10. package/RAF/aaaacu-worktree-weaver/plans/01-git-worktree-utilities.md +51 -0
  11. package/RAF/aaaacu-worktree-weaver/plans/02-worktree-plan-command.md +93 -0
  12. package/RAF/aaaacu-worktree-weaver/plans/03-worktree-do-command.md +81 -0
  13. package/RAF/aaaacu-worktree-weaver/plans/04-auto-merge-and-cleanup.md +51 -0
  14. package/RAF/aaaacu-worktree-weaver/plans/05-worktree-tests.md +52 -0
  15. package/RAF/aaaacu-worktree-weaver/plans/06-update-documentation.md +55 -0
  16. package/RAF/aaaacv-trim-the-fat/decisions.md +34 -0
  17. package/RAF/aaaacv-trim-the-fat/input.md +5 -0
  18. package/RAF/aaaacv-trim-the-fat/outcomes/01-add-worktree-support-to-status.md +43 -0
  19. package/RAF/aaaacv-trim-the-fat/outcomes/02-remove-multi-project-from-do.md +50 -0
  20. package/RAF/aaaacv-trim-the-fat/outcomes/03-commit-artifacts-on-amend.md +35 -0
  21. package/RAF/aaaacv-trim-the-fat/outcomes/04-worktree-aware-exit-messages.md +36 -0
  22. package/RAF/aaaacv-trim-the-fat/plans/01-add-worktree-support-to-status.md +43 -0
  23. package/RAF/aaaacv-trim-the-fat/plans/02-remove-multi-project-from-do.md +44 -0
  24. package/RAF/aaaacv-trim-the-fat/plans/03-commit-artifacts-on-amend.md +38 -0
  25. package/RAF/aaaacv-trim-the-fat/plans/04-worktree-aware-exit-messages.md +38 -0
  26. package/RAF/aaaacw-prune-cycle/decisions.md +25 -0
  27. package/RAF/aaaacw-prune-cycle/input.md +5 -0
  28. package/RAF/aaaacw-prune-cycle/outcomes/01-create-worktree-from-branch.md +32 -0
  29. package/RAF/aaaacw-prune-cycle/outcomes/02-cleanup-worktree-on-success.md +33 -0
  30. package/RAF/aaaacw-prune-cycle/outcomes/03-amend-recreate-worktree.md +40 -0
  31. package/RAF/aaaacw-prune-cycle/plans/01-create-worktree-from-branch.md +31 -0
  32. package/RAF/aaaacw-prune-cycle/plans/02-cleanup-worktree-on-success.md +38 -0
  33. package/RAF/aaaacw-prune-cycle/plans/03-amend-recreate-worktree.md +50 -0
  34. package/RAF/aaaacx-epoch-shift/decisions.md +25 -0
  35. package/RAF/aaaacx-epoch-shift/input.md +1 -0
  36. package/RAF/aaaacx-epoch-shift/outcomes/01-epoch-id-generation.md +34 -0
  37. package/RAF/aaaacx-epoch-shift/outcomes/02-update-pattern-matching.md +32 -0
  38. package/RAF/aaaacx-epoch-shift/outcomes/03-update-tests.md +59 -0
  39. package/RAF/aaaacx-epoch-shift/outcomes/04-update-documentation.md +30 -0
  40. package/RAF/aaaacx-epoch-shift/plans/01-epoch-id-generation.md +40 -0
  41. package/RAF/aaaacx-epoch-shift/plans/02-update-pattern-matching.md +60 -0
  42. package/RAF/aaaacx-epoch-shift/plans/03-update-tests.md +48 -0
  43. package/RAF/aaaacx-epoch-shift/plans/04-update-documentation.md +44 -0
  44. package/RAF/ahmpro-merge-guardian/decisions.md +25 -0
  45. package/RAF/ahmpro-merge-guardian/input.md +4 -0
  46. package/RAF/ahmpro-merge-guardian/outcomes/001-fix-amend-worktree-commit.md +45 -0
  47. package/RAF/ahmpro-merge-guardian/outcomes/002-base36-task-ids.md +55 -0
  48. package/RAF/ahmpro-merge-guardian/outcomes/003-worktree-pr-creation.md +41 -0
  49. package/RAF/ahmpro-merge-guardian/outcomes/004-post-execution-picker.md +53 -0
  50. package/RAF/ahmpro-merge-guardian/plans/001-fix-amend-worktree-commit.md +39 -0
  51. package/RAF/ahmpro-merge-guardian/plans/002-base36-task-ids.md +43 -0
  52. package/RAF/ahmpro-merge-guardian/plans/003-worktree-pr-creation.md +43 -0
  53. package/RAF/ahmpro-merge-guardian/plans/004-post-execution-picker.md +51 -0
  54. package/RAF/ahnbcu-letterjam/decisions.md +13 -0
  55. package/RAF/ahnbcu-letterjam/input.md +3 -0
  56. package/RAF/ahnbcu-letterjam/outcomes/01-base26-encoding.md +42 -0
  57. package/RAF/ahnbcu-letterjam/outcomes/02-update-tests.md +38 -0
  58. package/RAF/ahnbcu-letterjam/outcomes/03-migrate-command.md +51 -0
  59. package/RAF/ahnbcu-letterjam/outcomes/04-update-documentation.md +29 -0
  60. package/RAF/ahnbcu-letterjam/plans/01-base26-encoding.md +36 -0
  61. package/RAF/ahnbcu-letterjam/plans/02-update-tests.md +37 -0
  62. package/RAF/ahnbcu-letterjam/plans/03-migrate-command.md +49 -0
  63. package/RAF/ahnbcu-letterjam/plans/04-update-documentation.md +39 -0
  64. package/RAF/ahnwrk-worktree-weaver/decisions.md +19 -0
  65. package/RAF/ahnwrk-worktree-weaver/input.md +4 -0
  66. package/RAF/ahnwrk-worktree-weaver/outcomes/01-remove-co-authored-by.md +20 -0
  67. package/RAF/ahnwrk-worktree-weaver/outcomes/02-update-task-status-format.md +21 -0
  68. package/RAF/ahnwrk-worktree-weaver/outcomes/03-worktree-auto-discovery.md +34 -0
  69. package/RAF/ahnwrk-worktree-weaver/outcomes/04-fix-pr-description.md +30 -0
  70. package/RAF/ahnwrk-worktree-weaver/plans/01-remove-co-authored-by.md +26 -0
  71. package/RAF/ahnwrk-worktree-weaver/plans/02-update-task-status-format.md +27 -0
  72. package/RAF/ahnwrk-worktree-weaver/plans/03-worktree-auto-discovery.md +37 -0
  73. package/RAF/ahnwrk-worktree-weaver/plans/04-fix-pr-description.md +50 -0
  74. package/README.md +56 -10
  75. package/dist/commands/do.d.ts +15 -0
  76. package/dist/commands/do.d.ts.map +1 -1
  77. package/dist/commands/do.js +384 -123
  78. package/dist/commands/do.js.map +1 -1
  79. package/dist/commands/migrate.d.ts +14 -0
  80. package/dist/commands/migrate.d.ts.map +1 -0
  81. package/dist/commands/migrate.js +228 -0
  82. package/dist/commands/migrate.js.map +1 -0
  83. package/dist/commands/plan.d.ts.map +1 -1
  84. package/dist/commands/plan.js +237 -40
  85. package/dist/commands/plan.js.map +1 -1
  86. package/dist/commands/status.d.ts.map +1 -1
  87. package/dist/commands/status.js +221 -47
  88. package/dist/commands/status.js.map +1 -1
  89. package/dist/core/claude-runner.d.ts +2 -2
  90. package/dist/core/claude-runner.d.ts.map +1 -1
  91. package/dist/core/git.d.ts +15 -6
  92. package/dist/core/git.d.ts.map +1 -1
  93. package/dist/core/git.js +53 -20
  94. package/dist/core/git.js.map +1 -1
  95. package/dist/core/project-manager.d.ts.map +1 -1
  96. package/dist/core/project-manager.js +2 -2
  97. package/dist/core/project-manager.js.map +1 -1
  98. package/dist/core/pull-request.d.ts +84 -0
  99. package/dist/core/pull-request.d.ts.map +1 -0
  100. package/dist/core/pull-request.js +414 -0
  101. package/dist/core/pull-request.js.map +1 -0
  102. package/dist/core/state-derivation.d.ts +3 -3
  103. package/dist/core/state-derivation.d.ts.map +1 -1
  104. package/dist/core/state-derivation.js +18 -14
  105. package/dist/core/state-derivation.js.map +1 -1
  106. package/dist/core/worktree.d.ts +120 -0
  107. package/dist/core/worktree.d.ts.map +1 -0
  108. package/dist/core/worktree.js +322 -0
  109. package/dist/core/worktree.js.map +1 -0
  110. package/dist/index.js +2 -0
  111. package/dist/index.js.map +1 -1
  112. package/dist/prompts/amend.d.ts +1 -0
  113. package/dist/prompts/amend.d.ts.map +1 -1
  114. package/dist/prompts/amend.js +14 -10
  115. package/dist/prompts/amend.js.map +1 -1
  116. package/dist/prompts/execution.d.ts.map +1 -1
  117. package/dist/prompts/execution.js +4 -2
  118. package/dist/prompts/execution.js.map +1 -1
  119. package/dist/prompts/planning.d.ts +1 -0
  120. package/dist/prompts/planning.d.ts.map +1 -1
  121. package/dist/prompts/planning.js +9 -8
  122. package/dist/prompts/planning.js.map +1 -1
  123. package/dist/types/config.d.ts +5 -0
  124. package/dist/types/config.d.ts.map +1 -1
  125. package/dist/ui/project-picker.d.ts +34 -3
  126. package/dist/ui/project-picker.d.ts.map +1 -1
  127. package/dist/ui/project-picker.js +78 -10
  128. package/dist/ui/project-picker.js.map +1 -1
  129. package/dist/utils/paths.d.ts +38 -43
  130. package/dist/utils/paths.d.ts.map +1 -1
  131. package/dist/utils/paths.js +123 -193
  132. package/dist/utils/paths.js.map +1 -1
  133. package/dist/utils/terminal-symbols.d.ts +2 -2
  134. package/dist/utils/terminal-symbols.js +3 -3
  135. package/dist/utils/terminal-symbols.js.map +1 -1
  136. package/dist/utils/validation.d.ts.map +1 -1
  137. package/dist/utils/validation.js +2 -8
  138. package/dist/utils/validation.js.map +1 -1
  139. package/package.json +1 -1
  140. package/src/commands/do.ts +454 -134
  141. package/src/commands/migrate.ts +269 -0
  142. package/src/commands/plan.ts +264 -40
  143. package/src/commands/status.ts +252 -45
  144. package/src/core/claude-runner.ts +2 -2
  145. package/src/core/git.ts +57 -21
  146. package/src/core/project-manager.ts +2 -1
  147. package/src/core/pull-request.ts +480 -0
  148. package/src/core/state-derivation.ts +18 -14
  149. package/src/core/worktree.ts +357 -0
  150. package/src/index.ts +2 -0
  151. package/src/prompts/amend.ts +15 -9
  152. package/src/prompts/execution.ts +4 -2
  153. package/src/prompts/planning.ts +10 -8
  154. package/src/types/config.ts +6 -0
  155. package/src/ui/project-picker.ts +110 -10
  156. package/src/utils/paths.ts +129 -214
  157. package/src/utils/terminal-symbols.ts +3 -3
  158. package/src/utils/validation.ts +2 -9
  159. package/tests/unit/amend-prompt.test.ts +85 -0
  160. package/tests/unit/claude-runner.test.ts +9 -9
  161. package/tests/unit/commit-planning-artifacts-worktree.test.ts +327 -0
  162. package/tests/unit/commit-planning-artifacts.test.ts +303 -35
  163. package/tests/unit/dependency-integration.test.ts +95 -95
  164. package/tests/unit/do-blocked-tasks.test.ts +53 -53
  165. package/tests/unit/do-command.test.ts +39 -132
  166. package/tests/unit/do-rerun.test.ts +65 -65
  167. package/tests/unit/do-worktree-cleanup.test.ts +151 -0
  168. package/tests/unit/execution-prompt.test.ts +71 -60
  169. package/tests/unit/failure-history.test.ts +19 -19
  170. package/tests/unit/git-commit-helpers.test.ts +5 -5
  171. package/tests/unit/git-stash.test.ts +4 -4
  172. package/tests/unit/migrate-command.test.ts +197 -0
  173. package/tests/unit/outcome-content.test.ts +20 -20
  174. package/tests/unit/paths.test.ts +269 -467
  175. package/tests/unit/plan-amend-worktree-recreate.test.ts +246 -0
  176. package/tests/unit/plan-command.test.ts +103 -103
  177. package/tests/unit/planning-prompt.test.ts +41 -4
  178. package/tests/unit/post-execution-picker.test.ts +251 -0
  179. package/tests/unit/project-manager.test.ts +20 -8
  180. package/tests/unit/project-picker.test.ts +425 -42
  181. package/tests/unit/pull-request.test.ts +852 -0
  182. package/tests/unit/state-derivation.test.ts +138 -137
  183. package/tests/unit/status-command.test.ts +344 -76
  184. package/tests/unit/terminal-symbols.test.ts +4 -4
  185. package/tests/unit/worktree-integration.test.ts +405 -0
  186. package/tests/unit/worktree.test.ts +523 -0
  187. package/tests/unit/do-multiproject.test.ts +0 -270
  188. /package/RAF/{001-raf-task-improvements → aaaaab-raf-task-improvements}/input.md +0 -0
  189. /package/RAF/{001-raf-task-improvements/outcomes/001-add-decisions-folder.md → aaaaab-raf-task-improvements/outcomes/01-add-decisions-folder.md} +0 -0
  190. /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
  191. /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
  192. /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
  193. /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
  194. /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
  195. /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
  196. /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
  197. /package/RAF/{001-raf-task-improvements → aaaaab-raf-task-improvements}/outcomes/SUMMARY.md +0 -0
  198. /package/RAF/{001-raf-task-improvements/plans/001-add-decisions-folder.md → aaaaab-raf-task-improvements/plans/01-add-decisions-folder.md} +0 -0
  199. /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
  200. /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
  201. /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
  202. /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
  203. /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
  204. /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
  205. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/decisions/DECISIONS.md +0 -0
  206. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/input.md +0 -0
  207. /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
  208. /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
  209. /package/RAF/{002-raf-task-improvements-execution → aaaaac-raf-task-improvements-execution}/outcomes/SUMMARY.md +0 -0
  210. /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
  211. /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
  212. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/decisions/DECISIONS.md +0 -0
  213. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/input.md +0 -0
  214. /package/RAF/{003-multi-project-execution/outcomes/001-remove-state-json.md → aaaaad-multi-project-execution/outcomes/01-remove-state-json.md} +0 -0
  215. /package/RAF/{003-multi-project-execution/outcomes/002-update-raf-status.md → aaaaad-multi-project-execution/outcomes/02-update-raf-status.md} +0 -0
  216. /package/RAF/{003-multi-project-execution/outcomes/003-simplify-git-logic.md → aaaaad-multi-project-execution/outcomes/03-simplify-git-logic.md} +0 -0
  217. /package/RAF/{003-multi-project-execution/outcomes/004-auto-commit-planning.md → aaaaad-multi-project-execution/outcomes/04-auto-commit-planning.md} +0 -0
  218. /package/RAF/{003-multi-project-execution/outcomes/005-rerun-failed-tasks.md → aaaaad-multi-project-execution/outcomes/05-rerun-failed-tasks.md} +0 -0
  219. /package/RAF/{003-multi-project-execution/outcomes/006-multi-project-execution.md → aaaaad-multi-project-execution/outcomes/06-multi-project-execution.md} +0 -0
  220. /package/RAF/{003-multi-project-execution/outcomes/007-verify-timeout.md → aaaaad-multi-project-execution/outcomes/07-verify-timeout.md} +0 -0
  221. /package/RAF/{003-multi-project-execution/outcomes/008-move-decisions-file.md → aaaaad-multi-project-execution/outcomes/08-move-decisions-file.md} +0 -0
  222. /package/RAF/{003-multi-project-execution → aaaaad-multi-project-execution}/outcomes/SUMMARY.md +0 -0
  223. /package/RAF/{003-multi-project-execution/plans/001-remove-state-json.md → aaaaad-multi-project-execution/plans/01-remove-state-json.md} +0 -0
  224. /package/RAF/{003-multi-project-execution/plans/002-update-raf-status.md → aaaaad-multi-project-execution/plans/02-update-raf-status.md} +0 -0
  225. /package/RAF/{003-multi-project-execution/plans/003-simplify-git-logic.md → aaaaad-multi-project-execution/plans/03-simplify-git-logic.md} +0 -0
  226. /package/RAF/{003-multi-project-execution/plans/004-auto-commit-planning.md → aaaaad-multi-project-execution/plans/04-auto-commit-planning.md} +0 -0
  227. /package/RAF/{003-multi-project-execution/plans/005-rerun-failed-tasks.md → aaaaad-multi-project-execution/plans/05-rerun-failed-tasks.md} +0 -0
  228. /package/RAF/{003-multi-project-execution/plans/006-multi-project-execution.md → aaaaad-multi-project-execution/plans/06-multi-project-execution.md} +0 -0
  229. /package/RAF/{003-multi-project-execution/plans/007-verify-timeout.md → aaaaad-multi-project-execution/plans/07-verify-timeout.md} +0 -0
  230. /package/RAF/{003-multi-project-execution/plans/008-move-decisions-file.md → aaaaad-multi-project-execution/plans/08-move-decisions-file.md} +0 -0
  231. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/decisions.md +0 -0
  232. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/input.md +0 -0
  233. /package/RAF/{004-task-naming-optimization/outcomes/001-remove-summary-file.md → aaaaae-task-naming-optimization/outcomes/01-remove-summary-file.md} +0 -0
  234. /package/RAF/{004-task-naming-optimization/outcomes/002-base36-project-numbering.md → aaaaae-task-naming-optimization/outcomes/02-base36-project-numbering.md} +0 -0
  235. /package/RAF/{004-task-naming-optimization/outcomes/003-improve-haiku-prompt.md → aaaaae-task-naming-optimization/outcomes/03-improve-haiku-prompt.md} +0 -0
  236. /package/RAF/{004-task-naming-optimization → aaaaae-task-naming-optimization}/outcomes/SUMMARY.md +0 -0
  237. /package/RAF/{004-task-naming-optimization/plans/001-remove-summary-file.md → aaaaae-task-naming-optimization/plans/01-remove-summary-file.md} +0 -0
  238. /package/RAF/{004-task-naming-optimization/plans/002-base36-project-numbering.md → aaaaae-task-naming-optimization/plans/02-base36-project-numbering.md} +0 -0
  239. /package/RAF/{004-task-naming-optimization/plans/003-improve-haiku-prompt.md → aaaaae-task-naming-optimization/plans/03-improve-haiku-prompt.md} +0 -0
  240. /package/RAF/{005-task-naming-improvements → aaaaaf-task-naming-improvements}/decisions.md +0 -0
  241. /package/RAF/{005-task-naming-improvements → aaaaaf-task-naming-improvements}/input.md +0 -0
  242. /package/RAF/{005-task-naming-improvements/outcomes/001-enhance-identifier-resolution.md → aaaaaf-task-naming-improvements/outcomes/01-enhance-identifier-resolution.md} +0 -0
  243. /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
  244. /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
  245. /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
  246. /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
  247. /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
  248. /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
  249. /package/RAF/{005-task-naming-improvements/outcomes/008-fix-timeout-label.md → aaaaaf-task-naming-improvements/outcomes/08-fix-timeout-label.md} +0 -0
  250. /package/RAF/{005-task-naming-improvements/plans/001-enhance-identifier-resolution.md → aaaaaf-task-naming-improvements/plans/01-enhance-identifier-resolution.md} +0 -0
  251. /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
  252. /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
  253. /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
  254. /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
  255. /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
  256. /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
  257. /package/RAF/{005-task-naming-improvements/plans/008-fix-timeout-label.md → aaaaaf-task-naming-improvements/plans/08-fix-timeout-label.md} +0 -0
  258. /package/RAF/{006-fix-double-summary-headers → aaaaag-fix-double-summary-headers}/decisions.md +0 -0
  259. /package/RAF/{006-fix-double-summary-headers → aaaaag-fix-double-summary-headers}/input.md +0 -0
  260. /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
  261. /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
  262. /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
  263. /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
  264. /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
  265. /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
  266. /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
  267. /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
  268. /package/RAF/{007-improve-outcome-format → aaaaah-improve-outcome-format}/decisions.md +0 -0
  269. /package/RAF/{007-improve-outcome-format → aaaaah-improve-outcome-format}/input.md +0 -0
  270. /package/RAF/{007-improve-outcome-format/outcomes/001-update-execution-prompt.md → aaaaah-improve-outcome-format/outcomes/01-update-execution-prompt.md} +0 -0
  271. /package/RAF/{007-improve-outcome-format/outcomes/002-update-state-derivation.md → aaaaah-improve-outcome-format/outcomes/02-update-state-derivation.md} +0 -0
  272. /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
  273. /package/RAF/{007-improve-outcome-format/outcomes/004-implement-failure-analysis.md → aaaaah-improve-outcome-format/outcomes/04-implement-failure-analysis.md} +0 -0
  274. /package/RAF/{007-improve-outcome-format/outcomes/005-update-documentation.md → aaaaah-improve-outcome-format/outcomes/05-update-documentation.md} +0 -0
  275. /package/RAF/{007-improve-outcome-format/plans/001-update-execution-prompt.md → aaaaah-improve-outcome-format/plans/01-update-execution-prompt.md} +0 -0
  276. /package/RAF/{007-improve-outcome-format/plans/002-update-state-derivation.md → aaaaah-improve-outcome-format/plans/02-update-state-derivation.md} +0 -0
  277. /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
  278. /package/RAF/{007-improve-outcome-format/plans/004-implement-failure-analysis.md → aaaaah-improve-outcome-format/plans/04-implement-failure-analysis.md} +0 -0
  279. /package/RAF/{007-improve-outcome-format/plans/005-update-documentation.md → aaaaah-improve-outcome-format/plans/05-update-documentation.md} +0 -0
  280. /package/RAF/{008-beautiful-do → aaaaai-beautiful-do}/decisions.md +0 -0
  281. /package/RAF/{008-beautiful-do → aaaaai-beautiful-do}/input.md +0 -0
  282. /package/RAF/{008-beautiful-do/outcomes/001-terminal-symbols.md → aaaaai-beautiful-do/outcomes/01-terminal-symbols.md} +0 -0
  283. /package/RAF/{008-beautiful-do/outcomes/002-refactor-do-output.md → aaaaai-beautiful-do/outcomes/02-refactor-do-output.md} +0 -0
  284. /package/RAF/{008-beautiful-do/outcomes/003-refactor-status-output.md → aaaaai-beautiful-do/outcomes/03-refactor-status-output.md} +0 -0
  285. /package/RAF/{008-beautiful-do/outcomes/004-simplify-logger.md → aaaaai-beautiful-do/outcomes/04-simplify-logger.md} +0 -0
  286. /package/RAF/{008-beautiful-do/outcomes/005-add-tests.md → aaaaai-beautiful-do/outcomes/05-add-tests.md} +0 -0
  287. /package/RAF/{008-beautiful-do/plans/001-terminal-symbols.md → aaaaai-beautiful-do/plans/01-terminal-symbols.md} +0 -0
  288. /package/RAF/{008-beautiful-do/plans/002-refactor-do-output.md → aaaaai-beautiful-do/plans/02-refactor-do-output.md} +0 -0
  289. /package/RAF/{008-beautiful-do/plans/003-refactor-status-output.md → aaaaai-beautiful-do/plans/03-refactor-status-output.md} +0 -0
  290. /package/RAF/{008-beautiful-do/plans/004-simplify-logger.md → aaaaai-beautiful-do/plans/04-simplify-logger.md} +0 -0
  291. /package/RAF/{008-beautiful-do/plans/005-add-tests.md → aaaaai-beautiful-do/plans/05-add-tests.md} +0 -0
  292. /package/RAF/{009-system-promt-ammend → aaaaaj-system-promt-ammend}/decisions.md +0 -0
  293. /package/RAF/{009-system-promt-ammend → aaaaaj-system-promt-ammend}/input.md +0 -0
  294. /package/RAF/{009-system-promt-ammend/outcomes/001-model-override.md → aaaaaj-system-promt-ammend/outcomes/01-model-override.md} +0 -0
  295. /package/RAF/{009-system-promt-ammend/outcomes/002-system-prompt-append.md → aaaaaj-system-promt-ammend/outcomes/02-system-prompt-append.md} +0 -0
  296. /package/RAF/{009-system-promt-ammend/outcomes/003-retry-context.md → aaaaaj-system-promt-ammend/outcomes/03-retry-context.md} +0 -0
  297. /package/RAF/{009-system-promt-ammend/plans/001-model-override.md → aaaaaj-system-promt-ammend/plans/01-model-override.md} +0 -0
  298. /package/RAF/{009-system-promt-ammend/plans/002-system-prompt-append.md → aaaaaj-system-promt-ammend/plans/02-system-prompt-append.md} +0 -0
  299. /package/RAF/{009-system-promt-ammend/plans/003-retry-context.md → aaaaaj-system-promt-ammend/plans/03-retry-context.md} +0 -0
  300. /package/RAF/{010-outcome-marker-fallback → aaaabk-outcome-marker-fallback}/decisions.md +0 -0
  301. /package/RAF/{010-outcome-marker-fallback → aaaabk-outcome-marker-fallback}/input.md +0 -0
  302. /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
  303. /package/RAF/{010-outcome-marker-fallback/outcomes/002-creative-project-naming.md → aaaabk-outcome-marker-fallback/outcomes/02-creative-project-naming.md} +0 -0
  304. /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
  305. /package/RAF/{010-outcome-marker-fallback/plans/002-creative-project-naming.md → aaaabk-outcome-marker-fallback/plans/02-creative-project-naming.md} +0 -0
  306. /package/RAF/{011-do-task-in-commit → aaaabl-do-task-in-commit}/decisions.md +0 -0
  307. /package/RAF/{011-do-task-in-commit → aaaabl-do-task-in-commit}/input.md +0 -0
  308. /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
  309. /package/RAF/{011-do-task-in-commit/outcomes/002-update-tests.md → aaaabl-do-task-in-commit/outcomes/02-update-tests.md} +0 -0
  310. /package/RAF/{011-do-task-in-commit/outcomes/003-update-documentation.md → aaaabl-do-task-in-commit/outcomes/03-update-documentation.md} +0 -0
  311. /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
  312. /package/RAF/{011-do-task-in-commit/plans/002-update-tests.md → aaaabl-do-task-in-commit/plans/02-update-tests.md} +0 -0
  313. /package/RAF/{011-do-task-in-commit/plans/003-update-documentation.md → aaaabl-do-task-in-commit/plans/03-update-documentation.md} +0 -0
  314. /package/RAF/{012-name-picker-buffet → aaaabm-name-picker-buffet}/decisions.md +0 -0
  315. /package/RAF/{012-name-picker-buffet → aaaabm-name-picker-buffet}/input.md +0 -0
  316. /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
  317. /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
  318. /package/RAF/{012-name-picker-buffet/outcomes/003-raf-status-truncation.md → aaaabm-name-picker-buffet/outcomes/03-raf-status-truncation.md} +0 -0
  319. /package/RAF/{012-name-picker-buffet/outcomes/004-failure-reason-details.md → aaaabm-name-picker-buffet/outcomes/04-failure-reason-details.md} +0 -0
  320. /package/RAF/{012-name-picker-buffet/outcomes/005-remove-raf-commits.md → aaaabm-name-picker-buffet/outcomes/05-remove-raf-commits.md} +0 -0
  321. /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
  322. /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
  323. /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
  324. /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
  325. /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
  326. /package/RAF/{012-name-picker-buffet/plans/003-raf-status-truncation.md → aaaabm-name-picker-buffet/plans/03-raf-status-truncation.md} +0 -0
  327. /package/RAF/{012-name-picker-buffet/plans/004-failure-reason-details.md → aaaabm-name-picker-buffet/plans/04-failure-reason-details.md} +0 -0
  328. /package/RAF/{012-name-picker-buffet/plans/005-remove-raf-commits.md → aaaabm-name-picker-buffet/plans/05-remove-raf-commits.md} +0 -0
  329. /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
  330. /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
  331. /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
  332. /package/RAF/{013-dependencies-watchdog → aaaabn-dependencies-watchdog}/decisions.md +0 -0
  333. /package/RAF/{013-dependencies-watchdog → aaaabn-dependencies-watchdog}/input.md +0 -0
  334. /package/RAF/{013-dependencies-watchdog/outcomes/001-define-dependency-syntax.md → aaaabn-dependencies-watchdog/outcomes/01-define-dependency-syntax.md} +0 -0
  335. /package/RAF/{013-dependencies-watchdog/outcomes/002-update-planning-prompts.md → aaaabn-dependencies-watchdog/outcomes/02-update-planning-prompts.md} +0 -0
  336. /package/RAF/{013-dependencies-watchdog/outcomes/003-parse-dependencies-update-state.md → aaaabn-dependencies-watchdog/outcomes/03-parse-dependencies-update-state.md} +0 -0
  337. /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
  338. /package/RAF/{013-dependencies-watchdog/outcomes/005-update-execution-prompts.md → aaaabn-dependencies-watchdog/outcomes/05-update-execution-prompts.md} +0 -0
  339. /package/RAF/{013-dependencies-watchdog/outcomes/006-add-tests.md → aaaabn-dependencies-watchdog/outcomes/06-add-tests.md} +0 -0
  340. /package/RAF/{013-dependencies-watchdog/outcomes/007-add-act-alias.md → aaaabn-dependencies-watchdog/outcomes/07-add-act-alias.md} +0 -0
  341. /package/RAF/{013-dependencies-watchdog/outcomes/008-add-exit-message.md → aaaabn-dependencies-watchdog/outcomes/08-add-exit-message.md} +0 -0
  342. /package/RAF/{013-dependencies-watchdog/plans/001-define-dependency-syntax.md → aaaabn-dependencies-watchdog/plans/01-define-dependency-syntax.md} +0 -0
  343. /package/RAF/{013-dependencies-watchdog/plans/002-update-planning-prompts.md → aaaabn-dependencies-watchdog/plans/02-update-planning-prompts.md} +0 -0
  344. /package/RAF/{013-dependencies-watchdog/plans/003-parse-dependencies-update-state.md → aaaabn-dependencies-watchdog/plans/03-parse-dependencies-update-state.md} +0 -0
  345. /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
  346. /package/RAF/{013-dependencies-watchdog/plans/005-update-execution-prompts.md → aaaabn-dependencies-watchdog/plans/05-update-execution-prompts.md} +0 -0
  347. /package/RAF/{013-dependencies-watchdog/plans/006-add-tests.md → aaaabn-dependencies-watchdog/plans/06-add-tests.md} +0 -0
  348. /package/RAF/{013-dependencies-watchdog/plans/007-add-act-alias.md → aaaabn-dependencies-watchdog/plans/07-add-act-alias.md} +0 -0
  349. /package/RAF/{013-dependencies-watchdog/plans/008-add-exit-message.md → aaaabn-dependencies-watchdog/plans/08-add-exit-message.md} +0 -0
  350. /package/RAF/{014-watchdog → aaaabo-watchdog}/decisions.md +0 -0
  351. /package/RAF/{014-watchdog → aaaabo-watchdog}/input.md +0 -0
  352. /package/RAF/{014-watchdog/outcomes/001-amend-flag-position.md → aaaabo-watchdog/outcomes/01-amend-flag-position.md} +0 -0
  353. /package/RAF/{014-watchdog/outcomes/002-details-only-on-failure.md → aaaabo-watchdog/outcomes/02-details-only-on-failure.md} +0 -0
  354. /package/RAF/{014-watchdog/plans/001-amend-flag-position.md → aaaabo-watchdog/plans/01-amend-flag-position.md} +0 -0
  355. /package/RAF/{014-watchdog/plans/002-details-only-on-failure.md → aaaabo-watchdog/plans/02-details-only-on-failure.md} +0 -0
  356. /package/RAF/{015-name-lottery → aaaabp-name-lottery}/decisions.md +0 -0
  357. /package/RAF/{015-name-lottery → aaaabp-name-lottery}/input.md +0 -0
  358. /package/RAF/{015-name-lottery/outcomes/001-auto-pick-project-name.md → aaaabp-name-lottery/outcomes/01-auto-pick-project-name.md} +0 -0
  359. /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
  360. /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
  361. /package/RAF/{015-name-lottery/plans/001-auto-pick-project-name.md → aaaabp-name-lottery/plans/01-auto-pick-project-name.md} +0 -0
  362. /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
  363. /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
  364. /package/RAF/{016-planning-scalpel → aaaabq-planning-scalpel}/decisions.md +0 -0
  365. /package/RAF/{016-planning-scalpel → aaaabq-planning-scalpel}/input.md +0 -0
  366. /package/RAF/{016-planning-scalpel/outcomes/001-update-git-commit-instructions.md → aaaabq-planning-scalpel/outcomes/01-update-git-commit-instructions.md} +0 -0
  367. /package/RAF/{016-planning-scalpel/plans/001-update-git-commit-instructions.md → aaaabq-planning-scalpel/plans/01-update-git-commit-instructions.md} +0 -0
  368. /package/RAF/{017-decision-vault → aaaabr-decision-vault}/decisions.md +0 -0
  369. /package/RAF/{017-decision-vault → aaaabr-decision-vault}/input.md +0 -0
  370. /package/RAF/{017-decision-vault/outcomes/001-create-git-commit-utility.md → aaaabr-decision-vault/outcomes/01-create-git-commit-utility.md} +0 -0
  371. /package/RAF/{017-decision-vault/outcomes/002-integrate-commit-into-plan.md → aaaabr-decision-vault/outcomes/02-integrate-commit-into-plan.md} +0 -0
  372. /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
  373. /package/RAF/{017-decision-vault/plans/001-create-git-commit-utility.md → aaaabr-decision-vault/plans/01-create-git-commit-utility.md} +0 -0
  374. /package/RAF/{017-decision-vault/plans/002-integrate-commit-into-plan.md → aaaabr-decision-vault/plans/02-integrate-commit-into-plan.md} +0 -0
  375. /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
  376. /package/RAF/{018-workflow-forge → aaaabs-workflow-forge}/decisions.md +0 -0
  377. /package/RAF/{018-workflow-forge → aaaabs-workflow-forge}/input.md +0 -0
  378. /package/RAF/{018-workflow-forge/outcomes/001-add-task-number-progress.md → aaaabs-workflow-forge/outcomes/01-add-task-number-progress.md} +0 -0
  379. /package/RAF/{018-workflow-forge/outcomes/002-update-plan-do-prompts.md → aaaabs-workflow-forge/outcomes/02-update-plan-do-prompts.md} +0 -0
  380. /package/RAF/{018-workflow-forge/plans/001-add-task-number-progress.md → aaaabs-workflow-forge/plans/01-add-task-number-progress.md} +0 -0
  381. /package/RAF/{018-workflow-forge/plans/002-update-plan-do-prompts.md → aaaabs-workflow-forge/plans/02-update-plan-do-prompts.md} +0 -0
  382. /package/RAF/{019-verbose-chronicle → aaaabt-verbose-chronicle}/decisions.md +0 -0
  383. /package/RAF/{019-verbose-chronicle → aaaabt-verbose-chronicle}/input.md +0 -0
  384. /package/RAF/{019-verbose-chronicle/outcomes/001-amend-iteration-references.md → aaaabt-verbose-chronicle/outcomes/01-amend-iteration-references.md} +0 -0
  385. /package/RAF/{019-verbose-chronicle/outcomes/002-verbose-task-name-display.md → aaaabt-verbose-chronicle/outcomes/02-verbose-task-name-display.md} +0 -0
  386. /package/RAF/{019-verbose-chronicle/outcomes/003-verbose-streaming-fix.md → aaaabt-verbose-chronicle/outcomes/03-verbose-streaming-fix.md} +0 -0
  387. /package/RAF/{019-verbose-chronicle/outcomes/004-commit-verification-before-halt.md → aaaabt-verbose-chronicle/outcomes/04-commit-verification-before-halt.md} +0 -0
  388. /package/RAF/{019-verbose-chronicle/plans/001-amend-iteration-references.md → aaaabt-verbose-chronicle/plans/01-amend-iteration-references.md} +0 -0
  389. /package/RAF/{019-verbose-chronicle/plans/002-verbose-task-name-display.md → aaaabt-verbose-chronicle/plans/02-verbose-task-name-display.md} +0 -0
  390. /package/RAF/{019-verbose-chronicle/plans/003-verbose-streaming-fix.md → aaaabt-verbose-chronicle/plans/03-verbose-streaming-fix.md} +0 -0
  391. /package/RAF/{019-verbose-chronicle/plans/004-commit-verification-before-halt.md → aaaabt-verbose-chronicle/plans/04-commit-verification-before-halt.md} +0 -0
@@ -0,0 +1,38 @@
1
+ # Outcome: Update Tests for Base26 Project ID Encoding
2
+
3
+ ## Summary
4
+
5
+ Updated all remaining test files to use base26 (a-z only) project ID prefixes and nomenclature, completing the migration started in task 01. Added edge case tests for max value encoding/decoding.
6
+
7
+ ## Key Changes
8
+
9
+ ### Test Files Updated (11 files)
10
+
11
+ - **`tests/unit/execution-prompt.test.ts`** — Replaced digit-containing project numbers (`005`, `001`, `a0b`) with valid base26 prefixes (`aaabmm`, `aaaaab`, `abcdef`). Updated all project paths accordingly. Renamed test "base36 prefix" → "base26 prefix" and "base36 project" → "base26 project".
12
+ - **`tests/unit/plan-command.test.ts`** — Renamed describe block "Base36 Project Resolution for Amend" → "Base26 Project Resolution for Amend".
13
+ - **`tests/unit/worktree.test.ts`** — Replaced `020-worktree-weaver` → `abaaba-worktree-weaver`, `021-another-feature` → `ababab-another-feature`, `022-prune-cycle` → `abcabc-prune-cycle`, `001-feature` → `aaaaab-feature`. Renamed test "base36 project IDs" → "base26 project IDs".
14
+ - **`tests/unit/plan-amend-worktree-recreate.test.ts`** — Replaced `022-my-project` → `abcabc-my-project` throughout.
15
+ - **`tests/unit/do-worktree-cleanup.test.ts`** — Replaced `022-prune-cycle` → `abcabc-prune-cycle` throughout.
16
+ - **`tests/unit/do-rerun.test.ts`** — Replaced `001-test-project` → `aaaaab-test-project`.
17
+ - **`tests/unit/dependency-integration.test.ts`** — Replaced `001-test-project` → `aaaaab-test-project`.
18
+ - **`tests/unit/do-blocked-tasks.test.ts`** — Replaced `001-test-project` → `aaaaab-test-project`.
19
+ - **`tests/unit/state-derivation.test.ts`** — Replaced `001-test-project` → `aaaaab-test-project` (kept `001-too-short` as it tests invalid format rejection).
20
+ - **`tests/unit/worktree-integration.test.ts`** — Replaced `020-test-project` → `abaaba-test-project`.
21
+ - **`tests/unit/git-stash.test.ts`** — Replaced `raf-001-task-3-failed` → `raf-aaaaab-task-3-failed` and `raf-002-task-5-failed` → `raf-aaaaac-task-5-failed`.
22
+
23
+ ### New Edge Case Tests Added (in `paths.test.ts`)
24
+
25
+ - `encodeBase26(26^6 - 1)` → `'zzzzzz'` (max 6-char value)
26
+ - `encodeBase26(26^5)` → `'baaaaa'` (boundary value)
27
+ - `decodeBase26('zzzzzz')` → `26^6 - 1` (max value decode)
28
+ - Roundtrip test now includes max value `26^6 - 1`
29
+
30
+ ## Verification
31
+
32
+ - Build: `npm run build` passes cleanly
33
+ - Tests: All 916 tests pass across 44 test suites (3 new edge case tests added)
34
+ - No skipped or commented-out tests
35
+ - No remaining digit-containing project ID prefixes in test fixtures (except intentional rejection tests)
36
+ - All remaining "base36" references in tests are about task IDs (which correctly remain base36)
37
+
38
+ <promise>COMPLETE</promise>
@@ -0,0 +1,51 @@
1
+ # Outcome: Add `raf migrate-project-ids-base26` CLI Command
2
+
3
+ ## Summary
4
+
5
+ Added a new CLI command `raf migrate-project-ids-base26` that renames existing project folders from legacy ID formats (3-char base36 or 6-char base36-with-digits) to the new 6-char base26 encoding.
6
+
7
+ ## Key Changes
8
+
9
+ ### Source Files
10
+
11
+ - **`src/commands/migrate.ts`** (new) — Core migrate command implementation:
12
+ - `detectMigrations(dirPath)` — Scans a directory for legacy project folders and computes rename mappings
13
+ - Detects two legacy patterns: 3-char base36 (`[0-9a-z]{3}-<name>`) and 6-char base36 with digits (`[0-9a-z]{6}-<name>` where prefix contains a digit)
14
+ - Skips already-migrated base26 folders (`[a-z]{6}-`)
15
+ - Collision detection (multiple old IDs mapping to same base26 ID)
16
+ - Existing-target conflict detection
17
+ - `--dry-run` flag for preview without renaming
18
+ - `--worktree` flag to scan worktree RAF directories
19
+ - Summary output showing `oldName -> newName` for each migration
20
+ - Exported `MigrationEntry` interface and `detectMigrations()` for testability
21
+
22
+ - **`src/index.ts`** — Registered the new command via `program.addCommand(createMigrateCommand())`
23
+
24
+ - **`src/types/config.ts`** — Added `MigrateCommandOptions` interface with `dryRun` and `worktree` fields
25
+
26
+ ### Test Files
27
+
28
+ - **`tests/unit/migrate-command.test.ts`** (new) — 15 tests covering:
29
+ - Detection of 3-char base36 legacy folders
30
+ - Detection of 6-char base36 legacy folders with digits
31
+ - Skipping already-migrated base26 folders
32
+ - Skipping non-directory entries and non-existent directories
33
+ - Mixed legacy and migrated folder handling
34
+ - Correct path generation
35
+ - Edge cases (000, zzz prefixes; folders without hyphens; mixed alpha-digit 6-char prefixes)
36
+ - Integration tests for rename execution with content preservation
37
+ - Encoding correctness verification
38
+
39
+ ## Verification
40
+
41
+ - Build: `npm run build` passes cleanly
42
+ - Tests: All 931 tests pass across 45 test suites (15 new tests added)
43
+
44
+ ## Notes
45
+
46
+ - Branch renaming is out of scope — only folder renames are performed
47
+ - Worktree scanning looks for RAF directories inside each worktree subdirectory
48
+ - 3-char base36 IDs (e.g., 007=7) map to small base26 values (e.g., "aaaaah")
49
+ - 6-char base36 epoch IDs map to larger but valid base26 values
50
+
51
+ <promise>COMPLETE</promise>
@@ -0,0 +1,29 @@
1
+ # Outcome: Update Documentation for Base26 Project IDs
2
+
3
+ ## Summary
4
+
5
+ Updated CLAUDE.md and README.md to reflect the base26 project ID encoding and document the new `raf migrate-project-ids-base26` command.
6
+
7
+ ## Key Changes
8
+
9
+ ### CLAUDE.md
10
+ - **RAF Project Structure**: Changed example folder from `00j3k1-project-name` (base36) to `abcdef-project-name` (base26), updated comment
11
+ - **Project Naming Convention**: Updated encoding description from base36 to base26, documented `a=0, b=1, ..., z=25` scheme, noted left-padding with 'a', added note about visual distinction from task IDs
12
+ - **Project Identifier Resolution**: Updated examples from `00j3k1` to `abcdef`, changed "Base36 ID" to "Base26 ID"
13
+ - **Git Commit Schema**: Updated example project IDs from `00j3k1`/`00k5m2` to `abcdef`/`abaaba`
14
+ - **Worktree Mode**: Updated example paths and branch names from `00j3k1-my-feature` to `abcdef-my-feature`
15
+ - **Migration Command** (new section): Documented `raf migrate-project-ids-base26` with its options, legacy pattern detection, and implementation location
16
+
17
+ ### README.md
18
+ - **Project Structure**: Changed description from "base36 IDs" to "base26 IDs (a-z only)", updated example folders from `00j3k1-auth-system`/`00k5m2-dashboard` to `abcdef-auth-system`/`abaaba-dashboard`
19
+ - **Commands section**: Added `raf migrate-project-ids-base26` with usage examples
20
+ - **Command Reference**: Added option table for migrate command (`--dry-run`, `--worktree`)
21
+ - **All examples**: Replaced all `00j3k1` occurrences with `abcdef` (plan, do, status commands)
22
+ - **Worktree section**: Updated branch name example to `abcdef-my-feature`
23
+
24
+ ## Verification
25
+ - All remaining "base36" references in docs correctly refer to task IDs (which remain base36) or legacy formats in the migration command docs
26
+ - No digit-containing project ID examples remain (except in migration command docs showing legacy formats)
27
+ - Task ID documentation unchanged (correctly remains base36)
28
+
29
+ <promise>COMPLETE</promise>
@@ -0,0 +1,36 @@
1
+ # Task: Replace base36 project ID encoding with base26 (a-z only)
2
+
3
+ ## Objective
4
+ Replace the base36 (0-9a-z) project ID encoding with base26 (a-z only) so project IDs contain only letters and sort naturally.
5
+
6
+ ## Context
7
+ Project IDs currently use base36 encoding (digits + letters), which confuses natural sort ordering. Switching to pure letters (a-z) eliminates this problem. Task IDs remain base36 unchanged. Prior work on the base36 system is in commit f3a88aeead9549be7ff52ac50a197ddd42128bf0.
8
+
9
+ ## Requirements
10
+ - Base26 alphabet: a=0, b=1, c=2, ..., z=25
11
+ - ID width: 6 characters, padded with 'a' (the zero-equivalent)
12
+ - Examples: 0 → "aaaaaa", 1 → "aaaaab", 25 → "aaaaaz", 26 → "aaaaba"
13
+ - Maximum value: 26^6 - 1 = 308,915,775 (~9.8 years from RAF epoch 2026-01-01)
14
+ - Task IDs stay base36 (2-char, 0-9a-z) — do NOT modify task ID functions
15
+ - RAF_EPOCH constant stays the same (1767225600)
16
+
17
+ ## Implementation Steps
18
+ 1. In `src/utils/paths.ts`, replace `encodeBase36()` with a base26 encoder (a-z alphabet, 6-char, 'a'-padded). Rename to reflect the new encoding.
19
+ 2. Replace `decodeBase36()` with the corresponding base26 decoder. Rename accordingly.
20
+ 3. Update `isBase36Prefix()` to validate `[a-z]{6}` instead of `[0-9a-z]{6}`. Rename.
21
+ 4. Update `formatProjectNumber()` to call the new encoder.
22
+ 5. Update all regex patterns across the codebase from `[0-9a-z]{6}` to `[a-z]{6}` — these appear in `paths.ts`, `state-derivation.ts`, `validation.ts`, and `git.ts`.
23
+ 6. Update all function names and references across importers — search for `encodeBase36`, `decodeBase36`, `isBase36Prefix` in all source files.
24
+ 7. Update JSDoc comments and inline documentation to say "base26" instead of "base36" for project IDs.
25
+
26
+ ## Acceptance Criteria
27
+ - [ ] `encodeBase36` / `decodeBase36` / `isBase36Prefix` replaced with base26 equivalents
28
+ - [ ] All project ID regex patterns updated to `[a-z]{6}`
29
+ - [ ] `getNextProjectNumber()` generates base26 IDs
30
+ - [ ] Task ID functions (`encodeTaskId`, `decodeTaskId`, `TASK_ID_PATTERN`) remain untouched
31
+ - [ ] Project builds without errors (`npm run build`)
32
+
33
+ ## Notes
34
+ - The encoding is NOT standard `toString(26)`. It uses a custom a-z alphabet (not 0-9a-p).
35
+ - `parseInt(str, 26)` won't work for decoding because JS base26 uses 0-9a-p, not a-z. Implement custom encode/decode.
36
+ - Only project IDs change. Task IDs, RAF_EPOCH, and the overall folder structure stay the same.
@@ -0,0 +1,37 @@
1
+ # Task: Update tests for base26 project ID encoding
2
+
3
+ ## Objective
4
+ Update all unit and integration tests to reflect the base36-to-base26 encoding change for project IDs.
5
+
6
+ ## Context
7
+ After task 01 changes the core encoding functions, all existing tests that reference base36 project IDs will fail. Test fixtures, expected values, and regex patterns need updating. Task ID tests should remain unchanged.
8
+
9
+ ## Dependencies
10
+ 01
11
+
12
+ ## Requirements
13
+ - All test cases for encode/decode functions updated with base26 expected values
14
+ - Test fixtures using project folder names (e.g., "00abc0-project") updated to base26 format (e.g., "aabcda-project" or similar valid base26 IDs)
15
+ - Regex pattern assertions updated from `[0-9a-z]{6}` to `[a-z]{6}`
16
+ - Task ID test cases remain untouched
17
+ - Edge cases covered: zero value ("aaaaaa"), max value, boundary values, invalid inputs (digits should be rejected)
18
+
19
+ ## Implementation Steps
20
+ 1. Update `tests/unit/paths.test.ts` — rewrite `encodeBase36`/`decodeBase36` test suites for the new base26 functions with correct expected values.
21
+ 2. Update `isBase36Prefix` tests → validate new prefix checker rejects digits, accepts pure a-z.
22
+ 3. Update `extractProjectNumber`, `extractProjectName`, `parseProjectPrefix` tests with base26 folder name fixtures.
23
+ 4. Update `resolveProjectIdentifier` tests — all project folder fixtures must use base26 prefixes.
24
+ 5. Update `getNextProjectNumber` tests — expected IDs should be base26 encoded.
25
+ 6. Update `listProjects` tests if they have base36 fixtures.
26
+ 7. Search all other test files for hardcoded project IDs (grep for patterns like `[0-9a-z]{6}-` or specific IDs like "00abc0") and update them.
27
+ 8. Run full test suite and ensure all tests pass.
28
+
29
+ ## Acceptance Criteria
30
+ - [ ] All 40+ test suites pass (`npm test`)
31
+ - [ ] No test references old base36 project ID format (except task ID tests which stay base36)
32
+ - [ ] Edge cases covered: zero encoding, max value, invalid characters (digits), wrong length
33
+ - [ ] No skipped or commented-out tests
34
+
35
+ ## Notes
36
+ - The main test file is `tests/unit/paths.test.ts` (~525 lines) but other test files may contain project ID fixtures too.
37
+ - New base26 encode/decode cannot use `parseInt`/`toString` — verify tests check the custom implementation correctly.
@@ -0,0 +1,49 @@
1
+ # Task: Add `raf migrate-project-ids-base26` CLI command
2
+
3
+ ## Objective
4
+ Add a CLI command that renames existing project folders from old ID formats (3-char base36 or 6-char base36) to the new 6-char base26 encoding.
5
+
6
+ ## Context
7
+ After switching to base26 encoding, existing projects on disk still have old-format IDs. The migrate command provides a clean one-time transition. It must handle two legacy formats: the original 3-char base36 sequential IDs (e.g., "007-project") and the intermediate 6-char base36 epoch IDs (e.g., "021h44-project").
8
+
9
+ ## Dependencies
10
+ 01
11
+
12
+ ## Requirements
13
+ - New CLI command: `raf migrate-project-ids-base26`
14
+ - Detects two legacy folder patterns:
15
+ - 3-char base36: `[0-9a-z]{3}-<name>` (e.g., "007-my-project", "01a-feature")
16
+ - 6-char base36 with digits: `[0-9a-z]{6}-<name>` where the prefix contains at least one digit (to distinguish from already-migrated base26 IDs)
17
+ - For each legacy folder:
18
+ - Decode the old ID to its numeric value (base36 decode for both 3-char and 6-char formats)
19
+ - Re-encode as 6-char base26
20
+ - Rename the folder on disk
21
+ - Handles the RAF directory in the current repo (standard location)
22
+ - Also handles worktree RAF directories if `--worktree` flag is specified or auto-detected
23
+ - Prints a summary of what was renamed (old name → new name)
24
+ - Dry-run mode (`--dry-run`) to preview changes without renaming
25
+ - Skips folders that are already in base26 format
26
+ - Handles collisions (two old IDs mapping to same base26 ID — unlikely but should error gracefully)
27
+
28
+ ## Implementation Steps
29
+ 1. Create `src/commands/migrate.ts` with the migrate command handler.
30
+ 2. Add detection logic for the two legacy patterns (3-char base36 and 6-char base36-with-digits).
31
+ 3. Implement the rename operation: decode old ID → encode as base26 → rename folder.
32
+ 4. Add dry-run support.
33
+ 5. Register the command in `src/index.ts` (or wherever Commander.js commands are registered).
34
+ 6. Handle edge cases: empty RAF dir, no legacy projects, folder rename failures.
35
+ 7. Consider worktree directories — if projects live in worktree paths, the migration should find and rename those too.
36
+
37
+ ## Acceptance Criteria
38
+ - [ ] `raf migrate-project-ids-base26` renames 3-char base36 project folders to base26
39
+ - [ ] `raf migrate-project-ids-base26` renames 6-char base36 project folders to base26
40
+ - [ ] Already-base26 folders are skipped
41
+ - [ ] `--dry-run` shows planned renames without executing them
42
+ - [ ] Summary output shows old → new folder names
43
+ - [ ] Command registered and accessible via CLI
44
+
45
+ ## Notes
46
+ - 3-char base36 IDs are small numbers (e.g., 7, 23) — they'll produce base26 IDs like "aaaaah", "aaaaax".
47
+ - Base36 epoch IDs are large (seconds since 2026-01-01) — they'll produce reasonable base26 IDs.
48
+ - Worktree branch names contain the old project ID. Branch renaming is out of scope for this task — just rename the folders.
49
+ - The git.ts module extracts project numbers from paths — after migration, these paths will have new prefixes.
@@ -0,0 +1,39 @@
1
+ # Task: Update documentation for base26 project IDs
2
+
3
+ ## Objective
4
+ Update CLAUDE.md and README.md to document the new base26 project ID encoding scheme and the migrate command.
5
+
6
+ ## Context
7
+ After tasks 01-03, the codebase uses base26 for project IDs, but documentation still references base36. All developer-facing docs need updating.
8
+
9
+ ## Dependencies
10
+ 01, 03
11
+
12
+ ## Requirements
13
+ - Update CLAUDE.md sections that reference base36 project IDs:
14
+ - "Project Naming Convention" section
15
+ - "Task ID Format" section (clarify task IDs remain base36)
16
+ - "Git Commit Schema" section (examples use old IDs)
17
+ - "RAF Project Structure" section (example folder names)
18
+ - Any other mentions of "base36" in the context of project IDs
19
+ - Update README.md if it references project ID format
20
+ - Document the `raf migrate-project-ids-base26` command in the appropriate section
21
+ - All example project IDs in docs should use base26 format
22
+
23
+ ## Implementation Steps
24
+ 1. Search CLAUDE.md for all occurrences of "base36" related to project IDs and update to "base26".
25
+ 2. Update example project folder names throughout (e.g., "00j3k1-project-name" → a valid base26 example).
26
+ 3. Add documentation for the `raf migrate-project-ids-base26` command.
27
+ 4. Update README.md with any project ID format references.
28
+ 5. Ensure task ID documentation still correctly says base36.
29
+
30
+ ## Acceptance Criteria
31
+ - [ ] CLAUDE.md accurately describes base26 project ID encoding
32
+ - [ ] All example IDs in docs are valid base26 (a-z only, 6 chars)
33
+ - [ ] `raf migrate-project-ids-base26` command is documented
34
+ - [ ] Task ID docs correctly unchanged (still base36)
35
+ - [ ] No stale references to base36 for project IDs remain in docs
36
+
37
+ ## Notes
38
+ - Be precise about which IDs changed (project = base26) vs stayed (task = base36).
39
+ - The encoding details matter: a=0, z=25, padded with 'a', 6 chars.
@@ -0,0 +1,19 @@
1
+ # Project Decisions
2
+
3
+ ## Worktree auto-discovery: when a user picks a worktree project from the regular `raf do` picker, should RAF automatically switch to worktree mode?
4
+ Yes — auto-switch to worktree mode. Picking a worktree project automatically behaves as if `--worktree` was passed (runs in worktree path, shows post-action picker after).
5
+
6
+ ## What model should be used to generate PR descriptions?
7
+ Sonnet. Better quality summaries justify the slightly higher cost.
8
+
9
+ ## PR description structure: Summary (from proofread input.md) → Key Decisions (from decisions.md) → What Was Done (from outcomes) → Test Plan?
10
+ Yes, this structure works.
11
+
12
+ ## Should Co-Authored-By removal apply to ALL commits, or be configurable?
13
+ Never include it. Add explicit instruction in execution prompt to not add Co-Authored-By trailers.
14
+
15
+ ## How should worktree projects appear in the regular `raf do` picker?
16
+ Mixed list with label. Show all projects in one sorted list, with worktree projects marked (e.g. `abcdef my-feature (2/5 tasks) [worktree]`).
17
+
18
+ ## For the `\n` issue in PR descriptions: investigate or known cause?
19
+ Investigate and fix. Find the root cause of the `\n` escaping in the PR creation pipeline.
@@ -0,0 +1,4 @@
1
+ - [ ] make 'raf do' to automatically check existing worktrees in ~/.raf for the repo and if there task to do - offer to do the project in the project picker that we have
2
+ - [ ] update status of tasks in 'raf do' to from "[01] base26-encoding" to "01-base26-encoding"
3
+ - [ ] use sonnet to summarize PR and investigate why formatting is wrong on github (no newlines displayed) /Users/eremeev/Desktop/Screenshot\ 2026-02-09\ at\ 21.10.53.png (may /n escaped and everything goes under md header). also some log got into pr description /Users/eremeev/Desktop/Screenshot\ 2026-02-09\ at\ 21.31.26.png (don't put them). make nice and clear PR discription. input.md in proof read form nicely formatted, key decision made extracted from decisions.md (not all, mort important / big). then clear outline of that was done
4
+ - [ ] don't add "Co-Authored-By: claude code" in commit messages
@@ -0,0 +1,20 @@
1
+ # Outcome: Remove Co-Authored-By from Commit Messages
2
+
3
+ ## Summary
4
+
5
+ Added explicit instructions to the execution prompt telling Claude not to add Co-Authored-By or any other trailers to commit messages, ensuring commits use only the single-line `RAF[project:task] description` format.
6
+
7
+ ## Key Changes
8
+
9
+ - **`src/prompts/execution.ts`** (lines 100-101): Added two bullet points to the commit instruction section:
10
+ - "The commit message must be a SINGLE LINE -- no body, no trailers"
11
+ - "Do NOT add Co-Authored-By or any other trailers to the commit message"
12
+ - **`tests/unit/execution-prompt.test.ts`**: Added 2 new test cases:
13
+ - Verifies the prompt contains the no-trailers instruction
14
+ - Verifies the prompt specifies single-line commit format
15
+
16
+ ## Test Results
17
+
18
+ All 45 tests pass (43 existing + 2 new).
19
+
20
+ <promise>COMPLETE</promise>
@@ -0,0 +1,21 @@
1
+ # Outcome: Update Task Status Display Format
2
+
3
+ ## Summary
4
+
5
+ Changed the task status display format from `[ID] name` to `ID-name` to match the file naming convention used in plan/outcome files.
6
+
7
+ ## Key Changes
8
+
9
+ - **`src/utils/terminal-symbols.ts`** (line 52): Changed `idPrefix` from `` `[${taskId}] ` `` to `` `${taskId}-` ``
10
+ - **`src/utils/terminal-symbols.ts`** (lines 39-40): Updated JSDoc `@param` and `@returns` to reflect the new format
11
+ - **`tests/unit/terminal-symbols.test.ts`**: Updated 4 test expectations to match the new format:
12
+ - `● 001-auth-login 1/5` (was `● [001] auth-login 1/5`)
13
+ - `✓ 001-auth-login 1m 23s` (was `✓ [001] auth-login 1m 23s`)
14
+ - `⊘ 002-depends-on-failed 2/5` (was `⊘ [002] depends-on-failed 2/5`)
15
+ - `✗ 003-deploy 45s` (was `✗ [003] deploy 45s`)
16
+
17
+ ## Test Results
18
+
19
+ All 933 tests pass (45 suites).
20
+
21
+ <promise>COMPLETE</promise>
@@ -0,0 +1,34 @@
1
+ # Outcome: Auto-Discover Worktree Projects in raf do
2
+
3
+ ## Summary
4
+
5
+ Made `raf do` (without `--worktree` flag) automatically discover pending worktree projects from `~/.raf/worktrees/<repo-basename>/` and merge them into the interactive project picker. Selecting a worktree project auto-switches to worktree mode with post-action picker.
6
+
7
+ ## Key Changes
8
+
9
+ - **`src/ui/project-picker.ts`**:
10
+ - Added `ProjectSource` type (`'local' | 'worktree'`) and `source`/`worktreeRoot` fields to `PendingProjectInfo`
11
+ - Added `PickerResult` interface for typed picker return values (folder, source, worktreeRoot)
12
+ - Added `getPendingWorktreeProjects()` function that scans worktree directories and returns pending projects
13
+ - Updated `formatProjectChoice()` to append `[worktree]` suffix for worktree-sourced projects
14
+ - Updated `pickPendingProject()` to accept optional worktree projects, deduplicate by folder (preferring worktree), sort chronologically, and return `PickerResult`
15
+
16
+ - **`src/commands/do.ts`**:
17
+ - When no project identifier is provided (and `--worktree` not set), discovers worktree projects via `getPendingWorktreeProjects()` and passes them to the picker
18
+ - When a worktree project is selected, auto-switches: sets `worktreeMode = true`, `worktreeRoot`, and `originalBranch`
19
+ - This enables the full worktree execution flow (worktree cwd, post-action picker, post-action execution)
20
+
21
+ - **`CLAUDE.md`**: Updated worktree documentation to reflect auto-discovery behavior
22
+
23
+ - **`tests/unit/project-picker.test.ts`**: Updated and expanded from 20 to 26 tests:
24
+ - Updated 4 existing `pickPendingProject` tests for new `PickerResult` return type
25
+ - Added 1 test for `source: 'local'` on `getPendingProjects`
26
+ - Added 2 tests for `formatProjectChoice` worktree labeling
27
+ - Added 5 tests for `getPendingWorktreeProjects` (empty, metadata, completed skip, invalid folder, missing path)
28
+ - Added 4 tests for picker merging, deduplication, chronological sorting, and backwards compatibility
29
+
30
+ ## Test Results
31
+
32
+ All 945 tests pass (45 suites).
33
+
34
+ <promise>COMPLETE</promise>
@@ -0,0 +1,30 @@
1
+ # Outcome: Fix and Improve PR Description Generation
2
+
3
+ ## Summary
4
+
5
+ Fixed the `\n` escaping bug in PR descriptions, added output filtering, switched to Sonnet model, and restructured the PR body to a 4-section format.
6
+
7
+ ## Key Changes
8
+
9
+ - **`src/core/pull-request.ts`**:
10
+ - Added `import * as os from 'node:os'` for temp file path generation
11
+ - **`createPullRequest()`**: Replaced inline `--body` with `--body-file` using a temp file written via `fs.writeFileSync()`, with cleanup in a `finally` block (even on error)
12
+ - **`callClaudeForPrBody()`**: Changed `--model haiku` to `--model sonnet`; applied `filterClaudeOutput()` to strip log noise from Claude's stdout
13
+ - **`generatePrBody()`**: Increased default timeout from 60s to 120s; rewrote prompt template to produce 4-section structure: Summary, Key Decisions, What Was Done, Test Plan
14
+ - **`generateFallbackBody()`**: Updated to produce the same 4-section structure with placeholder content
15
+ - **`filterClaudeOutput()`** (new, exported): Strips non-markdown lines from Claude output (warning emojis, `[warn]`/`[info]` prefixes, `console.warn`, `Note:`, `Loading`/`Connecting`/`Processing` lines, progress indicators)
16
+ - Updated JSDoc comments to reflect Sonnet usage
17
+
18
+ - **`tests/unit/pull-request.test.ts`**:
19
+ - Added mocks for `node:os` (`tmpdir`), `fs.writeFileSync`, `fs.unlinkSync`
20
+ - Added `filterClaudeOutput` to imports
21
+ - Added 10 new tests for `filterClaudeOutput` (clean markdown passthrough, warning emoji removal, `[warn]` prefix, `console.warn`, `Note:` lines, Loading/Connecting/Processing, progress indicators, empty input, all-log input, blank line preservation)
22
+ - Added 3 new tests for `createPullRequest` (verifying `--body-file` usage, temp file cleanup on success, cleanup on failure)
23
+ - Added 2 new tests for `generatePrBody` (4-section prompt structure verification, sonnet model verification)
24
+ - Updated 2 existing `generatePrBody` tests to check for all 4 sections
25
+
26
+ ## Test Results
27
+
28
+ All 960 tests pass (45 suites).
29
+
30
+ <promise>COMPLETE</promise>
@@ -0,0 +1,26 @@
1
+ # Task: Remove Co-Authored-By from Commit Messages
2
+
3
+ ## Objective
4
+ Prevent Claude from adding "Co-Authored-By" trailers to commit messages during task execution.
5
+
6
+ ## Context
7
+ Claude Code's default behavior adds a "Co-Authored-By: Claude..." trailer to git commits. Since RAF instructs Claude to make commits via the execution prompt, an explicit instruction must be added to suppress this. The execution prompt is in `src/prompts/execution.ts`.
8
+
9
+ ## Requirements
10
+ - Add an explicit instruction in the Git Instructions section of the execution prompt telling Claude NOT to add Co-Authored-By or any other trailers to commit messages
11
+ - The commit message should contain ONLY the `RAF[project:task] description` format, nothing else
12
+ - Update the existing tests for the execution prompt to verify the new instruction is present
13
+
14
+ ## Implementation Steps
15
+ 1. In `src/prompts/execution.ts`, add to the commit instruction section (within the `commitInstructions` template) a clear instruction that the commit message must not include any trailers like Co-Authored-By
16
+ 2. Update tests in the execution prompt test file to check for the new instruction
17
+
18
+ ## Acceptance Criteria
19
+ - [ ] Execution prompt includes explicit instruction to not add Co-Authored-By trailers
20
+ - [ ] Commit format instructions specify that ONLY the RAF format should be used with no additional lines
21
+ - [ ] Existing tests updated and passing
22
+
23
+ ## Notes
24
+ - The current execution prompt is at `src/prompts/execution.ts` lines 89-103
25
+ - The commit format is: `RAF[<projectNumber>:<paddedTaskNumber>] <description>`
26
+ - This is a single-line commit message — no body, no trailers
@@ -0,0 +1,27 @@
1
+ # Task: Update Task Status Display Format
2
+
3
+ ## Objective
4
+ Change the task status display from `[01] base26-encoding` to `01-base26-encoding` to match the file naming convention.
5
+
6
+ ## Context
7
+ The current terminal output shows task status as `● [01] base26-encoding 1:23` with brackets around the task ID. The user wants it to match the file naming pattern: `● 01-base26-encoding 1:23` — no brackets, dash separator between ID and name.
8
+
9
+ ## Requirements
10
+ - Change the format from `[<taskId>] <name>` to `<taskId>-<name>` in the `formatTaskProgress()` function
11
+ - Update all related tests to expect the new format
12
+ - Ensure all terminal output that uses this function reflects the change
13
+
14
+ ## Implementation Steps
15
+ 1. In `src/utils/terminal-symbols.ts`, modify the `formatTaskProgress()` function to use `${taskId}-` instead of `[${taskId}] ` for the idPrefix
16
+ 2. Update the function's JSDoc comment/return example to reflect the new format
17
+ 3. Update all tests in the terminal-symbols test file to expect the new format string
18
+
19
+ ## Acceptance Criteria
20
+ - [ ] Task progress lines display as `● 01-task-name` instead of `● [01] task-name`
21
+ - [ ] All tests pass with the new format
22
+ - [ ] JSDoc examples updated
23
+
24
+ ## Notes
25
+ - The change is in `src/utils/terminal-symbols.ts` line 52: `const idPrefix = taskId ? `[${taskId}] ` : '';`
26
+ - Change to: `const idPrefix = taskId ? `${taskId}-` : '';`
27
+ - This affects running, completed, failed, pending, and blocked task displays
@@ -0,0 +1,37 @@
1
+ # Task: Auto-Discover Worktree Projects in raf do
2
+
3
+ ## Objective
4
+ Make `raf do` (without `--worktree` flag) automatically discover pending worktree projects and include them in the project picker, auto-switching to worktree mode when one is selected.
5
+
6
+ ## Context
7
+ Currently, worktree project discovery only happens when `--worktree` is explicitly passed. Users have to remember which worktree projects exist. The regular `raf do` picker should also show pending worktree projects from `~/.raf/worktrees/<repo-basename>/` so users can pick and execute them seamlessly.
8
+
9
+ ## Requirements
10
+ - When `raf do` is run without arguments (triggering the project picker), also scan `~/.raf/worktrees/<repo-basename>/` for projects with pending tasks
11
+ - Merge worktree projects into the same picker list alongside regular projects, sorted chronologically
12
+ - Worktree projects should be labeled with `[worktree]` suffix, e.g. `abcdef my-feature (2/5 tasks) [worktree]`
13
+ - When a worktree project is selected, automatically behave as if `--worktree` was passed: execute tasks in the worktree path and show the post-action picker after completion
14
+ - The picker selection must carry metadata about whether the selected project is a worktree project
15
+
16
+ ## Implementation Steps
17
+ 1. Extend `src/ui/project-picker.ts` to accept worktree projects in addition to local ones. Add a `source` field to `PendingProjectInfo` (or similar) to distinguish worktree vs local projects
18
+ 2. Create a helper function that discovers pending worktree projects for the current repo by scanning `~/.raf/worktrees/<repo-basename>/` using existing `listWorktreeProjects()` from `src/core/worktree.ts`, then deriving state for each
19
+ 3. In `formatProjectChoice()`, append `[worktree]` label for worktree-sourced projects
20
+ 4. In `src/commands/do.ts`, when no identifier is provided and `--worktree` is not set, call the extended picker that includes both local and worktree projects
21
+ 5. When the user selects a worktree project, set the execution context to worktree mode: use the worktree path as cwd, enable the post-execution action picker, and follow the worktree execution flow
22
+ 6. Add tests for the new discovery logic, picker formatting, and worktree auto-switch behavior
23
+
24
+ ## Acceptance Criteria
25
+ - [ ] `raf do` without arguments shows both local and worktree pending projects
26
+ - [ ] Worktree projects are labeled with `[worktree]` in the picker
27
+ - [ ] Selecting a worktree project automatically executes in worktree mode with post-action picker
28
+ - [ ] Projects are sorted chronologically (mixed local and worktree)
29
+ - [ ] When no worktree projects exist, picker behaves exactly as before
30
+ - [ ] Tests cover the new functionality
31
+
32
+ ## Notes
33
+ - Key files: `src/ui/project-picker.ts`, `src/commands/do.ts`, `src/core/worktree.ts`
34
+ - The existing `discoverAndPickWorktreeProject()` in `do.ts` (around line 491) has similar logic for `--worktree` mode — reuse patterns from there
35
+ - `listWorktreeProjects()` from `src/core/worktree.ts` returns project folder names for a given repo basename
36
+ - `getRepoBasename()` from worktree.ts gets the current repo's basename
37
+ - The picker return value needs to carry whether it's a worktree project so `do.ts` can handle it appropriately
@@ -0,0 +1,50 @@
1
+ # Task: Fix and Improve PR Description Generation
2
+
3
+ ## Objective
4
+ Fix the `\n` escaping bug in PR descriptions, filter out log noise, switch to Sonnet model, and restructure the PR body for clarity.
5
+
6
+ ## Context
7
+ PR descriptions currently have multiple issues:
8
+ 1. **Newlines rendered as literal `\n`** — Root cause: `pull-request.ts` line 421 uses `.replace(/\n/g, '\\n')` when building the `gh pr create --body` shell command, which turns real newlines into literal `\n` strings
9
+ 2. **Log output leaking into PR body** — Claude CLI stdout may include warning/log lines mixed with the actual response
10
+ 3. **Haiku produces low-quality summaries** — Should use Sonnet for better PR descriptions
11
+ 4. **PR body structure needs improvement** — Should have: proofread summary from input.md, key decisions from decisions.md, clear outline of what was done
12
+
13
+ ## Requirements
14
+ - Fix the `\n` escaping bug by writing the PR body to a temp file and using `gh pr create --body-file` instead of inline `--body`
15
+ - Filter Claude CLI output to remove any non-markdown log lines (console warnings, progress indicators, etc.)
16
+ - Change the model from `haiku` to `sonnet` in `callClaudeForPrBody()`
17
+ - Restructure the prompt to produce this format:
18
+ - **Summary**: Proofread, clean version of the project requirements from input.md
19
+ - **Key Decisions**: Most important design choices extracted from decisions.md (not all, just significant ones)
20
+ - **What Was Done**: Clear outline of completed work from outcomes
21
+ - **Test Plan**: How to verify the changes
22
+ - Clean up the temp file after PR creation
23
+
24
+ ## Dependencies
25
+ 01
26
+
27
+ ## Implementation Steps
28
+ 1. In `createPullRequest()`, write the generated PR body to a temp file and use `--body-file <path>` flag instead of `--body "<escaped>"`. Clean up the temp file after the `gh` command completes
29
+ 2. In `callClaudeForPrBody()`, change `--model haiku` to `--model sonnet`
30
+ 3. In `callClaudeForPrBody()`, add output filtering to strip non-markdown lines from Claude's stdout (lines that look like log output, warnings, or progress indicators)
31
+ 4. In `generatePrBody()`, rewrite the prompt template to instruct Claude to produce the new structured format: Summary (from input.md), Key Decisions (from decisions.md), What Was Done (from outcomes), Test Plan
32
+ 5. Update the fallback body in `generateFallbackBody()` to match the new structure
33
+ 6. Update tests for PR body generation, temp file handling, and the new prompt structure
34
+
35
+ ## Acceptance Criteria
36
+ - [ ] PR body contains proper newlines (not literal `\n`) when viewed on GitHub
37
+ - [ ] No log/warning output appears in PR descriptions
38
+ - [ ] Sonnet model is used for body generation
39
+ - [ ] PR body follows the new 4-section structure: Summary, Key Decisions, What Was Done, Test Plan
40
+ - [ ] Temp file is cleaned up after PR creation (even on error)
41
+ - [ ] Fallback body matches new structure
42
+ - [ ] All tests pass
43
+
44
+ ## Notes
45
+ - The `gh pr create --body-file` flag reads the body from a file, completely avoiding shell escaping issues
46
+ - Use `os.tmpdir()` and a unique filename for the temp file
47
+ - For output filtering: Claude CLI sometimes outputs lines starting with warning symbols or `console.warn` markers — strip anything that doesn't look like markdown content
48
+ - The prompt should emphasize that only the MOST important decisions should be included, not every Q&A pair
49
+ - `src/core/pull-request.ts` is the main file to modify
50
+ - Increase the timeout from 60s since Sonnet is slower than Haiku