forge-workflow 0.0.9 → 0.1.0-beta.2

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 (479) hide show
  1. package/.claude/rules/{greptile-review-process.md → review-process.md} +56 -41
  2. package/.claude/scripts/{greptile-resolve.sh → review-resolve.sh} +13 -3
  3. package/.cursor/rules/permissions-guidance.mdc +2 -2
  4. package/.forge/hooks/check-tdd.js +3 -0
  5. package/.forge/hooks/forge-native-hook.js +245 -0
  6. package/.forge/protected-paths.yaml +157 -0
  7. package/AGENTS.md +151 -61
  8. package/CHANGELOG.md +681 -0
  9. package/CLAUDE.md +9 -106
  10. package/QUICKSTART.md +171 -0
  11. package/README.md +271 -363
  12. package/bin/forge-cmd.js +120 -9
  13. package/bin/forge-preflight.js +26 -5
  14. package/bin/forge.js +466 -489
  15. package/docs/INDEX.md +93 -0
  16. package/docs/PROJECT_DESIGN.md +685 -0
  17. package/docs/architecture/index.md +66 -0
  18. package/docs/architecture/notes/README.md +35 -0
  19. package/docs/architecture/subsystems/README.md +46 -0
  20. package/docs/{TOOLCHAIN.md → forge/TOOLCHAIN.md} +56 -47
  21. package/docs/forge/VALIDATION.md +82 -0
  22. package/docs/{AGENT_INSTALL_PROMPT.md → guides/AGENT_INSTALL_PROMPT.md} +3 -3
  23. package/docs/guides/BEADS_GITHUB_SYNC.md +32 -0
  24. package/docs/{ENHANCED_ONBOARDING.md → guides/ENHANCED_ONBOARDING.md} +16 -12
  25. package/docs/guides/GREPTILE_SETUP.md +46 -0
  26. package/docs/guides/MANUAL_REVIEW_GUIDE.md +58 -0
  27. package/docs/guides/MIGRATION.md +56 -0
  28. package/docs/guides/SETUP.md +118 -0
  29. package/docs/guides/SUPPORT.md +185 -0
  30. package/docs/guides/WORKFLOW_TEMPLATES.md +74 -0
  31. package/docs/guides/memory-backends.md +183 -0
  32. package/docs/reference/ADAPTERS.md +128 -0
  33. package/docs/reference/AGENT_SKILL_PARITY.md +175 -0
  34. package/docs/reference/COMMANDS.md +205 -0
  35. package/docs/reference/DECISION_DRIFT_GUARDS.md +97 -0
  36. package/docs/{EXAMPLES.md → reference/EXAMPLES.md} +7 -5
  37. package/docs/reference/FORGE_KERNEL_STORAGE_MODEL.md +135 -0
  38. package/docs/reference/HERMES_INTEGRATION.md +118 -0
  39. package/docs/reference/INSIGHTS_RECAP.md +63 -0
  40. package/docs/reference/INSTALL.md +164 -0
  41. package/docs/reference/KERNEL_TAXONOMY_VALIDATION.md +161 -0
  42. package/docs/reference/PROTECTED_PATH_MANIFEST.md +25 -0
  43. package/docs/reference/RELEASE.md +68 -0
  44. package/docs/reference/RESEARCH_TEMPLATE.md +292 -0
  45. package/docs/{ROADMAP.md → reference/ROADMAP.md} +12 -9
  46. package/docs/reference/SKILLS.md +35 -0
  47. package/docs/reference/STATUS_BOARD.md +80 -0
  48. package/docs/reference/TEMPLATES.md +106 -0
  49. package/docs/reference/TOOLCHAIN.md +658 -0
  50. package/docs/reference/VALIDATION.md +82 -0
  51. package/docs/reference/agent-permissions.md +169 -0
  52. package/docs/reference/beads-to-kernel-migration-ux.md +61 -0
  53. package/docs/reference/control-plane-guarantees.md +125 -0
  54. package/docs/reference/dependency-chain.md +331 -0
  55. package/docs/reference/forge-kernel-issue-command-contract.md +161 -0
  56. package/docs/reference/forge-kernel-schema.md +72 -0
  57. package/docs/reference/kernel-conflict-evaluators.md +27 -0
  58. package/docs/reference/patch-md-format.md +77 -0
  59. package/docs/reference/protected-state-surfaces.md +59 -0
  60. package/docs/reference/shepherd.md +115 -0
  61. package/docs/reference/superpowers-analysis.md +320 -0
  62. package/docs/reference/superpowers-integration-options.md +404 -0
  63. package/docs/reference/test-environment.md +519 -0
  64. package/docs/reference/upgrade-safety.md +59 -0
  65. package/lefthook.yml +18 -0
  66. package/lib/adapter-cli.js +307 -0
  67. package/lib/adapters/beads-issue-adapter.js +127 -0
  68. package/lib/adapters/beads-kernel-compat.js +1042 -0
  69. package/lib/adapters/greptile-review-adapter.js +141 -0
  70. package/lib/adapters/kernel-issue-adapter.js +101 -0
  71. package/lib/adapters/pr-state-adapter.js +484 -0
  72. package/lib/adoption-profiles.js +126 -0
  73. package/lib/agents/README.md +2 -6
  74. package/lib/agents/claude.plugin.json +3 -8
  75. package/lib/agents/codex.plugin.json +9 -1
  76. package/lib/agents/cursor.plugin.json +2 -6
  77. package/lib/agents/hermes.plugin.json +22 -0
  78. package/lib/agents-config.js +39 -1236
  79. package/lib/audit-evidence.js +282 -0
  80. package/lib/beads-setup.js +225 -28
  81. package/lib/beads-sync-scaffold.js +36 -107
  82. package/lib/codex-skills.js +51 -1
  83. package/lib/commands/_issue.js +744 -70
  84. package/lib/commands/_manifest.js +91 -0
  85. package/lib/commands/_registry.js +85 -34
  86. package/lib/commands/_resolve-command-opts.js +261 -0
  87. package/lib/commands/_serve-security.js +270 -0
  88. package/lib/commands/adapter.js +12 -0
  89. package/lib/commands/add.js +118 -0
  90. package/lib/commands/audit.js +70 -0
  91. package/lib/commands/blocked.js +5 -0
  92. package/lib/commands/board.js +64 -0
  93. package/lib/commands/claim.js +21 -2
  94. package/lib/commands/claims.js +7 -0
  95. package/lib/commands/clean.js +485 -75
  96. package/lib/commands/close.js +2 -2
  97. package/lib/commands/comment.js +5 -0
  98. package/lib/commands/control.js +148 -0
  99. package/lib/commands/create.js +2 -2
  100. package/lib/commands/dev.js +185 -7
  101. package/lib/commands/doc-gate.js +336 -0
  102. package/lib/commands/doctor.js +156 -0
  103. package/lib/commands/explain.js +15 -0
  104. package/lib/commands/export.js +237 -0
  105. package/lib/commands/gate.js +192 -0
  106. package/lib/commands/hooks.js +242 -0
  107. package/lib/commands/inbox.js +118 -0
  108. package/lib/commands/init.js +598 -0
  109. package/lib/commands/insights.js +79 -0
  110. package/lib/commands/issue.js +12 -1
  111. package/lib/commands/issues.js +66 -0
  112. package/lib/commands/lint.js +5 -0
  113. package/lib/commands/list.js +2 -2
  114. package/lib/commands/merge.js +312 -0
  115. package/lib/commands/migrate.js +523 -0
  116. package/lib/commands/new.js +12 -0
  117. package/lib/commands/options.js +241 -0
  118. package/lib/commands/orient.js +13 -0
  119. package/lib/commands/orphans.js +5 -0
  120. package/lib/commands/patch.js +67 -0
  121. package/lib/commands/plan.js +436 -24
  122. package/lib/commands/preflight.js +211 -0
  123. package/lib/commands/prime.js +13 -0
  124. package/lib/commands/push.js +69 -2
  125. package/lib/commands/ready.js +2 -2
  126. package/lib/commands/recall.js +116 -0
  127. package/lib/commands/recap.js +61 -0
  128. package/lib/commands/recommend.js +22 -2
  129. package/lib/commands/release.js +91 -0
  130. package/lib/commands/remember.js +74 -0
  131. package/lib/commands/role.js +99 -0
  132. package/lib/commands/serve.js +581 -0
  133. package/lib/commands/setup.js +851 -979
  134. package/lib/commands/shepherd.js +436 -0
  135. package/lib/commands/ship.js +23 -1
  136. package/lib/commands/show.js +2 -2
  137. package/lib/commands/stage.js +192 -0
  138. package/lib/commands/stale.js +5 -0
  139. package/lib/commands/status.js +329 -11
  140. package/lib/commands/sync.js +34 -46
  141. package/lib/commands/team.js +15 -2
  142. package/lib/commands/test.js +58 -7
  143. package/lib/commands/update.js +2 -2
  144. package/lib/commands/upgrade.js +47 -0
  145. package/lib/commands/validate.js +56 -25
  146. package/lib/commands/worktree.js +308 -128
  147. package/lib/config-writer.js +202 -0
  148. package/lib/control-plane.js +236 -0
  149. package/lib/core/runtime-graph.js +946 -0
  150. package/lib/dep-guard/keyword-ripple.js +184 -0
  151. package/lib/deprecated-sync-cleanup.js +362 -0
  152. package/lib/detect-agent.js +2 -28
  153. package/lib/detect-worktree.js +42 -17
  154. package/lib/doc-gate/declaration.js +177 -0
  155. package/lib/doc-gate/detect.js +289 -0
  156. package/lib/doc-gate/gate.js +375 -0
  157. package/lib/doc-gate/okf-config.js +128 -0
  158. package/lib/doc-gate/okf.js +429 -0
  159. package/lib/docs-command.js +1161 -6
  160. package/lib/forge-issues.js +697 -0
  161. package/lib/forge-lock.js +262 -0
  162. package/lib/gate-events.js +193 -0
  163. package/lib/global-flags.js +74 -0
  164. package/lib/greptile-match.js +7 -63
  165. package/lib/harness-capability-matrix.js +380 -0
  166. package/lib/hook-global-installer.js +347 -0
  167. package/lib/hook-renderer.js +451 -0
  168. package/lib/inbox.js +391 -0
  169. package/lib/insights.js +397 -0
  170. package/lib/issue-adapter.js +156 -0
  171. package/lib/issue-backend.js +145 -0
  172. package/lib/issue-render.js +220 -0
  173. package/lib/issue-sync/authority.js +100 -0
  174. package/lib/issue-sync/github-pull.js +184 -0
  175. package/lib/issue-sync/import-primitives.js +98 -0
  176. package/lib/issue-sync/legacy-link-bridge.js +436 -0
  177. package/lib/issue-sync/link-store.js +292 -0
  178. package/lib/issue-sync/project-github.js +123 -0
  179. package/lib/issue-sync/reconcile.js +195 -0
  180. package/lib/issue-sync/schema.js +126 -0
  181. package/lib/kernel/backing-issue.js +305 -0
  182. package/lib/kernel/broker.js +1218 -0
  183. package/lib/kernel/cli-broker-factory.js +130 -0
  184. package/lib/kernel/conflict-signal.js +82 -0
  185. package/lib/kernel/evaluators.js +195 -0
  186. package/lib/kernel/fs-class.js +495 -0
  187. package/lib/kernel/issue-command-contract.js +559 -0
  188. package/lib/kernel/issue-id-resolver.js +186 -0
  189. package/lib/kernel/lease-enforcer.js +158 -0
  190. package/lib/kernel/migrations.js +333 -0
  191. package/lib/kernel/planning-buckets-schema.js +109 -0
  192. package/lib/kernel/projection-jsonl-writer.js +450 -0
  193. package/lib/kernel/readiness-model.js +329 -0
  194. package/lib/kernel/schema.js +356 -0
  195. package/lib/kernel/sqlite-driver.js +2504 -0
  196. package/lib/kernel/taxonomy-validator.js +394 -0
  197. package/lib/lefthook-check.js +8 -4
  198. package/lib/lefthook-wiring.js +413 -0
  199. package/lib/mcp-config-renderer.js +288 -0
  200. package/lib/memory/graphiti-mcp.js +106 -0
  201. package/lib/memory/router.js +387 -0
  202. package/lib/memory/typed-api.js +102 -0
  203. package/lib/memory-digest.js +195 -0
  204. package/lib/merge-rules.js +395 -0
  205. package/lib/migrate-dry-run.js +466 -0
  206. package/lib/orientation.js +863 -0
  207. package/lib/package-manager-remediation.js +103 -0
  208. package/lib/package-root.js +381 -0
  209. package/lib/patch-intent.js +890 -0
  210. package/lib/plugin-catalog.js +3 -4
  211. package/lib/plugin-manager.js +0 -5
  212. package/lib/pr-bundle.js +186 -0
  213. package/lib/pr-monitor/differ.js +195 -0
  214. package/lib/pr-monitor/events.js +0 -0
  215. package/lib/pr-monitor/gather.js +124 -0
  216. package/lib/pr-monitor/journal.js +299 -0
  217. package/lib/pr-monitor/monitor.js +146 -0
  218. package/lib/pr-monitor/render-sticky.js +157 -0
  219. package/lib/pr-monitor/watch-lifecycle.js +95 -0
  220. package/lib/pr-monitor/watch.js +247 -0
  221. package/lib/pr-pull.js +1273 -0
  222. package/lib/pr-shepherd.js +494 -0
  223. package/lib/pr-state-validator.js +59 -0
  224. package/lib/preflight/gates.js +237 -0
  225. package/lib/preflight/runner.js +116 -0
  226. package/lib/project-discovery.js +0 -53
  227. package/lib/project-memory.js +166 -0
  228. package/lib/protected-path-manifest.js +281 -0
  229. package/lib/protected-state-surfaces.js +387 -0
  230. package/lib/release-readiness.js +2089 -0
  231. package/lib/reset.js +59 -45
  232. package/lib/review-adapter.js +68 -0
  233. package/lib/rules-sync.js +260 -0
  234. package/lib/runtime-health.js +332 -23
  235. package/lib/safety-config-renderer.js +268 -0
  236. package/lib/setup-action-log.js +1 -7
  237. package/lib/setup.js +27 -65
  238. package/lib/shell-utils.js +76 -6
  239. package/lib/skills-sync.js +330 -0
  240. package/lib/smart-status/conflicts.js +205 -0
  241. package/lib/smart-status/scoring.js +191 -0
  242. package/lib/status/beads-snapshot.js +145 -0
  243. package/lib/status/presenter.js +216 -0
  244. package/lib/status/snapshot.js +186 -0
  245. package/lib/sync-backend.js +202 -0
  246. package/lib/untrusted-content.js +52 -0
  247. package/lib/upgrade-safety.js +199 -0
  248. package/lib/workflow/enforce-stage.js +298 -47
  249. package/lib/workflow/stage-transition.js +115 -0
  250. package/lib/workflow/stages.js +30 -6
  251. package/lib/workflow/state-manager.js +159 -14
  252. package/lib/workflow/state.js +23 -1
  253. package/lib/workflow-profiles.js +17 -5
  254. package/package.json +46 -36
  255. package/rules/documentation.md +19 -0
  256. package/rules/kernel-tracking.md +26 -0
  257. package/rules/security.md +22 -0
  258. package/rules/tdd.md +20 -0
  259. package/rules/workflow.md +27 -0
  260. package/scripts/auto-backing-issue.js +47 -0
  261. package/scripts/beads-context.sh +165 -22
  262. package/scripts/beads-migrate-to-dolt.sh +7 -0
  263. package/scripts/beads-upgrade-smoke.sh +284 -0
  264. package/scripts/behavioral-judge.sh +115 -11
  265. package/scripts/benchmark.js +349 -63
  266. package/scripts/bootstrap-windows-tools.sh +78 -0
  267. package/scripts/branch-protection.js +2 -3
  268. package/scripts/check-agents.js +34 -137
  269. package/scripts/commitlint.js +3 -1
  270. package/scripts/conflict-detect.sh +3 -0
  271. package/scripts/dep-guard-analyze.js +52 -17
  272. package/scripts/dep-guard-keyword-ripple.js +29 -0
  273. package/scripts/dep-guard-render-review.js +86 -0
  274. package/scripts/dep-guard.sh +64 -232
  275. package/scripts/file-index.sh +3 -0
  276. package/scripts/forge-team/lib/claim.sh +34 -18
  277. package/scripts/forge-team/lib/dashboard.sh +61 -86
  278. package/scripts/forge-team/lib/epic.sh +99 -263
  279. package/scripts/forge-team/lib/hooks.sh +26 -28
  280. package/scripts/forge-team/lib/identity.sh +4 -4
  281. package/scripts/forge-team/lib/sync-github.sh +144 -47
  282. package/scripts/forge-team/lib/verify.sh +93 -83
  283. package/scripts/forge-team/lib/workload.sh +41 -65
  284. package/scripts/forge-team/tests/claim.test.sh +25 -19
  285. package/scripts/forge-team/tests/dashboard.test.sh +31 -46
  286. package/scripts/forge-team/tests/epic.test.sh +52 -71
  287. package/scripts/forge-team/tests/hooks.test.sh +38 -50
  288. package/scripts/forge-team/tests/identity.test.sh +3 -3
  289. package/scripts/forge-team/tests/integration.test.sh +44 -66
  290. package/scripts/forge-team/tests/sync-github.test.sh +183 -79
  291. package/scripts/forge-team/tests/verify.test.sh +37 -46
  292. package/scripts/forge-team/tests/workflow-integration.test.sh +4 -4
  293. package/scripts/forge-team/tests/workload.test.sh +32 -66
  294. package/scripts/gen-command-manifest.js +153 -0
  295. package/scripts/gen-embedded-assets.mjs +129 -0
  296. package/scripts/install.ps1 +139 -0
  297. package/scripts/install.sh +268 -0
  298. package/scripts/lib/beads-migrate-to-dolt.mjs +503 -0
  299. package/scripts/lib/release-asset.mjs +84 -0
  300. package/scripts/parity-check.mjs +145 -0
  301. package/scripts/parity-check.test.mjs +58 -0
  302. package/scripts/pin-agentic-workflow-images.js +112 -0
  303. package/scripts/pr-coordinator.sh +3 -0
  304. package/scripts/preflight-sonar.eslint.config.mjs +44 -0
  305. package/scripts/preflight.sh +108 -0
  306. package/scripts/protected-state-check.js +104 -0
  307. package/scripts/smart-status-score.js +31 -0
  308. package/scripts/smart-status-sessions.js +51 -0
  309. package/scripts/smart-status.sh +117 -369
  310. package/scripts/spikes/config-race-bench.js +111 -0
  311. package/scripts/spikes/harness-capability-matrix.js +13 -0
  312. package/scripts/spikes/patch-anchor-stability-bench.js +125 -0
  313. package/scripts/spikes/protected-path-manifest.js +20 -0
  314. package/scripts/spikes/skill-auto-invoke-parity.js +292 -0
  315. package/scripts/sync-agent-skills.js +62 -0
  316. package/scripts/sync-agentic-workflow.js +48 -0
  317. package/scripts/sync-utils.sh +3 -0
  318. package/scripts/test-ci-shard.js +251 -0
  319. package/scripts/test-dashboard.js +188 -52
  320. package/scripts/test-full-suite.js +186 -0
  321. package/scripts/test-profile.js +278 -0
  322. package/scripts/test.js +302 -28
  323. package/scripts/validate.js +143 -0
  324. package/scripts/validate.sh +18 -1
  325. package/skills/claim-safety/SKILL.md +102 -0
  326. package/skills/claim-safety/evals/evals.json +46 -0
  327. package/{.github/prompts/dev.prompt.md → skills/dev/SKILL.md} +46 -52
  328. package/skills/dev/evals/evals.json +50 -0
  329. package/skills/hermes-forge/SKILL.md +185 -0
  330. package/skills/hermes-forge/evals/evals.json +46 -0
  331. package/skills/issue-basics/SKILL.md +111 -0
  332. package/skills/issue-basics/evals/evals.json +46 -0
  333. package/skills/kernel/SKILL.md +166 -0
  334. package/skills/kernel/evals/evals.json +50 -0
  335. package/skills/memory/SKILL.md +102 -0
  336. package/skills/parallel-deep-research/SKILL.md +14 -11
  337. package/skills/parallel-deep-research/evals/evals.json +11 -27
  338. package/{.github/prompts/plan.prompt.md → skills/plan/SKILL.md} +134 -159
  339. package/skills/plan/evals/evals.json +42 -0
  340. package/skills/research/SKILL.md +195 -0
  341. package/skills/research/evals/evals.json +42 -0
  342. package/{.github/prompts/review.prompt.md → skills/review/SKILL.md} +98 -62
  343. package/skills/review/evals/evals.json +42 -0
  344. package/skills/rollback/SKILL.md +110 -0
  345. package/skills/rollback/evals/evals.json +46 -0
  346. package/skills/rollback/references/methods.md +204 -0
  347. package/{.cursor/commands/rollback.md → skills/rollback/references/workflow-integration.md} +10 -284
  348. package/skills/shepherd/SKILL.md +66 -0
  349. package/skills/shepherd/evals/evals.json +42 -0
  350. package/skills/ship/SKILL.md +251 -0
  351. package/skills/ship/evals/evals.json +42 -0
  352. package/skills/smith/SKILL.md +142 -0
  353. package/skills/smith/evals/evals.json +46 -0
  354. package/skills/smith/references/autonomy-and-gates.md +94 -0
  355. package/{.github/prompts/sonarcloud.prompt.md → skills/sonarcloud/SKILL.md} +14 -3
  356. package/skills/sonarcloud/evals/evals.json +46 -0
  357. package/skills/sonarcloud-analysis/SKILL.md +18 -13
  358. package/skills/sonarcloud-analysis/evals/evals.json +11 -15
  359. package/skills/status/SKILL.md +102 -0
  360. package/skills/status/evals/evals.json +50 -0
  361. package/skills/triage-ready/SKILL.md +121 -0
  362. package/skills/triage-ready/evals/evals.json +42 -0
  363. package/{.github/prompts/validate.prompt.md → skills/validate/SKILL.md} +52 -29
  364. package/skills/validate/evals/evals.json +42 -0
  365. package/skills/verify/SKILL.md +299 -0
  366. package/skills/verify/evals/evals.json +50 -0
  367. package/.claude/commands/dev.md +0 -345
  368. package/.claude/commands/plan.md +0 -566
  369. package/.claude/commands/premerge.md +0 -186
  370. package/.claude/commands/research.md +0 -42
  371. package/.claude/commands/review.md +0 -451
  372. package/.claude/commands/rollback.md +0 -721
  373. package/.claude/commands/ship.md +0 -213
  374. package/.claude/commands/sonarcloud.md +0 -152
  375. package/.claude/commands/status.md +0 -90
  376. package/.claude/commands/validate.md +0 -288
  377. package/.claude/commands/verify.md +0 -269
  378. package/.claude/rules/workflow.md +0 -121
  379. package/.cline/workflows/dev.md +0 -342
  380. package/.cline/workflows/plan.md +0 -563
  381. package/.cline/workflows/premerge.md +0 -183
  382. package/.cline/workflows/research.md +0 -39
  383. package/.cline/workflows/review.md +0 -448
  384. package/.cline/workflows/rollback.md +0 -718
  385. package/.cline/workflows/ship.md +0 -210
  386. package/.cline/workflows/sonarcloud.md +0 -146
  387. package/.cline/workflows/status.md +0 -87
  388. package/.cline/workflows/validate.md +0 -285
  389. package/.cline/workflows/verify.md +0 -266
  390. package/.codex/config.toml +0 -11
  391. package/.codex/skills/dev/SKILL.md +0 -345
  392. package/.codex/skills/plan/SKILL.md +0 -566
  393. package/.codex/skills/premerge/SKILL.md +0 -186
  394. package/.codex/skills/research/SKILL.md +0 -42
  395. package/.codex/skills/review/SKILL.md +0 -451
  396. package/.codex/skills/rollback/SKILL.md +0 -721
  397. package/.codex/skills/ship/SKILL.md +0 -213
  398. package/.codex/skills/sonarcloud/SKILL.md +0 -149
  399. package/.codex/skills/status/SKILL.md +0 -90
  400. package/.codex/skills/validate/SKILL.md +0 -288
  401. package/.codex/skills/verify/SKILL.md +0 -269
  402. package/.cursor/commands/dev.md +0 -342
  403. package/.cursor/commands/plan.md +0 -563
  404. package/.cursor/commands/premerge.md +0 -183
  405. package/.cursor/commands/research.md +0 -39
  406. package/.cursor/commands/review.md +0 -448
  407. package/.cursor/commands/ship.md +0 -210
  408. package/.cursor/commands/sonarcloud.md +0 -146
  409. package/.cursor/commands/status.md +0 -87
  410. package/.cursor/commands/validate.md +0 -285
  411. package/.cursor/commands/verify.md +0 -266
  412. package/.cursorrules +0 -149
  413. package/.github/prompts/premerge.prompt.md +0 -188
  414. package/.github/prompts/research.prompt.md +0 -44
  415. package/.github/prompts/rollback.prompt.md +0 -723
  416. package/.github/prompts/ship.prompt.md +0 -215
  417. package/.github/prompts/status.prompt.md +0 -92
  418. package/.github/prompts/verify.prompt.md +0 -271
  419. package/.github/workflows/beads-to-github.yml +0 -56
  420. package/.github/workflows/github-to-beads.yml +0 -97
  421. package/.kilocode/workflows/dev.md +0 -346
  422. package/.kilocode/workflows/plan.md +0 -567
  423. package/.kilocode/workflows/premerge.md +0 -187
  424. package/.kilocode/workflows/research.md +0 -43
  425. package/.kilocode/workflows/review.md +0 -452
  426. package/.kilocode/workflows/rollback.md +0 -722
  427. package/.kilocode/workflows/ship.md +0 -214
  428. package/.kilocode/workflows/sonarcloud.md +0 -150
  429. package/.kilocode/workflows/status.md +0 -91
  430. package/.kilocode/workflows/validate.md +0 -289
  431. package/.kilocode/workflows/verify.md +0 -270
  432. package/.opencode/commands/dev.md +0 -345
  433. package/.opencode/commands/plan.md +0 -566
  434. package/.opencode/commands/premerge.md +0 -186
  435. package/.opencode/commands/research.md +0 -42
  436. package/.opencode/commands/review.md +0 -451
  437. package/.opencode/commands/rollback.md +0 -721
  438. package/.opencode/commands/ship.md +0 -213
  439. package/.opencode/commands/sonarcloud.md +0 -149
  440. package/.opencode/commands/status.md +0 -90
  441. package/.opencode/commands/validate.md +0 -288
  442. package/.opencode/commands/verify.md +0 -269
  443. package/.roo/commands/dev.md +0 -346
  444. package/.roo/commands/plan.md +0 -567
  445. package/.roo/commands/premerge.md +0 -187
  446. package/.roo/commands/research.md +0 -43
  447. package/.roo/commands/review.md +0 -452
  448. package/.roo/commands/rollback.md +0 -722
  449. package/.roo/commands/ship.md +0 -214
  450. package/.roo/commands/sonarcloud.md +0 -150
  451. package/.roo/commands/status.md +0 -91
  452. package/.roo/commands/validate.md +0 -289
  453. package/.roo/commands/verify.md +0 -270
  454. package/docs/BEADS_GITHUB_SYNC.md +0 -255
  455. package/docs/GREPTILE_SETUP.md +0 -400
  456. package/docs/MANUAL_REVIEW_GUIDE.md +0 -106
  457. package/docs/SETUP.md +0 -663
  458. package/docs/VALIDATION.md +0 -363
  459. package/lib/agents/cline.plugin.json +0 -29
  460. package/lib/agents/copilot.plugin.json +0 -24
  461. package/lib/agents/kilocode.plugin.json +0 -22
  462. package/lib/agents/opencode.plugin.json +0 -23
  463. package/lib/agents/roo.plugin.json +0 -30
  464. package/lib/beads-health-check.js +0 -143
  465. package/lib/commands/commands-reset.js +0 -147
  466. package/opencode.json +0 -67
  467. package/scripts/beads-context.test.js +0 -567
  468. package/scripts/github-beads-sync/comment.mjs +0 -64
  469. package/scripts/github-beads-sync/config.mjs +0 -148
  470. package/scripts/github-beads-sync/github-api.mjs +0 -131
  471. package/scripts/github-beads-sync/index.mjs +0 -332
  472. package/scripts/github-beads-sync/label-mapper.mjs +0 -54
  473. package/scripts/github-beads-sync/mapping.mjs +0 -78
  474. package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
  475. package/scripts/github-beads-sync/reverse-sync.mjs +0 -138
  476. package/scripts/github-beads-sync/run-bd.mjs +0 -161
  477. package/scripts/github-beads-sync/sanitize.mjs +0 -121
  478. package/scripts/github-beads-sync.config.json +0 -26
  479. package/scripts/sync-commands.js +0 -600
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: rollback
3
+ description: >
4
+ Safely revert or undo a change that is already committed or shipped, using non-destructive
5
+ `git revert` (never `reset --hard`, `push --force`, or `clean`). Drives the interactive
6
+ `bunx forge rollback` menu: undo the last commit, revert a commit by hash, revert a merged
7
+ PR (git revert -m 1), restore individual files to a prior version, revert a commit range, or
8
+ dry-run/preview first. Use when the user says roll back, revert, undo, back out, or restore
9
+ — e.g. "undo the last commit", "undo that change, the approach was wrong", "back out PR
10
+ #123", "revert the merge commit", "restore src/auth.js to before my last commit", or when a
11
+ shipped/merged change broke something and must be pulled back. Do NOT use for: replying to
12
+ or fixing PR review feedback (review), monitoring an open PR's checks toward merge
13
+ (shepherd), the post-merge CI health check on master (verify), pushing a branch or opening a
14
+ PR (ship), or ordinary issue status/field edits (issue-basics).
15
+ allowed-tools: Bash, Read, Edit, Grep, Glob
16
+ ---
17
+
18
+ Comprehensive rollback system with multiple methods and automatic USER content preservation.
19
+
20
+ # Rollback
21
+
22
+ This skill provides safe rollback operations with comprehensive validation and USER section preservation.
23
+
24
+ ## Usage
25
+
26
+ ```bash
27
+ bunx forge rollback
28
+ ```
29
+
30
+ Interactive menu with 6 options:
31
+ 1. **Rollback last commit** - Quick undo of most recent change
32
+ 2. **Rollback specific commit** - Target any commit by hash
33
+ 3. **Rollback merged PR** - Revert an entire PR merge
34
+ 4. **Rollback specific files** - Restore only certain files
35
+ 5. **Rollback entire branch** - Revert multiple commits
36
+ 6. **Preview rollback** - Dry run mode (shows changes without executing)
37
+
38
+ ## How It Works
39
+
40
+ ### Safety Features
41
+
42
+ **1. Working Directory Check**
43
+ - Requires clean working directory (no uncommitted changes)
44
+ - Prevents accidental data loss
45
+ - Prompts to commit or stash changes first
46
+
47
+ **2. Input Validation**
48
+ - Commit hashes: Must match `/^[0-9a-f]{4,40}$/i` or be 'HEAD'
49
+ - File paths: Validated to be within project (prevents path traversal)
50
+ - Methods: Whitelisted to 'commit', 'pr', 'partial', 'branch'
51
+ - Shell metacharacters: Rejected (`;`, `|`, `&`, `$`, `` ` ``, `(`, `)`, `<`, `>`, `\n`, `\r`)
52
+
53
+ **3. USER Section Preservation**
54
+ - Automatically extracts USER sections before rollback
55
+ - Restores USER sections after rollback
56
+ - Preserves custom commands in `.claude/commands/custom/`
57
+ - Amends rollback commit to include restored content
58
+
59
+ **4. Dry Run Mode**
60
+ - Preview affected files without executing
61
+ - Shows what would change
62
+ - No git operations performed
63
+
64
+ **5. Non-Destructive**
65
+ - Uses `git revert` (creates new commit)
66
+ - Never uses `git reset --hard` (destructive)
67
+ - Preserves full git history
68
+ - Can be undone with another rollback
69
+
70
+ ### USER Section Preservation
71
+
72
+ **What Gets Preserved**:
73
+ ```markdown
74
+ <!-- USER:START -->
75
+ Your custom content here
76
+ <!-- USER:END -->
77
+
78
+ <!-- USER:START:custom-name -->
79
+ Named USER section
80
+ <!-- USER:END:custom-name -->
81
+ ```
82
+
83
+ **Process**:
84
+ 1. Extract all USER sections from AGENTS.md, CLAUDE.md, etc.
85
+ 2. Backup custom commands from `.claude/commands/custom/`
86
+ 3. Execute rollback operation
87
+ 4. Restore USER sections to current file content
88
+ 5. Restore custom command files
89
+ 6. Amend rollback commit to include restored content
90
+
91
+ **Result**: Your customizations survive rollback operations.
92
+
93
+ ## Rollback methods
94
+
95
+ Six methods, selected interactively. Full step-by-step walkthroughs (commands,
96
+ prompts, expected output) are in [references/methods.md](references/methods.md) —
97
+ read it when running a specific rollback.
98
+
99
+ 1. **Rollback last commit** — undo the most recent commit.
100
+ 2. **Rollback specific commit** — revert one commit by hash.
101
+ 3. **Rollback merged PR** — revert a merge commit.
102
+ 4. **Rollback specific files** — restore named files from the previous commit.
103
+ 5. **Rollback entire branch** — reset a range.
104
+ 6. **Preview (dry run)** — show what a rollback would do, change nothing.
105
+
106
+ ## Integration, issue status & troubleshooting
107
+
108
+ When to reach for rollback, how it fits the workflow, how revert state is recorded,
109
+ and error recovery are in
110
+ [references/workflow-integration.md](references/workflow-integration.md).
@@ -0,0 +1,46 @@
1
+ [
2
+ {
3
+ "query": "undo the last commit, the approach was wrong",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "back out PR #482, it's breaking production",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "restore config/database.yml to the version before my last commit",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "show me which files reverting commit a1b2c3d would touch before I actually do it",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "that merged refactor broke everything — revert the whole thing but keep the git history intact",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "what's the safe way to undo a merged pull request?",
24
+ "should_trigger": true
25
+ },
26
+ {
27
+ "query": "address the Greptile and CodeRabbit comments on my PR",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "keep watching my open PR and tell me when checks pass and it's mergeable",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "master is green after the merge — run the post-merge health check and close the issue",
36
+ "should_trigger": false
37
+ },
38
+ {
39
+ "query": "push my validated branch and open a pull request",
40
+ "should_trigger": false
41
+ },
42
+ {
43
+ "query": "set issue forge-9f2 to status review",
44
+ "should_trigger": false
45
+ }
46
+ ]
@@ -0,0 +1,204 @@
1
+ # Rollback methods (reference)
2
+
3
+ Detailed walkthroughs for each rollback method. Read the one you need; the skill body summarizes them.
4
+
5
+ ## Rollback Methods
6
+
7
+ ### 1. Rollback Last Commit
8
+
9
+ **Use when**: Quick undo of most recent change
10
+
11
+ **How it works**:
12
+ ```bash
13
+ git revert HEAD --no-edit
14
+ ```
15
+
16
+ **Example**:
17
+ ```bash
18
+ bunx forge rollback
19
+ # Select: 1. Rollback last commit
20
+
21
+ ✓ Working directory is clean
22
+ ✓ Extracting USER sections...
23
+ ✓ Executing: git revert HEAD --no-edit
24
+ ✓ Restoring USER sections...
25
+ ✓ Amended commit to preserve USER content
26
+
27
+ Rollback complete!
28
+ Commit: a1b2c3d "Revert: add authentication feature"
29
+ Files affected: 5
30
+ ```
31
+
32
+ ### 2. Rollback Specific Commit
33
+
34
+ **Use when**: Need to revert a commit from earlier in history
35
+
36
+ **How it works**:
37
+ ```bash
38
+ git revert <commit-hash> --no-edit
39
+ ```
40
+
41
+ **Example**:
42
+ ```bash
43
+ bunx forge rollback
44
+ # Select: 2. Rollback specific commit
45
+ # Enter: a1b2c3d
46
+
47
+ ✓ Validating commit hash...
48
+ ✓ Working directory is clean
49
+ ✓ Extracting USER sections...
50
+ ✓ Executing: git revert a1b2c3d --no-edit
51
+ ✓ Restoring USER sections...
52
+ ✓ Amended commit to preserve USER content
53
+
54
+ Rollback complete!
55
+ Commit: x9y8z7w "Revert: a1b2c3d"
56
+ Files affected: 8
57
+ ```
58
+
59
+ **Input validation**:
60
+ - Accepts 4-40 character hex strings
61
+ - Accepts 'HEAD'
62
+ - Rejects shell metacharacters
63
+ - Rejects invalid formats
64
+
65
+ ### 3. Rollback Merged PR
66
+
67
+ **Use when**: Need to revert an entire merged pull request
68
+
69
+ **How it works**:
70
+ ```bash
71
+ git revert -m 1 <merge-commit-hash> --no-edit
72
+ ```
73
+
74
+ **Example**:
75
+ ```bash
76
+ bunx forge rollback
77
+ # Select: 3. Rollback merged PR
78
+ # Enter: def456 (merge commit hash)
79
+
80
+ ✓ Validating commit hash...
81
+ ✓ Working directory is clean
82
+ ✓ Extracting USER sections...
83
+ ✓ Executing: git revert -m 1 def456 --no-edit
84
+ ✓ Restoring USER sections...
85
+ ✓ Amended commit to preserve USER content
86
+ ✓ Beads integration: Issue #123 marked as 'reverted'
87
+
88
+ Rollback complete!
89
+ Commit: m1n2o3p "Revert: Merge pull request #123"
90
+ Files affected: 15
91
+ Beads issue: #123 status → reverted
92
+ ```
93
+
94
+ **Beads Integration**:
95
+ - Parses commit message for issue number (`#123`)
96
+ - If found, runs: `forge update <id> --status reverted --comment "PR reverted"`
97
+ - Silently skips if Beads not installed
98
+ - Updates issue tracking automatically
99
+
100
+ ### 4. Rollback Specific Files
101
+
102
+ **Use when**: Only certain files need to be restored
103
+
104
+ **How it works**:
105
+ ```bash
106
+ git checkout HEAD~1 -- <file1> <file2> ...
107
+ git commit -m "chore: rollback <files>"
108
+ ```
109
+
110
+ **Example**:
111
+ ```bash
112
+ bunx forge rollback
113
+ # Select: 4. Rollback specific files
114
+ # Enter: AGENTS.md,CLAUDE.md
115
+
116
+ ✓ Validating file paths...
117
+ ✓ Working directory is clean
118
+ ✓ Extracting USER sections...
119
+ ✓ Executing: git checkout HEAD~1 -- AGENTS.md CLAUDE.md
120
+ ✓ Committing changes...
121
+ ✓ Restoring USER sections...
122
+ ✓ Amended commit to preserve USER content
123
+
124
+ Rollback complete!
125
+ Commit: q4r5s6t "chore: rollback AGENTS.md, CLAUDE.md"
126
+ Files affected: 2
127
+ ```
128
+
129
+ **Path validation**:
130
+ - Comma-separated file paths
131
+ - Validates paths are within project root
132
+ - Prevents path traversal (`../../../etc/passwd`)
133
+ - Rejects shell metacharacters
134
+ - Uses `path.resolve()` + `startsWith()` check
135
+
136
+ ### 5. Rollback Entire Branch
137
+
138
+ **Use when**: Need to revert a range of commits
139
+
140
+ **How it works**:
141
+ ```bash
142
+ git revert <start-commit>..<end-commit> --no-edit
143
+ ```
144
+
145
+ **Example**:
146
+ ```bash
147
+ bunx forge rollback
148
+ # Select: 5. Rollback entire branch
149
+ # Enter: abc123..def456
150
+
151
+ ✓ Validating commit range...
152
+ ✓ Working directory is clean
153
+ ✓ Extracting USER sections...
154
+ ✓ Executing: git revert abc123..def456 --no-edit
155
+ ✓ Restoring USER sections...
156
+ ✓ Amended commit to preserve USER content
157
+
158
+ Rollback complete!
159
+ Commits reverted: 7
160
+ Files affected: 24
161
+ ```
162
+
163
+ **Range validation**:
164
+ - Format: `start..end`
165
+ - Both commits must be valid hashes (4-40 chars)
166
+ - Rejects invalid formats
167
+ - Checks for `..` separator
168
+
169
+ ### 6. Preview Rollback (Dry Run)
170
+
171
+ **Use when**: Want to see what would change without executing
172
+
173
+ **How it works**:
174
+ - Prompts for method and target
175
+ - Validates inputs
176
+ - Shows affected files
177
+ - No git operations performed
178
+
179
+ **Example**:
180
+ ```bash
181
+ bunx forge rollback
182
+ # Select: 6. Preview rollback (dry run)
183
+ # Enter method: partial
184
+ # Enter target: AGENTS.md,package.json
185
+
186
+ ✓ Validating inputs...
187
+ ✓ DRY RUN MODE - No changes will be made
188
+
189
+ Preview of rollback:
190
+ Method: partial
191
+ Target: AGENTS.md, package.json
192
+
193
+ Files that would be affected:
194
+ - AGENTS.md
195
+ - package.json
196
+
197
+ USER sections that would be preserved:
198
+ - AGENTS.md: 2 sections
199
+
200
+ Custom commands that would be preserved:
201
+ - .claude/commands/custom/my-workflow.md
202
+
203
+ No changes made (dry run).
204
+ ```
@@ -1,279 +1,4 @@
1
-
2
- Comprehensive rollback system with multiple methods and automatic USER content preservation.
3
-
4
- # Rollback
5
-
6
- This command provides safe rollback operations with comprehensive validation and USER section preservation.
7
-
8
- ## Usage
9
-
10
- ```bash
11
- bunx forge rollback
12
- ```
13
-
14
- Interactive menu with 6 options:
15
- 1. **Rollback last commit** - Quick undo of most recent change
16
- 2. **Rollback specific commit** - Target any commit by hash
17
- 3. **Rollback merged PR** - Revert an entire PR merge
18
- 4. **Rollback specific files** - Restore only certain files
19
- 5. **Rollback entire branch** - Revert multiple commits
20
- 6. **Preview rollback** - Dry run mode (shows changes without executing)
21
-
22
- ## How It Works
23
-
24
- ### Safety Features
25
-
26
- **1. Working Directory Check**
27
- - Requires clean working directory (no uncommitted changes)
28
- - Prevents accidental data loss
29
- - Prompts to commit or stash changes first
30
-
31
- **2. Input Validation**
32
- - Commit hashes: Must match `/^[0-9a-f]{4,40}$/i` or be 'HEAD'
33
- - File paths: Validated to be within project (prevents path traversal)
34
- - Methods: Whitelisted to 'commit', 'pr', 'partial', 'branch'
35
- - Shell metacharacters: Rejected (`;`, `|`, `&`, `$`, `` ` ``, `(`, `)`, `<`, `>`, `\n`, `\r`)
36
-
37
- **3. USER Section Preservation**
38
- - Automatically extracts USER sections before rollback
39
- - Restores USER sections after rollback
40
- - Preserves custom commands in `.claude/commands/custom/`
41
- - Amends rollback commit to include restored content
42
-
43
- **4. Dry Run Mode**
44
- - Preview affected files without executing
45
- - Shows what would change
46
- - No git operations performed
47
-
48
- **5. Non-Destructive**
49
- - Uses `git revert` (creates new commit)
50
- - Never uses `git reset --hard` (destructive)
51
- - Preserves full git history
52
- - Can be undone with another rollback
53
-
54
- ### USER Section Preservation
55
-
56
- **What Gets Preserved**:
57
- ```markdown
58
- <!-- USER:START -->
59
- Your custom content here
60
- <!-- USER:END -->
61
-
62
- <!-- USER:START:custom-name -->
63
- Named USER section
64
- <!-- USER:END:custom-name -->
65
- ```
66
-
67
- **Process**:
68
- 1. Extract all USER sections from AGENTS.md, CLAUDE.md, etc.
69
- 2. Backup custom commands from `.claude/commands/custom/`
70
- 3. Execute rollback operation
71
- 4. Restore USER sections to current file content
72
- 5. Restore custom command files
73
- 6. Amend rollback commit to include restored content
74
-
75
- **Result**: Your customizations survive rollback operations.
76
-
77
- ## Rollback Methods
78
-
79
- ### 1. Rollback Last Commit
80
-
81
- **Use when**: Quick undo of most recent change
82
-
83
- **How it works**:
84
- ```bash
85
- git revert HEAD --no-edit
86
- ```
87
-
88
- **Example**:
89
- ```bash
90
- bunx forge rollback
91
- # Select: 1. Rollback last commit
92
-
93
- ✓ Working directory is clean
94
- ✓ Extracting USER sections...
95
- ✓ Executing: git revert HEAD --no-edit
96
- ✓ Restoring USER sections...
97
- ✓ Amended commit to preserve USER content
98
-
99
- Rollback complete!
100
- Commit: a1b2c3d "Revert: add authentication feature"
101
- Files affected: 5
102
- ```
103
-
104
- ### 2. Rollback Specific Commit
105
-
106
- **Use when**: Need to revert a commit from earlier in history
107
-
108
- **How it works**:
109
- ```bash
110
- git revert <commit-hash> --no-edit
111
- ```
112
-
113
- **Example**:
114
- ```bash
115
- bunx forge rollback
116
- # Select: 2. Rollback specific commit
117
- # Enter: a1b2c3d
118
-
119
- ✓ Validating commit hash...
120
- ✓ Working directory is clean
121
- ✓ Extracting USER sections...
122
- ✓ Executing: git revert a1b2c3d --no-edit
123
- ✓ Restoring USER sections...
124
- ✓ Amended commit to preserve USER content
125
-
126
- Rollback complete!
127
- Commit: x9y8z7w "Revert: a1b2c3d"
128
- Files affected: 8
129
- ```
130
-
131
- **Input validation**:
132
- - Accepts 4-40 character hex strings
133
- - Accepts 'HEAD'
134
- - Rejects shell metacharacters
135
- - Rejects invalid formats
136
-
137
- ### 3. Rollback Merged PR
138
-
139
- **Use when**: Need to revert an entire merged pull request
140
-
141
- **How it works**:
142
- ```bash
143
- git revert -m 1 <merge-commit-hash> --no-edit
144
- ```
145
-
146
- **Example**:
147
- ```bash
148
- bunx forge rollback
149
- # Select: 3. Rollback merged PR
150
- # Enter: def456 (merge commit hash)
151
-
152
- ✓ Validating commit hash...
153
- ✓ Working directory is clean
154
- ✓ Extracting USER sections...
155
- ✓ Executing: git revert -m 1 def456 --no-edit
156
- ✓ Restoring USER sections...
157
- ✓ Amended commit to preserve USER content
158
- ✓ Beads integration: Issue #123 marked as 'reverted'
159
-
160
- Rollback complete!
161
- Commit: m1n2o3p "Revert: Merge pull request #123"
162
- Files affected: 15
163
- Beads issue: #123 status → reverted
164
- ```
165
-
166
- **Beads Integration**:
167
- - Parses commit message for issue number (`#123`)
168
- - If found, runs: `bd update <id> --status reverted --comment "PR reverted"`
169
- - Silently skips if Beads not installed
170
- - Updates issue tracking automatically
171
-
172
- ### 4. Rollback Specific Files
173
-
174
- **Use when**: Only certain files need to be restored
175
-
176
- **How it works**:
177
- ```bash
178
- git checkout HEAD~1 -- <file1> <file2> ...
179
- git commit -m "Rollback: <files>"
180
- ```
181
-
182
- **Example**:
183
- ```bash
184
- bunx forge rollback
185
- # Select: 4. Rollback specific files
186
- # Enter: AGENTS.md,CLAUDE.md
187
-
188
- ✓ Validating file paths...
189
- ✓ Working directory is clean
190
- ✓ Extracting USER sections...
191
- ✓ Executing: git checkout HEAD~1 -- AGENTS.md CLAUDE.md
192
- ✓ Committing changes...
193
- ✓ Restoring USER sections...
194
- ✓ Amended commit to preserve USER content
195
-
196
- Rollback complete!
197
- Commit: q4r5s6t "Rollback: AGENTS.md, CLAUDE.md"
198
- Files affected: 2
199
- ```
200
-
201
- **Path validation**:
202
- - Comma-separated file paths
203
- - Validates paths are within project root
204
- - Prevents path traversal (`../../../etc/passwd`)
205
- - Rejects shell metacharacters
206
- - Uses `path.resolve()` + `startsWith()` check
207
-
208
- ### 5. Rollback Entire Branch
209
-
210
- **Use when**: Need to revert a range of commits
211
-
212
- **How it works**:
213
- ```bash
214
- git revert <start-commit>..<end-commit> --no-edit
215
- ```
216
-
217
- **Example**:
218
- ```bash
219
- bunx forge rollback
220
- # Select: 5. Rollback entire branch
221
- # Enter: abc123..def456
222
-
223
- ✓ Validating commit range...
224
- ✓ Working directory is clean
225
- ✓ Extracting USER sections...
226
- ✓ Executing: git revert abc123..def456 --no-edit
227
- ✓ Restoring USER sections...
228
- ✓ Amended commit to preserve USER content
229
-
230
- Rollback complete!
231
- Commits reverted: 7
232
- Files affected: 24
233
- ```
234
-
235
- **Range validation**:
236
- - Format: `start..end`
237
- - Both commits must be valid hashes (4-40 chars)
238
- - Rejects invalid formats
239
- - Checks for `..` separator
240
-
241
- ### 6. Preview Rollback (Dry Run)
242
-
243
- **Use when**: Want to see what would change without executing
244
-
245
- **How it works**:
246
- - Prompts for method and target
247
- - Validates inputs
248
- - Shows affected files
249
- - No git operations performed
250
-
251
- **Example**:
252
- ```bash
253
- bunx forge rollback
254
- # Select: 6. Preview rollback (dry run)
255
- # Enter method: partial
256
- # Enter target: AGENTS.md,package.json
257
-
258
- ✓ Validating inputs...
259
- ✓ DRY RUN MODE - No changes will be made
260
-
261
- Preview of rollback:
262
- Method: partial
263
- Target: AGENTS.md, package.json
264
-
265
- Files that would be affected:
266
- - AGENTS.md
267
- - package.json
268
-
269
- USER sections that would be preserved:
270
- - AGENTS.md: 2 sections
271
-
272
- Custom commands that would be preserved:
273
- - .claude/commands/custom/my-workflow.md
274
-
275
- No changes made (dry run).
276
- ```
1
+ # Rollback: workflow integration, issue status & troubleshooting (reference)
277
2
 
278
3
  ## Integration with Workflow
279
4
 
@@ -289,13 +14,13 @@ No changes made (dry run).
289
14
  - CI/CD failures indicate architecture problems
290
15
  - Breaking changes need to be reverted
291
16
 
292
- **After Merging** (`/premerge` + user merge):
17
+ **After Merging** (pre-merge gate + user merge):
293
18
  - Production issues discovered
294
19
  - Need to revert feature entirely
295
20
  - Rollback PR merge commit
296
21
 
297
22
  **Recovery Scenarios**:
298
- - Accidentally committed sensitive data (rollback + force push)
23
+ - Accidentally committed sensitive data (follow the secret-removal runbook; rollback alone does not purge history)
299
24
  - Merge conflict resolution went wrong
300
25
  - Refactor broke existing functionality
301
26
 
@@ -303,7 +28,7 @@ No changes made (dry run).
303
28
 
304
29
  ```bash
305
30
  # Standard workflow
306
- /status → /plan → /dev → /validate → /ship → /review → /premerge /verify
31
+ /status → /plan → /dev → /validate → /ship → /review → /verify (pre-merge doc gate runs inside /ship and /review)
307
32
 
308
33
  # Recovery workflow
309
34
  /dev → (issues discovered) → bunx forge rollback → /dev (retry)
@@ -340,7 +65,7 @@ bunx forge rollback
340
65
 
341
66
  ## Beads Integration
342
67
 
343
- If Beads is installed (`bun install -g @beads/bd`), rollback automatically updates issue tracking.
68
+ If Beads is installed (`bunx forge setup`), rollback automatically updates issue tracking.
344
69
 
345
70
  ### PR Rollback → Issue Status
346
71
 
@@ -348,7 +73,7 @@ When rolling back a merged PR:
348
73
  1. Parse commit message for issue number (`#123`, `fixes #456`, etc.)
349
74
  2. If issue number found:
350
75
  ```bash
351
- bd update <id> --status reverted --comment "PR reverted by rollback"
76
+ forge update <id> --status reverted --comment "PR reverted by rollback"
352
77
  ```
353
78
  3. Silently skip if:
354
79
  - Beads not installed
@@ -360,7 +85,7 @@ When rolling back a merged PR:
360
85
  If automatic detection doesn't work:
361
86
  ```bash
362
87
  # After rollback
363
- bd update 123 --status reverted --comment "Rolled back due to production issues"
88
+ forge update 123 --status reverted --comment "Rolled back due to production issues"
364
89
  ```
365
90
 
366
91
  ## Troubleshooting
@@ -525,7 +250,8 @@ if (target !== 'HEAD' && !/^[0-9a-f]{4,40}$/i.test(target)) {
525
250
  **File paths**:
526
251
  ```javascript
527
252
  const resolved = path.resolve(projectRoot, file);
528
- if (!resolved.startsWith(projectRoot)) {
253
+ const rel = path.relative(projectRoot, resolved);
254
+ if (rel.startsWith('..') || path.isAbsolute(rel)) {
529
255
  return { valid: false, error: 'Path outside project' };
530
256
  }
531
257
  ```
@@ -633,7 +359,7 @@ bunx forge rollback
633
359
  # ✓ Beads: Issue #123 → status: reverted
634
360
  # ✓ Rollback complete!
635
361
 
636
- bd show 123
362
+ forge show 123
637
363
  # ID: 123
638
364
  # Title: Add real-time updates
639
365
  # Status: reverted