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,685 @@
1
+ # Forge Project Design and Decision Registry
2
+
3
+ **Status:** Canonical living registry for current Forge design direction
4
+ **Last reviewed:** 2026-06-08
5
+ **Update rule:** Current accepted design decisions live here. Rationale and evidence must link to ADRs and work artifacts.
6
+
7
+ ## How to read this file
8
+
9
+ 1. Start here for current Forge architecture and direction.
10
+ 2. Follow ADR links for immutable cross-cutting architectural decisions once they exist.
11
+ 3. Follow `docs/work/**` links for full discussion, spike evidence, evaluator notes, and local decisions.
12
+ 4. Treat work-folder decisions as evidence unless promoted here or accepted through a Kernel decision event.
13
+ 5. If this file conflicts with an unsuperseded ADR or accepted Kernel decision event, that is a decision-registry error and should block merge.
14
+
15
+ ## Current design snapshot
16
+
17
+ Forge is moving toward a native Kernel/control-plane architecture:
18
+
19
+ - **Authority:** SQLite WAL is the local single-machine Kernel authority; team/multi-machine authority requires a serialized server authority later. Routine issue, workflow, claim, run, and knowledge writes must not depend on committing repository metadata to the protected default branch.
20
+ - **Beads/Dolt:** Beads and Dolt remain compatibility/projection/history/migration surfaces, not the core Kernel write path.
21
+ - **Project Knowledge:** Project Knowledge is verbatim-first and rebuildable. Summaries, extracted facts, Context Mode output, Graphify output, and agent memories are derived/proposal material unless accepted by Kernel event.
22
+ - **Knowledge storage:** Knowledge starts in the same local SQLite Kernel DB by default, but only behind a clean `KnowledgeStore` boundary so it can later move to `knowledge.sqlite`, server-side search, or another backend.
23
+ - **Work model:** Forge uses a Work Graph plus Planning Buckets and an Agent Execution Ledger. Agile/Scrum/Kanban are views/presets, not the database ontology.
24
+ - **CLI:** `forge` CLI becomes the canonical Kernel-first local command surface through incremental cutover.
25
+ - **MCP:** Forge MCP starts read-only over the same service contracts as CLI; write tools come later with revision/idempotency/conflict guards.
26
+ - **Observer:** Background observers record evidence/proposals/session events first; they do not silently mutate project truth.
27
+ - **Architecture notes:** Architecture-significant observations, domain rules, subsystem behaviors, constraints, and open questions must be captured as scoped architecture records. `PROJECT_DESIGN.md` remains the top-level map; detailed records live under `docs/architecture/**` and work/ADR evidence.
28
+ - **Hook policy:** Agent-native hooks are the preferred architecture-capture UX; Forge CLI checks own the policy; Lefthook is a Git adapter/fallback; CI is the non-bypassable gate. Agents must not use `--no-verify` or equivalent hook-disabling bypasses without explicit audited authorization.
29
+ - **Portability:** Routine Beads runtime/export state under `.beads/` is local and non-versioned. Explicit Kernel exports may provide reviewable clone/bootstrap snapshots, but repository projection files are not the routine authority channel for close/verify state. Local-only state uses the local Kernel SQLite authority; cross-machine or team state uses serialized server authority.
30
+ - **Work-item taxonomy:** 4 issue types (`epic`, `task`, `bug`, `decision`), 5 stored statuses; `ready`/`blocked` are derived read-model facts; a single numeric rank is authoritative for ordering.
31
+ - **Agent interface:** Forge ships its own agent surface (`forge prime`, kernel-facing JSON-first CLI, skills as thin CLI wrappers); agent-interface parity gates Beads retirement.
32
+ - **Supported harnesses:** Claude Code, Codex, and Cursor are the supported harness set; Hermes is the planned addition. Other previously-supported harness surfaces are removed.
33
+
34
+ ## Decision registry
35
+
36
+ ### PD-20260606-sqlite-local-authority
37
+
38
+ ```yaml
39
+ id: PD-20260606-sqlite-local-authority
40
+ topic: authority.local.storage
41
+ status: accepted
42
+ decision_date: 2026-06-06
43
+ last_reviewed: 2026-06-08
44
+ adr: pending
45
+ evidence:
46
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d1--sqlite-wal-is-local-authority-only
47
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d7--sqlite-is-the-first-kernel-authority-dolt-remains-first-class-projectionhistory
48
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/storage-decision.md
49
+ supersedes: []
50
+ conflicts_with: []
51
+ ```
52
+
53
+ **Current decision:** Use SQLite WAL as the first Forge Kernel local authority. Do not present SQLite/git files as safe multi-machine/team authority.
54
+
55
+ **Implications:**
56
+
57
+ - Local broker writes go through Kernel transaction/CAS/idempotency rules.
58
+ - Team writes require future serialized server authority.
59
+ - Dolt is not part of the initial Kernel transaction contract.
60
+
61
+ ### PD-20260606-beads-dolt-projection
62
+
63
+ ```yaml
64
+ id: PD-20260606-beads-dolt-projection
65
+ topic: projection.beads-dolt
66
+ status: accepted
67
+ decision_date: 2026-06-06
68
+ last_reviewed: 2026-06-08
69
+ adr: pending
70
+ evidence:
71
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d2--beads-remains-migrationprojection-during-kernel-rollout
72
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d7--sqlite-is-the-first-kernel-authority-dolt-remains-first-class-projectionhistory
73
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md
74
+ supersedes: []
75
+ conflicts_with: []
76
+ ```
77
+
78
+ **Current decision:** Keep Beads/Dolt as import/export/projection/history compatibility while Kernel matures. Do not let Beads/Dolt shape the core Kernel write path.
79
+
80
+ **Implications:**
81
+
82
+ - Beads memory/comments/issues can be imported as source material or projections.
83
+ - Beads content is not automatically accepted Forge truth.
84
+ - New authority work should route through Forge Kernel contracts.
85
+
86
+ ### PD-20260606-verbatim-first-knowledge
87
+
88
+ ```yaml
89
+ id: PD-20260606-verbatim-first-knowledge
90
+ topic: knowledge.truth-model
91
+ status: accepted
92
+ decision_date: 2026-06-06
93
+ last_reviewed: 2026-06-08
94
+ adr: pending
95
+ evidence:
96
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d3--verbatim-first-project-knowledge-layer
97
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/agent-memory-federation.md
98
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md
99
+ supersedes: []
100
+ conflicts_with: []
101
+ ```
102
+
103
+ **Current decision:** Project Knowledge indexes verbatim artifacts/events first. Summaries, extracted facts, agent memories, Context Mode output, and Graphify output are derived/proposal material unless accepted by Kernel event.
104
+
105
+ **Implications:**
106
+
107
+ - Source links and provenance are mandatory for accepted/project-relevant knowledge.
108
+ - `forge orient`, `forge recap`, and `forge knowledge search` should return authority/source/proposal labels.
109
+ - Conflicting memory becomes a conflict/proposal, not silent truth.
110
+
111
+ ### PD-20260608-knowledge-store-boundary
112
+
113
+ ```yaml
114
+ id: PD-20260608-knowledge-store-boundary
115
+ topic: knowledge.storage.boundary
116
+ status: accepted
117
+ decision_date: 2026-06-08
118
+ last_reviewed: 2026-06-08
119
+ adr: pending
120
+ evidence:
121
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#1-memory--project-knowledge
122
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-registry-mechanism.md
123
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-options.md
124
+ supersedes: []
125
+ conflicts_with: []
126
+ ```
127
+
128
+ **Current decision:** Start Knowledge in the same local SQLite Kernel DB by default, but behind a clean `KnowledgeStore` boundary so it can later move to `knowledge.sqlite`, a server/search backend, or another read-model store.
129
+
130
+ **Boundary rule:**
131
+
132
+ ```text
133
+ Kernel tables = authority
134
+ Knowledge tables = rebuildable read model / source index / proposals
135
+ Accepted facts = Kernel events
136
+ Derived summaries = not authority
137
+ ```
138
+
139
+ **Sidecar/server gates:** Move Knowledge out of the Kernel DB only when FTS/vector load, rebuild/compact behavior, team/server search, privacy, or operational isolation justifies the complexity.
140
+
141
+ ### PD-20260606-work-graph-planning-buckets
142
+
143
+ ```yaml
144
+ id: PD-20260606-work-graph-planning-buckets
145
+ topic: backlog.model
146
+ status: accepted
147
+ decision_date: 2026-06-06
148
+ last_reviewed: 2026-06-08
149
+ adr: pending
150
+ evidence:
151
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/backlog-frontend-model.md
152
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#2-backlog--issues--sprints--methodology
153
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-options.md
154
+ supersedes: []
155
+ conflicts_with: []
156
+ ```
157
+
158
+ **Current decision:** Forge should use Work Graph + Planning Buckets + Agent Execution Ledger. Agile/Scrum/Kanban are presets/views, not the primary ontology.
159
+
160
+ **Core model:**
161
+
162
+ ```text
163
+ issues / work_items
164
+ issue_relations
165
+ planning_buckets
166
+ issue_bucket_memberships
167
+ claims
168
+ sessions / runs
169
+ stage_runs
170
+ events
171
+ readiness
172
+ board_positions
173
+ ```
174
+
175
+ **Implications:**
176
+
177
+ - Multiple product/team backlogs are planning buckets or views.
178
+ - Sprints/releases/milestones/queues share the planning bucket mechanism.
179
+ - Claimable/schedulable work is an issue/work item.
180
+ - Status, workflow stage, claim state, bucket state, and run status stay separate.
181
+
182
+ ### PD-20260606-cli-kernel-first
183
+
184
+ ```yaml
185
+ id: PD-20260606-cli-kernel-first
186
+ topic: cli.contract
187
+ status: accepted
188
+ decision_date: 2026-06-06
189
+ last_reviewed: 2026-06-08
190
+ adr: pending
191
+ evidence:
192
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#3-forge-cli
193
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-options.md#3-forge-cli
194
+ supersedes: []
195
+ conflicts_with: []
196
+ ```
197
+
198
+ **Current decision:** Use canonical Kernel-first CLI with incremental cutover. CLI remains the universal local integration contract; MCP and observers use the same service contracts.
199
+
200
+ ### PD-20260606-readonly-mcp-first
201
+
202
+ ```yaml
203
+ id: PD-20260606-readonly-mcp-first
204
+ topic: mcp.contract
205
+ status: accepted
206
+ decision_date: 2026-06-06
207
+ last_reviewed: 2026-06-08
208
+ adr: pending
209
+ evidence:
210
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#4-forge-mcp-and-background-observer
211
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-options.md#4-forge-mcp
212
+ supersedes: []
213
+ conflicts_with: []
214
+ ```
215
+
216
+ **Current decision:** Build Forge MCP read-only first over Kernel-backed status/orient/recap/issue/backlog/knowledge/graph queries. Write MCP comes later and must require expected revision, idempotency key, actor/session/worktree metadata, and conflict handling.
217
+
218
+ ### PD-20260606-observer-evidence-proposals
219
+
220
+ ```yaml
221
+ id: PD-20260606-observer-evidence-proposals
222
+ topic: observer.authority
223
+ status: accepted
224
+ decision_date: 2026-06-06
225
+ last_reviewed: 2026-06-08
226
+ adr: pending
227
+ evidence:
228
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#4-forge-mcp-and-background-observer
229
+ supersedes: []
230
+ conflicts_with: []
231
+ ```
232
+
233
+ **Current decision:** Background observer adapters should initially record evidence, proposals, session events, files touched, commands/tests run, and recap candidates. They must not silently close issues, accept decisions, reassign claims, or mutate project truth.
234
+
235
+ ### PD-20260608-mandatory-architecture-note-capture
236
+
237
+ ```yaml
238
+ id: PD-20260608-mandatory-architecture-note-capture
239
+ topic: architecture.capture.mandate
240
+ status: accepted
241
+ decision_date: 2026-06-08
242
+ last_reviewed: 2026-06-08
243
+ adr: pending
244
+ evidence:
245
+ - docs/architecture/index.md
246
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/architecture-note-governance.md
247
+ supersedes: []
248
+ conflicts_with: []
249
+ ```
250
+
251
+ **Current decision:** Architecture-significant information must be captured when changed or discovered, but it does not all live inline in this file. `docs/PROJECT_DESIGN.md` is the top-level current map, while detailed scoped records live under `docs/architecture/**`, ADRs, and work-folder evidence.
252
+
253
+ **Record types:**
254
+
255
+ ```text
256
+ architecture_note observed architectural fact, rule, constraint, or behavior
257
+ architecture_decision accepted direction after tradeoffs
258
+ architecture_question unresolved ambiguity or decision needed
259
+ architecture_conflict contradictory records or code/docs disagreement
260
+ architecture_exception deliberate deviation with owner, reason, and review/expiry
261
+ ```
262
+
263
+ **Mandatory rule:** If future users or agents would need the information to avoid breaking the system, capture it with source evidence.
264
+
265
+ **Scale rule:** Large projects should organize architecture records by project/domain/bounded-context/subsystem/component/API instead of growing this file into a 10,000-line monolith.
266
+
267
+ ### PD-20260608-hook-backed-architecture-capture
268
+
269
+ ```yaml
270
+ id: PD-20260608-hook-backed-architecture-capture
271
+ topic: architecture.capture.hooks
272
+ status: accepted
273
+ decision_date: 2026-06-08
274
+ last_reviewed: 2026-06-08
275
+ adr: pending
276
+ evidence:
277
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/architecture-capture-hooks.md
278
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/architecture-note-governance.md
279
+ supersedes: []
280
+ conflicts_with: []
281
+ ```
282
+
283
+ **Current decision:** Use hooks as a layered enforcement surface for mandatory architecture capture, but do not make Lefthook the center. Agent-native hooks are the preferred interactive experience; Forge CLI checks own the policy; Lefthook is a repo-local Git adapter/fallback; CI required checks and later Kernel authority validation plus KnowledgeStore indexing/proposal validation are the durable enforcement boundaries.
284
+
285
+ **Boundary:** Hooks make missing architecture capture hard to miss, but they are not the source of truth. Lefthook depends on install/worktree state and can be bypassed; CI and future Kernel authority are the durable enforcement boundaries.
286
+
287
+ **Rule:** Architecture-sensitive changes require an explicit architecture-impact declaration. If architecture changed or was discovered, the work must add/update an architecture record, open a question/conflict, or update/supersede accepted design direction. Agents must not use `git commit --no-verify`, `git push --no-verify`, `HUSKY=0`, `LEFTHOOK=0`, `git -c core.hooksPath=...`, script-mediated hook bypasses, or hook removal to bypass Forge checks unless explicitly authorized through an audited Forge bypass event.
288
+
289
+ ### PD-20260611-kernel-jsonl-portability
290
+
291
+ ```yaml
292
+ id: PD-20260611-kernel-jsonl-portability
293
+ topic: portability.projection
294
+ status: accepted
295
+ decision_date: 2026-06-11
296
+ last_reviewed: 2026-06-11
297
+ adr: pending
298
+ evidence:
299
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d16--kernel-jsonl-portability-projection
300
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/plan-evaluation.md
301
+ supersedes: []
302
+ conflicts_with: []
303
+ ```
304
+
305
+ **Current decision:** The Kernel may own deterministic JSONL export/import artifacts for clone/bootstrap and reviewable portability snapshots. These exports are explicit projections, not the normal write path and not the durability mechanism for routine close/verify state.
306
+
307
+ **Implications:**
308
+
309
+ - Acceptance: fresh machine, `git clone`, no Beads/Dolt installed can import an explicit Kernel projection when one is intentionally published.
310
+ - Local-only work remains durable in local SQLite without requiring default-branch commits.
311
+ - Team or cross-machine work requires server authority before writes are accepted as shared truth.
312
+ - Retirement claims under PD-20260606-beads-dolt-projection cannot pass until portability works without putting every local state mutation on the Git hot path.
313
+
314
+ ### PD-20260613-authority-state-not-repo-metadata
315
+
316
+ ```yaml
317
+ id: PD-20260613-authority-state-not-repo-metadata
318
+ topic: authority.persistence.boundary
319
+ status: accepted
320
+ decision_date: 2026-06-13
321
+ last_reviewed: 2026-06-13
322
+ adr: pending
323
+ evidence:
324
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/workflow-friction-amendments.md
325
+ - docs/reference/FORGE_KERNEL_STORAGE_MODEL.md
326
+ supersedes: []
327
+ conflicts_with: []
328
+ ```
329
+
330
+ **Current decision:** Routine issue, workflow, claim, run, and knowledge writes must not depend on committing repository metadata to the protected default branch. Local-only state uses the local Kernel SQLite authority. Cross-machine or team state uses serialized server authority. Repository files are project code/docs/config plus explicit projection artifacts, not the live database for normal close/verify work.
331
+
332
+ **Implications:**
333
+
334
+ - `/verify` closing an issue must not require a follow-up PR or direct push to persist tracker metadata.
335
+ - When no server is configured, close/verify state is local-only and should be reported that way.
336
+ - When team mode is configured, close/verify writes go to server authority, and server-side projection workers update GitHub/Linear/Beads compatibility state.
337
+ - Beads/Dolt and Kernel JSONL exports remain explicit import/export/projection surfaces, not the hot-path authority.
338
+ - Acceptance: fresh machine, `git clone`, no committed `.beads/` runtime state → `forge setup` initializes local Beads state without dirtying the repo; team/cross-machine status comes from server authority or an explicit projection import.
339
+ - Retirement claims under PD-20260606-beads-dolt-projection cannot pass without a Beads-local setup path and explicit projection/import-export replacement.
340
+
341
+ ### PD-20260611-sqlite-builtin-driver
342
+
343
+ ```yaml
344
+ id: PD-20260611-sqlite-builtin-driver
345
+ topic: authority.local.driver
346
+ status: accepted
347
+ decision_date: 2026-06-11
348
+ last_reviewed: 2026-06-11
349
+ adr: pending
350
+ evidence:
351
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d17--sqlite-driver-builtin-no-native-compile
352
+ supersedes: []
353
+ conflicts_with: []
354
+ ```
355
+
356
+ **Current decision:** Use builtin `node:sqlite` and/or `bun:sqlite`, selected by runtime feature detection, for the Kernel broker. No native-compile dependency in the default install.
357
+
358
+ **Implications:**
359
+
360
+ - `node:sqlite` is unflagged from Node.js ≥ 22.13.0 but is still Release Candidate / experimental; the broker probes for it at runtime and falls back to `bun:sqlite` rather than gating on Node major version alone.
361
+ - Driver conformance tests (WAL, busy timeout, atomic event+CAS+outbox, backup/checkpoint, FTS5) and the detection/fallback path run against the chosen builtin drivers on all supported platforms.
362
+ - This selection blocks all local-broker safety work and must land first.
363
+
364
+ ### PD-20260611-work-item-taxonomy
365
+
366
+ ```yaml
367
+ id: PD-20260611-work-item-taxonomy
368
+ topic: workgraph.taxonomy
369
+ status: accepted
370
+ decision_date: 2026-06-11
371
+ last_reviewed: 2026-06-11
372
+ adr: pending
373
+ evidence:
374
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d18--taxonomy-collapse-4-types-5-statuses-single-rank
375
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/beads/backlog-taxonomy.md
376
+ supersedes: []
377
+ conflicts_with: []
378
+ ```
379
+
380
+ **Current decision:** Issue types are `epic`, `task`, `bug`, `decision` (`feature`/`story`/`chore`/`spike` are labels). Stored statuses are `open`, `in_progress`, `review`, `done`, `cancelled`; `ready`/`blocked` are derived read-model facts. A single numeric rank is authoritative for ordering; P0–P4 is a display projection.
381
+
382
+ **Implications:**
383
+
384
+ - Refines PD-20260606-work-graph-planning-buckets: the Work Graph ontology uses this narrow enum set.
385
+ - Must land before the 0.0.20 Kernel schema freezes a wider version.
386
+
387
+ ### PD-20260611-local-filesystem-doctor-gate
388
+
389
+ ```yaml
390
+ id: PD-20260611-local-filesystem-doctor-gate
391
+ topic: authority.local.filesystem
392
+ status: accepted
393
+ decision_date: 2026-06-11
394
+ last_reviewed: 2026-06-11
395
+ adr: pending
396
+ evidence:
397
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d19--filesystem-doctor-is-a-default-on-gate
398
+ supersedes: []
399
+ conflicts_with: []
400
+ ```
401
+
402
+ **Current decision:** Before placing `kernel.sqlite`, Forge detects network shares, cloud-sync folders (OneDrive/Dropbox/Google Drive), and WSL-crossing paths, and refuses or warns with remediation guidance. The doctor check is a prerequisite for kernel default-on, shipped with the broker driver work.
403
+
404
+ ### PD-20260611-bd-retirement-kill-list
405
+
406
+ ```yaml
407
+ id: PD-20260611-bd-retirement-kill-list
408
+ topic: migration.beads-retirement
409
+ status: accepted
410
+ decision_date: 2026-06-11
411
+ last_reviewed: 2026-06-11
412
+ adr: pending
413
+ evidence:
414
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d20--tracked-bd-call-site-kill-list
415
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/plan-evaluation.md
416
+ supersedes: []
417
+ conflicts_with: []
418
+ ```
419
+
420
+ **Current decision:** Maintain the inventory of `bd` call sites (~125 across 40+ files) as a checked-off migration artifact with a defined hot-path order (sync → worktree dolt lifecycle → setup → status/preflight → team scripts → instruction surfaces). Beads retirement claims must reference the completed list.
421
+
422
+ ### PD-20260611-orient-recap-file-assembly
423
+
424
+ ```yaml
425
+ id: PD-20260611-orient-recap-file-assembly
426
+ topic: knowledge.orient-recap
427
+ status: accepted
428
+ decision_date: 2026-06-11
429
+ last_reviewed: 2026-06-11
430
+ adr: pending
431
+ evidence:
432
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d21--forge-orientrecap-v1-is-bounded-file-assembly-fts5-is-v2
433
+ supersedes: []
434
+ conflicts_with: []
435
+ ```
436
+
437
+ **Current decision:** `forge orient` (new) and issue-scoped `forge recap <issue>` (additive mode on the existing activity-recap command) ship first as deterministic bounded file assembly with explicit token budgets; the FTS5 verbatim knowledge index upgrades the same command contract later. The existing no-arg `forge recap` keeps its contract; its Beads JSONL data source migrates to the Kernel projection per the kill list.
438
+
439
+ ### PD-20260611-agent-interface-parity
440
+
441
+ ```yaml
442
+ id: PD-20260611-agent-interface-parity
443
+ topic: agent-interface.parity
444
+ status: accepted
445
+ decision_date: 2026-06-11
446
+ last_reviewed: 2026-06-11
447
+ adr: pending
448
+ evidence:
449
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d22--forge-agent-interface-parity-layer-the-beads-plugin-equivalent
450
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/agent-interface-layer.md
451
+ supersedes: []
452
+ conflicts_with: []
453
+ ```
454
+
455
+ **Current decision:** Forge ships a first-class agent interface layer for its own Kernel — session-priming hook (`forge prime`), kernel-facing JSON-first command set, skills as thin CLI wrappers, harness plugin packaging. Agent-interface parity is a named gate in Beads retirement criteria.
456
+
457
+ ### PD-20260611-supported-harness-set
458
+
459
+ ```yaml
460
+ id: PD-20260611-supported-harness-set
461
+ topic: agent-interface.harnesses
462
+ status: accepted
463
+ decision_date: 2026-06-11
464
+ last_reviewed: 2026-06-11
465
+ adr: pending
466
+ evidence:
467
+ - docs/work/2026-06-06-kernel-backlog-memory-roadmap/agent-interface-layer.md
468
+ supersedes: []
469
+ conflicts_with: []
470
+ ```
471
+
472
+ **Current decision:** The supported harness set is Claude Code, Codex, and Cursor; Hermes is the planned addition. Support for other harnesses (Cline, Copilot/GitHub prompts, Kilocode, OpenCode, Roo) is removed — generated command directories, plugin catalogs, detection, and config generation are pruned, and the supported list becomes explicit configuration rather than a hardcoded directory walk.
473
+
474
+ **Implications:**
475
+
476
+ - Onboarding a new harness must require only an adapter (hook wiring + instruction block), zero Kernel changes.
477
+ - Earlier multi-harness support (including the prior partial removal of Antigravity/Windsurf/Aider/Continue) is fully unwound rather than left half-wired.
478
+
479
+ ### PD-20260619-skills-canonical-surface
480
+
481
+ ```yaml
482
+ id: PD-20260619-skills-canonical-surface
483
+ topic: agent-interface.canonical-source
484
+ status: accepted
485
+ decision_date: 2026-06-19
486
+ adr: pending
487
+ evidence:
488
+ - docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md
489
+ supersedes: []
490
+ refines: [PD-20260611-agent-interface-parity]
491
+ conflicts_with: []
492
+ ```
493
+
494
+ **Current decision:** The agent surface's canonical source is the neutral `.skills/` registry, synced by the `@forge/skills` CLI to `.claude/.codex/.cursor/.hermes`. No harness is "main." Refines `PD-20260611-agent-interface-parity`, which originally implied a `.claude/`-canonical command surface.
495
+
496
+ ### PD-20260619-no-command-surface
497
+
498
+ ```yaml
499
+ id: PD-20260619-no-command-surface
500
+ topic: agent-interface.no-commands
501
+ status: accepted
502
+ decision_date: 2026-06-19
503
+ adr: pending
504
+ evidence:
505
+ - docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md
506
+ supersedes: []
507
+ conflicts_with: [forge-ny6j, forge-besw.9]
508
+ ```
509
+
510
+ **Current decision:** Forge uses skills + agents only — **no command files**. The 7 stage commands migrate to skills; `.claude/commands/`, generated command outputs, and `scripts/sync-commands.js` are deleted. Open issues `forge-ny6j` (neutral command source) and `forge-besw.9` (sync-commands v2) contradict this and must be closed/rewritten.
511
+
512
+ ### PD-20260619-agent-sync-all-harnesses
513
+
514
+ ```yaml
515
+ id: PD-20260619-agent-sync-all-harnesses
516
+ topic: agent-interface.agent-sync
517
+ status: accepted
518
+ decision_date: 2026-06-19
519
+ adr: pending
520
+ evidence:
521
+ - docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md
522
+ supersedes: []
523
+ conflicts_with: []
524
+ ```
525
+
526
+ **Current decision:** Extend the `@forge/skills` CLI to sync agent files (not just skills) from a neutral source to every present harness dir (`.claude/.codex/.cursor/.hermes`); Codex/Cursor with no agents concept are a logged no-op, not Claude-only by default.
527
+
528
+ ### PD-20260619-harness-neutral-hooks
529
+
530
+ ```yaml
531
+ id: PD-20260619-harness-neutral-hooks
532
+ topic: hooks.surface
533
+ status: accepted
534
+ decision_date: 2026-06-19
535
+ adr: pending
536
+ evidence:
537
+ - docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md#9
538
+ refines: [PD-20260608-hook-backed-architecture-capture]
539
+ conflicts_with: []
540
+ ```
541
+
542
+ **Current decision:** Kernel hooks (SessionStart→`forge prime`, PreCompact→`forge recap`, Stop→`forge export`+sync reminder, PreToolUse guards) have a neutral source (`.skills/hooks.json`) synced per-harness by `skills sync-hooks` (format-aware writers). Git-lifecycle hooks install worktree-proof via `core.hooksPath` at the git-common-dir level (the Hermes/Codex/Cursor enforcement path). Hooks record evidence/proposals only — never silently mutate authority (observer rule).
543
+
544
+ ### PD-20260619-unique-feature-surface
545
+
546
+ ```yaml
547
+ id: PD-20260619-unique-feature-surface
548
+ topic: agent-interface.unique-features
549
+ status: accepted
550
+ decision_date: 2026-06-19
551
+ adr: pending
552
+ evidence:
553
+ - docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md#10
554
+ supersedes: []
555
+ conflicts_with: []
556
+ ```
557
+
558
+ **Current decision:** Forge-unique capabilities (claim leases, JSONL portability, readiness, planning buckets, etc.) are surfaced via a 3-way split: **surface-now** (live CLI → thin skills), **must-build** (`remember`/`recall`/`buckets`), and **internal — do NOT surface** (quarantine/evaluators/taxonomy-validation/broker/command-contract). Avoids exposing plumbing that would invite agents to hand-generate revisions/idempotency keys.
559
+
560
+ ### PD-20260620-kernel-storage-model-a
561
+
562
+ ```yaml
563
+ id: PD-20260620-kernel-storage-model-a
564
+ topic: authority.local.storage.home
565
+ status: accepted
566
+ decision_date: 2026-06-20
567
+ adr: pending
568
+ evidence:
569
+ - docs/work/2026-06-20-kernel-agent-parity/design.md#1-storage--model-a-per-user-home--track-c-later
570
+ extends:
571
+ - PD-20260606-sqlite-local-authority
572
+ supersedes: []
573
+ conflicts_with: []
574
+ ```
575
+
576
+ **Current decision:** The live kernel DB lives in a per-user home `~/.forge/projects/<uuid>/kernel.sqlite` with a central `~/.forge/registry.json`, a committed `<repo>/.forge/project.json` UUID marker for stable identity, and an opt-in committable JSONL projection (`issues.jsonl`) as the share-or-not knob. Chosen over in-repo `.forge/` (B) and today's `.git/forge/` (C) because only a central home makes a multi-project frontend natural. This is **track C** (own design + implementation later).
577
+
578
+ **Implications:**
579
+
580
+ - Live binary DB is never pushed; sharing is via the JSONL projection only.
581
+ - Config splits: shared/team config committed in-repo; personal config + live data central.
582
+ - Fresh clone registers on first `forge` run from the committed UUID marker, optionally seeding from `issues.jsonl`.
583
+ - Enables a `forge serve` daemon + localhost web/desktop frontend over the same broker.
584
+
585
+ ### PD-20260620-cli-agent-first-rendering
586
+
587
+ ```yaml
588
+ id: PD-20260620-cli-agent-first-rendering
589
+ topic: cli.rendering
590
+ status: accepted
591
+ decision_date: 2026-06-20
592
+ adr: pending
593
+ evidence:
594
+ - docs/work/2026-06-20-kernel-agent-parity/design.md#2-cli-rendering--agent-first
595
+ supersedes: []
596
+ conflicts_with: []
597
+ ```
598
+
599
+ **Current decision:** The issue CLI is rendered **agent-first**, not human-first. Skip pretty human tables (agents read JSON + summarize; the future frontend covers direct visual use). Invest instead in making the CLI more agent-friendly — preserve the full contract envelope (`schema_version` + `next_commands`) through the CLI boundary, always-on.
600
+
601
+ **Implications:**
602
+
603
+ - No effort spent on CLI table/color formatting.
604
+ - `normalizeIssueResult` must stop flattening the kernel envelope (KAP-1).
605
+ - The frontend (track C) is the human-render layer.
606
+
607
+ ### PD-20260620-kernel-agent-parity-backlog
608
+
609
+ ```yaml
610
+ id: PD-20260620-kernel-agent-parity-backlog
611
+ topic: parity.kernel-beads
612
+ status: accepted
613
+ decision_date: 2026-06-20
614
+ adr: pending
615
+ evidence:
616
+ - docs/work/2026-06-20-kernel-agent-parity/design.md#3-dont-clone-beads-wholesale--kernel-agent-parity-kap-backlog
617
+ extends:
618
+ - PD-20260611-agent-interface-parity
619
+ supersedes: []
620
+ conflicts_with: []
621
+ ```
622
+
623
+ **Current decision:** Close agent-facing gaps vs Beads selectively (epic KAP-0, 12 tasks, 3 waves) rather than cloning Beads wholesale. Wave 1 = KAP-1,2,6,7,9 (envelope, projection enrichment, list filters, derived queries, batch close). Deferred: defer/supersede/human/doctor/remember/formula. Backlog is filed into the kernel itself (dogfood).
624
+
625
+ **Implications:**
626
+
627
+ - Output projection (`rowToIssueSummary`) and `ISSUE_SUMMARY_SCHEMA` gain parent_id/dependencies/labels/priority/created_at — projection additions, not new storage.
628
+ - Wave 1 tasks share files (`sqlite-driver.js`, `issue-command-contract.js`, `_issue.js`) → implement sequentially, KAP-2 first.
629
+ - Beads `dolt push/pull/sync` is not a parity gap — it is the JSONL-projection model (PD-20260620-kernel-storage-model-a).
630
+
631
+ ## Registry update rules
632
+
633
+ ### When to update this file
634
+
635
+ Update this file when a decision:
636
+
637
+ - affects multiple components,
638
+ - changes authority/storage boundaries,
639
+ - changes public CLI/MCP/API behavior,
640
+ - changes backlog/workflow ontology,
641
+ - changes agent/session/observer behavior,
642
+ - supersedes a previous accepted project direction,
643
+ - future agents or team members will need before starting work.
644
+
645
+ ### When to keep decision only in a work folder
646
+
647
+ Keep it local to `docs/work/<date>-<slug>/decisions.md` when it is:
648
+
649
+ - scoped to one implementation task,
650
+ - temporary spike/evaluator output,
651
+ - a low-risk local ambiguity resolution,
652
+ - evidence for a larger decision but not itself global direction.
653
+
654
+ ### When to create an ADR
655
+
656
+ Create an ADR under `docs/adr/` when a decision is cross-cutting, hard to reverse, or expected to govern future code/reviews. ADRs should be immutable after acceptance; supersede with a new ADR instead of rewriting history.
657
+
658
+ ## Conflict and supersession rules
659
+
660
+ - New material decision: create a new `PD-*` entry.
661
+ - Replacing old direction: mark old entry `superseded` and point to the new entry.
662
+ - Conflict discovered: create a conflict/proposal record in Kernel/KnowledgeStore later; until then, record the conflict in the relevant work folder and link it here if accepted.
663
+ - Two active accepted decisions with the same `topic` should fail future decision-registry validation.
664
+
665
+ ## Future Forge commands
666
+
667
+ This registry should eventually be indexed by KnowledgeStore and surfaced by:
668
+
669
+ ```bash
670
+ forge architecture check
671
+ forge architecture impact
672
+ forge design show
673
+ forge design decisions
674
+ forge design check
675
+ forge knowledge search <query>
676
+ forge orient --json
677
+ forge recap <issue> --json
678
+ ```
679
+
680
+ Agents should be taught:
681
+
682
+ 1. read `docs/PROJECT_DESIGN.md` first for current architecture;
683
+ 2. follow ADR/work-folder links for rationale;
684
+ 3. update or supersede decisions when changing architecture;
685
+ 4. never treat derived summaries as accepted truth without a registry/Kernel decision event.