rafcode 2.5.1-0 → 3.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 (557) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/CLAUDE.md +7 -345
  3. package/RAF/{aaaabn-dependencies-watchdog/plans/02-update-planning-prompts.md → 13-dependencies-watchdog/plans/2-update-planning-prompts.md} +1 -1
  4. package/RAF/{aaaabn-dependencies-watchdog/plans/03-parse-dependencies-update-state.md → 13-dependencies-watchdog/plans/3-parse-dependencies-update-state.md} +1 -1
  5. package/RAF/{aaaabn-dependencies-watchdog/plans/04-implement-dependency-checking-in-do.md → 13-dependencies-watchdog/plans/4-implement-dependency-checking-in-do.md} +1 -1
  6. package/RAF/{aaaabn-dependencies-watchdog/plans/05-update-execution-prompts.md → 13-dependencies-watchdog/plans/5-update-execution-prompts.md} +1 -1
  7. package/RAF/{aaaabn-dependencies-watchdog/plans/06-add-tests.md → 13-dependencies-watchdog/plans/6-add-tests.md} +1 -1
  8. package/RAF/{aaaabr-decision-vault/plans/02-integrate-commit-into-plan.md → 17-decision-vault/plans/2-integrate-commit-into-plan.md} +1 -1
  9. package/RAF/{aaaabr-decision-vault/plans/03-add-tests-for-planning-commit.md → 17-decision-vault/plans/3-add-tests-for-planning-commit.md} +1 -1
  10. package/RAF/{aaaabt-verbose-chronicle/plans/04-commit-verification-before-halt.md → 19-verbose-chronicle/plans/4-commit-verification-before-halt.md} +1 -1
  11. package/RAF/{aaaacu-worktree-weaver/plans/02-worktree-plan-command.md → 20-worktree-weaver/plans/2-worktree-plan-command.md} +1 -1
  12. package/RAF/{aaaacu-worktree-weaver/plans/03-worktree-do-command.md → 20-worktree-weaver/plans/3-worktree-do-command.md} +1 -1
  13. package/RAF/{aaaacu-worktree-weaver/plans/04-auto-merge-and-cleanup.md → 20-worktree-weaver/plans/4-auto-merge-and-cleanup.md} +1 -1
  14. package/RAF/{aaaacu-worktree-weaver/plans/05-worktree-tests.md → 20-worktree-weaver/plans/5-worktree-tests.md} +1 -1
  15. package/RAF/{aaaacu-worktree-weaver/plans/06-update-documentation.md → 20-worktree-weaver/plans/6-update-documentation.md} +1 -1
  16. package/RAF/{aaaacv-trim-the-fat/plans/03-commit-artifacts-on-amend.md → 21-trim-the-fat/plans/3-commit-artifacts-on-amend.md} +1 -1
  17. package/RAF/{aaaacv-trim-the-fat/plans/04-worktree-aware-exit-messages.md → 21-trim-the-fat/plans/4-worktree-aware-exit-messages.md} +1 -1
  18. package/RAF/{aaaacw-prune-cycle/plans/02-cleanup-worktree-on-success.md → 22-prune-cycle/plans/2-cleanup-worktree-on-success.md} +1 -1
  19. package/RAF/{aaaacw-prune-cycle/plans/03-amend-recreate-worktree.md → 22-prune-cycle/plans/3-amend-recreate-worktree.md} +1 -1
  20. package/RAF/{aaaacx-epoch-shift/plans/02-update-pattern-matching.md → 23-epoch-shift/plans/2-update-pattern-matching.md} +1 -1
  21. package/RAF/{aaaacx-epoch-shift/plans/03-update-tests.md → 23-epoch-shift/plans/3-update-tests.md} +1 -1
  22. package/RAF/{aaaacx-epoch-shift/plans/04-update-documentation.md → 23-epoch-shift/plans/4-update-documentation.md} +1 -1
  23. package/RAF/{ahmpro-merge-guardian/plans/003-worktree-pr-creation.md → 24-merge-guardian/plans/3-worktree-pr-creation.md} +1 -1
  24. package/RAF/{ahmpro-merge-guardian/plans/004-post-execution-picker.md → 24-merge-guardian/plans/4-post-execution-picker.md} +1 -1
  25. package/RAF/{ahnbcu-letterjam/plans/02-update-tests.md → 25-letterjam/plans/2-update-tests.md} +1 -1
  26. package/RAF/{ahnbcu-letterjam/plans/03-migrate-command.md → 25-letterjam/plans/3-migrate-command.md} +1 -1
  27. package/RAF/{ahnbcu-letterjam/plans/04-update-documentation.md → 25-letterjam/plans/4-update-documentation.md} +1 -1
  28. package/RAF/{ahnwrk-worktree-weaver/plans/04-fix-pr-description.md → 26-worktree-weaver/plans/4-fix-pr-description.md} +1 -1
  29. package/RAF/{ahrren-turbo-finder/plans/02-medium-effort-do.md → 27-turbo-finder/plans/2-medium-effort-do.md} +1 -1
  30. package/RAF/{ahslfe-config-wizard/plans/02-refactor-codebase-to-use-config.md → 28-config-wizard/plans/2-refactor-codebase-to-use-config.md} +1 -1
  31. package/RAF/{ahslfe-config-wizard/plans/03-create-config-documentation.md → 28-config-wizard/plans/3-create-config-documentation.md} +1 -1
  32. package/RAF/{ahslfe-config-wizard/plans/04-implement-raf-config-command.md → 28-config-wizard/plans/4-implement-raf-config-command.md} +1 -1
  33. package/RAF/{ahslfe-config-wizard/plans/05-update-claude-md.md → 28-config-wizard/plans/5-update-claude-md.md} +1 -1
  34. package/RAF/{ahstvo-token-tracker/plans/03-unify-stream-json-execution.md → 29-token-tracker/plans/3-unify-stream-json-execution.md} +1 -1
  35. package/RAF/{ahstvo-token-tracker/plans/04-token-tracking-cost-calculation.md → 29-token-tracker/plans/4-token-tracking-cost-calculation.md} +1 -1
  36. package/RAF/{ahstvo-token-tracker/plans/05-token-cost-console-reporting.md → 29-token-tracker/plans/5-token-cost-console-reporting.md} +1 -1
  37. package/RAF/{ahstvo-token-tracker/plans/06-runtime-verbose-toggle.md → 29-token-tracker/plans/6-runtime-verbose-toggle.md} +1 -1
  38. package/RAF/{ahtahs-token-reaper/plans/02-accumulate-usage-in-retry-loop.md → 30-token-reaper/plans/2-accumulate-usage-in-retry-loop.md} +1 -1
  39. package/RAF/{ahtahs-token-reaper/plans/03-per-attempt-display-formatting.md → 30-token-reaper/plans/3-per-attempt-display-formatting.md} +1 -1
  40. package/RAF/{ahvrih-rate-forge/plans/03-rate-limit-estimation.md → 31-rate-forge/plans/3-rate-limit-estimation.md} +1 -1
  41. package/RAF/{ahvrih-rate-forge/plans/06-sync-readme-with-codebase.md → 31-rate-forge/plans/6-sync-readme-with-codebase.md} +1 -1
  42. package/RAF/{ahvrih-rate-forge/plans/08-plan-execution-metadata.md → 31-rate-forge/plans/8-plan-execution-metadata.md} +1 -1
  43. package/RAF/{ahwidh-quick-fix-gremlin/plans/06-sync-worktree-branch-before-execution.md → 32-quick-fix-gremlin/plans/6-sync-worktree-branch-before-execution.md} +1 -1
  44. package/RAF/{ahwqwq-model-whisperer/plans/03-add-plan-resume-flag.md → 33-model-whisperer/plans/3-add-plan-resume-flag.md} +1 -1
  45. package/RAF/{ahwvrz-legacy-sunset/plans/02-fix-resume-worktree-resolution.md → 34-legacy-sunset/plans/2-fix-resume-worktree-resolution.md} +1 -1
  46. package/RAF/{ahwzmc-echo-forge/plans/03-update-readme.md → 35-echo-forge/plans/3-update-readme.md} +1 -1
  47. package/RAF/37-flux-weave/decisions.md +22 -0
  48. package/RAF/37-flux-weave/input.md +4 -0
  49. package/RAF/37-flux-weave/outcomes/1-numeric-project-ids.md +32 -0
  50. package/RAF/37-flux-weave/outcomes/2-numeric-task-ids.md +34 -0
  51. package/RAF/37-flux-weave/outcomes/3-amend-commit-without-new-plans.md +23 -0
  52. package/RAF/37-flux-weave/outcomes/4-auto-detect-existing-project.md +30 -0
  53. package/RAF/37-flux-weave/plans/1-numeric-project-ids.md +75 -0
  54. package/RAF/37-flux-weave/plans/2-numeric-task-ids.md +65 -0
  55. package/RAF/37-flux-weave/plans/3-amend-commit-without-new-plans.md +54 -0
  56. package/RAF/37-flux-weave/plans/4-auto-detect-existing-project.md +52 -0
  57. package/RAF/38-dual-wielder/decisions.md +35 -0
  58. package/RAF/38-dual-wielder/input.md +8 -0
  59. package/RAF/38-dual-wielder/outcomes/1-config-schema-provider-types.md +47 -0
  60. package/RAF/38-dual-wielder/outcomes/2-abstract-cli-runner.md +33 -0
  61. package/RAF/38-dual-wielder/outcomes/3-implement-codex-runner.md +38 -0
  62. package/RAF/38-dual-wielder/outcomes/4-update-prompts-llm-agnostic.md +50 -0
  63. package/RAF/38-dual-wielder/outcomes/5-update-readme-docs.md +33 -0
  64. package/RAF/38-dual-wielder/outcomes/6-do-unified-project-scanning.md +25 -0
  65. package/RAF/38-dual-wielder/outcomes/7-fix-plan-amend-automode.md +28 -0
  66. package/RAF/38-dual-wielder/plans/1-config-schema-provider-types.md +90 -0
  67. package/RAF/38-dual-wielder/plans/2-abstract-cli-runner.md +76 -0
  68. package/RAF/38-dual-wielder/plans/3-implement-codex-runner.md +94 -0
  69. package/RAF/38-dual-wielder/plans/4-update-prompts-llm-agnostic.md +70 -0
  70. package/RAF/38-dual-wielder/plans/5-update-readme-docs.md +52 -0
  71. package/RAF/38-dual-wielder/plans/6-do-unified-project-scanning.md +40 -0
  72. package/RAF/38-dual-wielder/plans/7-fix-plan-amend-automode.md +51 -0
  73. package/README.md +57 -10
  74. package/dist/commands/config.js +7 -7
  75. package/dist/commands/config.js.map +1 -1
  76. package/dist/commands/do.d.ts.map +1 -1
  77. package/dist/commands/do.js +42 -69
  78. package/dist/commands/do.js.map +1 -1
  79. package/dist/commands/plan.d.ts.map +1 -1
  80. package/dist/commands/plan.js +71 -34
  81. package/dist/commands/plan.js.map +1 -1
  82. package/dist/commands/status.js +1 -1
  83. package/dist/commands/status.js.map +1 -1
  84. package/dist/core/claude-runner.d.ts +19 -116
  85. package/dist/core/claude-runner.d.ts.map +1 -1
  86. package/dist/core/claude-runner.js +20 -173
  87. package/dist/core/claude-runner.js.map +1 -1
  88. package/dist/core/codex-runner.d.ts +41 -0
  89. package/dist/core/codex-runner.d.ts.map +1 -0
  90. package/dist/core/codex-runner.js +271 -0
  91. package/dist/core/codex-runner.js.map +1 -0
  92. package/dist/core/completion-detector.d.ts +47 -0
  93. package/dist/core/completion-detector.d.ts.map +1 -0
  94. package/dist/core/completion-detector.js +143 -0
  95. package/dist/core/completion-detector.js.map +1 -0
  96. package/dist/core/failure-analyzer.d.ts +1 -1
  97. package/dist/core/failure-analyzer.js +10 -10
  98. package/dist/core/failure-analyzer.js.map +1 -1
  99. package/dist/core/pull-request.d.ts +4 -4
  100. package/dist/core/pull-request.js +11 -11
  101. package/dist/core/pull-request.js.map +1 -1
  102. package/dist/core/runner-factory.d.ts +12 -0
  103. package/dist/core/runner-factory.d.ts.map +1 -0
  104. package/dist/core/runner-factory.js +30 -0
  105. package/dist/core/runner-factory.js.map +1 -0
  106. package/dist/core/runner-interface.d.ts +14 -0
  107. package/dist/core/runner-interface.d.ts.map +1 -0
  108. package/dist/core/runner-interface.js +2 -0
  109. package/dist/core/runner-interface.js.map +1 -0
  110. package/dist/core/runner-types.d.ts +73 -0
  111. package/dist/core/runner-types.d.ts.map +1 -0
  112. package/dist/core/runner-types.js +2 -0
  113. package/dist/core/runner-types.js.map +1 -0
  114. package/dist/core/shutdown-handler.d.ts +8 -4
  115. package/dist/core/shutdown-handler.d.ts.map +1 -1
  116. package/dist/core/shutdown-handler.js +14 -8
  117. package/dist/core/shutdown-handler.js.map +1 -1
  118. package/dist/core/state-derivation.d.ts +2 -2
  119. package/dist/core/state-derivation.d.ts.map +1 -1
  120. package/dist/core/state-derivation.js +10 -13
  121. package/dist/core/state-derivation.js.map +1 -1
  122. package/dist/core/worktree.d.ts +1 -1
  123. package/dist/core/worktree.d.ts.map +1 -1
  124. package/dist/core/worktree.js +14 -16
  125. package/dist/core/worktree.js.map +1 -1
  126. package/dist/index.js +1 -1
  127. package/dist/index.js.map +1 -1
  128. package/dist/parsers/codex-stream-renderer.d.ts +31 -0
  129. package/dist/parsers/codex-stream-renderer.d.ts.map +1 -0
  130. package/dist/parsers/codex-stream-renderer.js +81 -0
  131. package/dist/parsers/codex-stream-renderer.js.map +1 -0
  132. package/dist/parsers/output-parser.d.ts +2 -2
  133. package/dist/parsers/output-parser.js +2 -2
  134. package/dist/parsers/stream-renderer.d.ts +1 -1
  135. package/dist/parsers/stream-renderer.js +1 -1
  136. package/dist/prompts/amend.d.ts +1 -1
  137. package/dist/prompts/amend.js +6 -6
  138. package/dist/prompts/execution.js +2 -2
  139. package/dist/prompts/execution.js.map +1 -1
  140. package/dist/prompts/planning.d.ts +1 -1
  141. package/dist/prompts/planning.js +12 -12
  142. package/dist/types/config.d.ts +21 -0
  143. package/dist/types/config.d.ts.map +1 -1
  144. package/dist/types/config.js +16 -0
  145. package/dist/types/config.js.map +1 -1
  146. package/dist/ui/project-picker.d.ts.map +1 -1
  147. package/dist/ui/project-picker.js.map +1 -1
  148. package/dist/utils/config.d.ts +24 -6
  149. package/dist/utils/config.d.ts.map +1 -1
  150. package/dist/utils/config.js +155 -15
  151. package/dist/utils/config.js.map +1 -1
  152. package/dist/utils/name-generator.d.ts +2 -2
  153. package/dist/utils/name-generator.js +9 -9
  154. package/dist/utils/name-generator.js.map +1 -1
  155. package/dist/utils/paths.d.ts +27 -51
  156. package/dist/utils/paths.d.ts.map +1 -1
  157. package/dist/utils/paths.js +112 -150
  158. package/dist/utils/paths.js.map +1 -1
  159. package/dist/utils/token-tracker.d.ts +2 -2
  160. package/dist/utils/token-tracker.js +4 -4
  161. package/dist/utils/token-tracker.js.map +1 -1
  162. package/dist/utils/validation.d.ts.map +1 -1
  163. package/dist/utils/validation.js +7 -10
  164. package/dist/utils/validation.js.map +1 -1
  165. package/package.json +1 -1
  166. package/src/commands/config.ts +7 -7
  167. package/src/commands/do.ts +45 -79
  168. package/src/commands/plan.ts +74 -34
  169. package/src/commands/status.ts +1 -1
  170. package/src/core/claude-runner.ts +33 -277
  171. package/src/core/codex-runner.ts +326 -0
  172. package/src/core/completion-detector.ts +177 -0
  173. package/src/core/failure-analyzer.ts +10 -10
  174. package/src/core/pull-request.ts +11 -11
  175. package/src/core/runner-factory.ts +35 -0
  176. package/src/core/runner-interface.ts +14 -0
  177. package/src/core/runner-types.ts +75 -0
  178. package/src/core/shutdown-handler.ts +17 -10
  179. package/src/core/state-derivation.ts +10 -13
  180. package/src/core/worktree.ts +14 -16
  181. package/src/index.ts +1 -1
  182. package/src/parsers/codex-stream-renderer.ts +108 -0
  183. package/src/parsers/output-parser.ts +2 -2
  184. package/src/parsers/stream-renderer.ts +1 -1
  185. package/src/prompts/amend.ts +6 -6
  186. package/src/prompts/config-docs.md +7 -7
  187. package/src/prompts/execution.ts +2 -2
  188. package/src/prompts/planning.ts +12 -12
  189. package/src/types/config.ts +39 -0
  190. package/src/ui/project-picker.ts +1 -0
  191. package/src/utils/config.ts +170 -14
  192. package/src/utils/name-generator.ts +9 -9
  193. package/src/utils/paths.ts +113 -159
  194. package/src/utils/token-tracker.ts +4 -4
  195. package/src/utils/validation.ts +7 -10
  196. package/tests/unit/commit-planning-artifacts-worktree.test.ts +14 -14
  197. package/tests/unit/commit-planning-artifacts.test.ts +40 -40
  198. package/tests/unit/config.test.ts +8 -8
  199. package/tests/unit/dependency-integration.test.ts +96 -96
  200. package/tests/unit/do-blocked-tasks.test.ts +1 -1
  201. package/tests/unit/do-command.test.ts +36 -36
  202. package/tests/unit/do-rerun.test.ts +1 -1
  203. package/tests/unit/execution-prompt.test.ts +62 -62
  204. package/tests/unit/git-stash.test.ts +4 -4
  205. package/tests/unit/paths.test.ts +135 -249
  206. package/tests/unit/plan-command.test.ts +103 -103
  207. package/tests/unit/planning-prompt.test.ts +3 -3
  208. package/tests/unit/project-manager.test.ts +9 -10
  209. package/tests/unit/project-picker.test.ts +74 -74
  210. package/tests/unit/pull-request.test.ts +3 -3
  211. package/tests/unit/state-derivation.test.ts +144 -144
  212. package/tests/unit/status-command.test.ts +71 -103
  213. package/tests/unit/worktree.test.ts +32 -33
  214. /package/RAF/{aaaaab-raf-task-improvements → 1-raf-task-improvements}/input.md +0 -0
  215. /package/RAF/{aaaaab-raf-task-improvements/outcomes/01-add-decisions-folder.md → 1-raf-task-improvements/outcomes/1-add-decisions-folder.md} +0 -0
  216. /package/RAF/{aaaaab-raf-task-improvements/outcomes/02-fix-write-error-on-shutdown.md → 1-raf-task-improvements/outcomes/2-fix-write-error-on-shutdown.md} +0 -0
  217. /package/RAF/{aaaaab-raf-task-improvements/outcomes/03-stash-changes-on-failure.md → 1-raf-task-improvements/outcomes/3-stash-changes-on-failure.md} +0 -0
  218. /package/RAF/{aaaaab-raf-task-improvements/outcomes/04-add-project-name-to-commits.md → 1-raf-task-improvements/outcomes/4-add-project-name-to-commits.md} +0 -0
  219. /package/RAF/{aaaaab-raf-task-improvements/outcomes/05-add-running-time-display.md → 1-raf-task-improvements/outcomes/5-add-running-time-display.md} +0 -0
  220. /package/RAF/{aaaaab-raf-task-improvements/outcomes/06-add-task-name-to-logs.md → 1-raf-task-improvements/outcomes/6-add-task-name-to-logs.md} +0 -0
  221. /package/RAF/{aaaaab-raf-task-improvements/outcomes/07-show-model-at-task-start.md → 1-raf-task-improvements/outcomes/7-show-model-at-task-start.md} +0 -0
  222. /package/RAF/{aaaaab-raf-task-improvements/outcomes/09-remove-editor-placeholder-text.md → 1-raf-task-improvements/outcomes/9-remove-editor-placeholder-text.md} +0 -0
  223. /package/RAF/{aaaaab-raf-task-improvements → 1-raf-task-improvements}/outcomes/SUMMARY.md +0 -0
  224. /package/RAF/{aaaaab-raf-task-improvements/plans/01-add-decisions-folder.md → 1-raf-task-improvements/plans/1-add-decisions-folder.md} +0 -0
  225. /package/RAF/{aaaaab-raf-task-improvements/plans/02-fix-write-error-on-shutdown.md → 1-raf-task-improvements/plans/2-fix-write-error-on-shutdown.md} +0 -0
  226. /package/RAF/{aaaaab-raf-task-improvements/plans/03-stash-changes-on-failure.md → 1-raf-task-improvements/plans/3-stash-changes-on-failure.md} +0 -0
  227. /package/RAF/{aaaaab-raf-task-improvements/plans/04-add-project-name-to-commits.md → 1-raf-task-improvements/plans/4-add-project-name-to-commits.md} +0 -0
  228. /package/RAF/{aaaaab-raf-task-improvements/plans/05-add-running-time-display.md → 1-raf-task-improvements/plans/5-add-running-time-display.md} +0 -0
  229. /package/RAF/{aaaaab-raf-task-improvements/plans/06-add-task-name-to-logs.md → 1-raf-task-improvements/plans/6-add-task-name-to-logs.md} +0 -0
  230. /package/RAF/{aaaaab-raf-task-improvements/plans/09-remove-editor-placeholder-text.md → 1-raf-task-improvements/plans/9-remove-editor-placeholder-text.md} +0 -0
  231. /package/RAF/{aaaabk-outcome-marker-fallback → 10-outcome-marker-fallback}/decisions.md +0 -0
  232. /package/RAF/{aaaabk-outcome-marker-fallback → 10-outcome-marker-fallback}/input.md +0 -0
  233. /package/RAF/{aaaabk-outcome-marker-fallback/outcomes/01-outcome-file-marker-fallback.md → 10-outcome-marker-fallback/outcomes/1-outcome-file-marker-fallback.md} +0 -0
  234. /package/RAF/{aaaabk-outcome-marker-fallback/outcomes/02-creative-project-naming.md → 10-outcome-marker-fallback/outcomes/2-creative-project-naming.md} +0 -0
  235. /package/RAF/{aaaabk-outcome-marker-fallback/plans/01-outcome-file-marker-fallback.md → 10-outcome-marker-fallback/plans/1-outcome-file-marker-fallback.md} +0 -0
  236. /package/RAF/{aaaabk-outcome-marker-fallback/plans/02-creative-project-naming.md → 10-outcome-marker-fallback/plans/2-creative-project-naming.md} +0 -0
  237. /package/RAF/{aaaabl-do-task-in-commit → 11-do-task-in-commit}/decisions.md +0 -0
  238. /package/RAF/{aaaabl-do-task-in-commit → 11-do-task-in-commit}/input.md +0 -0
  239. /package/RAF/{aaaabl-do-task-in-commit/outcomes/01-update-execution-prompt.md → 11-do-task-in-commit/outcomes/1-update-execution-prompt.md} +0 -0
  240. /package/RAF/{aaaabl-do-task-in-commit/outcomes/02-update-tests.md → 11-do-task-in-commit/outcomes/2-update-tests.md} +0 -0
  241. /package/RAF/{aaaabl-do-task-in-commit/outcomes/03-update-documentation.md → 11-do-task-in-commit/outcomes/3-update-documentation.md} +0 -0
  242. /package/RAF/{aaaabl-do-task-in-commit/plans/01-update-execution-prompt.md → 11-do-task-in-commit/plans/1-update-execution-prompt.md} +0 -0
  243. /package/RAF/{aaaabl-do-task-in-commit/plans/02-update-tests.md → 11-do-task-in-commit/plans/2-update-tests.md} +0 -0
  244. /package/RAF/{aaaabl-do-task-in-commit/plans/03-update-documentation.md → 11-do-task-in-commit/plans/3-update-documentation.md} +0 -0
  245. /package/RAF/{aaaabm-name-picker-buffet → 12-name-picker-buffet}/decisions.md +0 -0
  246. /package/RAF/{aaaabm-name-picker-buffet → 12-name-picker-buffet}/input.md +0 -0
  247. /package/RAF/{aaaabm-name-picker-buffet/outcomes/01-name-picker-for-raf-plan.md → 12-name-picker-buffet/outcomes/1-name-picker-for-raf-plan.md} +0 -0
  248. /package/RAF/{aaaabm-name-picker-buffet/outcomes/02-interactive-project-picker-for-raf-do.md → 12-name-picker-buffet/outcomes/2-interactive-project-picker-for-raf-do.md} +0 -0
  249. /package/RAF/{aaaabm-name-picker-buffet/outcomes/03-raf-status-truncation.md → 12-name-picker-buffet/outcomes/3-raf-status-truncation.md} +0 -0
  250. /package/RAF/{aaaabm-name-picker-buffet/outcomes/04-failure-reason-details.md → 12-name-picker-buffet/outcomes/4-failure-reason-details.md} +0 -0
  251. /package/RAF/{aaaabm-name-picker-buffet/outcomes/05-remove-raf-commits.md → 12-name-picker-buffet/outcomes/5-remove-raf-commits.md} +0 -0
  252. /package/RAF/{aaaabm-name-picker-buffet/outcomes/06-update-execution-prompt-for-commits.md → 12-name-picker-buffet/outcomes/6-update-execution-prompt-for-commits.md} +0 -0
  253. /package/RAF/{aaaabm-name-picker-buffet/outcomes/07-fix-plan-mode-user-prompt.md → 12-name-picker-buffet/outcomes/7-fix-plan-mode-user-prompt.md} +0 -0
  254. /package/RAF/{aaaabm-name-picker-buffet/outcomes/08-add-auto-flag-for-plan-mode.md → 12-name-picker-buffet/outcomes/8-add-auto-flag-for-plan-mode.md} +0 -0
  255. /package/RAF/{aaaabm-name-picker-buffet/plans/01-name-picker-for-raf-plan.md → 12-name-picker-buffet/plans/1-name-picker-for-raf-plan.md} +0 -0
  256. /package/RAF/{aaaabm-name-picker-buffet/plans/02-interactive-project-picker-for-raf-do.md → 12-name-picker-buffet/plans/2-interactive-project-picker-for-raf-do.md} +0 -0
  257. /package/RAF/{aaaabm-name-picker-buffet/plans/03-raf-status-truncation.md → 12-name-picker-buffet/plans/3-raf-status-truncation.md} +0 -0
  258. /package/RAF/{aaaabm-name-picker-buffet/plans/04-failure-reason-details.md → 12-name-picker-buffet/plans/4-failure-reason-details.md} +0 -0
  259. /package/RAF/{aaaabm-name-picker-buffet/plans/05-remove-raf-commits.md → 12-name-picker-buffet/plans/5-remove-raf-commits.md} +0 -0
  260. /package/RAF/{aaaabm-name-picker-buffet/plans/06-update-execution-prompt-for-commits.md → 12-name-picker-buffet/plans/6-update-execution-prompt-for-commits.md} +0 -0
  261. /package/RAF/{aaaabm-name-picker-buffet/plans/07-fix-plan-mode-user-prompt.md → 12-name-picker-buffet/plans/7-fix-plan-mode-user-prompt.md} +0 -0
  262. /package/RAF/{aaaabm-name-picker-buffet/plans/08-add-auto-flag-for-plan-mode.md → 12-name-picker-buffet/plans/8-add-auto-flag-for-plan-mode.md} +0 -0
  263. /package/RAF/{aaaabn-dependencies-watchdog → 13-dependencies-watchdog}/decisions.md +0 -0
  264. /package/RAF/{aaaabn-dependencies-watchdog → 13-dependencies-watchdog}/input.md +0 -0
  265. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/01-define-dependency-syntax.md → 13-dependencies-watchdog/outcomes/1-define-dependency-syntax.md} +0 -0
  266. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/02-update-planning-prompts.md → 13-dependencies-watchdog/outcomes/2-update-planning-prompts.md} +0 -0
  267. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/03-parse-dependencies-update-state.md → 13-dependencies-watchdog/outcomes/3-parse-dependencies-update-state.md} +0 -0
  268. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/04-implement-dependency-checking-in-do.md → 13-dependencies-watchdog/outcomes/4-implement-dependency-checking-in-do.md} +0 -0
  269. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/05-update-execution-prompts.md → 13-dependencies-watchdog/outcomes/5-update-execution-prompts.md} +0 -0
  270. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/06-add-tests.md → 13-dependencies-watchdog/outcomes/6-add-tests.md} +0 -0
  271. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/07-add-act-alias.md → 13-dependencies-watchdog/outcomes/7-add-act-alias.md} +0 -0
  272. /package/RAF/{aaaabn-dependencies-watchdog/outcomes/08-add-exit-message.md → 13-dependencies-watchdog/outcomes/8-add-exit-message.md} +0 -0
  273. /package/RAF/{aaaabn-dependencies-watchdog/plans/01-define-dependency-syntax.md → 13-dependencies-watchdog/plans/1-define-dependency-syntax.md} +0 -0
  274. /package/RAF/{aaaabn-dependencies-watchdog/plans/07-add-act-alias.md → 13-dependencies-watchdog/plans/7-add-act-alias.md} +0 -0
  275. /package/RAF/{aaaabn-dependencies-watchdog/plans/08-add-exit-message.md → 13-dependencies-watchdog/plans/8-add-exit-message.md} +0 -0
  276. /package/RAF/{aaaabo-watchdog → 14-watchdog}/decisions.md +0 -0
  277. /package/RAF/{aaaabo-watchdog → 14-watchdog}/input.md +0 -0
  278. /package/RAF/{aaaabo-watchdog/outcomes/01-amend-flag-position.md → 14-watchdog/outcomes/1-amend-flag-position.md} +0 -0
  279. /package/RAF/{aaaabo-watchdog/outcomes/02-details-only-on-failure.md → 14-watchdog/outcomes/2-details-only-on-failure.md} +0 -0
  280. /package/RAF/{aaaabo-watchdog/plans/01-amend-flag-position.md → 14-watchdog/plans/1-amend-flag-position.md} +0 -0
  281. /package/RAF/{aaaabo-watchdog/plans/02-details-only-on-failure.md → 14-watchdog/plans/2-details-only-on-failure.md} +0 -0
  282. /package/RAF/{aaaabp-name-lottery → 15-name-lottery}/decisions.md +0 -0
  283. /package/RAF/{aaaabp-name-lottery → 15-name-lottery}/input.md +0 -0
  284. /package/RAF/{aaaabp-name-lottery/outcomes/01-auto-pick-project-name.md → 15-name-lottery/outcomes/1-auto-pick-project-name.md} +0 -0
  285. /package/RAF/{aaaabp-name-lottery/outcomes/02-mention-plan-files-in-commit.md → 15-name-lottery/outcomes/2-mention-plan-files-in-commit.md} +0 -0
  286. /package/RAF/{aaaabp-name-lottery/outcomes/03-fix-input-md-in-amend-flow.md → 15-name-lottery/outcomes/3-fix-input-md-in-amend-flow.md} +0 -0
  287. /package/RAF/{aaaabp-name-lottery/plans/01-auto-pick-project-name.md → 15-name-lottery/plans/1-auto-pick-project-name.md} +0 -0
  288. /package/RAF/{aaaabp-name-lottery/plans/02-mention-plan-files-in-commit.md → 15-name-lottery/plans/2-mention-plan-files-in-commit.md} +0 -0
  289. /package/RAF/{aaaabp-name-lottery/plans/03-fix-input-md-in-amend-flow.md → 15-name-lottery/plans/3-fix-input-md-in-amend-flow.md} +0 -0
  290. /package/RAF/{aaaabq-planning-scalpel → 16-planning-scalpel}/decisions.md +0 -0
  291. /package/RAF/{aaaabq-planning-scalpel → 16-planning-scalpel}/input.md +0 -0
  292. /package/RAF/{aaaabq-planning-scalpel/outcomes/01-update-git-commit-instructions.md → 16-planning-scalpel/outcomes/1-update-git-commit-instructions.md} +0 -0
  293. /package/RAF/{aaaabq-planning-scalpel/plans/01-update-git-commit-instructions.md → 16-planning-scalpel/plans/1-update-git-commit-instructions.md} +0 -0
  294. /package/RAF/{aaaabr-decision-vault → 17-decision-vault}/decisions.md +0 -0
  295. /package/RAF/{aaaabr-decision-vault → 17-decision-vault}/input.md +0 -0
  296. /package/RAF/{aaaabr-decision-vault/outcomes/01-create-git-commit-utility.md → 17-decision-vault/outcomes/1-create-git-commit-utility.md} +0 -0
  297. /package/RAF/{aaaabr-decision-vault/outcomes/02-integrate-commit-into-plan.md → 17-decision-vault/outcomes/2-integrate-commit-into-plan.md} +0 -0
  298. /package/RAF/{aaaabr-decision-vault/outcomes/03-add-tests-for-planning-commit.md → 17-decision-vault/outcomes/3-add-tests-for-planning-commit.md} +0 -0
  299. /package/RAF/{aaaabr-decision-vault/plans/01-create-git-commit-utility.md → 17-decision-vault/plans/1-create-git-commit-utility.md} +0 -0
  300. /package/RAF/{aaaabs-workflow-forge → 18-workflow-forge}/decisions.md +0 -0
  301. /package/RAF/{aaaabs-workflow-forge → 18-workflow-forge}/input.md +0 -0
  302. /package/RAF/{aaaabs-workflow-forge/outcomes/01-add-task-number-progress.md → 18-workflow-forge/outcomes/1-add-task-number-progress.md} +0 -0
  303. /package/RAF/{aaaabs-workflow-forge/outcomes/02-update-plan-do-prompts.md → 18-workflow-forge/outcomes/2-update-plan-do-prompts.md} +0 -0
  304. /package/RAF/{aaaabs-workflow-forge/plans/01-add-task-number-progress.md → 18-workflow-forge/plans/1-add-task-number-progress.md} +0 -0
  305. /package/RAF/{aaaabs-workflow-forge/plans/02-update-plan-do-prompts.md → 18-workflow-forge/plans/2-update-plan-do-prompts.md} +0 -0
  306. /package/RAF/{aaaabt-verbose-chronicle → 19-verbose-chronicle}/decisions.md +0 -0
  307. /package/RAF/{aaaabt-verbose-chronicle → 19-verbose-chronicle}/input.md +0 -0
  308. /package/RAF/{aaaabt-verbose-chronicle/outcomes/01-amend-iteration-references.md → 19-verbose-chronicle/outcomes/1-amend-iteration-references.md} +0 -0
  309. /package/RAF/{aaaabt-verbose-chronicle/outcomes/02-verbose-task-name-display.md → 19-verbose-chronicle/outcomes/2-verbose-task-name-display.md} +0 -0
  310. /package/RAF/{aaaabt-verbose-chronicle/outcomes/03-verbose-streaming-fix.md → 19-verbose-chronicle/outcomes/3-verbose-streaming-fix.md} +0 -0
  311. /package/RAF/{aaaabt-verbose-chronicle/outcomes/04-commit-verification-before-halt.md → 19-verbose-chronicle/outcomes/4-commit-verification-before-halt.md} +0 -0
  312. /package/RAF/{aaaabt-verbose-chronicle/plans/01-amend-iteration-references.md → 19-verbose-chronicle/plans/1-amend-iteration-references.md} +0 -0
  313. /package/RAF/{aaaabt-verbose-chronicle/plans/02-verbose-task-name-display.md → 19-verbose-chronicle/plans/2-verbose-task-name-display.md} +0 -0
  314. /package/RAF/{aaaabt-verbose-chronicle/plans/03-verbose-streaming-fix.md → 19-verbose-chronicle/plans/3-verbose-streaming-fix.md} +0 -0
  315. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/decisions/DECISIONS.md +0 -0
  316. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/input.md +0 -0
  317. /package/RAF/{aaaaac-raf-task-improvements-execution/outcomes/01-commit-show-model-at-task-start.md → 2-raf-task-improvements-execution/outcomes/1-commit-show-model-at-task-start.md} +0 -0
  318. /package/RAF/{aaaaac-raf-task-improvements-execution/outcomes/02-delete-skipped-plan.md → 2-raf-task-improvements-execution/outcomes/2-delete-skipped-plan.md} +0 -0
  319. /package/RAF/{aaaaac-raf-task-improvements-execution → 2-raf-task-improvements-execution}/outcomes/SUMMARY.md +0 -0
  320. /package/RAF/{aaaaac-raf-task-improvements-execution/plans/01-commit-show-model-at-task-start.md → 2-raf-task-improvements-execution/plans/1-commit-show-model-at-task-start.md} +0 -0
  321. /package/RAF/{aaaaac-raf-task-improvements-execution/plans/02-delete-skipped-plan.md → 2-raf-task-improvements-execution/plans/2-delete-skipped-plan.md} +0 -0
  322. /package/RAF/{aaaacu-worktree-weaver → 20-worktree-weaver}/decisions.md +0 -0
  323. /package/RAF/{aaaacu-worktree-weaver → 20-worktree-weaver}/input.md +0 -0
  324. /package/RAF/{aaaacu-worktree-weaver/outcomes/01-git-worktree-utilities.md → 20-worktree-weaver/outcomes/1-git-worktree-utilities.md} +0 -0
  325. /package/RAF/{aaaacu-worktree-weaver/outcomes/02-worktree-plan-command.md → 20-worktree-weaver/outcomes/2-worktree-plan-command.md} +0 -0
  326. /package/RAF/{aaaacu-worktree-weaver/outcomes/03-worktree-do-command.md → 20-worktree-weaver/outcomes/3-worktree-do-command.md} +0 -0
  327. /package/RAF/{aaaacu-worktree-weaver/outcomes/04-auto-merge-and-cleanup.md → 20-worktree-weaver/outcomes/4-auto-merge-and-cleanup.md} +0 -0
  328. /package/RAF/{aaaacu-worktree-weaver/outcomes/05-worktree-tests.md → 20-worktree-weaver/outcomes/5-worktree-tests.md} +0 -0
  329. /package/RAF/{aaaacu-worktree-weaver/outcomes/06-update-documentation.md → 20-worktree-weaver/outcomes/6-update-documentation.md} +0 -0
  330. /package/RAF/{aaaacu-worktree-weaver/plans/01-git-worktree-utilities.md → 20-worktree-weaver/plans/1-git-worktree-utilities.md} +0 -0
  331. /package/RAF/{aaaacv-trim-the-fat → 21-trim-the-fat}/decisions.md +0 -0
  332. /package/RAF/{aaaacv-trim-the-fat → 21-trim-the-fat}/input.md +0 -0
  333. /package/RAF/{aaaacv-trim-the-fat/outcomes/01-add-worktree-support-to-status.md → 21-trim-the-fat/outcomes/1-add-worktree-support-to-status.md} +0 -0
  334. /package/RAF/{aaaacv-trim-the-fat/outcomes/02-remove-multi-project-from-do.md → 21-trim-the-fat/outcomes/2-remove-multi-project-from-do.md} +0 -0
  335. /package/RAF/{aaaacv-trim-the-fat/outcomes/03-commit-artifacts-on-amend.md → 21-trim-the-fat/outcomes/3-commit-artifacts-on-amend.md} +0 -0
  336. /package/RAF/{aaaacv-trim-the-fat/outcomes/04-worktree-aware-exit-messages.md → 21-trim-the-fat/outcomes/4-worktree-aware-exit-messages.md} +0 -0
  337. /package/RAF/{aaaacv-trim-the-fat/plans/01-add-worktree-support-to-status.md → 21-trim-the-fat/plans/1-add-worktree-support-to-status.md} +0 -0
  338. /package/RAF/{aaaacv-trim-the-fat/plans/02-remove-multi-project-from-do.md → 21-trim-the-fat/plans/2-remove-multi-project-from-do.md} +0 -0
  339. /package/RAF/{aaaacw-prune-cycle → 22-prune-cycle}/decisions.md +0 -0
  340. /package/RAF/{aaaacw-prune-cycle → 22-prune-cycle}/input.md +0 -0
  341. /package/RAF/{aaaacw-prune-cycle/outcomes/01-create-worktree-from-branch.md → 22-prune-cycle/outcomes/1-create-worktree-from-branch.md} +0 -0
  342. /package/RAF/{aaaacw-prune-cycle/outcomes/02-cleanup-worktree-on-success.md → 22-prune-cycle/outcomes/2-cleanup-worktree-on-success.md} +0 -0
  343. /package/RAF/{aaaacw-prune-cycle/outcomes/03-amend-recreate-worktree.md → 22-prune-cycle/outcomes/3-amend-recreate-worktree.md} +0 -0
  344. /package/RAF/{aaaacw-prune-cycle/plans/01-create-worktree-from-branch.md → 22-prune-cycle/plans/1-create-worktree-from-branch.md} +0 -0
  345. /package/RAF/{aaaacx-epoch-shift → 23-epoch-shift}/decisions.md +0 -0
  346. /package/RAF/{aaaacx-epoch-shift → 23-epoch-shift}/input.md +0 -0
  347. /package/RAF/{aaaacx-epoch-shift/outcomes/01-epoch-id-generation.md → 23-epoch-shift/outcomes/1-epoch-id-generation.md} +0 -0
  348. /package/RAF/{aaaacx-epoch-shift/outcomes/02-update-pattern-matching.md → 23-epoch-shift/outcomes/2-update-pattern-matching.md} +0 -0
  349. /package/RAF/{aaaacx-epoch-shift/outcomes/03-update-tests.md → 23-epoch-shift/outcomes/3-update-tests.md} +0 -0
  350. /package/RAF/{aaaacx-epoch-shift/outcomes/04-update-documentation.md → 23-epoch-shift/outcomes/4-update-documentation.md} +0 -0
  351. /package/RAF/{aaaacx-epoch-shift/plans/01-epoch-id-generation.md → 23-epoch-shift/plans/1-epoch-id-generation.md} +0 -0
  352. /package/RAF/{ahmpro-merge-guardian → 24-merge-guardian}/decisions.md +0 -0
  353. /package/RAF/{ahmpro-merge-guardian → 24-merge-guardian}/input.md +0 -0
  354. /package/RAF/{ahmpro-merge-guardian/outcomes/001-fix-amend-worktree-commit.md → 24-merge-guardian/outcomes/1-fix-amend-worktree-commit.md} +0 -0
  355. /package/RAF/{ahmpro-merge-guardian/outcomes/002-base36-task-ids.md → 24-merge-guardian/outcomes/2-base36-task-ids.md} +0 -0
  356. /package/RAF/{ahmpro-merge-guardian/outcomes/003-worktree-pr-creation.md → 24-merge-guardian/outcomes/3-worktree-pr-creation.md} +0 -0
  357. /package/RAF/{ahmpro-merge-guardian/outcomes/004-post-execution-picker.md → 24-merge-guardian/outcomes/4-post-execution-picker.md} +0 -0
  358. /package/RAF/{ahmpro-merge-guardian/plans/001-fix-amend-worktree-commit.md → 24-merge-guardian/plans/1-fix-amend-worktree-commit.md} +0 -0
  359. /package/RAF/{ahmpro-merge-guardian/plans/002-base36-task-ids.md → 24-merge-guardian/plans/2-base36-task-ids.md} +0 -0
  360. /package/RAF/{ahnbcu-letterjam → 25-letterjam}/decisions.md +0 -0
  361. /package/RAF/{ahnbcu-letterjam → 25-letterjam}/input.md +0 -0
  362. /package/RAF/{ahnbcu-letterjam/outcomes/01-base26-encoding.md → 25-letterjam/outcomes/1-base26-encoding.md} +0 -0
  363. /package/RAF/{ahnbcu-letterjam/outcomes/02-update-tests.md → 25-letterjam/outcomes/2-update-tests.md} +0 -0
  364. /package/RAF/{ahnbcu-letterjam/outcomes/03-migrate-command.md → 25-letterjam/outcomes/3-migrate-command.md} +0 -0
  365. /package/RAF/{ahnbcu-letterjam/outcomes/04-update-documentation.md → 25-letterjam/outcomes/4-update-documentation.md} +0 -0
  366. /package/RAF/{ahnbcu-letterjam/plans/01-base26-encoding.md → 25-letterjam/plans/1-base26-encoding.md} +0 -0
  367. /package/RAF/{ahnwrk-worktree-weaver → 26-worktree-weaver}/decisions.md +0 -0
  368. /package/RAF/{ahnwrk-worktree-weaver → 26-worktree-weaver}/input.md +0 -0
  369. /package/RAF/{ahnwrk-worktree-weaver/outcomes/01-remove-co-authored-by.md → 26-worktree-weaver/outcomes/1-remove-co-authored-by.md} +0 -0
  370. /package/RAF/{ahnwrk-worktree-weaver/outcomes/02-update-task-status-format.md → 26-worktree-weaver/outcomes/2-update-task-status-format.md} +0 -0
  371. /package/RAF/{ahnwrk-worktree-weaver/outcomes/03-worktree-auto-discovery.md → 26-worktree-weaver/outcomes/3-worktree-auto-discovery.md} +0 -0
  372. /package/RAF/{ahnwrk-worktree-weaver/outcomes/04-fix-pr-description.md → 26-worktree-weaver/outcomes/4-fix-pr-description.md} +0 -0
  373. /package/RAF/{ahnwrk-worktree-weaver/plans/01-remove-co-authored-by.md → 26-worktree-weaver/plans/1-remove-co-authored-by.md} +0 -0
  374. /package/RAF/{ahnwrk-worktree-weaver/plans/02-update-task-status-format.md → 26-worktree-weaver/plans/2-update-task-status-format.md} +0 -0
  375. /package/RAF/{ahnwrk-worktree-weaver/plans/03-worktree-auto-discovery.md → 26-worktree-weaver/plans/3-worktree-auto-discovery.md} +0 -0
  376. /package/RAF/{ahrren-turbo-finder → 27-turbo-finder}/decisions.md +0 -0
  377. /package/RAF/{ahrren-turbo-finder → 27-turbo-finder}/input.md +0 -0
  378. /package/RAF/{ahrren-turbo-finder/outcomes/01-worktree-auto-detect.md → 27-turbo-finder/outcomes/1-worktree-auto-detect.md} +0 -0
  379. /package/RAF/{ahrren-turbo-finder/outcomes/02-medium-effort-do.md → 27-turbo-finder/outcomes/2-medium-effort-do.md} +0 -0
  380. /package/RAF/{ahrren-turbo-finder/plans/01-worktree-auto-detect.md → 27-turbo-finder/plans/1-worktree-auto-detect.md} +0 -0
  381. /package/RAF/{ahslfe-config-wizard → 28-config-wizard}/decisions.md +0 -0
  382. /package/RAF/{ahslfe-config-wizard → 28-config-wizard}/input.md +0 -0
  383. /package/RAF/{ahslfe-config-wizard/outcomes/01-define-config-schema.md → 28-config-wizard/outcomes/1-define-config-schema.md} +0 -0
  384. /package/RAF/{ahslfe-config-wizard/outcomes/02-refactor-codebase-to-use-config.md → 28-config-wizard/outcomes/2-refactor-codebase-to-use-config.md} +0 -0
  385. /package/RAF/{ahslfe-config-wizard/outcomes/03-create-config-documentation.md → 28-config-wizard/outcomes/3-create-config-documentation.md} +0 -0
  386. /package/RAF/{ahslfe-config-wizard/outcomes/04-implement-raf-config-command.md → 28-config-wizard/outcomes/4-implement-raf-config-command.md} +0 -0
  387. /package/RAF/{ahslfe-config-wizard/outcomes/05-update-claude-md.md → 28-config-wizard/outcomes/5-update-claude-md.md} +0 -0
  388. /package/RAF/{ahslfe-config-wizard/plans/01-define-config-schema.md → 28-config-wizard/plans/1-define-config-schema.md} +0 -0
  389. /package/RAF/{ahstvo-token-tracker → 29-token-tracker}/decisions.md +0 -0
  390. /package/RAF/{ahstvo-token-tracker → 29-token-tracker}/input.md +0 -0
  391. /package/RAF/{ahstvo-token-tracker/outcomes/01-full-model-id-support.md → 29-token-tracker/outcomes/1-full-model-id-support.md} +0 -0
  392. /package/RAF/{ahstvo-token-tracker/outcomes/02-name-generation-no-session.md → 29-token-tracker/outcomes/2-name-generation-no-session.md} +0 -0
  393. /package/RAF/{ahstvo-token-tracker/outcomes/03-unify-stream-json-execution.md → 29-token-tracker/outcomes/3-unify-stream-json-execution.md} +0 -0
  394. /package/RAF/{ahstvo-token-tracker/outcomes/04-token-tracking-cost-calculation.md → 29-token-tracker/outcomes/4-token-tracking-cost-calculation.md} +0 -0
  395. /package/RAF/{ahstvo-token-tracker/outcomes/05-token-cost-console-reporting.md → 29-token-tracker/outcomes/5-token-cost-console-reporting.md} +0 -0
  396. /package/RAF/{ahstvo-token-tracker/outcomes/06-runtime-verbose-toggle.md → 29-token-tracker/outcomes/6-runtime-verbose-toggle.md} +0 -0
  397. /package/RAF/{ahstvo-token-tracker/outcomes/07-readme-config-docs.md → 29-token-tracker/outcomes/7-readme-config-docs.md} +0 -0
  398. /package/RAF/{ahstvo-token-tracker/plans/01-full-model-id-support.md → 29-token-tracker/plans/1-full-model-id-support.md} +0 -0
  399. /package/RAF/{ahstvo-token-tracker/plans/02-name-generation-no-session.md → 29-token-tracker/plans/2-name-generation-no-session.md} +0 -0
  400. /package/RAF/{ahstvo-token-tracker/plans/07-readme-config-docs.md → 29-token-tracker/plans/7-readme-config-docs.md} +0 -0
  401. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/decisions/DECISIONS.md +0 -0
  402. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/input.md +0 -0
  403. /package/RAF/{aaaaad-multi-project-execution/outcomes/01-remove-state-json.md → 3-multi-project-execution/outcomes/1-remove-state-json.md} +0 -0
  404. /package/RAF/{aaaaad-multi-project-execution/outcomes/02-update-raf-status.md → 3-multi-project-execution/outcomes/2-update-raf-status.md} +0 -0
  405. /package/RAF/{aaaaad-multi-project-execution/outcomes/03-simplify-git-logic.md → 3-multi-project-execution/outcomes/3-simplify-git-logic.md} +0 -0
  406. /package/RAF/{aaaaad-multi-project-execution/outcomes/04-auto-commit-planning.md → 3-multi-project-execution/outcomes/4-auto-commit-planning.md} +0 -0
  407. /package/RAF/{aaaaad-multi-project-execution/outcomes/05-rerun-failed-tasks.md → 3-multi-project-execution/outcomes/5-rerun-failed-tasks.md} +0 -0
  408. /package/RAF/{aaaaad-multi-project-execution/outcomes/06-multi-project-execution.md → 3-multi-project-execution/outcomes/6-multi-project-execution.md} +0 -0
  409. /package/RAF/{aaaaad-multi-project-execution/outcomes/07-verify-timeout.md → 3-multi-project-execution/outcomes/7-verify-timeout.md} +0 -0
  410. /package/RAF/{aaaaad-multi-project-execution/outcomes/08-move-decisions-file.md → 3-multi-project-execution/outcomes/8-move-decisions-file.md} +0 -0
  411. /package/RAF/{aaaaad-multi-project-execution → 3-multi-project-execution}/outcomes/SUMMARY.md +0 -0
  412. /package/RAF/{aaaaad-multi-project-execution/plans/01-remove-state-json.md → 3-multi-project-execution/plans/1-remove-state-json.md} +0 -0
  413. /package/RAF/{aaaaad-multi-project-execution/plans/02-update-raf-status.md → 3-multi-project-execution/plans/2-update-raf-status.md} +0 -0
  414. /package/RAF/{aaaaad-multi-project-execution/plans/03-simplify-git-logic.md → 3-multi-project-execution/plans/3-simplify-git-logic.md} +0 -0
  415. /package/RAF/{aaaaad-multi-project-execution/plans/04-auto-commit-planning.md → 3-multi-project-execution/plans/4-auto-commit-planning.md} +0 -0
  416. /package/RAF/{aaaaad-multi-project-execution/plans/05-rerun-failed-tasks.md → 3-multi-project-execution/plans/5-rerun-failed-tasks.md} +0 -0
  417. /package/RAF/{aaaaad-multi-project-execution/plans/06-multi-project-execution.md → 3-multi-project-execution/plans/6-multi-project-execution.md} +0 -0
  418. /package/RAF/{aaaaad-multi-project-execution/plans/07-verify-timeout.md → 3-multi-project-execution/plans/7-verify-timeout.md} +0 -0
  419. /package/RAF/{aaaaad-multi-project-execution/plans/08-move-decisions-file.md → 3-multi-project-execution/plans/8-move-decisions-file.md} +0 -0
  420. /package/RAF/{ahtahs-token-reaper → 30-token-reaper}/decisions.md +0 -0
  421. /package/RAF/{ahtahs-token-reaper → 30-token-reaper}/input.md +0 -0
  422. /package/RAF/{ahtahs-token-reaper/outcomes/01-extend-token-tracker-data-model.md → 30-token-reaper/outcomes/1-extend-token-tracker-data-model.md} +0 -0
  423. /package/RAF/{ahtahs-token-reaper/outcomes/02-accumulate-usage-in-retry-loop.md → 30-token-reaper/outcomes/2-accumulate-usage-in-retry-loop.md} +0 -0
  424. /package/RAF/{ahtahs-token-reaper/outcomes/03-per-attempt-display-formatting.md → 30-token-reaper/outcomes/3-per-attempt-display-formatting.md} +0 -0
  425. /package/RAF/{ahtahs-token-reaper/outcomes/04-add-model-name-to-claude-call-logs.md → 30-token-reaper/outcomes/4-add-model-name-to-claude-call-logs.md} +0 -0
  426. /package/RAF/{ahtahs-token-reaper/outcomes/05-handle-invalid-config-in-raf-config.md → 30-token-reaper/outcomes/5-handle-invalid-config-in-raf-config.md} +0 -0
  427. /package/RAF/{ahtahs-token-reaper/outcomes/06-fix-verbose-toggle-timer-display.md → 30-token-reaper/outcomes/6-fix-verbose-toggle-timer-display.md} +0 -0
  428. /package/RAF/{ahtahs-token-reaper/plans/01-extend-token-tracker-data-model.md → 30-token-reaper/plans/1-extend-token-tracker-data-model.md} +0 -0
  429. /package/RAF/{ahtahs-token-reaper/plans/04-add-model-name-to-claude-call-logs.md → 30-token-reaper/plans/4-add-model-name-to-claude-call-logs.md} +0 -0
  430. /package/RAF/{ahtahs-token-reaper/plans/05-handle-invalid-config-in-raf-config.md → 30-token-reaper/plans/5-handle-invalid-config-in-raf-config.md} +0 -0
  431. /package/RAF/{ahtahs-token-reaper/plans/06-fix-verbose-toggle-timer-display.md → 30-token-reaper/plans/6-fix-verbose-toggle-timer-display.md} +0 -0
  432. /package/RAF/{ahvrih-rate-forge → 31-rate-forge}/decisions.md +0 -0
  433. /package/RAF/{ahvrih-rate-forge → 31-rate-forge}/input.md +0 -0
  434. /package/RAF/{ahvrih-rate-forge/outcomes/01-remove-claude-command-config.md → 31-rate-forge/outcomes/1-remove-claude-command-config.md} +0 -0
  435. /package/RAF/{ahvrih-rate-forge/outcomes/02-fix-mixed-attempt-cost.md → 31-rate-forge/outcomes/2-fix-mixed-attempt-cost.md} +0 -0
  436. /package/RAF/{ahvrih-rate-forge/outcomes/03-rate-limit-estimation.md → 31-rate-forge/outcomes/3-rate-limit-estimation.md} +0 -0
  437. /package/RAF/{ahvrih-rate-forge/outcomes/04-show-version-in-do-logs.md → 31-rate-forge/outcomes/4-show-version-in-do-logs.md} +0 -0
  438. /package/RAF/{ahvrih-rate-forge/outcomes/05-sync-main-before-worktree.md → 31-rate-forge/outcomes/5-sync-main-before-worktree.md} +0 -0
  439. /package/RAF/{ahvrih-rate-forge/outcomes/06-sync-readme-with-codebase.md → 31-rate-forge/outcomes/6-sync-readme-with-codebase.md} +0 -0
  440. /package/RAF/{ahvrih-rate-forge/outcomes/07-no-session-persistence.md → 31-rate-forge/outcomes/7-no-session-persistence.md} +0 -0
  441. /package/RAF/{ahvrih-rate-forge/outcomes/08-plan-execution-metadata.md → 31-rate-forge/outcomes/8-plan-execution-metadata.md} +0 -0
  442. /package/RAF/{ahvrih-rate-forge/plans/01-remove-claude-command-config.md → 31-rate-forge/plans/1-remove-claude-command-config.md} +0 -0
  443. /package/RAF/{ahvrih-rate-forge/plans/02-fix-mixed-attempt-cost.md → 31-rate-forge/plans/2-fix-mixed-attempt-cost.md} +0 -0
  444. /package/RAF/{ahvrih-rate-forge/plans/04-show-version-in-do-logs.md → 31-rate-forge/plans/4-show-version-in-do-logs.md} +0 -0
  445. /package/RAF/{ahvrih-rate-forge/plans/05-sync-main-before-worktree.md → 31-rate-forge/plans/5-sync-main-before-worktree.md} +0 -0
  446. /package/RAF/{ahvrih-rate-forge/plans/07-no-session-persistence.md → 31-rate-forge/plans/7-no-session-persistence.md} +0 -0
  447. /package/RAF/{ahwidh-quick-fix-gremlin → 32-quick-fix-gremlin}/decisions.md +0 -0
  448. /package/RAF/{ahwidh-quick-fix-gremlin → 32-quick-fix-gremlin}/input.md +0 -0
  449. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/01-fix-name-generation-prompt.md → 32-quick-fix-gremlin/outcomes/1-fix-name-generation-prompt.md} +0 -0
  450. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/02-fix-amend-commit-scope.md → 32-quick-fix-gremlin/outcomes/2-fix-amend-commit-scope.md} +0 -0
  451. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/03-fix-diverged-main-branch-sync.md → 32-quick-fix-gremlin/outcomes/3-fix-diverged-main-branch-sync.md} +0 -0
  452. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/04-wire-rate-limit-to-do-command.md → 32-quick-fix-gremlin/outcomes/4-wire-rate-limit-to-do-command.md} +0 -0
  453. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/05-add-config-get-set-flags.md → 32-quick-fix-gremlin/outcomes/5-add-config-get-set-flags.md} +0 -0
  454. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/06-sync-worktree-branch-before-execution.md → 32-quick-fix-gremlin/outcomes/6-sync-worktree-branch-before-execution.md} +0 -0
  455. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/07-update-frontmatter-format.md → 32-quick-fix-gremlin/outcomes/7-update-frontmatter-format.md} +0 -0
  456. /package/RAF/{ahwidh-quick-fix-gremlin/outcomes/08-remove-plan-token-report.md → 32-quick-fix-gremlin/outcomes/8-remove-plan-token-report.md} +0 -0
  457. /package/RAF/{ahwidh-quick-fix-gremlin/plans/01-fix-name-generation-prompt.md → 32-quick-fix-gremlin/plans/1-fix-name-generation-prompt.md} +0 -0
  458. /package/RAF/{ahwidh-quick-fix-gremlin/plans/02-fix-amend-commit-scope.md → 32-quick-fix-gremlin/plans/2-fix-amend-commit-scope.md} +0 -0
  459. /package/RAF/{ahwidh-quick-fix-gremlin/plans/03-fix-diverged-main-branch-sync.md → 32-quick-fix-gremlin/plans/3-fix-diverged-main-branch-sync.md} +0 -0
  460. /package/RAF/{ahwidh-quick-fix-gremlin/plans/04-wire-rate-limit-to-do-command.md → 32-quick-fix-gremlin/plans/4-wire-rate-limit-to-do-command.md} +0 -0
  461. /package/RAF/{ahwidh-quick-fix-gremlin/plans/05-add-config-get-set-flags.md → 32-quick-fix-gremlin/plans/5-add-config-get-set-flags.md} +0 -0
  462. /package/RAF/{ahwidh-quick-fix-gremlin/plans/07-update-frontmatter-format.md → 32-quick-fix-gremlin/plans/7-update-frontmatter-format.md} +0 -0
  463. /package/RAF/{ahwidh-quick-fix-gremlin/plans/08-remove-plan-token-report.md → 32-quick-fix-gremlin/plans/8-remove-plan-token-report.md} +0 -0
  464. /package/RAF/{ahwqwq-model-whisperer → 33-model-whisperer}/decisions.md +0 -0
  465. /package/RAF/{ahwqwq-model-whisperer → 33-model-whisperer}/input.md +0 -0
  466. /package/RAF/{ahwqwq-model-whisperer/outcomes/01-show-model-on-task-line.md → 33-model-whisperer/outcomes/1-show-model-on-task-line.md} +0 -0
  467. /package/RAF/{ahwqwq-model-whisperer/outcomes/02-use-claude-cost-estimation.md → 33-model-whisperer/outcomes/2-use-claude-cost-estimation.md} +0 -0
  468. /package/RAF/{ahwqwq-model-whisperer/outcomes/03-add-plan-resume-flag.md → 33-model-whisperer/outcomes/3-add-plan-resume-flag.md} +0 -0
  469. /package/RAF/{ahwqwq-model-whisperer/plans/01-show-model-on-task-line.md → 33-model-whisperer/plans/1-show-model-on-task-line.md} +0 -0
  470. /package/RAF/{ahwqwq-model-whisperer/plans/02-use-claude-cost-estimation.md → 33-model-whisperer/plans/2-use-claude-cost-estimation.md} +0 -0
  471. /package/RAF/{ahwvrz-legacy-sunset → 34-legacy-sunset}/decisions.md +0 -0
  472. /package/RAF/{ahwvrz-legacy-sunset → 34-legacy-sunset}/input.md +0 -0
  473. /package/RAF/{ahwvrz-legacy-sunset/outcomes/01-remove-migrate-command.md → 34-legacy-sunset/outcomes/1-remove-migrate-command.md} +0 -0
  474. /package/RAF/{ahwvrz-legacy-sunset/outcomes/02-fix-resume-worktree-resolution.md → 34-legacy-sunset/outcomes/2-fix-resume-worktree-resolution.md} +0 -0
  475. /package/RAF/{ahwvrz-legacy-sunset/plans/01-remove-migrate-command.md → 34-legacy-sunset/plans/1-remove-migrate-command.md} +0 -0
  476. /package/RAF/{ahwzmc-echo-forge → 35-echo-forge}/decisions.md +0 -0
  477. /package/RAF/{ahwzmc-echo-forge → 35-echo-forge}/input.md +0 -0
  478. /package/RAF/{ahwzmc-echo-forge/outcomes/01-change-low-effort-default-to-sonnet.md → 35-echo-forge/outcomes/1-change-low-effort-default-to-sonnet.md} +0 -0
  479. /package/RAF/{ahwzmc-echo-forge/outcomes/02-add-no-worktree-flag.md → 35-echo-forge/outcomes/2-add-no-worktree-flag.md} +0 -0
  480. /package/RAF/{ahwzmc-echo-forge/outcomes/03-update-readme.md → 35-echo-forge/outcomes/3-update-readme.md} +0 -0
  481. /package/RAF/{ahwzmc-echo-forge/plans/01-change-low-effort-default-to-sonnet.md → 35-echo-forge/plans/1-change-low-effort-default-to-sonnet.md} +0 -0
  482. /package/RAF/{ahwzmc-echo-forge/plans/02-add-no-worktree-flag.md → 35-echo-forge/plans/2-add-no-worktree-flag.md} +0 -0
  483. /package/RAF/{aifqwf-fix-amend-commit-again → 36-fix-amend-commit-again}/decisions.md +0 -0
  484. /package/RAF/{aifqwf-fix-amend-commit-again → 36-fix-amend-commit-again}/input.md +0 -0
  485. /package/RAF/{aifqwf-fix-amend-commit-again/outcomes/01-update-effort-mapping-defaults.md → 36-fix-amend-commit-again/outcomes/1-update-effort-mapping-defaults.md} +0 -0
  486. /package/RAF/{aifqwf-fix-amend-commit-again/outcomes/02-fix-amend-worktree-commit.md → 36-fix-amend-commit-again/outcomes/2-fix-amend-worktree-commit.md} +0 -0
  487. /package/RAF/{aifqwf-fix-amend-commit-again/plans/01-update-effort-mapping-defaults.md → 36-fix-amend-commit-again/plans/1-update-effort-mapping-defaults.md} +0 -0
  488. /package/RAF/{aifqwf-fix-amend-commit-again/plans/02-fix-amend-worktree-commit.md → 36-fix-amend-commit-again/plans/2-fix-amend-worktree-commit.md} +0 -0
  489. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/decisions.md +0 -0
  490. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/input.md +0 -0
  491. /package/RAF/{aaaaae-task-naming-optimization/outcomes/01-remove-summary-file.md → 4-task-naming-optimization/outcomes/1-remove-summary-file.md} +0 -0
  492. /package/RAF/{aaaaae-task-naming-optimization/outcomes/02-base36-project-numbering.md → 4-task-naming-optimization/outcomes/2-base36-project-numbering.md} +0 -0
  493. /package/RAF/{aaaaae-task-naming-optimization/outcomes/03-improve-haiku-prompt.md → 4-task-naming-optimization/outcomes/3-improve-haiku-prompt.md} +0 -0
  494. /package/RAF/{aaaaae-task-naming-optimization → 4-task-naming-optimization}/outcomes/SUMMARY.md +0 -0
  495. /package/RAF/{aaaaae-task-naming-optimization/plans/01-remove-summary-file.md → 4-task-naming-optimization/plans/1-remove-summary-file.md} +0 -0
  496. /package/RAF/{aaaaae-task-naming-optimization/plans/02-base36-project-numbering.md → 4-task-naming-optimization/plans/2-base36-project-numbering.md} +0 -0
  497. /package/RAF/{aaaaae-task-naming-optimization/plans/03-improve-haiku-prompt.md → 4-task-naming-optimization/plans/3-improve-haiku-prompt.md} +0 -0
  498. /package/RAF/{aaaaaf-task-naming-improvements → 5-task-naming-improvements}/decisions.md +0 -0
  499. /package/RAF/{aaaaaf-task-naming-improvements → 5-task-naming-improvements}/input.md +0 -0
  500. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/01-enhance-identifier-resolution.md → 5-task-naming-improvements/outcomes/1-enhance-identifier-resolution.md} +0 -0
  501. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/02-add-identifier-support-to-status.md → 5-task-naming-improvements/outcomes/2-add-identifier-support-to-status.md} +0 -0
  502. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/03-update-do-for-full-folder-names.md → 5-task-naming-improvements/outcomes/3-update-do-for-full-folder-names.md} +0 -0
  503. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/04-implement-amend-flag-for-plan.md → 5-task-naming-improvements/outcomes/4-implement-amend-flag-for-plan.md} +0 -0
  504. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/05-commit-outcomes-on-complete.md → 5-task-naming-improvements/outcomes/5-commit-outcomes-on-complete.md} +0 -0
  505. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/06-update-execution-prompt-commit-schema.md → 5-task-naming-improvements/outcomes/6-update-execution-prompt-commit-schema.md} +0 -0
  506. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/07-allow-pending-task-amendments.md → 5-task-naming-improvements/outcomes/7-allow-pending-task-amendments.md} +0 -0
  507. /package/RAF/{aaaaaf-task-naming-improvements/outcomes/08-fix-timeout-label.md → 5-task-naming-improvements/outcomes/8-fix-timeout-label.md} +0 -0
  508. /package/RAF/{aaaaaf-task-naming-improvements/plans/01-enhance-identifier-resolution.md → 5-task-naming-improvements/plans/1-enhance-identifier-resolution.md} +0 -0
  509. /package/RAF/{aaaaaf-task-naming-improvements/plans/02-add-identifier-support-to-status.md → 5-task-naming-improvements/plans/2-add-identifier-support-to-status.md} +0 -0
  510. /package/RAF/{aaaaaf-task-naming-improvements/plans/03-update-do-for-full-folder-names.md → 5-task-naming-improvements/plans/3-update-do-for-full-folder-names.md} +0 -0
  511. /package/RAF/{aaaaaf-task-naming-improvements/plans/04-implement-amend-flag-for-plan.md → 5-task-naming-improvements/plans/4-implement-amend-flag-for-plan.md} +0 -0
  512. /package/RAF/{aaaaaf-task-naming-improvements/plans/05-commit-outcomes-on-complete.md → 5-task-naming-improvements/plans/5-commit-outcomes-on-complete.md} +0 -0
  513. /package/RAF/{aaaaaf-task-naming-improvements/plans/06-update-execution-prompt-commit-schema.md → 5-task-naming-improvements/plans/6-update-execution-prompt-commit-schema.md} +0 -0
  514. /package/RAF/{aaaaaf-task-naming-improvements/plans/07-allow-pending-task-amendments.md → 5-task-naming-improvements/plans/7-allow-pending-task-amendments.md} +0 -0
  515. /package/RAF/{aaaaaf-task-naming-improvements/plans/08-fix-timeout-label.md → 5-task-naming-improvements/plans/8-fix-timeout-label.md} +0 -0
  516. /package/RAF/{aaaaag-fix-double-summary-headers → 6-fix-double-summary-headers}/decisions.md +0 -0
  517. /package/RAF/{aaaaag-fix-double-summary-headers → 6-fix-double-summary-headers}/input.md +0 -0
  518. /package/RAF/{aaaaag-fix-double-summary-headers/outcomes/01-fix-double-summary-headers.md → 6-fix-double-summary-headers/outcomes/1-fix-double-summary-headers.md} +0 -0
  519. /package/RAF/{aaaaag-fix-double-summary-headers/outcomes/02-update-readme-for-npm.md → 6-fix-double-summary-headers/outcomes/2-update-readme-for-npm.md} +0 -0
  520. /package/RAF/{aaaaag-fix-double-summary-headers/outcomes/03-npm-publish-instructions.md → 6-fix-double-summary-headers/outcomes/3-npm-publish-instructions.md} +0 -0
  521. /package/RAF/{aaaaag-fix-double-summary-headers/outcomes/04-flexible-project-lookup.md → 6-fix-double-summary-headers/outcomes/4-flexible-project-lookup.md} +0 -0
  522. /package/RAF/{aaaaag-fix-double-summary-headers/plans/01-fix-double-summary-headers.md → 6-fix-double-summary-headers/plans/1-fix-double-summary-headers.md} +0 -0
  523. /package/RAF/{aaaaag-fix-double-summary-headers/plans/02-update-readme-for-npm.md → 6-fix-double-summary-headers/plans/2-update-readme-for-npm.md} +0 -0
  524. /package/RAF/{aaaaag-fix-double-summary-headers/plans/03-npm-publish-instructions.md → 6-fix-double-summary-headers/plans/3-npm-publish-instructions.md} +0 -0
  525. /package/RAF/{aaaaag-fix-double-summary-headers/plans/04-flexible-project-lookup.md → 6-fix-double-summary-headers/plans/4-flexible-project-lookup.md} +0 -0
  526. /package/RAF/{aaaaah-improve-outcome-format → 7-improve-outcome-format}/decisions.md +0 -0
  527. /package/RAF/{aaaaah-improve-outcome-format → 7-improve-outcome-format}/input.md +0 -0
  528. /package/RAF/{aaaaah-improve-outcome-format/outcomes/01-update-execution-prompt.md → 7-improve-outcome-format/outcomes/1-update-execution-prompt.md} +0 -0
  529. /package/RAF/{aaaaah-improve-outcome-format/outcomes/02-update-state-derivation.md → 7-improve-outcome-format/outcomes/2-update-state-derivation.md} +0 -0
  530. /package/RAF/{aaaaah-improve-outcome-format/outcomes/03-update-do-command-outcome-handling.md → 7-improve-outcome-format/outcomes/3-update-do-command-outcome-handling.md} +0 -0
  531. /package/RAF/{aaaaah-improve-outcome-format/outcomes/04-implement-failure-analysis.md → 7-improve-outcome-format/outcomes/4-implement-failure-analysis.md} +0 -0
  532. /package/RAF/{aaaaah-improve-outcome-format/outcomes/05-update-documentation.md → 7-improve-outcome-format/outcomes/5-update-documentation.md} +0 -0
  533. /package/RAF/{aaaaah-improve-outcome-format/plans/01-update-execution-prompt.md → 7-improve-outcome-format/plans/1-update-execution-prompt.md} +0 -0
  534. /package/RAF/{aaaaah-improve-outcome-format/plans/02-update-state-derivation.md → 7-improve-outcome-format/plans/2-update-state-derivation.md} +0 -0
  535. /package/RAF/{aaaaah-improve-outcome-format/plans/03-update-do-command-outcome-handling.md → 7-improve-outcome-format/plans/3-update-do-command-outcome-handling.md} +0 -0
  536. /package/RAF/{aaaaah-improve-outcome-format/plans/04-implement-failure-analysis.md → 7-improve-outcome-format/plans/4-implement-failure-analysis.md} +0 -0
  537. /package/RAF/{aaaaah-improve-outcome-format/plans/05-update-documentation.md → 7-improve-outcome-format/plans/5-update-documentation.md} +0 -0
  538. /package/RAF/{aaaaai-beautiful-do → 8-beautiful-do}/decisions.md +0 -0
  539. /package/RAF/{aaaaai-beautiful-do → 8-beautiful-do}/input.md +0 -0
  540. /package/RAF/{aaaaai-beautiful-do/outcomes/01-terminal-symbols.md → 8-beautiful-do/outcomes/1-terminal-symbols.md} +0 -0
  541. /package/RAF/{aaaaai-beautiful-do/outcomes/02-refactor-do-output.md → 8-beautiful-do/outcomes/2-refactor-do-output.md} +0 -0
  542. /package/RAF/{aaaaai-beautiful-do/outcomes/03-refactor-status-output.md → 8-beautiful-do/outcomes/3-refactor-status-output.md} +0 -0
  543. /package/RAF/{aaaaai-beautiful-do/outcomes/04-simplify-logger.md → 8-beautiful-do/outcomes/4-simplify-logger.md} +0 -0
  544. /package/RAF/{aaaaai-beautiful-do/outcomes/05-add-tests.md → 8-beautiful-do/outcomes/5-add-tests.md} +0 -0
  545. /package/RAF/{aaaaai-beautiful-do/plans/01-terminal-symbols.md → 8-beautiful-do/plans/1-terminal-symbols.md} +0 -0
  546. /package/RAF/{aaaaai-beautiful-do/plans/02-refactor-do-output.md → 8-beautiful-do/plans/2-refactor-do-output.md} +0 -0
  547. /package/RAF/{aaaaai-beautiful-do/plans/03-refactor-status-output.md → 8-beautiful-do/plans/3-refactor-status-output.md} +0 -0
  548. /package/RAF/{aaaaai-beautiful-do/plans/04-simplify-logger.md → 8-beautiful-do/plans/4-simplify-logger.md} +0 -0
  549. /package/RAF/{aaaaai-beautiful-do/plans/05-add-tests.md → 8-beautiful-do/plans/5-add-tests.md} +0 -0
  550. /package/RAF/{aaaaaj-system-promt-ammend → 9-system-promt-ammend}/decisions.md +0 -0
  551. /package/RAF/{aaaaaj-system-promt-ammend → 9-system-promt-ammend}/input.md +0 -0
  552. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/01-model-override.md → 9-system-promt-ammend/outcomes/1-model-override.md} +0 -0
  553. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/02-system-prompt-append.md → 9-system-promt-ammend/outcomes/2-system-prompt-append.md} +0 -0
  554. /package/RAF/{aaaaaj-system-promt-ammend/outcomes/03-retry-context.md → 9-system-promt-ammend/outcomes/3-retry-context.md} +0 -0
  555. /package/RAF/{aaaaaj-system-promt-ammend/plans/01-model-override.md → 9-system-promt-ammend/plans/1-model-override.md} +0 -0
  556. /package/RAF/{aaaaaj-system-promt-ammend/plans/02-system-prompt-append.md → 9-system-promt-ammend/plans/2-system-prompt-append.md} +0 -0
  557. /package/RAF/{aaaaaj-system-promt-ammend/plans/03-retry-context.md → 9-system-promt-ammend/plans/3-retry-context.md} +0 -0
@@ -1,96 +1,36 @@
1
1
  import * as fs from 'node:fs';
2
+ import * as os from 'node:os';
2
3
  import * as path from 'node:path';
3
4
 
4
5
  export const RAF_DIR = 'RAF';
5
6
 
6
- /** RAF epoch: 2026-01-01T00:00:00Z */
7
- export const RAF_EPOCH = 1767225600;
7
+ /** Regex pattern matching a numeric project folder: digits followed by hyphen and name */
8
+ const PROJECT_FOLDER_PATTERN = /^(\d+)-(.+)$/;
8
9
 
9
- /** ID width: 6 characters, 'a'-padded base26 */
10
- const ID_WIDTH = 6;
11
-
12
- /** Base26 alphabet: a=0, b=1, ..., z=25 */
13
- const BASE26_ALPHABET = 'abcdefghijklmnopqrstuvwxyz';
14
-
15
- /** Task ID width: 2 characters, zero-padded base36 */
16
- const TASK_ID_WIDTH = 2;
17
-
18
- /** Regex pattern for matching base36 task IDs (2-char: 00-zz) */
19
- export const TASK_ID_PATTERN = '[0-9a-z]{2}';
10
+ /** Regex pattern for matching numeric task IDs (1, 2, 12, etc.) */
11
+ export const TASK_ID_PATTERN = '\\d+';
20
12
 
21
13
  /**
22
- * Encode a task number (0-based or 1-based) to a 2-character zero-padded base36 string.
23
- * E.g., 1 -> "01", 10 -> "0a", 36 -> "10", 1295 -> "zz"
14
+ * Encode a task number to its string representation.
15
+ * E.g., 1 -> "1", 5 -> "5", 12 -> "12"
24
16
  */
25
17
  export function encodeTaskId(num: number): string {
26
18
  if (num < 0) {
27
19
  throw new Error(`encodeTaskId only accepts non-negative integers, got ${num}`);
28
20
  }
29
- if (num > 36 * 36 - 1) {
30
- throw new Error(`encodeTaskId: value ${num} exceeds max 2-char base36 (1295)`);
31
- }
32
- return num.toString(36).padStart(TASK_ID_WIDTH, '0');
21
+ return num.toString();
33
22
  }
34
23
 
35
24
  /**
36
- * Decode a 2-character base36 task ID string back to a number.
37
- * E.g., "01" -> 1, "0a" -> 10, "10" -> 36
25
+ * Decode a numeric task ID string back to a number.
26
+ * E.g., "1" -> 1, "12" -> 12
38
27
  * Returns null if invalid format.
39
28
  */
40
29
  export function decodeTaskId(str: string): number | null {
41
- if (str.length !== TASK_ID_WIDTH) {
42
- return null;
43
- }
44
- if (!/^[0-9a-z]{2}$/.test(str.toLowerCase())) {
45
- return null;
46
- }
47
- return parseInt(str.toLowerCase(), 36);
48
- }
49
-
50
- /**
51
- * Encode a non-negative integer to a 6-character 'a'-padded base26 string (a-z alphabet).
52
- * E.g., 0 → "aaaaaa", 1 → "aaaaab", 25 → "aaaaaz", 26 → "aaaaba"
53
- */
54
- export function encodeBase26(num: number): string {
55
- if (num < 0) {
56
- throw new Error(`encodeBase26 only accepts non-negative integers, got ${num}`);
57
- }
58
- let result = '';
59
- let remaining = num;
60
- for (let i = 0; i < ID_WIDTH; i++) {
61
- result = BASE26_ALPHABET[remaining % 26]! + result;
62
- remaining = Math.floor(remaining / 26);
63
- }
64
- return result;
65
- }
66
-
67
- /**
68
- * Decode a 6-character base26 string (a-z alphabet) back to a non-negative integer.
69
- * Returns the decoded number, or null if invalid format.
70
- */
71
- export function decodeBase26(str: string): number | null {
72
- if (str.length !== ID_WIDTH) {
30
+ if (!/^\d+$/.test(str)) {
73
31
  return null;
74
32
  }
75
- if (!/^[a-z]{6}$/.test(str.toLowerCase())) {
76
- return null;
77
- }
78
- const lower = str.toLowerCase();
79
- let result = 0;
80
- for (let i = 0; i < ID_WIDTH; i++) {
81
- result = result * 26 + (lower.charCodeAt(i) - 97); // 'a' = 97
82
- }
83
- return result;
84
- }
85
-
86
- /**
87
- * Check if a string is a valid 6-character base26 project prefix (a-z only).
88
- */
89
- export function isBase26Prefix(str: string): boolean {
90
- if (str.length !== ID_WIDTH) {
91
- return false;
92
- }
93
- return /^[a-z]{6}$/.test(str.toLowerCase());
33
+ return parseInt(str, 10);
94
34
  }
95
35
 
96
36
  export function getRafDir(): string {
@@ -105,40 +45,78 @@ export function ensureRafDir(): string {
105
45
  return rafDir;
106
46
  }
107
47
 
108
- export function getNextProjectNumber(rafDir: string): number {
109
- const id = Math.floor(Date.now() / 1000) - RAF_EPOCH;
110
-
111
- if (!fs.existsSync(rafDir)) {
112
- return id;
48
+ /**
49
+ * Scan a directory for project folders and extract their numeric IDs.
50
+ */
51
+ function scanForProjectIds(dir: string): number[] {
52
+ if (!fs.existsSync(dir)) {
53
+ return [];
113
54
  }
114
55
 
115
- // Collect existing IDs for collision detection
116
- const existingIds = new Set<number>();
117
- const entries = fs.readdirSync(rafDir, { withFileTypes: true });
56
+ const ids: number[] = [];
57
+ try {
58
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
59
+ for (const entry of entries) {
60
+ if (entry.isDirectory()) {
61
+ const match = entry.name.match(PROJECT_FOLDER_PATTERN);
62
+ if (match && match[1]) {
63
+ ids.push(parseInt(match[1], 10));
64
+ }
65
+ }
66
+ }
67
+ } catch {
68
+ // Directory doesn't exist or can't be read
69
+ }
70
+ return ids;
71
+ }
118
72
 
119
- for (const entry of entries) {
120
- if (entry.isDirectory()) {
121
- const match = entry.name.match(/^([a-z]{6})-/i);
122
- if (match && match[1]) {
123
- const decoded = decodeBase26(match[1].toLowerCase());
124
- if (decoded !== null) {
125
- existingIds.add(decoded);
73
+ /**
74
+ * Get the next sequential project number by scanning all worktrees + main repo.
75
+ * Returns max(existing IDs) + 1, or 1 if no projects exist.
76
+ *
77
+ * @param rafDir - The main repo's RAF directory
78
+ * @param repoBasename - Optional repo basename for scanning worktrees
79
+ */
80
+ export function getNextProjectNumber(rafDir: string, repoBasename?: string): number {
81
+ const allIds: number[] = [];
82
+
83
+ // Scan main repo RAF dir
84
+ allIds.push(...scanForProjectIds(rafDir));
85
+
86
+ // Scan all worktree directories
87
+ if (repoBasename) {
88
+ const worktreeBaseDir = path.join(os.homedir(), '.raf', 'worktrees', repoBasename);
89
+ if (fs.existsSync(worktreeBaseDir)) {
90
+ try {
91
+ const wtEntries = fs.readdirSync(worktreeBaseDir, { withFileTypes: true });
92
+ for (const wtEntry of wtEntries) {
93
+ if (wtEntry.isDirectory()) {
94
+ // Each worktree has an RAF dir at the same relative path
95
+ const wtRafDir = path.join(worktreeBaseDir, wtEntry.name, path.basename(path.dirname(rafDir)) === '.' ? RAF_DIR : path.relative(path.resolve(rafDir, '..', '..'), rafDir).split(path.sep).slice(0).join(path.sep));
96
+ allIds.push(...scanForProjectIds(wtRafDir));
97
+
98
+ // Also check if the worktree directory name itself is a project folder
99
+ const wtMatch = wtEntry.name.match(PROJECT_FOLDER_PATTERN);
100
+ if (wtMatch && wtMatch[1]) {
101
+ allIds.push(parseInt(wtMatch[1], 10));
102
+ }
103
+ }
126
104
  }
105
+ } catch {
106
+ // Worktree base dir doesn't exist or can't be read
127
107
  }
128
108
  }
129
109
  }
130
110
 
131
- // Increment until we find a free slot
132
- let candidate = id;
133
- while (existingIds.has(candidate)) {
134
- candidate++;
111
+ if (allIds.length === 0) {
112
+ return 1;
135
113
  }
136
114
 
137
- return candidate;
115
+ return Math.max(...allIds) + 1;
138
116
  }
139
117
 
140
118
  export function formatProjectNumber(num: number): string {
141
- return encodeBase26(num);
119
+ return String(num);
142
120
  }
143
121
 
144
122
  export function getProjectDir(rafDir: string, projectName: string): string | null {
@@ -150,8 +128,8 @@ export function getProjectDir(rafDir: string, projectName: string): string | nul
150
128
 
151
129
  for (const entry of entries) {
152
130
  if (entry.isDirectory()) {
153
- const match = entry.name.match(/^[a-z]{6}-(.+)$/i);
154
- if (match && match[1] === projectName) {
131
+ const match = entry.name.match(PROJECT_FOLDER_PATTERN);
132
+ if (match && match[2] === projectName) {
155
133
  return path.join(rafDir, entry.name);
156
134
  }
157
135
  }
@@ -161,41 +139,42 @@ export function getProjectDir(rafDir: string, projectName: string): string | nul
161
139
  }
162
140
 
163
141
  /**
164
- * Extract project number prefix from a project path.
165
- * E.g., "/Users/foo/RAF/abcdef-my-project" -> "abcdef"
166
- * Returns the 6-char base26 prefix string or null if not found.
142
+ * Extract the numeric project ID prefix from a project path or folder name.
143
+ * E.g., "/Users/foo/RAF/3-my-project" -> "3"
144
+ * E.g., "12-auth-system" -> "12"
145
+ * Returns the numeric prefix string or null if not found.
167
146
  */
168
147
  export function extractProjectNumber(projectPath: string): string | null {
169
148
  const folderName = path.basename(projectPath);
170
- const match = folderName.match(/^([a-z]{6})-/i);
149
+ const match = folderName.match(/^(\d+)-/);
171
150
  if (match && match[1]) {
172
- return match[1].toLowerCase();
151
+ return match[1];
173
152
  }
174
153
  return null;
175
154
  }
176
155
 
177
156
  /**
178
157
  * Parse a project prefix string to its numeric value.
179
- * Accepts a 6-character base26 string (a-z only).
158
+ * Accepts a numeric string (e.g., "3", "12").
180
159
  * Returns the numeric project number or null if invalid.
181
160
  */
182
161
  export function parseProjectPrefix(prefix: string): number | null {
183
- if (isBase26Prefix(prefix)) {
184
- return decodeBase26(prefix);
162
+ if (/^\d+$/.test(prefix)) {
163
+ return parseInt(prefix, 10);
185
164
  }
186
165
  return null;
187
166
  }
188
167
 
189
168
  /**
190
169
  * Extract project name from a project path (without number prefix).
191
- * E.g., "/Users/foo/RAF/abcdef-my-project" -> "my-project"
170
+ * E.g., "/Users/foo/RAF/3-my-project" -> "my-project"
192
171
  * Returns the project name or null if not found.
193
172
  */
194
173
  export function extractProjectName(projectPath: string): string | null {
195
174
  const folderName = path.basename(projectPath);
196
- const match = folderName.match(/^[a-z]{6}-(.+)$/i);
197
- if (match && match[1]) {
198
- return match[1];
175
+ const match = folderName.match(PROJECT_FOLDER_PATTERN);
176
+ if (match && match[2]) {
177
+ return match[2];
199
178
  }
200
179
  return null;
201
180
  }
@@ -207,7 +186,7 @@ export function extractProjectName(projectPath: string): string | null {
207
186
  */
208
187
  export function extractTaskNameFromPlanFile(planFilename: string): string | null {
209
188
  const basename = path.basename(planFilename, '.md');
210
- const match = basename.match(/^[0-9a-z]{2}-(.+)$/);
189
+ const match = basename.match(/^\d+-(.+)$/);
211
190
  return match && match[1] ? match[1] : null;
212
191
  }
213
192
 
@@ -221,16 +200,13 @@ export function listProjects(rafDir: string): Array<{ number: number; name: stri
221
200
 
222
201
  for (const entry of entries) {
223
202
  if (entry.isDirectory()) {
224
- const match = entry.name.match(/^([a-z]{6})-(.+)$/i);
203
+ const match = entry.name.match(PROJECT_FOLDER_PATTERN);
225
204
  if (match && match[1] && match[2]) {
226
- const decoded = decodeBase26(match[1].toLowerCase());
227
- if (decoded !== null) {
228
- projects.push({
229
- number: decoded,
230
- name: match[2],
231
- path: path.join(rafDir, entry.name),
232
- });
233
- }
205
+ projects.push({
206
+ number: parseInt(match[1], 10),
207
+ name: match[2],
208
+ path: path.join(rafDir, entry.name),
209
+ });
234
210
  }
235
211
  }
236
212
  }
@@ -282,19 +258,15 @@ function parseProjectFolder(
282
258
  rafDir: string,
283
259
  folderName: string
284
260
  ): { number: number; name: string; path: string; folder: string } | null {
285
- const match = folderName.match(/^([a-z]{6})-(.+)$/i);
261
+ const match = folderName.match(PROJECT_FOLDER_PATTERN);
286
262
  if (match && match[1] && match[2]) {
287
- const decoded = decodeBase26(match[1].toLowerCase());
288
- if (decoded !== null) {
289
- return {
290
- number: decoded,
291
- name: match[2],
292
- path: path.join(rafDir, folderName),
293
- folder: folderName,
294
- };
295
- }
263
+ return {
264
+ number: parseInt(match[1], 10),
265
+ name: match[2],
266
+ path: path.join(rafDir, folderName),
267
+ folder: folderName,
268
+ };
296
269
  }
297
-
298
270
  return null;
299
271
  }
300
272
 
@@ -302,19 +274,15 @@ function parseProjectFolder(
302
274
  * Resolve a project identifier with detailed result including ambiguity detection.
303
275
  *
304
276
  * Supported identifier formats (checked in this order):
305
- * 1. Full folder name (e.g., "abcdef-fix-stuff")
277
+ * 1. Full folder name (e.g., "3-fix-stuff")
306
278
  * - Must be an exact match to an existing folder
307
- * - Pattern: 6-char base26 prefix, followed by hyphen and name
308
- * 2. Base26 prefix (e.g., "abcdef")
309
- * - Looks up by decoded project number
279
+ * - Pattern: numeric prefix, followed by hyphen and name
280
+ * 2. Numeric prefix (e.g., "3", "12")
281
+ * - Looks up by project number
310
282
  * 3. Project name (e.g., "my-project", "fix-stuff")
311
283
  * - Looks up by the name portion of the folder (after the prefix)
312
284
  * - Case-insensitive matching
313
285
  * - Returns error if multiple projects have the same name
314
- *
315
- * @param rafDir - The RAF directory containing project folders
316
- * @param identifier - The identifier to resolve
317
- * @returns Resolution result with path, error type, and matches for ambiguous cases
318
286
  */
319
287
  export function resolveProjectIdentifierWithDetails(
320
288
  rafDir: string,
@@ -324,8 +292,8 @@ export function resolveProjectIdentifierWithDetails(
324
292
  return { path: null, error: 'not_found' };
325
293
  }
326
294
 
327
- // Pattern to match full folder names: XXXXXX-name (6-char base26 prefix)
328
- const fullFolderPattern = /^[a-z]{6}-(.+)$/i;
295
+ // Pattern to match full folder names: N-name (numeric prefix)
296
+ const fullFolderPattern = /^\d+-(.+)$/;
329
297
  const fullFolderMatch = identifier.match(fullFolderPattern);
330
298
 
331
299
  // Check if identifier is a full folder name (exact match required)
@@ -340,12 +308,10 @@ export function resolveProjectIdentifierWithDetails(
340
308
  // Fall through to name-based matching.
341
309
  }
342
310
 
343
- // Check if it's a base26 identifier (e.g., "abcdef")
344
- const isBase26 = isBase26Prefix(identifier);
345
-
311
+ // Check if it's a numeric identifier (e.g., "3", "12")
346
312
  let targetNumber: number | null = null;
347
- if (isBase26) {
348
- targetNumber = decodeBase26(identifier);
313
+ if (/^\d+$/.test(identifier)) {
314
+ targetNumber = parseInt(identifier, 10);
349
315
  }
350
316
 
351
317
  const entries = fs.readdirSync(rafDir, { withFileTypes: true });
@@ -357,7 +323,7 @@ export function resolveProjectIdentifierWithDetails(
357
323
 
358
324
  if (project) {
359
325
  if (targetNumber !== null && project.number === targetNumber) {
360
- // Match by number (base26 identifier)
326
+ // Match by number
361
327
  return { path: project.path };
362
328
  }
363
329
  // Also collect name matches (for fallback if number match fails)
@@ -387,21 +353,9 @@ export function resolveProjectIdentifierWithDetails(
387
353
  * Resolve a project identifier to a full project path.
388
354
  *
389
355
  * Supported identifier formats (checked in this order):
390
- * 1. Full folder name (e.g., "abcdef-fix-stuff")
391
- * - Must be an exact match to an existing folder
392
- * - Pattern: 6-char base26 prefix, followed by hyphen and name
393
- * 2. Base26 prefix (e.g., "abcdef")
394
- * - Looks up by decoded project number
395
- * 3. Project name (e.g., "my-project", "fix-stuff")
396
- * - Looks up by the name portion of the folder (after the prefix)
397
- * - Case-insensitive matching
398
- *
399
- * Note: For ambiguity detection (multiple projects with same name), use
400
- * resolveProjectIdentifierWithDetails instead.
401
- *
402
- * @param rafDir - The RAF directory containing project folders
403
- * @param identifier - The identifier to resolve
404
- * @returns The full project path or null if not found (or ambiguous)
356
+ * 1. Full folder name (e.g., "3-fix-stuff")
357
+ * 2. Numeric prefix (e.g., "3")
358
+ * 3. Project name (e.g., "my-project")
405
359
  */
406
360
  export function resolveProjectIdentifier(
407
361
  rafDir: string,
@@ -69,23 +69,23 @@ export function accumulateUsage(attempts: UsageData[]): UsageData {
69
69
  }
70
70
 
71
71
  /**
72
- * Accumulates token usage across multiple task executions using Claude-provided cost data.
72
+ * Accumulates token usage across multiple task executions using CLI-provided cost data.
73
73
  */
74
74
  export class TokenTracker {
75
75
  private entries: TaskUsageEntry[] = [];
76
76
 
77
77
  constructor() {
78
- // No pricing config needed - costs come from Claude
78
+ // No pricing config needed - costs come from the CLI
79
79
  }
80
80
 
81
81
  /**
82
82
  * Record usage data from a completed task.
83
83
  * Accepts an array of UsageData (one per attempt) and accumulates them.
84
- * Costs are summed from Claude-provided totalCostUsd values.
84
+ * Costs are summed from CLI-provided totalCostUsd values.
85
85
  */
86
86
  addTask(taskId: string, attempts: UsageData[]): TaskUsageEntry {
87
87
  const usage = accumulateUsage(attempts);
88
- // Sum costs from Claude-provided totalCostUsd
88
+ // Sum costs from CLI-provided totalCostUsd
89
89
  const totalCost = attempts.reduce((sum, attempt) => sum + attempt.totalCostUsd, 0);
90
90
  const cost: CostBreakdown = { totalCost };
91
91
  const entry: TaskUsageEntry = { taskId, usage, cost, attempts };
@@ -3,8 +3,8 @@ import * as path from 'node:path';
3
3
  import { execSync } from 'node:child_process';
4
4
  import { logger } from './logger.js';
5
5
  import type { ClaudeModelName, ModelScenario } from '../types/config.js';
6
- import { VALID_MODEL_ALIASES, FULL_MODEL_ID_PATTERN } from '../types/config.js';
7
- import { getModel } from './config.js';
6
+ import { VALID_MODEL_ALIASES } from '../types/config.js';
7
+ import { getModel, isValidModelName } from './config.js';
8
8
 
9
9
  export interface ValidationResult {
10
10
  valid: boolean;
@@ -19,12 +19,12 @@ export function validateEnvironment(): ValidationResult {
19
19
  errors: [],
20
20
  };
21
21
 
22
- // Check Claude CLI is installed
22
+ // Check CLI provider is installed
23
23
  try {
24
24
  execSync('which claude', { encoding: 'utf-8', stdio: 'pipe' });
25
25
  } catch {
26
26
  result.valid = false;
27
- result.errors.push('Claude CLI not found. Please install it first.');
27
+ result.errors.push('CLI provider not found. Please install Claude CLI or Codex CLI first.');
28
28
  }
29
29
 
30
30
  // Check for git repo (warning only)
@@ -61,7 +61,7 @@ export function validateProjectExists(rafDir: string, projectName: string): stri
61
61
 
62
62
  for (const entry of entries) {
63
63
  if (entry.isDirectory()) {
64
- const match = entry.name.match(/^[a-z]{6}-(.+)$/i);
64
+ const match = entry.name.match(/^\d+-(.+)$/);
65
65
  if (match && match[1] === projectName) {
66
66
  return path.join(rafDir, entry.name);
67
67
  }
@@ -96,10 +96,7 @@ export type ValidModelName = ClaudeModelName;
96
96
 
97
97
  export function validateModelName(model: string): ClaudeModelName | null {
98
98
  const normalized = model.toLowerCase();
99
- if ((VALID_MODEL_ALIASES as readonly string[]).includes(normalized)) {
100
- return normalized as ClaudeModelName;
101
- }
102
- if (FULL_MODEL_ID_PATTERN.test(normalized)) {
99
+ if (isValidModelName(normalized)) {
103
100
  return normalized as ClaudeModelName;
104
101
  }
105
102
  return null;
@@ -120,7 +117,7 @@ export function resolveModelOption(model?: string, sonnet?: boolean, scenario: M
120
117
  if (model) {
121
118
  const validated = validateModelName(model);
122
119
  if (!validated) {
123
- throw new Error(`Invalid model name: "${model}". Valid options: ${VALID_MODEL_ALIASES.join(', ')} or a full model ID (e.g., claude-sonnet-4-5-20250929)`);
120
+ throw new Error(`Invalid model name: "${model}". Valid options: ${VALID_MODEL_ALIASES.join(', ')} or a full model ID (e.g., claude-sonnet-4-5-20250929), or harness-prefixed (e.g., codex/gpt-5.4)`);
124
121
  }
125
122
  return validated;
126
123
  }
@@ -100,7 +100,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
100
100
  }
101
101
 
102
102
  it('should commit input.md and decisions.md changes in worktree', async () => {
103
- const projectFolder = 'aatest-my-project';
103
+ const projectFolder = '1-my-project';
104
104
 
105
105
  // Create initial project and commit
106
106
  createInitialProject(repoDir, projectFolder);
@@ -128,7 +128,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
128
128
 
129
129
  // Verify commit was made
130
130
  const lastMsg = getLastCommitMessage(worktreePath);
131
- expect(lastMsg).toMatch(/RAF\[aatest\] Plan: my-project/);
131
+ expect(lastMsg).toMatch(/RAF\[1\] Plan: my-project/);
132
132
 
133
133
  // Verify both files are in the commit
134
134
  const committedFiles = getLastCommitFiles(worktreePath);
@@ -137,7 +137,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
137
137
  });
138
138
 
139
139
  it('should commit amend artifacts with additional plan files in worktree', async () => {
140
- const projectFolder = 'aatest-my-project';
140
+ const projectFolder = '1-my-project';
141
141
 
142
142
  // Create initial project and commit
143
143
  createInitialProject(repoDir, projectFolder);
@@ -170,7 +170,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
170
170
 
171
171
  // Verify commit was made with Amend prefix
172
172
  const lastMsg = getLastCommitMessage(worktreePath);
173
- expect(lastMsg).toMatch(/RAF\[aatest\] Amend: my-project/);
173
+ expect(lastMsg).toMatch(/RAF\[1\] Amend: my-project/);
174
174
 
175
175
  // Verify only input.md and decisions.md are in the commit (not plan files)
176
176
  const committedFiles = getLastCommitFiles(worktreePath);
@@ -180,7 +180,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
180
180
  });
181
181
 
182
182
  it('should commit amend artifacts with plan files as additionalFiles in worktree', async () => {
183
- const projectFolder = 'aatest-my-project';
183
+ const projectFolder = '1-my-project';
184
184
 
185
185
  // Create initial project and commit
186
186
  createInitialProject(repoDir, projectFolder);
@@ -214,7 +214,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
214
214
 
215
215
  // Verify commit was made with Amend prefix
216
216
  const lastMsg = getLastCommitMessage(worktreePath);
217
- expect(lastMsg).toMatch(/RAF\[aatest\] Amend: my-project/);
217
+ expect(lastMsg).toMatch(/RAF\[1\] Amend: my-project/);
218
218
 
219
219
  // Verify all files are in the commit (input, decisions, AND plan files)
220
220
  const committedFiles = getLastCommitFiles(worktreePath);
@@ -224,7 +224,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
224
224
  });
225
225
 
226
226
  it('should commit after worktree recreation from branch', async () => {
227
- const projectFolder = 'aatest-my-project';
227
+ const projectFolder = '1-my-project';
228
228
 
229
229
  // Create initial project, commit, and create initial worktree
230
230
  createInitialProject(repoDir, projectFolder);
@@ -282,7 +282,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
282
282
 
283
283
  // Verify commit was made
284
284
  const lastMsg = getLastCommitMessage(recreatedWtPath);
285
- expect(lastMsg).toMatch(/RAF\[aatest\] Amend: my-project/);
285
+ expect(lastMsg).toMatch(/RAF\[1\] Amend: my-project/);
286
286
 
287
287
  // Verify only input.md and decisions.md are in the commit (not plan files)
288
288
  const committedFiles = getLastCommitFiles(recreatedWtPath);
@@ -292,7 +292,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
292
292
  });
293
293
 
294
294
  it('should commit all artifacts after worktree recreation with additionalFiles', async () => {
295
- const projectFolder = 'aatest-my-project';
295
+ const projectFolder = '1-my-project';
296
296
 
297
297
  // Create initial project, commit, and create initial worktree
298
298
  createInitialProject(repoDir, projectFolder);
@@ -351,7 +351,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
351
351
 
352
352
  // Verify commit was made
353
353
  const lastMsg = getLastCommitMessage(recreatedWtPath);
354
- expect(lastMsg).toMatch(/RAF\[aatest\] Amend: my-project/);
354
+ expect(lastMsg).toMatch(/RAF\[1\] Amend: my-project/);
355
355
 
356
356
  // Verify all files are in the commit (including plan files)
357
357
  const committedFiles = getLastCommitFiles(recreatedWtPath);
@@ -361,7 +361,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
361
361
  });
362
362
 
363
363
  it('should work when only some files have changed', async () => {
364
- const projectFolder = 'aatest-my-project';
364
+ const projectFolder = '1-my-project';
365
365
 
366
366
  // Create initial project and commit
367
367
  createInitialProject(repoDir, projectFolder);
@@ -384,7 +384,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
384
384
 
385
385
  // Verify commit was made
386
386
  const lastMsg = getLastCommitMessage(worktreePath);
387
- expect(lastMsg).toMatch(/RAF\[aatest\] Plan: my-project/);
387
+ expect(lastMsg).toMatch(/RAF\[1\] Plan: my-project/);
388
388
 
389
389
  // Only input.md should be in the commit (decisions.md unchanged)
390
390
  const committedFiles = getLastCommitFiles(worktreePath);
@@ -393,7 +393,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
393
393
  });
394
394
 
395
395
  it('should handle non-worktree commit (standard mode) correctly', async () => {
396
- const projectFolder = 'aatest-my-project';
396
+ const projectFolder = '1-my-project';
397
397
 
398
398
  // Create initial project and commit
399
399
  createInitialProject(repoDir, projectFolder);
@@ -423,7 +423,7 @@ describe('commitPlanningArtifacts - worktree integration', () => {
423
423
 
424
424
  // Verify commit
425
425
  const lastMsg = getLastCommitMessage(repoDir);
426
- expect(lastMsg).toMatch(/RAF\[aatest\] Plan: my-project/);
426
+ expect(lastMsg).toMatch(/RAF\[1\] Plan: my-project/);
427
427
 
428
428
  const committedFiles = getLastCommitFiles(repoDir);
429
429
  expect(committedFiles).toContain(`RAF/${projectFolder}/input.md`);