@moretea-labs/forge 1.5.0-rc.1

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 (903) hide show
  1. package/AGENTS.md +120 -0
  2. package/CHANGELOG.md +36 -0
  3. package/CLAUDE.md +120 -0
  4. package/CODE_OF_CONDUCT.md +23 -0
  5. package/CONTRIBUTING.md +77 -0
  6. package/LICENSE +22 -0
  7. package/NOTICE +9 -0
  8. package/README.en.md +5 -0
  9. package/README.es.md +12 -0
  10. package/README.fr.md +12 -0
  11. package/README.ja.md +12 -0
  12. package/README.md +132 -0
  13. package/README.zh-CN.md +84 -0
  14. package/SECURITY.md +50 -0
  15. package/SKILL.md +431 -0
  16. package/SUPPORT.md +31 -0
  17. package/THIRD_PARTY_NOTICES.md +18 -0
  18. package/agents/openai.yaml +4 -0
  19. package/assets/AGENTS.md +68 -0
  20. package/assets/CLAUDE.md +68 -0
  21. package/assets/branding/README.md +10 -0
  22. package/assets/branding/forge-controller-flow.mmd +8 -0
  23. package/assets/hooks/AGENTS.md +75 -0
  24. package/assets/hooks/CLAUDE.md +75 -0
  25. package/assets/hooks/anti-simplification.sh +12 -0
  26. package/assets/hooks/changelog-guard.sh +80 -0
  27. package/assets/hooks/codex.hooks.template.json +60 -0
  28. package/assets/hooks/first-principles-guard.sh +72 -0
  29. package/assets/hooks/hook-input.sh +618 -0
  30. package/assets/hooks/lib/session-state.sh +106 -0
  31. package/assets/hooks/lib/workflow-state.sh +1730 -0
  32. package/assets/hooks/post-bash.sh +215 -0
  33. package/assets/hooks/post-edit-guard.sh +256 -0
  34. package/assets/hooks/post-tool-observer.sh +99 -0
  35. package/assets/hooks/pre-edit-guard.sh +240 -0
  36. package/assets/hooks/prompt-guard.sh +1077 -0
  37. package/assets/hooks/run-hook.sh +67 -0
  38. package/assets/hooks/security-sentinel.sh +115 -0
  39. package/assets/hooks/session-start-context.sh +593 -0
  40. package/assets/hooks/settings.template.json +60 -0
  41. package/assets/hooks/stop-orchestrator.sh +171 -0
  42. package/assets/hooks/subagent-return-channel-guard.sh +107 -0
  43. package/assets/hooks/worktree-guard.sh +39 -0
  44. package/assets/initializer-question-pack.v1.json +132 -0
  45. package/assets/initializer-question-pack.v1.schema.json +46 -0
  46. package/assets/initializer-question-pack.v2.json +174 -0
  47. package/assets/initializer-question-pack.v3.json +206 -0
  48. package/assets/initializer-question-pack.v3.schema.json +92 -0
  49. package/assets/initializer-question-pack.v4.json +557 -0
  50. package/assets/initializer-question-pack.v4.schema.json +169 -0
  51. package/assets/partials/01-header.partial.md +10 -0
  52. package/assets/partials/02-iron-rules.partial.md +30 -0
  53. package/assets/partials/03-philosophy.partial.md +32 -0
  54. package/assets/partials/04-project-structure.partial.md +56 -0
  55. package/assets/partials/05-workflow.partial.md +79 -0
  56. package/assets/partials/06-cloudflare.partial.md +20 -0
  57. package/assets/partials/07-footer.partial.md +38 -0
  58. package/assets/partials/08-orchestration.partial.md +49 -0
  59. package/assets/partials/09-compact-instructions.partial.md +11 -0
  60. package/assets/partials/_assembly-order.md +40 -0
  61. package/assets/partials-agents/01-header.partial.md +8 -0
  62. package/assets/partials-agents/02-operating-mode.partial.md +44 -0
  63. package/assets/partials-agents/03-orchestration.partial.md +45 -0
  64. package/assets/partials-agents/04-task-protocol.partial.md +69 -0
  65. package/assets/partials-agents/05-coding-constraints.partial.md +20 -0
  66. package/assets/partials-agents/06-quality-safety.partial.md +23 -0
  67. package/assets/partials-agents/07-cloudflare.partial.md +9 -0
  68. package/assets/partials-agents/08-deep-docs.partial.md +32 -0
  69. package/assets/plan-map.json +301 -0
  70. package/assets/plugin-registry.v1.json +8 -0
  71. package/assets/project-structures/ai-native-collaborative-editor.txt +25 -0
  72. package/assets/project-structures/ai-native-product-copilot.txt +21 -0
  73. package/assets/project-structures/ai-native-runtime-console.txt +25 -0
  74. package/assets/project-structures/ai-native-sidecar-kernel.txt +19 -0
  75. package/assets/project-structures/astro-ssr.txt +25 -0
  76. package/assets/project-structures/expo-nativewind.txt +52 -0
  77. package/assets/project-structures/monorepo.txt +63 -0
  78. package/assets/project-structures/remix.txt +50 -0
  79. package/assets/project-structures/tanstack-start-workers.txt +51 -0
  80. package/assets/project-structures/vite-tanstack.txt +58 -0
  81. package/assets/reference-configs/AGENTS.md +13 -0
  82. package/assets/reference-configs/CLAUDE.md +13 -0
  83. package/assets/reference-configs/agentic-development-flow.md +94 -0
  84. package/assets/reference-configs/ai-workflows.md +14 -0
  85. package/assets/reference-configs/changelog-versioning.md +13 -0
  86. package/assets/reference-configs/coding-standards.md +14 -0
  87. package/assets/reference-configs/development-protocol.md +21 -0
  88. package/assets/reference-configs/document-generation.md +38 -0
  89. package/assets/reference-configs/evaluator-rubric.md +19 -0
  90. package/assets/reference-configs/external-tooling.md +374 -0
  91. package/assets/reference-configs/git-strategy.md +14 -0
  92. package/assets/reference-configs/global-working-rules.md +64 -0
  93. package/assets/reference-configs/handoff-protocol.md +38 -0
  94. package/assets/reference-configs/harness-overview.md +124 -0
  95. package/assets/reference-configs/heartbeat-triage.md +57 -0
  96. package/assets/reference-configs/hook-operations.md +96 -0
  97. package/assets/reference-configs/release-deploy.md +40 -0
  98. package/assets/reference-configs/spa-day-protocol.md +14 -0
  99. package/assets/reference-configs/sprint-contracts.md +89 -0
  100. package/assets/reference-configs/workflow-orchestration.md +14 -0
  101. package/assets/skill-hooks.json +41 -0
  102. package/assets/skill-version.json +189 -0
  103. package/assets/skills/claude-review/SKILL.md +231 -0
  104. package/assets/skills/codex-review/SKILL.md +103 -0
  105. package/assets/templates/AGENTS.md +13 -0
  106. package/assets/templates/CLAUDE.md +13 -0
  107. package/assets/templates/architecture.template.md +80 -0
  108. package/assets/templates/brief.template.md +38 -0
  109. package/assets/templates/contract.template.md +104 -0
  110. package/assets/templates/decisions.template.md +85 -0
  111. package/assets/templates/factor-factory/factor-backtest-report.template.md +36 -0
  112. package/assets/templates/factor-factory/factor-hypothesis.template.md +30 -0
  113. package/assets/templates/factor-factory/factor-registry.template.json +5 -0
  114. package/assets/templates/gitignore.template +53 -0
  115. package/assets/templates/guides/metro-esm-gotchas.template.md +46 -0
  116. package/assets/templates/helpers/architecture-event.ts +822 -0
  117. package/assets/templates/helpers/architecture-queue.sh +647 -0
  118. package/assets/templates/helpers/archive-architecture-request.sh +244 -0
  119. package/assets/templates/helpers/archive-workflow.sh +295 -0
  120. package/assets/templates/helpers/capability-config.ts +394 -0
  121. package/assets/templates/helpers/capability-resolver.ts +505 -0
  122. package/assets/templates/helpers/capture-plan.sh +335 -0
  123. package/assets/templates/helpers/check-agent-tooling.sh +1533 -0
  124. package/assets/templates/helpers/check-architecture-sync.sh +287 -0
  125. package/assets/templates/helpers/check-brain-manifest.sh +255 -0
  126. package/assets/templates/helpers/check-context-files.sh +49 -0
  127. package/assets/templates/helpers/check-deploy-sql-order.sh +117 -0
  128. package/assets/templates/helpers/check-skill-version.ts +193 -0
  129. package/assets/templates/helpers/check-task-sync.sh +65 -0
  130. package/assets/templates/helpers/check-task-workflow.sh +1002 -0
  131. package/assets/templates/helpers/codex-handoff-resume.sh +269 -0
  132. package/assets/templates/helpers/context-contract-sync.sh +516 -0
  133. package/assets/templates/helpers/contract-run.ts +465 -0
  134. package/assets/templates/helpers/contract-worktree.sh +725 -0
  135. package/assets/templates/helpers/ensure-task-workflow.sh +1218 -0
  136. package/assets/templates/helpers/harness-trace-grade.sh +150 -0
  137. package/assets/templates/helpers/heartbeat-triage.sh +361 -0
  138. package/assets/templates/helpers/inspect-project-state.ts +280 -0
  139. package/assets/templates/helpers/maintenance-triage.sh +167 -0
  140. package/assets/templates/helpers/migrate-project-template.sh +54 -0
  141. package/assets/templates/helpers/migrate-workflow-docs.ts +413 -0
  142. package/assets/templates/helpers/new-plan.sh +183 -0
  143. package/assets/templates/helpers/new-spec.sh +50 -0
  144. package/assets/templates/helpers/new-sprint.sh +49 -0
  145. package/assets/templates/helpers/plan-to-todo.sh +799 -0
  146. package/assets/templates/helpers/prepare-codex-handoff.sh +203 -0
  147. package/assets/templates/helpers/prepare-handoff.sh +81 -0
  148. package/assets/templates/helpers/refresh-current-status.sh +469 -0
  149. package/assets/templates/helpers/select-agent-context-blocks.sh +66 -0
  150. package/assets/templates/helpers/ship-worktrees.sh +561 -0
  151. package/assets/templates/helpers/sprint-backlog.sh +837 -0
  152. package/assets/templates/helpers/summarize-failures.sh +125 -0
  153. package/assets/templates/helpers/switch-plan.sh +153 -0
  154. package/assets/templates/helpers/sync-brain-docs.sh +381 -0
  155. package/assets/templates/helpers/verify-contract.sh +705 -0
  156. package/assets/templates/helpers/verify-sprint.sh +680 -0
  157. package/assets/templates/helpers/workflow-contract.ts +202 -0
  158. package/assets/templates/helpers/workstream-sync.sh +263 -0
  159. package/assets/templates/implementation-notes.template.md +37 -0
  160. package/assets/templates/packages.template.md +45 -0
  161. package/assets/templates/plan.template.md +77 -0
  162. package/assets/templates/prd.template.md +165 -0
  163. package/assets/templates/research.template.md +25 -0
  164. package/assets/templates/review.template.md +78 -0
  165. package/assets/templates/spec.template.md +31 -0
  166. package/assets/templates/sprint.template.md +69 -0
  167. package/assets/templates/tech-stack.template.md +57 -0
  168. package/assets/versions.json +77 -0
  169. package/assets/workflow-contract.v1.json +671 -0
  170. package/bin/forge-desktop-helper.mjs +204 -0
  171. package/bin/forge-hook.mjs +32 -0
  172. package/bin/forge-runtime-service.mjs +34 -0
  173. package/bin/forge-runtime.mjs +30 -0
  174. package/bin/forge.mjs +32 -0
  175. package/docs/CHANGELOG.md +978 -0
  176. package/docs/README.md +72 -0
  177. package/docs/README.zh-CN.md +58 -0
  178. package/docs/architecture/chatgpt-handoff-facade.md +393 -0
  179. package/docs/architecture/current/README.md +158 -0
  180. package/docs/architecture/current/approved-target-architecture.zh-CN.md +1501 -0
  181. package/docs/architecture/current/architecture-invariants.md +331 -0
  182. package/docs/architecture/current/automation-and-schedule-engine.md +453 -0
  183. package/docs/architecture/current/codegraph-context-provider.md +226 -0
  184. package/docs/architecture/current/control-plane-authority-inventory.md +82 -0
  185. package/docs/architecture/current/controller-repository-decoupling.md +148 -0
  186. package/docs/architecture/current/dispatch-and-agent-strategy.md +354 -0
  187. package/docs/architecture/current/entity-model.md +619 -0
  188. package/docs/architecture/current/external-plugin-governance.md +396 -0
  189. package/docs/architecture/current/failure-recovery.md +471 -0
  190. package/docs/architecture/current/governance.md +213 -0
  191. package/docs/architecture/current/human-interaction-plane.md +87 -0
  192. package/docs/architecture/current/implementation-status.md +128 -0
  193. package/docs/architecture/current/job-and-run-lifecycle.md +413 -0
  194. package/docs/architecture/current/local-workspace-target-grants.md +70 -0
  195. package/docs/architecture/current/migration-roadmap.md +105 -0
  196. package/docs/architecture/current/multi-repository-execution.md +371 -0
  197. package/docs/architecture/current/operations-runbook.md +45 -0
  198. package/docs/architecture/current/peer-supercontroller-runtime.md +32 -0
  199. package/docs/architecture/current/personal-assistant-plugin-baseline.md +207 -0
  200. package/docs/architecture/current/repository-access-modes.md +102 -0
  201. package/docs/architecture/current/route-policy.md +15 -0
  202. package/docs/architecture/current/route-session-concurrency.md +85 -0
  203. package/docs/architecture/current/runtime-architecture-simplification.md +214 -0
  204. package/docs/architecture/current/runtime-directory-map.md +49 -0
  205. package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +85 -0
  206. package/docs/architecture/current/scheduler-and-resource-claims.md +432 -0
  207. package/docs/architecture/current/session-aware-execution-and-authorization.md +77 -0
  208. package/docs/architecture/current/system-overview.md +144 -0
  209. package/docs/architecture/current/target-requirements-traceability.md +202 -0
  210. package/docs/architecture/current/thin-harness-governance-policy.md +32 -0
  211. package/docs/architecture/current/thin-harness-v1.md +313 -0
  212. package/docs/architecture/current/verification-and-release-gates.md +391 -0
  213. package/docs/architecture/decisions/20260801-controller-home-sqlite-state.md +100 -0
  214. package/docs/architecture/decisions/20260803-canonical-skill-surface.md +40 -0
  215. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +53 -0
  216. package/docs/architecture/diagrams/.gitkeep +1 -0
  217. package/docs/architecture/diagrams/agentic-dev-plugin-architecture.html +186 -0
  218. package/docs/architecture/domains/.gitkeep +0 -0
  219. package/docs/architecture/domains/public-surface.md +30 -0
  220. package/docs/architecture/domains/runtime-harness.md +33 -0
  221. package/docs/architecture/domains/verification.md +33 -0
  222. package/docs/architecture/domains/workflow-engine.md +30 -0
  223. package/docs/architecture/global-hook-runtime.md +162 -0
  224. package/docs/architecture/history.md +38 -0
  225. package/docs/architecture/index.md +114 -0
  226. package/docs/architecture/ios-semantic-automation-provider-v2.md +166 -0
  227. package/docs/architecture/modules/.gitkeep +0 -0
  228. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +24 -0
  229. package/docs/architecture/requests/.gitkeep +1 -0
  230. package/docs/architecture/requests/archive/2026/20260528-154740-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
  231. package/docs/architecture/requests/archive/2026/20260528-154816-assets-hooks-assets-hooks-hook-input-sh.md +59 -0
  232. package/docs/architecture/requests/archive/2026/20260528-161851-ai-harness-workflow-contract-json-ai-harness-workflow-contract-json.md +59 -0
  233. package/docs/architecture/requests/archive/2026/20260528-161853-scripts-check-task-workflow-sh-scripts-check-task-workflow-sh.md +59 -0
  234. package/docs/architecture/requests/archive/2026/20260528-161911-assets-workflow-contract-v1-json-assets-workflow-contract-v1-json.md +59 -0
  235. package/docs/architecture/requests/archive/2026/20260528-222416-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
  236. package/docs/architecture/requests/archive/2026/20260528-222444-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
  237. package/docs/architecture/requests/archive/2026/20260528-222457-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
  238. package/docs/architecture/requests/archive/2026/20260528-222648-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
  239. package/docs/architecture/requests/archive/2026/20260528-222705-ai-hooks-ai-hooks-worktree-guard-sh.md +59 -0
  240. package/docs/architecture/requests/archive/2026/20260528-222726-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
  241. package/docs/architecture/requests/archive/2026/20260528-222727-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
  242. package/docs/architecture/requests/archive/2026/20260528-224736-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
  243. package/docs/architecture/requests/archive/2026/20260528-233259-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
  244. package/docs/architecture/requests/archive/2026/20260528-233335-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
  245. package/docs/architecture/requests/archive/2026/20260528-233456-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
  246. package/docs/architecture/requests/archive/2026/20260528-233457-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
  247. package/docs/architecture/requests/archive/2026/20260528-233637-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
  248. package/docs/architecture/requests/archive/2026/20260528-233638-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
  249. package/docs/architecture/requests/archive/2026/20260529-000322-root-package-json.md +59 -0
  250. package/docs/architecture/requests/archive/2026/20260529-004238-ai-hooks-ai-hooks-lib-workflow-state-sh.md +59 -0
  251. package/docs/architecture/requests/archive/2026/20260529-020654-ai-harness-policy-json-ai-harness-policy-json.md +63 -0
  252. package/docs/architecture/requests/archive/2026/20260529-094236-ai-hooks-ai-hooks-prompt-guard-sh.md +60 -0
  253. package/docs/architecture/requests/archive/2026/20260529-094323-assets-hooks-assets-hooks-prompt-guard-sh.md +60 -0
  254. package/docs/architecture/requests/archive/2026/20260529-094331-ai-hooks-ai-hooks-prompt-guard-sh.md +60 -0
  255. package/docs/architecture/requests/archive/2026/20260529-094339-assets-hooks-assets-hooks-prompt-guard-sh.md +60 -0
  256. package/docs/architecture/requests/archive/2026/20260529-094430-assets-hooks-assets-hooks-session-start-context-sh.md +60 -0
  257. package/docs/architecture/requests/archive/2026/20260529-094446-ai-hooks-ai-hooks-session-start-context-sh.md +60 -0
  258. package/docs/architecture/requests/archive/2026/20260613-002040-runtime-harness-hook-adapters.md +68 -0
  259. package/docs/architecture/requests/archive/2026/root.md +68 -0
  260. package/docs/architecture/requests/archive/2026/runtime-harness-hook-adapters.md +76 -0
  261. package/docs/architecture/requests/archive/2026/verification-evals-checks.md +68 -0
  262. package/docs/architecture/requests/archive/2026/workflow-engine-contract-assets.md +69 -0
  263. package/docs/architecture/reviews/2026-07-11-access-surface-review.md +99 -0
  264. package/docs/architecture/snapshots/.gitkeep +1 -0
  265. package/docs/forge-autonomous-goal-loop.md +7 -0
  266. package/docs/forge-chatgpt-browser-engine.md +11 -0
  267. package/docs/forge-chatgpt-mcp-setup.md +239 -0
  268. package/docs/forge-chatgpt-supervised-automation.md +11 -0
  269. package/docs/forge-github-issue-launcher.md +7 -0
  270. package/docs/forge-plugin-management.md +95 -0
  271. package/docs/forge-provider-configuration.md +7 -0
  272. package/docs/forge-runtime-self-healing-loop.md +7 -0
  273. package/docs/images/forge-banner-cn.svg +1 -0
  274. package/docs/images/forge-banner.svg +1 -0
  275. package/docs/images/forge-controller-flow.svg +1 -0
  276. package/docs/images/image.png +0 -0
  277. package/docs/images/repo-harness-gptpro-cn.png +0 -0
  278. package/docs/images/repo-harness-gptpro.png +0 -0
  279. package/docs/images/repo-harness-hook-carrot.png +0 -0
  280. package/docs/operations/chatgpt-personal-assistant-runtime.md +83 -0
  281. package/docs/operations/checkout-route-integrity.md +22 -0
  282. package/docs/operations/controller-browser-plugin.md +299 -0
  283. package/docs/operations/controller-desktop-plugin.md +112 -0
  284. package/docs/operations/controller-performance-and-502.md +126 -0
  285. package/docs/operations/controller-reliability-runbook.md +134 -0
  286. package/docs/operations/environment-hardening.md +50 -0
  287. package/docs/operations/features.md +45 -0
  288. package/docs/operations/features.zh-CN.md +45 -0
  289. package/docs/operations/github-repository.md +60 -0
  290. package/docs/operations/gmail-assistant-routines.md +186 -0
  291. package/docs/operations/homebrew.md +26 -0
  292. package/docs/operations/local-system-assistant.md +46 -0
  293. package/docs/operations/local-system-assistant.zh-CN.md +46 -0
  294. package/docs/operations/mcp-tool-exposure.md +58 -0
  295. package/docs/operations/mobile-intents-shortcuts.md +117 -0
  296. package/docs/operations/open-source-release-hygiene.md +31 -0
  297. package/docs/operations/personal-assistant-operator-guide.md +61 -0
  298. package/docs/operations/platform-support.md +62 -0
  299. package/docs/operations/platform-support.zh-CN.md +61 -0
  300. package/docs/operations/provider-configuration.md +31 -0
  301. package/docs/operations/releasing.md +86 -0
  302. package/docs/operations/releasing.zh-CN.md +86 -0
  303. package/docs/operations/route-session-concurrency-baseline.json +893 -0
  304. package/docs/operations/route-session-concurrency-baseline.md +94 -0
  305. package/docs/operations/runtime-performance-diagnostics.md +14 -0
  306. package/docs/operations/sqlite-control-plane-recovery.md +65 -0
  307. package/docs/operations/standalone-disaster-recovery.md +136 -0
  308. package/docs/operations/troubleshooting.md +72 -0
  309. package/docs/operations/troubleshooting.zh-CN.md +70 -0
  310. package/docs/public-usage-guide.md +33 -0
  311. package/docs/public-usage-guide.zh-CN.md +33 -0
  312. package/docs/tutorials/01-install-and-start.md +93 -0
  313. package/docs/tutorials/01-install-and-start.zh-CN.md +93 -0
  314. package/docs/tutorials/02-connect-chatgpt.md +82 -0
  315. package/docs/tutorials/02-connect-chatgpt.zh-CN.md +80 -0
  316. package/docs/tutorials/03-first-repository-task.md +57 -0
  317. package/docs/tutorials/03-first-repository-task.zh-CN.md +57 -0
  318. package/docs/tutorials/README.md +13 -0
  319. package/docs/tutorials/README.zh-CN.md +13 -0
  320. package/docs/wiki/Architecture.md +85 -0
  321. package/docs/wiki/Core-Concepts.md +27 -0
  322. package/docs/wiki/Home.md +36 -0
  323. package/docs/wiki/Implementation.md +172 -0
  324. package/docs/wiki/Installation.md +50 -0
  325. package/docs/wiki/Integrations.md +29 -0
  326. package/docs/wiki/Operations.md +26 -0
  327. package/docs/wiki/Quick-Start.md +46 -0
  328. package/docs/wiki/Releases-and-Upgrades.md +34 -0
  329. package/docs/wiki/Runtime-Architecture.md +50 -0
  330. package/docs/wiki/Security-Model.md +31 -0
  331. package/docs/wiki/Troubleshooting.md +38 -0
  332. package/docs/wiki/Work-Lifecycle.md +31 -0
  333. package/docs/wiki/_Sidebar.md +21 -0
  334. package/install.ps1 +48 -0
  335. package/install.sh +66 -0
  336. package/package.json +156 -0
  337. package/scripts/activate-source-baseline.ts +335 -0
  338. package/scripts/architecture-event.ts +822 -0
  339. package/scripts/architecture-queue.sh +647 -0
  340. package/scripts/archive-architecture-request.sh +244 -0
  341. package/scripts/archive-workflow.sh +295 -0
  342. package/scripts/assemble-template.ts +1172 -0
  343. package/scripts/benchmark-controller-hotpath.ts +212 -0
  344. package/scripts/benchmark-controller-round2.ts +139 -0
  345. package/scripts/benchmark-ios-agent-device.ts +514 -0
  346. package/scripts/benchmark-route-session-concurrency.ts +714 -0
  347. package/scripts/benchmark-thin-harness-gateway-ab.ts +632 -0
  348. package/scripts/benchmark-thin-harness-mcp-e2e.ts +479 -0
  349. package/scripts/benchmark-thin-harness.ts +251 -0
  350. package/scripts/bootstrap-runtime-maintenance-recovery.sh +183 -0
  351. package/scripts/canary-global-hook.sh +263 -0
  352. package/scripts/capability-config.ts +394 -0
  353. package/scripts/capability-resolver.ts +505 -0
  354. package/scripts/capture-plan.sh +335 -0
  355. package/scripts/check-agent-tooling.sh +1549 -0
  356. package/scripts/check-architecture-sync.sh +373 -0
  357. package/scripts/check-brain-manifest.sh +255 -0
  358. package/scripts/check-ci.sh +16 -0
  359. package/scripts/check-context-files.sh +49 -0
  360. package/scripts/check-deploy-sql-order.sh +117 -0
  361. package/scripts/check-mcp-compatibility.ts +93 -0
  362. package/scripts/check-npm-release.sh +32 -0
  363. package/scripts/check-open-source-tracked-surface.sh +146 -0
  364. package/scripts/check-package-identity.mjs +117 -0
  365. package/scripts/check-platform-support.mjs +79 -0
  366. package/scripts/check-public-docs.sh +105 -0
  367. package/scripts/check-public-release-surface.sh +19 -0
  368. package/scripts/check-release-published.sh +57 -0
  369. package/scripts/check-release-readiness.sh +43 -0
  370. package/scripts/check-release-version.mjs +74 -0
  371. package/scripts/check-runtime-architecture.mjs +593 -0
  372. package/scripts/check-runtime-env.mjs +89 -0
  373. package/scripts/check-skill-version.ts +193 -0
  374. package/scripts/check-tarball-install-smoke.sh +66 -0
  375. package/scripts/check-task-sync.sh +65 -0
  376. package/scripts/check-task-workflow.sh +1002 -0
  377. package/scripts/check-third-party-notices.mjs +36 -0
  378. package/scripts/codex-handoff-resume.sh +269 -0
  379. package/scripts/complete-control-plane-cutover.ts +126 -0
  380. package/scripts/context-contract-sync.sh +516 -0
  381. package/scripts/contract-run.ts +465 -0
  382. package/scripts/contract-worktree.sh +725 -0
  383. package/scripts/controller-ngrok-rotation.sh +678 -0
  384. package/scripts/create-project-dirs.sh +282 -0
  385. package/scripts/ensure-codegraph.sh +16 -0
  386. package/scripts/ensure-task-workflow.sh +1218 -0
  387. package/scripts/export-requirement-portfolio.ts +28 -0
  388. package/scripts/factor-lab-check.sh +73 -0
  389. package/scripts/factor-lab-new.sh +96 -0
  390. package/scripts/factor-lab-promote.sh +86 -0
  391. package/scripts/factor-lab-reject.sh +68 -0
  392. package/scripts/harness-trace-grade.sh +150 -0
  393. package/scripts/heartbeat-triage.sh +361 -0
  394. package/scripts/hook-dispatch-diet-report.ts +234 -0
  395. package/scripts/hook-shim.sh +93 -0
  396. package/scripts/init-project.sh +505 -0
  397. package/scripts/initializer-question-pack.ts +200 -0
  398. package/scripts/inspect-project-state.ts +280 -0
  399. package/scripts/install-desktop-operator-registration.ts +45 -0
  400. package/scripts/install-standalone-recovery.ts +74 -0
  401. package/scripts/lib/AGENTS.md +13 -0
  402. package/scripts/lib/CLAUDE.md +13 -0
  403. package/scripts/lib/controller-home-env.sh +69 -0
  404. package/scripts/lib/project-init-lib.sh +2759 -0
  405. package/scripts/load-standalone-recovery.sh +17 -0
  406. package/scripts/loop-engine-cutover-gate.ts +324 -0
  407. package/scripts/maintenance-triage.sh +167 -0
  408. package/scripts/migrate-project-template.sh +1189 -0
  409. package/scripts/migrate-requirement-portfolio.ts +86 -0
  410. package/scripts/migrate-workflow-docs.ts +413 -0
  411. package/scripts/new-plan.sh +183 -0
  412. package/scripts/new-spec.sh +50 -0
  413. package/scripts/new-sprint.sh +49 -0
  414. package/scripts/open-source-audit-allowlist.txt +46 -0
  415. package/scripts/package-source-archive.sh +147 -0
  416. package/scripts/plan-to-todo.sh +799 -0
  417. package/scripts/prepare-codex-handoff.sh +203 -0
  418. package/scripts/prepare-handoff.sh +81 -0
  419. package/scripts/public-release-files.txt +39 -0
  420. package/scripts/public-release.ts +174 -0
  421. package/scripts/publish-release-tarball.sh +27 -0
  422. package/scripts/refresh-current-status.sh +469 -0
  423. package/scripts/refresh-ios-physical-runtime.ts +196 -0
  424. package/scripts/repair-executable-modes.ts +8 -0
  425. package/scripts/rollout-all-registered-repos.sh +7 -0
  426. package/scripts/route-nl-vs-ts-eval.ts +679 -0
  427. package/scripts/run-bun-test-file.ts +182 -0
  428. package/scripts/run-governed-gate.ts +140 -0
  429. package/scripts/run-mobile-monitor-bridge.ts +71 -0
  430. package/scripts/run-skill-evals.ts +1022 -0
  431. package/scripts/run-skill-hook.ts +244 -0
  432. package/scripts/run-supervised-command.ts +24 -0
  433. package/scripts/run-tests-portable.sh +20 -0
  434. package/scripts/select-agent-context-blocks.sh +66 -0
  435. package/scripts/setup-plugins.sh +43 -0
  436. package/scripts/ship-worktrees.sh +561 -0
  437. package/scripts/smoke-browser-cdp-bridge.ts +93 -0
  438. package/scripts/smoke-chatgpt-supervised-automation.ts +208 -0
  439. package/scripts/smoke-ios-physical-device.ts +114 -0
  440. package/scripts/smoke-mcp-http-runtime.ts +216 -0
  441. package/scripts/smoke-mcp-tool-surface.ts +117 -0
  442. package/scripts/smoke-runtime-recovery.ts +220 -0
  443. package/scripts/smoke-schedule-engine.ts +283 -0
  444. package/scripts/sprint-backlog.sh +837 -0
  445. package/scripts/stage-runtime-release.ts +38 -0
  446. package/scripts/summarize-failures.sh +125 -0
  447. package/scripts/switch-plan.sh +153 -0
  448. package/scripts/sync-brain-docs.sh +381 -0
  449. package/scripts/sync-codex-installed-copies.sh +183 -0
  450. package/scripts/test-governance.ts +75 -0
  451. package/scripts/verify-contract.sh +705 -0
  452. package/scripts/verify-forge-runtime.sh +31 -0
  453. package/scripts/verify-sprint.sh +680 -0
  454. package/scripts/windows-paths.d.mts +7 -0
  455. package/scripts/windows-paths.mjs +28 -0
  456. package/scripts/workflow-contract.ts +206 -0
  457. package/scripts/workstream-sync.sh +263 -0
  458. package/src/cli/agent-jobs/executable-resolver.ts +289 -0
  459. package/src/cli/agent-jobs/executor-health.ts +252 -0
  460. package/src/cli/agent-jobs/integration.ts +963 -0
  461. package/src/cli/agent-jobs/job-manager.ts +2030 -0
  462. package/src/cli/agent-jobs/types.ts +219 -0
  463. package/src/cli/agent-jobs/worker-lifecycle.ts +288 -0
  464. package/src/cli/chatgpt-browser/bind-server.ts +504 -0
  465. package/src/cli/chatgpt-browser/binding.ts +140 -0
  466. package/src/cli/chatgpt-browser/bridge-extension.ts +221 -0
  467. package/src/cli/chatgpt-browser/bridge-provider.ts +268 -0
  468. package/src/cli/chatgpt-browser/engine.ts +569 -0
  469. package/src/cli/chatgpt-browser/file-policy.ts +158 -0
  470. package/src/cli/chatgpt-browser/native-provider.ts +553 -0
  471. package/src/cli/chatgpt-browser/oracle-provider.ts +437 -0
  472. package/src/cli/chatgpt-browser/prompt-assembler.ts +29 -0
  473. package/src/cli/chatgpt-browser/session-store.ts +301 -0
  474. package/src/cli/chatgpt-browser/types.ts +172 -0
  475. package/src/cli/commands/adopt-plan.ts +186 -0
  476. package/src/cli/commands/brain-root.ts +132 -0
  477. package/src/cli/commands/brain.ts +609 -0
  478. package/src/cli/commands/capability-context.ts +613 -0
  479. package/src/cli/commands/chatgpt.ts +424 -0
  480. package/src/cli/commands/controller.ts +680 -0
  481. package/src/cli/commands/docs.ts +103 -0
  482. package/src/cli/commands/doctor.ts +476 -0
  483. package/src/cli/commands/global-runtime.ts +323 -0
  484. package/src/cli/commands/hook.ts +34 -0
  485. package/src/cli/commands/init-hook.ts +870 -0
  486. package/src/cli/commands/init.ts +829 -0
  487. package/src/cli/commands/install.ts +86 -0
  488. package/src/cli/commands/mcp.ts +315 -0
  489. package/src/cli/commands/migrate.ts +154 -0
  490. package/src/cli/commands/plugin.ts +74 -0
  491. package/src/cli/commands/prompt-guard-decision.ts +238 -0
  492. package/src/cli/commands/recovery.ts +667 -0
  493. package/src/cli/commands/repository.ts +224 -0
  494. package/src/cli/commands/run.ts +23 -0
  495. package/src/cli/commands/runtime.ts +191 -0
  496. package/src/cli/commands/security.ts +440 -0
  497. package/src/cli/commands/status.ts +137 -0
  498. package/src/cli/commands/tools.ts +167 -0
  499. package/src/cli/controller/check-runner.ts +1022 -0
  500. package/src/cli/controller/codex-continuation.ts +153 -0
  501. package/src/cli/controller/completion-backlog.ts +380 -0
  502. package/src/cli/controller/completion-orchestrator.ts +1807 -0
  503. package/src/cli/controller/completion-target.ts +96 -0
  504. package/src/cli/controller/composite-operations.ts +196 -0
  505. package/src/cli/controller/composite-result.ts +130 -0
  506. package/src/cli/controller/context-pack.ts +652 -0
  507. package/src/cli/controller/execution-completion.ts +175 -0
  508. package/src/cli/controller/execution-policy.ts +392 -0
  509. package/src/cli/controller/governance.ts +594 -0
  510. package/src/cli/controller/issue-store.ts +1421 -0
  511. package/src/cli/controller/launch-agents.ts +410 -0
  512. package/src/cli/controller/legacy-issue-cutover.ts +415 -0
  513. package/src/cli/controller/lifecycle-authority.ts +16 -0
  514. package/src/cli/controller/migrated-issue-decision.ts +237 -0
  515. package/src/cli/controller/operational-plan.ts +226 -0
  516. package/src/cli/controller/postcondition.ts +134 -0
  517. package/src/cli/controller/progress.ts +656 -0
  518. package/src/cli/controller/project-state.ts +147 -0
  519. package/src/cli/controller/requirement-portfolio-export.ts +146 -0
  520. package/src/cli/controller/requirement-portfolio-migration.ts +613 -0
  521. package/src/cli/controller/run-evidence.ts +43 -0
  522. package/src/cli/controller/runtime-config.ts +92 -0
  523. package/src/cli/controller/stuck-state-migration.ts +396 -0
  524. package/src/cli/controller/task-ledger.ts +632 -0
  525. package/src/cli/controller/task-status-resolver.ts +403 -0
  526. package/src/cli/controller/types.ts +273 -0
  527. package/src/cli/controller/work-mode.ts +186 -0
  528. package/src/cli/controller/worklog.ts +201 -0
  529. package/src/cli/diagnostic-entry.ts +39 -0
  530. package/src/cli/editing/edit-session.ts +1606 -0
  531. package/src/cli/editing/executable-modes.ts +70 -0
  532. package/src/cli/github/github.ts +274 -0
  533. package/src/cli/github/plugin.ts +345 -0
  534. package/src/cli/github/session.ts +104 -0
  535. package/src/cli/hook/prompt-guard-decision.ts +238 -0
  536. package/src/cli/hook/prompt-intents.ts +534 -0
  537. package/src/cli/hook/route-registry.ts +107 -0
  538. package/src/cli/hook/runtime.ts +303 -0
  539. package/src/cli/hook/state-snapshot.ts +388 -0
  540. package/src/cli/hook-entry.ts +51 -0
  541. package/src/cli/index.ts +574 -0
  542. package/src/cli/installer/managed-entries.ts +78 -0
  543. package/src/cli/installer/shared.ts +65 -0
  544. package/src/cli/installer/targets/claude.ts +136 -0
  545. package/src/cli/installer/targets/codex.ts +174 -0
  546. package/src/cli/installer/targets/registry.ts +28 -0
  547. package/src/cli/installer/types.ts +72 -0
  548. package/src/cli/local-bridge/connector-freshness.ts +529 -0
  549. package/src/cli/local-bridge/console-view-models.ts +324 -0
  550. package/src/cli/local-bridge/dashboard.ts +1312 -0
  551. package/src/cli/local-bridge/facade-api.ts +1877 -0
  552. package/src/cli/local-bridge/job-store.ts +1451 -0
  553. package/src/cli/local-bridge/mobile-intents.ts +344 -0
  554. package/src/cli/local-bridge/mobile-monitor.ts +209 -0
  555. package/src/cli/local-bridge/server.ts +3183 -0
  556. package/src/cli/local-bridge/types.ts +176 -0
  557. package/src/cli/mcp/access-mode.ts +132 -0
  558. package/src/cli/mcp/access-tools.ts +387 -0
  559. package/src/cli/mcp/audit.ts +32 -0
  560. package/src/cli/mcp/auth.ts +402 -0
  561. package/src/cli/mcp/instructions.ts +33 -0
  562. package/src/cli/mcp/legacy-context.ts +16 -0
  563. package/src/cli/mcp/legacy-tool-service.ts +5516 -0
  564. package/src/cli/mcp/multi-repository.ts +423 -0
  565. package/src/cli/mcp/oauth.ts +226 -0
  566. package/src/cli/mcp/paths.ts +134 -0
  567. package/src/cli/mcp/policy.ts +230 -0
  568. package/src/cli/mcp/proxy-env.ts +62 -0
  569. package/src/cli/mcp/readiness-projection.ts +24 -0
  570. package/src/cli/mcp/redaction.ts +21 -0
  571. package/src/cli/mcp/repo.ts +24 -0
  572. package/src/cli/mcp/repository-tools.ts +1295 -0
  573. package/src/cli/mcp/server.ts +341 -0
  574. package/src/cli/mcp/setup.ts +793 -0
  575. package/src/cli/mcp/tool-capability-cache.ts +87 -0
  576. package/src/cli/mcp/tools.ts +9 -0
  577. package/src/cli/mcp/toolset-names.ts +70 -0
  578. package/src/cli/mcp/toolset-selection.ts +41 -0
  579. package/src/cli/mcp/toolset.ts +300 -0
  580. package/src/cli/mcp/transports/AGENTS.md +39 -0
  581. package/src/cli/mcp/transports/CLAUDE.md +39 -0
  582. package/src/cli/mcp/transports/http.ts +1234 -0
  583. package/src/cli/mcp/transports/session-registry.ts +428 -0
  584. package/src/cli/mcp/transports/stdio.ts +8 -0
  585. package/src/cli/mcp/types.ts +41 -0
  586. package/src/cli/mcp/umbrella-tools.ts +117 -0
  587. package/src/cli/repo-adoption/reclaim-runtime.ts +681 -0
  588. package/src/cli/repositories/branch-name-policy.ts +57 -0
  589. package/src/cli/repositories/command-classifier.ts +600 -0
  590. package/src/cli/repositories/command-executor.ts +1066 -0
  591. package/src/cli/repositories/command-normalization.ts +53 -0
  592. package/src/cli/repositories/command-scope.ts +264 -0
  593. package/src/cli/repositories/controller-home.ts +88 -0
  594. package/src/cli/repositories/entity-migration.ts +199 -0
  595. package/src/cli/repositories/ephemeral-workspace.ts +62 -0
  596. package/src/cli/repositories/git-command-executor.ts +301 -0
  597. package/src/cli/repositories/goal-registry.ts +239 -0
  598. package/src/cli/repositories/identity.ts +64 -0
  599. package/src/cli/repositories/local-project-onboarding.ts +539 -0
  600. package/src/cli/repositories/locks.ts +262 -0
  601. package/src/cli/repositories/registry.ts +1057 -0
  602. package/src/cli/repositories/runtime-storage.ts +411 -0
  603. package/src/cli/repositories/safe-patch.ts +421 -0
  604. package/src/cli/repositories/selected-path-actions.ts +341 -0
  605. package/src/cli/repositories/structured-git.ts +257 -0
  606. package/src/cli/repositories/types.ts +155 -0
  607. package/src/cli/repositories/umbrella.ts +134 -0
  608. package/src/cli/repositories/workbench.ts +140 -0
  609. package/src/cli/repositories/worktree-storage.ts +137 -0
  610. package/src/cli/repository/inspector.ts +637 -0
  611. package/src/cli/repository/session-cache.ts +453 -0
  612. package/src/cli/runtime/helper-runner.ts +172 -0
  613. package/src/cli/runtime-invocation.ts +318 -0
  614. package/src/cli/tools/codegraph.ts +676 -0
  615. package/src/cli/v81-entry.ts +29 -0
  616. package/src/core/adoption/gitignore-plan.ts +127 -0
  617. package/src/core/adoption/helper-wrapper-plan.ts +159 -0
  618. package/src/core/adoption/manifest-templates.ts +60 -0
  619. package/src/core/adoption/modes.ts +7 -0
  620. package/src/core/adoption/operations.ts +126 -0
  621. package/src/core/adoption/plan.ts +149 -0
  622. package/src/core/adoption/render.ts +70 -0
  623. package/src/core/adoption/rollback.ts +62 -0
  624. package/src/core/adoption/summary.ts +43 -0
  625. package/src/core/adoption/workflow-contract-asset.ts +14 -0
  626. package/src/core/adoption/workflow-contract-plan.ts +31 -0
  627. package/src/effects/fs-transaction.ts +540 -0
  628. package/src/effects/git-executable.ts +59 -0
  629. package/src/effects/managed-block.ts +86 -0
  630. package/src/effects/path-safety.ts +47 -0
  631. package/src/effects/process-runner.ts +192 -0
  632. package/src/runtime/assistant/action-proposals.ts +279 -0
  633. package/src/runtime/assistant/intent.ts +395 -0
  634. package/src/runtime/assistant/model-provider.ts +460 -0
  635. package/src/runtime/assistant/openapi.ts +223 -0
  636. package/src/runtime/assistant/policy.ts +89 -0
  637. package/src/runtime/assistant/readiness.ts +258 -0
  638. package/src/runtime/assistant/routine-runtime.ts +477 -0
  639. package/src/runtime/assistant/schedule-binding.ts +171 -0
  640. package/src/runtime/assistant/standing-grants.ts +375 -0
  641. package/src/runtime/assistant/store.ts +243 -0
  642. package/src/runtime/assistant/types.ts +135 -0
  643. package/src/runtime/context/codegraph-read-provider.ts +347 -0
  644. package/src/runtime/context/codegraph-sidecar.cjs +207 -0
  645. package/src/runtime/control-plane/dispatch-priority.ts +67 -0
  646. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +151 -0
  647. package/src/runtime/control-plane/execution/execution-identity.ts +456 -0
  648. package/src/runtime/control-plane/execution/session-store.ts +175 -0
  649. package/src/runtime/control-plane/execution/validation.ts +117 -0
  650. package/src/runtime/control-plane/execution/verification-evidence.ts +191 -0
  651. package/src/runtime/control-plane/execution/work-handle-store.ts +225 -0
  652. package/src/runtime/control-plane/execution/work-prepare-request-store.ts +159 -0
  653. package/src/runtime/control-plane/execution/work-task-receipt.ts +445 -0
  654. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +821 -0
  655. package/src/runtime/control-plane/facade/capability-registry.ts +279 -0
  656. package/src/runtime/control-plane/facade/check-normalization.ts +233 -0
  657. package/src/runtime/control-plane/facade/codex-delegation.ts +196 -0
  658. package/src/runtime/control-plane/facade/controller-session-store.ts +199 -0
  659. package/src/runtime/control-plane/facade/facade-result.ts +41 -0
  660. package/src/runtime/control-plane/facade/goal-workloop-access.ts +177 -0
  661. package/src/runtime/control-plane/facade/goal-workloop.ts +1216 -0
  662. package/src/runtime/control-plane/facade/handoff-inbox-store.ts +221 -0
  663. package/src/runtime/control-plane/facade/index.ts +16 -0
  664. package/src/runtime/control-plane/facade/operation-digest.ts +528 -0
  665. package/src/runtime/control-plane/facade/plan-contract-store.ts +403 -0
  666. package/src/runtime/control-plane/facade/policy-gate.ts +149 -0
  667. package/src/runtime/control-plane/facade/requirement-board.ts +280 -0
  668. package/src/runtime/control-plane/facade/self-healing-loop.ts +555 -0
  669. package/src/runtime/control-plane/facade/suggested-actions.ts +108 -0
  670. package/src/runtime/control-plane/facade/types.ts +729 -0
  671. package/src/runtime/control-plane/facade/work-admission-policy.ts +93 -0
  672. package/src/runtime/control-plane/facade/work-continuation.ts +104 -0
  673. package/src/runtime/control-plane/facade/work-contract-store.ts +1118 -0
  674. package/src/runtime/control-plane/facade/work-task-projection.ts +66 -0
  675. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +365 -0
  676. package/src/runtime/control-plane/global-scheduler/scheduler.ts +920 -0
  677. package/src/runtime/control-plane/global-scheduler/wake-signal.ts +89 -0
  678. package/src/runtime/control-plane/goal-loop/config-facade.ts +700 -0
  679. package/src/runtime/control-plane/goal-loop/config-store.ts +570 -0
  680. package/src/runtime/control-plane/goal-loop/config-types.ts +213 -0
  681. package/src/runtime/control-plane/goal-loop/executor-router.ts +109 -0
  682. package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +149 -0
  683. package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +304 -0
  684. package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +1001 -0
  685. package/src/runtime/control-plane/goal-loop/handoff-packet.ts +160 -0
  686. package/src/runtime/control-plane/goal-loop/index.ts +13 -0
  687. package/src/runtime/control-plane/goal-loop/local-tools.ts +290 -0
  688. package/src/runtime/control-plane/goal-loop/policy-gates.ts +203 -0
  689. package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +93 -0
  690. package/src/runtime/control-plane/goal-loop/provider-registry.ts +545 -0
  691. package/src/runtime/control-plane/goal-loop/types.ts +378 -0
  692. package/src/runtime/control-plane/governance/access-policy.ts +147 -0
  693. package/src/runtime/control-plane/governance/authorization.ts +195 -0
  694. package/src/runtime/control-plane/governance/external-effects.ts +43 -0
  695. package/src/runtime/control-plane/launcher/thin-launcher.ts +97 -0
  696. package/src/runtime/control-plane/persistence/metadata-payload-policy.ts +53 -0
  697. package/src/runtime/control-plane/persistence/requirement-store.ts +241 -0
  698. package/src/runtime/control-plane/persistence/sqlite-store.ts +539 -0
  699. package/src/runtime/control-plane/release-retention.ts +447 -0
  700. package/src/runtime/control-plane/repo-actor/actor.ts +181 -0
  701. package/src/runtime/control-plane/repo-actor/registry.ts +20 -0
  702. package/src/runtime/control-plane/routing/index.ts +1 -0
  703. package/src/runtime/control-plane/routing/route-policy.ts +379 -0
  704. package/src/runtime/control-plane/runtime-cleanup.ts +727 -0
  705. package/src/runtime/control-plane/runtime-generation.ts +509 -0
  706. package/src/runtime/control-plane/runtime-pid-ownership.ts +11 -0
  707. package/src/runtime/control-plane/runtime-status-client.ts +90 -0
  708. package/src/runtime/control-plane/startup-recovery.ts +198 -0
  709. package/src/runtime/diagnostics/connectivity-observability.ts +475 -0
  710. package/src/runtime/diagnostics/mcp-timing.ts +64 -0
  711. package/src/runtime/diagnostics/performance.ts +379 -0
  712. package/src/runtime/diagnostics/process-facade.ts +350 -0
  713. package/src/runtime/diagnostics/read-only-tool.ts +226 -0
  714. package/src/runtime/evidence/artifact-store.ts +154 -0
  715. package/src/runtime/evidence/event-ledger.ts +80 -0
  716. package/src/runtime/evidence/evidence-store.ts +68 -0
  717. package/src/runtime/evidence/process-check-receipt.ts +43 -0
  718. package/src/runtime/evidence/result-store.ts +209 -0
  719. package/src/runtime/evidence/sensitive-output.ts +353 -0
  720. package/src/runtime/execution/jobs/child-reference.ts +124 -0
  721. package/src/runtime/execution/jobs/legacy-adapter.ts +22 -0
  722. package/src/runtime/execution/jobs/receipt-recovery.ts +119 -0
  723. package/src/runtime/execution/jobs/receipt-store.ts +243 -0
  724. package/src/runtime/execution/jobs/store.ts +737 -0
  725. package/src/runtime/execution/jobs/timeouts.ts +109 -0
  726. package/src/runtime/execution/jobs/types.ts +230 -0
  727. package/src/runtime/execution/jobs/wait.ts +45 -0
  728. package/src/runtime/execution/process-runtime/canary.ts +26 -0
  729. package/src/runtime/execution/process-runtime/check-facade.ts +272 -0
  730. package/src/runtime/execution/process-runtime/check-receipt.ts +185 -0
  731. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +60 -0
  732. package/src/runtime/execution/process-runtime/command-facade.ts +321 -0
  733. package/src/runtime/execution/process-runtime/gc.ts +171 -0
  734. package/src/runtime/execution/process-runtime/index.ts +9 -0
  735. package/src/runtime/execution/process-runtime/interactive-admission.ts +23 -0
  736. package/src/runtime/execution/process-runtime/process-runner-entry.ts +466 -0
  737. package/src/runtime/execution/process-runtime/resource-claims.ts +440 -0
  738. package/src/runtime/execution/process-runtime/runtime.ts +1816 -0
  739. package/src/runtime/execution/process-runtime/store.ts +687 -0
  740. package/src/runtime/execution/process-runtime/types.ts +352 -0
  741. package/src/runtime/execution/thin-harness/async-process.ts +181 -0
  742. package/src/runtime/execution/thin-harness/batch-executor.ts +671 -0
  743. package/src/runtime/execution/thin-harness/execution-router.ts +700 -0
  744. package/src/runtime/execution/thin-harness/fast-executor.ts +1263 -0
  745. package/src/runtime/execution/thin-harness/fast-receipt.ts +235 -0
  746. package/src/runtime/execution/thin-harness/fingerprint-worker.ts +191 -0
  747. package/src/runtime/execution/thin-harness/index.ts +13 -0
  748. package/src/runtime/execution/thin-harness/latency-trace.ts +107 -0
  749. package/src/runtime/execution/thin-harness/lightweight-lanes.ts +745 -0
  750. package/src/runtime/execution/thin-harness/mutation-gate.ts +578 -0
  751. package/src/runtime/execution/thin-harness/proposal-store.ts +409 -0
  752. package/src/runtime/execution/thin-harness/request-ledger.ts +595 -0
  753. package/src/runtime/execution/thin-harness/search-worker.ts +114 -0
  754. package/src/runtime/execution/thin-harness/types.ts +313 -0
  755. package/src/runtime/execution/thin-harness/workspace-savepoint.ts +333 -0
  756. package/src/runtime/execution/workers/executor.ts +687 -0
  757. package/src/runtime/execution/workers/ownership.ts +94 -0
  758. package/src/runtime/execution/workers/worker-entry.ts +277 -0
  759. package/src/runtime/gateway/mcp/execution-tools.ts +2009 -0
  760. package/src/runtime/gateway/mcp/persisted-check-process.ts +255 -0
  761. package/src/runtime/gateway/mcp/process-tools.ts +230 -0
  762. package/src/runtime/gateway/mcp/resource-policy.ts +195 -0
  763. package/src/runtime/gateway/mcp/router.ts +1088 -0
  764. package/src/runtime/gateway/mcp/runtime-tools.ts +5994 -0
  765. package/src/runtime/gateway/mcp/work-validation-reconciler.ts +219 -0
  766. package/src/runtime/health/evaluator.ts +474 -0
  767. package/src/runtime/health/index.ts +2 -0
  768. package/src/runtime/health/operational-view.ts +198 -0
  769. package/src/runtime/maintenance/cleanup.ts +419 -0
  770. package/src/runtime/model-clients/deepseek-adapter.ts +312 -0
  771. package/src/runtime/model-clients/index.ts +2 -0
  772. package/src/runtime/model-clients/types.ts +101 -0
  773. package/src/runtime/observability/gateway-contention-metrics.ts +129 -0
  774. package/src/runtime/observability/route-session-benchmark.ts +110 -0
  775. package/src/runtime/personal-assistant/gmail-triage-manager.ts +231 -0
  776. package/src/runtime/personal-assistant/reporting-runtime.ts +344 -0
  777. package/src/runtime/personal-assistant/triage-runtime.ts +748 -0
  778. package/src/runtime/plugins/app-store-connect-adapter.ts +868 -0
  779. package/src/runtime/plugins/browser-adapter.ts +2812 -0
  780. package/src/runtime/plugins/browser-automation-service.ts +46 -0
  781. package/src/runtime/plugins/browser-handoff-host.ts +304 -0
  782. package/src/runtime/plugins/browser-handoff.ts +371 -0
  783. package/src/runtime/plugins/browser-macos-bridge.ts +865 -0
  784. package/src/runtime/plugins/browser-node-bridge-host.ts +64 -0
  785. package/src/runtime/plugins/browser-node-bridge.ts +249 -0
  786. package/src/runtime/plugins/desktop-adapter.ts +374 -0
  787. package/src/runtime/plugins/desktop-operator-registration.ts +418 -0
  788. package/src/runtime/plugins/errors.ts +39 -0
  789. package/src/runtime/plugins/execution-origin.ts +26 -0
  790. package/src/runtime/plugins/external-adapter.ts +322 -0
  791. package/src/runtime/plugins/external-registration.ts +308 -0
  792. package/src/runtime/plugins/external-unix-socket-probe.cjs +79 -0
  793. package/src/runtime/plugins/external-unix-socket.ts +238 -0
  794. package/src/runtime/plugins/first-party-registry.ts +37 -0
  795. package/src/runtime/plugins/github-adapter.ts +266 -0
  796. package/src/runtime/plugins/gmail-adapter.ts +729 -0
  797. package/src/runtime/plugins/google-calendar-adapter.ts +468 -0
  798. package/src/runtime/plugins/google-shared.ts +578 -0
  799. package/src/runtime/plugins/google-tasks-adapter.ts +535 -0
  800. package/src/runtime/plugins/interaction-session.ts +252 -0
  801. package/src/runtime/plugins/ios/agent-device-capabilities.ts +258 -0
  802. package/src/runtime/plugins/ios/agent-device-failures.ts +95 -0
  803. package/src/runtime/plugins/ios/agent-device-provider.ts +63 -0
  804. package/src/runtime/plugins/ios/agent-device-typed-provider.ts +268 -0
  805. package/src/runtime/plugins/ios/app-adapters.ts +122 -0
  806. package/src/runtime/plugins/ios-adapter.ts +509 -0
  807. package/src/runtime/plugins/ios-agent-device.ts +2311 -0
  808. package/src/runtime/plugins/ios-physical-device.ts +955 -0
  809. package/src/runtime/plugins/local-system-adapter.ts +1016 -0
  810. package/src/runtime/plugins/macos-capability-broker.ts +73 -0
  811. package/src/runtime/plugins/managed-process-adapter.ts +366 -0
  812. package/src/runtime/plugins/resend-adapter.ts +506 -0
  813. package/src/runtime/plugins/store.ts +1025 -0
  814. package/src/runtime/plugins/types.ts +138 -0
  815. package/src/runtime/projections/controller-context.ts +596 -0
  816. package/src/runtime/projections/git-status-sampler.ts +84 -0
  817. package/src/runtime/projections/invalidation.ts +250 -0
  818. package/src/runtime/projections/materialized-view.ts +694 -0
  819. package/src/runtime/recovery/actions.ts +158 -0
  820. package/src/runtime/recovery/audit.ts +38 -0
  821. package/src/runtime/recovery/classifier.ts +163 -0
  822. package/src/runtime/recovery/index.ts +9 -0
  823. package/src/runtime/recovery/local-jobs-repair.ts +393 -0
  824. package/src/runtime/recovery/maintenance-executor.ts +822 -0
  825. package/src/runtime/recovery/patch-handoff.ts +50 -0
  826. package/src/runtime/recovery/probe.ts +308 -0
  827. package/src/runtime/recovery/store.ts +35 -0
  828. package/src/runtime/recovery/types.ts +175 -0
  829. package/src/runtime/release/identity.ts +101 -0
  830. package/src/runtime/release/release-gate.ts +137 -0
  831. package/src/runtime/resources/claims/conflicts.ts +205 -0
  832. package/src/runtime/resources/index.ts +1 -0
  833. package/src/runtime/resources/leases/store.ts +539 -0
  834. package/src/runtime/resources/leases/types.ts +50 -0
  835. package/src/runtime/resources/ownership.ts +72 -0
  836. package/src/runtime/root/controller-services.ts +42 -0
  837. package/src/runtime/root/entry.ts +70 -0
  838. package/src/runtime/root/gateway-adapter.ts +46 -0
  839. package/src/runtime/root/local-bridge.ts +72 -0
  840. package/src/runtime/root/mcp-transport.ts +198 -0
  841. package/src/runtime/root/ownership.ts +94 -0
  842. package/src/runtime/root/readiness.ts +69 -0
  843. package/src/runtime/root/release-manifest.ts +147 -0
  844. package/src/runtime/root/release-materialize.ts +509 -0
  845. package/src/runtime/root/release-store.ts +236 -0
  846. package/src/runtime/root/runtime.ts +318 -0
  847. package/src/runtime/root/scheduler.ts +58 -0
  848. package/src/runtime/root/service-runner-entry.ts +20 -0
  849. package/src/runtime/root/service-runner.ts +69 -0
  850. package/src/runtime/root/service.ts +291 -0
  851. package/src/runtime/root/status.ts +127 -0
  852. package/src/runtime/root/types.ts +112 -0
  853. package/src/runtime/root/write-fence.ts +309 -0
  854. package/src/runtime/safe-tooling/browser-safe.ts +133 -0
  855. package/src/runtime/safe-tooling/external-filesystem.ts +304 -0
  856. package/src/runtime/safe-tooling/google-credential-store.ts +95 -0
  857. package/src/runtime/safe-tooling/google-oauth-broker.ts +286 -0
  858. package/src/runtime/safe-tooling/index.ts +11 -0
  859. package/src/runtime/safe-tooling/ios-development.ts +1039 -0
  860. package/src/runtime/safe-tooling/job-summary.ts +361 -0
  861. package/src/runtime/safe-tooling/plugin-summary.ts +53 -0
  862. package/src/runtime/safe-tooling/resend-oauth.ts +387 -0
  863. package/src/runtime/safe-tooling/review-artifacts.ts +133 -0
  864. package/src/runtime/safe-tooling/types.ts +103 -0
  865. package/src/runtime/safe-tooling/workspace-auth.ts +116 -0
  866. package/src/runtime/shared/bounded-child-supervisor.ts +235 -0
  867. package/src/runtime/shared/idempotent-retry.ts +128 -0
  868. package/src/runtime/shared/json-files.ts +43 -0
  869. package/src/runtime/shared/local-bridge-surface.ts +231 -0
  870. package/src/runtime/shared/managed-env.ts +154 -0
  871. package/src/runtime/shared/node-ts-loader.mjs +50 -0
  872. package/src/runtime/shared/process-environment.ts +97 -0
  873. package/src/runtime/shared/process-identity.ts +72 -0
  874. package/src/runtime/shared/process-tree.ts +227 -0
  875. package/src/runtime/shared/response-budget.ts +246 -0
  876. package/src/runtime/standalone-recovery/core.ts +2275 -0
  877. package/src/runtime/standalone-recovery/entry.ts +686 -0
  878. package/src/runtime/standalone-recovery/http-transport.ts +317 -0
  879. package/src/runtime/standalone-recovery/installer.ts +747 -0
  880. package/src/runtime/standalone-recovery/release.ts +241 -0
  881. package/src/runtime/watchdog/workflow-watchdog.ts +118 -0
  882. package/src/runtime/workflow/campaigns/cleanup.ts +263 -0
  883. package/src/runtime/workflow/campaigns/engine.ts +112 -0
  884. package/src/runtime/workflow/campaigns/normalize.ts +100 -0
  885. package/src/runtime/workflow/campaigns/review.ts +315 -0
  886. package/src/runtime/workflow/campaigns/store.ts +526 -0
  887. package/src/runtime/workflow/campaigns/supervisor.ts +112 -0
  888. package/src/runtime/workflow/campaigns/types.ts +290 -0
  889. package/src/runtime/workflow/campaigns/workspace-agent.ts +155 -0
  890. package/src/runtime/workflow/campaigns/workspace.ts +200 -0
  891. package/src/runtime/workflow/findings/store.ts +165 -0
  892. package/src/runtime/workflow/findings/types.ts +36 -0
  893. package/src/runtime/workflow/portfolio/engine.ts +20 -0
  894. package/src/runtime/workflow/portfolio/store.ts +185 -0
  895. package/src/runtime/workflow/portfolio/types.ts +29 -0
  896. package/src/runtime/workflow/schedules/engine.ts +620 -0
  897. package/src/runtime/workflow/schedules/settlement.ts +144 -0
  898. package/src/runtime/workflow/schedules/store.ts +417 -0
  899. package/src/runtime/workflow/schedules/types.ts +124 -0
  900. package/src/runtime/workspace-targets/index.ts +24 -0
  901. package/src/runtime/workspace-targets/target-grant.ts +721 -0
  902. package/src/testing/test-governance.ts +626 -0
  903. package/src/version.ts +21 -0
@@ -0,0 +1,1218 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
+ if REPO_ROOT="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel 2>/dev/null)"; then
6
+ cd "$REPO_ROOT"
7
+ elif [[ "$SCRIPT_DIR" == */.ai/harness/scripts ]]; then
8
+ cd "$SCRIPT_DIR/../../.."
9
+ else
10
+ cd "$SCRIPT_DIR/.."
11
+ fi
12
+
13
+ usage() {
14
+ cat <<'USAGE_EOF'
15
+ Usage: scripts/ensure-task-workflow.sh [--new-plan] [--slug <slug>] [--title <title>]
16
+ USAGE_EOF
17
+ }
18
+
19
+ normalize_slug() {
20
+ printf '%s' "$1" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+/-/g; s/^-+//; s/-+$//; s/-{2,}/-/g'
21
+ }
22
+
23
+ ACTIVE_PLAN_MARKER=".ai/harness/active-plan"
24
+ LEGACY_ACTIVE_PLAN_MARKER=".claude/.active-plan"
25
+
26
+ read_active_plan_marker() {
27
+ local marker_file="$1"
28
+ local marker_plan
29
+
30
+ if [[ -f "$marker_file" ]]; then
31
+ marker_plan="$(cat "$marker_file" 2>/dev/null | xargs)"
32
+ if [[ -n "$marker_plan" && -f "$marker_plan" ]]; then
33
+ printf '%s' "$marker_plan"
34
+ return 0
35
+ fi
36
+ fi
37
+
38
+ return 1
39
+ }
40
+
41
+ get_active_plan() {
42
+ read_active_plan_marker "$ACTIVE_PLAN_MARKER" \
43
+ || read_active_plan_marker "$LEGACY_ACTIVE_PLAN_MARKER"
44
+ }
45
+
46
+ ensure_templates() {
47
+ mkdir -p .claude/templates
48
+
49
+ if [[ ! -f ".claude/templates/spec.template.md" ]]; then
50
+ cat > .claude/templates/spec.template.md <<'SPEC_TEMPLATE_EOF'
51
+ # Product Spec: {{PROJECT_NAME}}
52
+
53
+ > **Status**: Draft
54
+ > **Last Updated**: {{TIMESTAMP}}
55
+ > **Owner**: Planner
56
+
57
+ ## Product Outcome
58
+
59
+ Describe the stable user or operator outcome this repo should deliver.
60
+
61
+ ## Success Criteria
62
+
63
+ - Primary workflow:
64
+ - Quality bar:
65
+ - Out of scope:
66
+
67
+ ## Constraints
68
+
69
+ - Technical:
70
+ - Compliance:
71
+ - Delivery:
72
+
73
+ ## Acceptance Scenarios
74
+
75
+ - Given
76
+ When
77
+ Then
78
+
79
+ ## Open Questions
80
+
81
+ - ...
82
+ SPEC_TEMPLATE_EOF
83
+ fi
84
+
85
+ if [[ ! -f ".claude/templates/research.template.md" ]]; then
86
+ cat > .claude/templates/research.template.md <<'RESEARCH_TEMPLATE_EOF'
87
+ # {{PROJECT_NAME}} — Research Notes
88
+
89
+ > **Last Updated**: {{DATE}}
90
+ > **Scope**: (what area of the codebase was researched)
91
+ > **Usage**: Store deep codebase findings and hidden contracts here, not in chat-only summaries.
92
+
93
+ ## Codebase Map
94
+ | File | Purpose | Key Exports |
95
+ |------|---------|-------------|
96
+
97
+ ## Architecture Observations
98
+ ### Patterns & Conventions
99
+ ### Implicit Contracts
100
+ ### Edge Cases & Intricacies
101
+
102
+ ## Technical Debt / Risks
103
+
104
+ ## Research Conclusions
105
+ ### What to Preserve
106
+ ### What to Change
107
+ ### Open Questions
108
+ RESEARCH_TEMPLATE_EOF
109
+ fi
110
+
111
+ if [[ ! -f ".claude/templates/prd.template.md" ]]; then
112
+ cat > .claude/templates/prd.template.md <<'PRD_TEMPLATE_EOF'
113
+ # PRD: {{PRD_TITLE}}
114
+
115
+ > **Status**: Draft
116
+ > **Slug**: {{PRD_SLUG}}
117
+ > **Created**: {{TIMESTAMP}}
118
+ > **Updated**: {{TIMESTAMP}}
119
+ > **Source Spec**: `docs/spec.md`
120
+ > **Tier**: compact
121
+
122
+ <!--
123
+ PRD tier contract:
124
+ - compact: one focused product/tool or fewer than three P0 modules, target 150-300 lines.
125
+ - standard: multi-module product, target 300-600 lines and hard cap 800 lines.
126
+ - If the PRD would exceed 800 lines, split it into smaller PRDs.
127
+ - Output files live in plans/prds/<YYYYMMDD>-<HHMM>-<slug>.prd.md.
128
+ - Inline responses should include only the AI Quick-Read Card and file path.
129
+ -->
130
+
131
+ ## AI Quick-Read Card
132
+
133
+ - Problem:
134
+ - Users:
135
+ - Platform:
136
+ - P0 surface:
137
+ - Core metric:
138
+ - Hard constraint:
139
+ - Key risk:
140
+ - Unknowns:
141
+ - Acceptance scenarios:
142
+ - Suggested next step:
143
+
144
+ ## Problem
145
+
146
+ ### Product Direction
147
+
148
+ - Hard Constraints:
149
+ - Recommended Defaults:
150
+ - Freedoms:
151
+
152
+ ### Feasibility Boundary
153
+
154
+ - Confirmed:
155
+ - [UNKNOWN]:
156
+ - [UNVERIFIED]:
157
+
158
+ ## Users
159
+
160
+ ### Primary Users
161
+
162
+ - User:
163
+ - Need:
164
+ - Success signal:
165
+
166
+ ### Secondary Users
167
+
168
+ - User:
169
+ - Need:
170
+ - Success signal:
171
+
172
+ ## Success Criteria
173
+
174
+ | Metric | Target | Measurement Method | Degradation Threshold |
175
+ |---|---:|---|---:|
176
+ | Example metric | 95% | Describe how to measure it | 90% |
177
+
178
+ ## Acceptance Scenarios
179
+
180
+ ### Scenario 1
181
+
182
+ - Given:
183
+ - When:
184
+ - Then:
185
+ - Machine-checkable evidence:
186
+
187
+ ### Scenario 2
188
+
189
+ - Given:
190
+ - When:
191
+ - Then:
192
+ - Machine-checkable evidence:
193
+
194
+ ## Non-goals
195
+
196
+ -
197
+
198
+ ## Module Behaviors (P0)
199
+
200
+ ### Module 1
201
+
202
+ - Purpose:
203
+ - Hard Constraints:
204
+ - Recommended Defaults:
205
+ - Freedoms:
206
+ - Normal path:
207
+ - Failure path 1:
208
+ - Failure path 2:
209
+ - States:
210
+ - Empty:
211
+ - Loading:
212
+ - Ready:
213
+ - Error:
214
+ - Dependencies:
215
+ - Open decisions: None
216
+
217
+ ## Data Model
218
+
219
+ ```jsonc
220
+ {
221
+ "version": "1",
222
+ "entities": [
223
+ {
224
+ "id": "example_entity",
225
+ "owner": "user", // who owns the data
226
+ "fields": {
227
+ "id": "string", // stable identifier
228
+ "created_at": "datetime" // creation timestamp
229
+ }
230
+ }
231
+ ],
232
+ "relationships": []
233
+ }
234
+ ```
235
+
236
+ ## Performance Targets
237
+
238
+ | Target | Number | Measurement Method | Degradation Threshold |
239
+ |---|---:|---|---:|
240
+ | Initial usable response | 2 seconds | Local stopwatch or automated timing | 4 seconds |
241
+
242
+ ## Known Unknowns
243
+
244
+ | Item | Impact | Resolution Path | Owner |
245
+ |---|---|---|---|
246
+ | [UNKNOWN] Example unknown | Explain impact | Explain how to resolve | Maintainer |
247
+
248
+ ## Developer Handoff
249
+
250
+ You are implementing this PRD.
251
+
252
+ - Build first:
253
+ - Do not reinterpret:
254
+ - You may improve:
255
+ - Verify with:
256
+
257
+ ### Acceptance Scripts
258
+
259
+ 1.
260
+ 2.
261
+ 3.
262
+
263
+ ## Adjacent Patterns
264
+
265
+ Use this section only in standard tier or when explicitly requested. Prefer adjacent product patterns and common workflow debt. Do not name a competitor, API, platform limit, or package size unless the fact is sourced; otherwise mark it `[UNVERIFIED]`.
266
+
267
+ ## Commercialization Notes
268
+
269
+ Use only when the request involves pricing, packaging, monetization, or buyer/user separation.
270
+
271
+ ## Frontend Perspective
272
+
273
+ Use only when the frontend shape affects product behavior, state ownership, accessibility, or implementation risk.
274
+
275
+ ## Backend Perspective
276
+
277
+ Use only when APIs, persistence, jobs, permissions, or data ownership affect product behavior or implementation risk.
278
+ PRD_TEMPLATE_EOF
279
+ fi
280
+
281
+ if [[ ! -f ".claude/templates/plan.template.md" ]]; then
282
+ cat > .claude/templates/plan.template.md <<'PLAN_TEMPLATE_EOF'
283
+ # Plan: {{TITLE}}
284
+
285
+ > **Status**: Draft
286
+ > **Created**: {{TIMESTAMP}}
287
+ > **Slug**: {{SLUG}}
288
+ > **Spec**: `docs/spec.md`
289
+ > **Research**: See `docs/researches/`
290
+ > **Task Contract**: `tasks/contracts/{{ARTIFACT_STEM}}.contract.md`
291
+ > **Task Review**: `tasks/reviews/{{ARTIFACT_STEM}}.review.md`
292
+ > **Implementation Notes**: `tasks/notes/{{ARTIFACT_STEM}}.notes.md`
293
+
294
+ ## Agentic Routing
295
+ - Selected route:
296
+ - Routing reason:
297
+ - Due diligence:
298
+ - P1 map:
299
+ - P2 trace:
300
+ - P3 decision rationale:
301
+
302
+ ## Workflow Inventory
303
+ Complete this inventory before implementation. If any line is unknown, keep the plan in Draft and fill it before projection.
304
+
305
+ - Active plan: `{{PLAN_FILE}}`
306
+ - Sprint contract: `tasks/contracts/{{ARTIFACT_STEM}}.contract.md`
307
+ - Sprint review: `tasks/reviews/{{ARTIFACT_STEM}}.review.md`
308
+ - Implementation notes: `tasks/notes/{{ARTIFACT_STEM}}.notes.md`
309
+ - Deferred-goal ledger: `tasks/todos.md`
310
+ - Current checks: `.ai/harness/checks/latest.json`
311
+ - Run snapshots: `.ai/harness/runs/`
312
+ - Scope authority: `tasks/contracts/{{ARTIFACT_STEM}}.contract.md` `allowed_paths`
313
+ - Concurrency rule: `.ai/harness/active-plan` selects the active plan for this worktree when present; `.ai/harness/active-worktree` records the owning worktree; `.claude/.active-plan` is a legacy fallback during transition. If another worktree already owns active work, open or switch to the matching worktree instead of serializing unrelated plans.
314
+ - Execution isolation: approved contract-level work projects through `scripts/plan-to-todo.sh --plan {{PLAN_FILE}}` and may start `scripts/contract-worktree.sh start --plan {{PLAN_FILE}}`.
315
+
316
+ ## Approach
317
+ ### Strategy
318
+ ### Trade-offs
319
+ | Option | Pros | Cons | Decision |
320
+ |--------|------|------|----------|
321
+
322
+ ## Detailed Design
323
+ ### File Changes
324
+ | File | Action | Description |
325
+ |------|--------|-------------|
326
+
327
+ ### Code Snippets
328
+ ### Data Flow
329
+
330
+ ## Risk Assessment
331
+ | Risk | Likelihood | Impact | Mitigation |
332
+ |------|------------|--------|------------|
333
+
334
+ ## Task Contracts
335
+ - Contract file: `tasks/contracts/{{ARTIFACT_STEM}}.contract.md`
336
+ - Review file: `tasks/reviews/{{ARTIFACT_STEM}}.review.md`
337
+ - Implementation notes file: `tasks/notes/{{ARTIFACT_STEM}}.notes.md`
338
+ - Template: `.claude/templates/contract.template.md`
339
+ - Verification command: `bash scripts/verify-contract.sh --contract tasks/contracts/{{ARTIFACT_STEM}}.contract.md --strict`
340
+ - Active plan rule: `.ai/harness/active-plan` is authoritative for this worktree when present; `.ai/harness/active-worktree` records the owning worktree; `.claude/.active-plan` is a legacy fallback during transition. Do not infer active execution from the latest non-archived plan.
341
+
342
+ ## Handoff
343
+
344
+ - Checks file: `.ai/harness/checks/latest.json`
345
+ - Session handoff: `.ai/harness/handoff/current.md`
346
+
347
+ ## Evidence Contract
348
+
349
+ - **State/progress path**:
350
+ - **Verification evidence**:
351
+ - **Evaluator rubric**:
352
+ - **Stop condition**:
353
+ - **Rollback surface**:
354
+
355
+ ## Annotations
356
+ <!-- [NOTE]: prefixed inline. Claude processes all and revises. -->
357
+
358
+ ## Task Breakdown
359
+ - [ ] ...
360
+ PLAN_TEMPLATE_EOF
361
+ fi
362
+
363
+ if [[ ! -f ".claude/templates/contract.template.md" ]]; then
364
+ cat > .claude/templates/contract.template.md <<'CONTRACT_TEMPLATE_EOF'
365
+ # Task Contract: {{TASK_SLUG}}
366
+
367
+ > **Status**: Pending
368
+ > **Plan**: {{PLAN_FILE}}
369
+ > **Task Profile**: {{TASK_PROFILE}}
370
+ > **Owner**: {{OWNER}}
371
+ > **Capability ID**: {{CAPABILITY_ID}}
372
+ > **Last Updated**: {{TIMESTAMP}}
373
+ > **Review File**: `{{REVIEW_FILE}}`
374
+ > **Notes File**: `{{NOTES_FILE}}`
375
+
376
+ ## Goal
377
+
378
+ Describe the exact outcome this task must deliver.
379
+
380
+ ## Scope
381
+
382
+ - In scope:
383
+ - Out of scope:
384
+
385
+ ## Workflow Inventory
386
+
387
+ - Source plan: `{{PLAN_FILE}}`
388
+ - Deferred-goal ledger: `tasks/todos.md`
389
+ - Review file: `{{REVIEW_FILE}}`
390
+ - Notes file: `{{NOTES_FILE}}`
391
+ - Checks file: `.ai/harness/checks/latest.json`
392
+ - Run snapshots: `.ai/harness/runs/`
393
+ - Scope gate: edit only paths listed under `allowed_paths`; update this contract before widening scope.
394
+ - Completion gate: `scripts/verify-sprint.sh` must see this contract pass, the review recommend pass, and `## External Acceptance Advice` pass or record a manual override.
395
+
396
+ ## Allowed Paths
397
+
398
+ ```yaml
399
+ allowed_paths:
400
+ - plans/
401
+ - tasks/todos.md
402
+ - {{CONTRACT_FILE}}
403
+ - {{REVIEW_FILE}}
404
+ - {{NOTES_FILE}}
405
+ - .ai/context/capabilities.json
406
+ - src/
407
+ - tests/
408
+ ```
409
+
410
+ ## Delegation Contract
411
+
412
+ ```yaml
413
+ delegation:
414
+ budget:
415
+ tokens: null
416
+ tool_calls: null
417
+ wall_time_minutes: null
418
+ permission_scope:
419
+ mode: inherit_allowed_paths
420
+ writable_paths: []
421
+ network: inherited
422
+ roles:
423
+ parent:
424
+ mode: narrate_and_gatekeep
425
+ purpose: approval_checkpoint_owner
426
+ explorer:
427
+ mode: read_only
428
+ purpose: codebase_research
429
+ worker:
430
+ mode: edit_within_allowed_paths
431
+ purpose: implementation
432
+ verifier:
433
+ mode: read_only
434
+ purpose: exit_criteria_review
435
+ ```
436
+
437
+ ## Exit Criteria (Machine Verifiable)
438
+
439
+ ```yaml
440
+ exit_criteria:
441
+ files_exist:
442
+ - src/modules/{{TASK_SLUG}}/index.ts
443
+ - {{NOTES_FILE}}
444
+ tests_pass:
445
+ - path: tests/unit/{{TASK_SLUG}}.test.ts
446
+ commands_succeed:
447
+ - bun run typecheck
448
+ files_contain:
449
+ - path: src/modules/{{TASK_SLUG}}/index.ts
450
+ pattern: "export"
451
+ ```
452
+
453
+ ## Acceptance Notes (Human Review)
454
+
455
+ - Functional behavior:
456
+ - Edge cases:
457
+ - Regression risks:
458
+
459
+ ## Rollback Point
460
+
461
+ - Commit / checkpoint:
462
+ - Revert strategy:
463
+ CONTRACT_TEMPLATE_EOF
464
+ fi
465
+
466
+ if [[ ! -f ".claude/templates/review.template.md" ]]; then
467
+ cat > .claude/templates/review.template.md <<'REVIEW_TEMPLATE_EOF'
468
+ # Task Review: {{TASK_SLUG}}
469
+
470
+ > **Status**: Pending
471
+ > **Plan**: {{PLAN_FILE}}
472
+ > **Contract**: {{CONTRACT_FILE}}
473
+ > **Notes File**: {{NOTES_FILE}}
474
+ > **Checks File**: {{CHECKS_FILE}}
475
+ > **Last Updated**: {{TIMESTAMP}}
476
+ > **Recommendation**: fail
477
+
478
+ ## Human Review Card
479
+
480
+ - Verdict: pending
481
+ - Change type: code-change | docs-only | ledger-closeout | migration | eval-only | delegated-run
482
+ - Intended files changed:
483
+ - Actual files changed:
484
+ - Commands passed:
485
+ - External acceptance: unavailable
486
+ - Residual risks:
487
+ - Reviewer action required: inspect diff and card
488
+ - Rollback:
489
+
490
+ ## Verification Evidence
491
+
492
+ - Waza /check run:
493
+ - Commands run:
494
+ - Manual checks:
495
+ - Supporting artifacts:
496
+
497
+ ## External Acceptance Advice
498
+
499
+ > **External Acceptance**: unavailable
500
+ > **External Reviewer**:
501
+ > **External Source**:
502
+ > **External Started**:
503
+ > **External Completed**:
504
+
505
+ - P1 blockers:
506
+ - P2 advisories:
507
+ - Acceptance checklist:
508
+
509
+ ## Scorecard
510
+
511
+ | Dimension | Score | Notes |
512
+ |-----------|-------|-------|
513
+ | Functionality | 0/10 | |
514
+ | Product depth | 0/10 | |
515
+ | Design quality | 0/10 | |
516
+ | Code quality | 0/10 | |
517
+
518
+ ## Failing Items
519
+
520
+ - ...
521
+
522
+ ## Retest Steps
523
+
524
+ - Re-run:
525
+ - Re-check:
526
+
527
+ ## Summary
528
+
529
+ - ...
530
+ REVIEW_TEMPLATE_EOF
531
+ fi
532
+
533
+ if [[ ! -f ".claude/templates/implementation-notes.template.md" ]]; then
534
+ cat > .claude/templates/implementation-notes.template.md <<'NOTES_TEMPLATE_EOF'
535
+ # Implementation Notes: {{TASK_SLUG}}
536
+
537
+ > **Status**: Active
538
+ > **Plan**: {{PLAN_FILE}}
539
+ > **Contract**: {{CONTRACT_FILE}}
540
+ > **Review**: {{REVIEW_FILE}}
541
+ > **Last Updated**: {{TIMESTAMP}}
542
+ > **Lifecycle**: notes
543
+
544
+ ## Design Decisions
545
+
546
+ - ...
547
+
548
+ ## Deviations From Plan Or Spec
549
+
550
+ - None recorded.
551
+
552
+ ## Tradeoffs Considered
553
+
554
+ | Option | Decision | Reason |
555
+ |--------|----------|--------|
556
+ | ... | ... | ... |
557
+
558
+ ## Open Questions
559
+
560
+ - None.
561
+
562
+ ## Evidence Links
563
+
564
+ - Checks: `.ai/harness/checks/latest.json`
565
+ - Run snapshots: `.ai/harness/runs/`
566
+
567
+ ## Promotion Candidates
568
+
569
+ - Promote to `tasks/lessons.md` only after a repeated correction or failure pattern.
570
+ - Promote to `docs/researches/` only when it is durable repo knowledge with evidence.
571
+ - Promote to harness asset files only after verification across more than one task or fixture.
572
+ NOTES_TEMPLATE_EOF
573
+ fi
574
+ }
575
+
576
+ ensure_idle_todo() {
577
+ mkdir -p tasks
578
+ if [[ ! -f "tasks/todos.md" ]]; then
579
+ cat > tasks/todos.md <<'TODO_EOF'
580
+ # Deferred Goal Ledger
581
+
582
+ > **Status**: Backlog
583
+ > **Updated**: (ensure-task-workflow)
584
+ > **Scope**: Medium/long-term goals deferred from active plan execution
585
+
586
+ Current plan tasks live in the active plan's `## Task Breakdown`.
587
+ Do not duplicate that execution checklist here. Record only work intentionally deferred beyond this slice, with the tradeoff and revisit trigger.
588
+
589
+ ## Deferred Goals
590
+
591
+ | Goal | Why Deferred | Tradeoff | Revisit Trigger |
592
+ |------|--------------|----------|-----------------|
593
+ | (none) | No deferred medium/long-term goal recorded yet. | Keep the current slice bounded. | Add a row when a real follow-up is postponed. |
594
+ TODO_EOF
595
+ fi
596
+ }
597
+
598
+ ensure_current_status_snapshot() {
599
+ mkdir -p tasks
600
+ if [[ -x "scripts/refresh-current-status.sh" ]]; then
601
+ bash "scripts/refresh-current-status.sh" --clear --write --reason "ensure-task-workflow" >/dev/null 2>&1 || true
602
+ return 0
603
+ fi
604
+
605
+ if [[ ! -f "tasks/current.md" ]]; then
606
+ cat > tasks/current.md <<'CURRENT_STATUS_EOF'
607
+ # Current Status Snapshot
608
+
609
+ <!-- generated-by: forge refresh-current-status v1 -->
610
+ <!-- updated_at: bootstrap -->
611
+ <!-- stale_after: 24h -->
612
+
613
+ > **Status**: Idle
614
+ > **Updated At**: bootstrap
615
+ > **Source Branch**: main
616
+ > **Source Commit**: bootstrap
617
+ > **Target Branch**: main
618
+ > **Stale After**: 24h
619
+ > **Reason**: bootstrap
620
+ > **Derived From**: active-plan, workstreams, handoff, checks, git status
621
+
622
+ This file is a tracked mainline snapshot derived from repo artifacts. It is not a live lock, not a kanban board, and not an implementation gate. If it is stale, read the source artifacts below.
623
+ CURRENT_STATUS_EOF
624
+ fi
625
+ }
626
+
627
+ ensure_auxiliary_files() {
628
+ mkdir -p plans plans/archive plans/prds plans/sprints tasks/issues tasks/archive tasks/contracts tasks/reviews tasks/notes tasks/workstreams docs/architecture/domains docs/architecture/modules docs/architecture/requests docs/architecture/snapshots docs/architecture/diagrams scripts .ai/context .ai/harness/checks .ai/harness/handoff .ai/harness/scripts .ai/harness/failures .ai/harness/security .ai/harness/planning .ai/harness/architecture .ai/harness/worktrees .ai/harness/runs .ai/harness/jobs .ai/harness/local-jobs .ai/harness/controller .ai/harness/edit-sessions
629
+
630
+ if [[ ! -f "docs/spec.md" ]]; then
631
+ cat > docs/spec.md <<'SPEC_EOF'
632
+ # Product Spec
633
+
634
+ > **Status**: Draft
635
+ > **Owner**: Planner
636
+ SPEC_EOF
637
+ fi
638
+
639
+ if [[ ! -f "tasks/lessons.md" ]]; then
640
+ cat > tasks/lessons.md <<'LESSONS_EOF'
641
+ # Lessons Learned (Self-Improvement Loop)
642
+
643
+ > Capture correction-derived prevention rules here.
644
+ > Promote repeated patterns into durable project rules during spa day.
645
+
646
+ ## Template
647
+ - Date:
648
+ - Triggered by correction:
649
+ - Mistake pattern:
650
+ - Prevention rule:
651
+ - Where to apply next time:
652
+ LESSONS_EOF
653
+ fi
654
+
655
+ mkdir -p docs/researches
656
+ if [[ ! -f "docs/researches/README.md" ]]; then
657
+ cat > docs/researches/README.md <<'RESEARCH_README_EOF'
658
+ # Research Reports
659
+
660
+ Durable research reports live in this directory as dated Markdown files.
661
+
662
+ Use `YYYYMMDD-topic.md` names for new reports. Keep task-local implementation
663
+ decisions in `tasks/notes/`, and keep repeated correction-derived rules in
664
+ `tasks/lessons.md`.
665
+ RESEARCH_README_EOF
666
+ fi
667
+
668
+ if [[ ! -f ".ai/harness/checks/latest.json" ]]; then
669
+ echo "{}" > ".ai/harness/checks/latest.json"
670
+ fi
671
+
672
+ if [[ ! -f ".ai/harness/handoff/current.md" ]]; then
673
+ cat > ".ai/harness/handoff/current.md" <<'HANDOFF_EOF'
674
+ # Harness Handoff
675
+
676
+ > **Reason**: bootstrap
677
+ HANDOFF_EOF
678
+ fi
679
+
680
+ if [[ ! -f ".ai/harness/handoff/resume.md" ]]; then
681
+ cat > ".ai/harness/handoff/resume.md" <<'RESUME_EOF'
682
+ # Codex Resume Packet
683
+
684
+ > **Reason**: bootstrap
685
+ RESUME_EOF
686
+ fi
687
+
688
+ if [[ ! -f ".ai/harness/events.jsonl" ]]; then
689
+ : > ".ai/harness/events.jsonl"
690
+ fi
691
+
692
+ if [[ ! -f ".ai/harness/architecture/events.jsonl" ]]; then
693
+ : > ".ai/harness/architecture/events.jsonl"
694
+ fi
695
+
696
+ if [[ ! -f ".ai/harness/architecture/.gitkeep" ]]; then
697
+ : > ".ai/harness/architecture/.gitkeep"
698
+ fi
699
+
700
+ if [[ ! -f ".ai/harness/failures/latest.jsonl" ]]; then
701
+ : > ".ai/harness/failures/latest.jsonl"
702
+ fi
703
+
704
+ if [[ ! -f ".ai/harness/security/.gitkeep" ]]; then
705
+ : > ".ai/harness/security/.gitkeep"
706
+ fi
707
+
708
+ if [[ ! -f ".ai/harness/runs/.gitkeep" ]]; then
709
+ : > ".ai/harness/runs/.gitkeep"
710
+ fi
711
+ if [[ ! -f ".ai/harness/worktrees/.gitkeep" ]]; then
712
+ : > ".ai/harness/worktrees/.gitkeep"
713
+ fi
714
+ if [[ ! -f ".ai/harness/jobs/.gitkeep" ]]; then
715
+ : > ".ai/harness/jobs/.gitkeep"
716
+ fi
717
+ if [[ ! -f ".ai/harness/edit-sessions/.gitkeep" ]]; then
718
+ : > ".ai/harness/edit-sessions/.gitkeep"
719
+ fi
720
+
721
+ if [[ ! -f "docs/architecture/requests/.gitkeep" ]]; then
722
+ : > "docs/architecture/requests/.gitkeep"
723
+ fi
724
+
725
+ if [[ ! -f "docs/architecture/snapshots/.gitkeep" ]]; then
726
+ : > "docs/architecture/snapshots/.gitkeep"
727
+ fi
728
+
729
+ if [[ ! -f "docs/architecture/diagrams/.gitkeep" ]]; then
730
+ : > "docs/architecture/diagrams/.gitkeep"
731
+ fi
732
+
733
+ if [[ ! -f "docs/architecture/domains/.gitkeep" ]]; then
734
+ : > "docs/architecture/domains/.gitkeep"
735
+ fi
736
+
737
+ if [[ ! -f "docs/architecture/modules/.gitkeep" ]]; then
738
+ : > "docs/architecture/modules/.gitkeep"
739
+ fi
740
+
741
+ if [[ ! -f "tasks/workstreams/.gitkeep" ]]; then
742
+ : > "tasks/workstreams/.gitkeep"
743
+ fi
744
+
745
+ if [[ ! -f ".ai/context/capabilities.json" ]]; then
746
+ cat > ".ai/context/capabilities.json" <<'CAPABILITIES_EOF'
747
+ {
748
+ "version": 1,
749
+ "capabilities": []
750
+ }
751
+ CAPABILITIES_EOF
752
+ fi
753
+
754
+ if [[ ! -f "docs/architecture/index.md" ]]; then
755
+ cat > "docs/architecture/index.md" <<'ARCHITECTURE_INDEX_EOF'
756
+ # Architecture Index
757
+
758
+ > Umbrella architecture ledger for current boundaries, drift requests, snapshots, and diagrams.
759
+
760
+ ## Current Snapshot
761
+
762
+ - Latest snapshot: (none yet)
763
+ - Semantic diagram source: (none yet)
764
+ - Latest human diagram: (none yet)
765
+
766
+ ## Architecture Drift Flow
767
+
768
+ - `scripts/architecture-queue.sh` records architecture-sensitive edits as requests.
769
+ - `scripts/archive-architecture-request.sh` archives handled requests after an agent records the resolution status and linked artifacts.
770
+ - `scripts/context-contract-sync.sh` keeps only the controlled architecture block in functional-block `AGENTS.md` and `CLAUDE.md` files aligned.
771
+ - `scripts/workstream-sync.sh` keeps durable multi-session progress under `tasks/workstreams/<domain>/<capability>/` and projects only pointers into local contracts.
772
+ - Semantic architecture diagrams live as Mermaid fenced blocks in the relevant module or snapshot Markdown.
773
+ - Human-readable architecture diagrams are optional `mermaid` HTML files in `docs/architecture/diagrams/` and should link back to the Markdown semantic source.
774
+
775
+ ## Pending Requests
776
+
777
+ <!-- BEGIN ARCHITECTURE PENDING REQUESTS -->
778
+ - (none)
779
+ <!-- END ARCHITECTURE PENDING REQUESTS -->
780
+
781
+ ARCHITECTURE_INDEX_EOF
782
+ fi
783
+
784
+ if [[ ! -f ".ai/harness/policy.json" ]]; then
785
+ cat > ".ai/harness/policy.json" <<'POLICY_EOF'
786
+ {
787
+ "version": 1,
788
+ "active_plan": {
789
+ "marker_file": ".ai/harness/active-plan",
790
+ "legacy_marker_file": ".claude/.active-plan",
791
+ "directory": "plans",
792
+ "archive_directory": "plans/archive",
793
+ "glob": "plan-*.md",
794
+ "active_worktree_marker_file": ".ai/harness/active-worktree",
795
+ "source_of_truth": "per-worktree explicit marker with active-worktree owner; legacy Claude marker fallback only"
796
+ },
797
+ "tasks": {
798
+ "todo_file": "tasks/todos.md",
799
+ "current_status_file": "tasks/current.md",
800
+ "lessons_file": "tasks/lessons.md",
801
+ "research_dir": "docs/researches",
802
+ "workstreams_dir": "tasks/workstreams",
803
+ "contracts_dir": "tasks/contracts",
804
+ "reviews_dir": "tasks/reviews",
805
+ "notes_dir": "tasks/notes"
806
+ },
807
+ "reference_material": {
808
+ "dir": "_ref",
809
+ "mode": "external-ignored",
810
+ "commit_policy": "never commit _ref contents",
811
+ "rule": "use _ref as an occasional ignored external reference checkout cache for upstream/source comparison only; refresh from external sources instead of editing as product code; when it influences a decision, cite the source repo plus commit/tag and path in tasks/notes/ or docs/researches/"
812
+ },
813
+ "operations": {
814
+ "dir": "deploy",
815
+ "private_dir": "_ops",
816
+ "tracked": ["deploy/README.md", "deploy/scripts/", "deploy/submissions/", "deploy/runbooks/", "deploy/release-checklists/", "deploy/sql/", "deploy/*.md", "deploy/env/.env.example"],
817
+ "ignored": ["_ops/"],
818
+ "rule": "commit deployment runbooks, submission materials, release checklists, helper scripts, ordered SQL files, and env examples under deploy/; keep deploy SQL in deploy/sql/ with 4-digit ascending prefixes; keep keys, tokens, real env values, provider state, artifacts, logs, and scratch files in ignored _ops/ only"
819
+ },
820
+ "context": {
821
+ "profile": "stable-root-progressive-subdir",
822
+ "map_file": ".ai/context/context-map.json",
823
+ "capability_registry_file": ".ai/context/capabilities.json",
824
+ "capability_resolver": "scripts/capability-resolver.ts",
825
+ "capability_match_rule": "longest-prefix; same-length ambiguity fails",
826
+ "functional_block_selector": {
827
+ "script": "scripts/select-agent-context-blocks.sh",
828
+ "config_file": ".ai/context/agent-context-blocks.txt",
829
+ "env": "FORGE_CONTEXT_BLOCKS",
830
+ "rule": "compatibility selector; capability registry is the source of truth"
831
+ }
832
+ },
833
+ "harness": {
834
+ "policy_file": ".ai/harness/policy.json",
835
+ "checks_file": ".ai/harness/checks/latest.json",
836
+ "handoff_file": ".ai/harness/handoff/current.md",
837
+ "failure_log_file": ".ai/harness/failures/latest.jsonl",
838
+ "events_file": ".ai/harness/events.jsonl",
839
+ "architecture_events_file": ".ai/harness/architecture/events.jsonl",
840
+ "runs_dir": ".ai/harness/runs",
841
+ "helper_runtime_dir": "scripts",
842
+ "helper_compat_dir": "scripts",
843
+ "helper_source": "compat-bootstrap"
844
+ },
845
+ "architecture": {
846
+ "index_file": "docs/architecture/index.md",
847
+ "requests_dir": "docs/architecture/requests",
848
+ "snapshots_dir": "docs/architecture/snapshots",
849
+ "diagrams_dir": "docs/architecture/diagrams",
850
+ "domains_dir": "docs/architecture/domains",
851
+ "modules_dir": "docs/architecture/modules",
852
+ "diagram_skill": "mermaid",
853
+ "diagram_skill_source": "~/.codex/skills/mermaid",
854
+ "vendoring_policy": "do-not-vendor-diagram-skill-assets",
855
+ "freshness_gate": "advisory",
856
+ "gate_min_severity": "medium",
857
+ "pending_card_scope": "capability",
858
+ "pending_block_begin": "<!-- BEGIN ARCHITECTURE PENDING REQUESTS -->",
859
+ "pending_block_end": "<!-- END ARCHITECTURE PENDING REQUESTS -->",
860
+ "queue_script": "scripts/architecture-queue.sh",
861
+ "contract_block_begin": "<!-- BEGIN ARCHITECTURE CONTRACT -->",
862
+ "contract_block_end": "<!-- END ARCHITECTURE CONTRACT -->",
863
+ "rule": "hooks record architecture queue cards and sync controlled local context blocks; agents author semantic snapshots and diagrams"
864
+ },
865
+ "workstreams": {
866
+ "dir": "tasks/workstreams",
867
+ "scope": "capability",
868
+ "projection": "local-contract-active-pointer-and-current-slice",
869
+ "todo_projection": "tasks/todos.md",
870
+ "rule": "durable multi-session progress lives under tasks/workstreams/<domain>/<capability>; current plan execution lives in the plan Task Breakdown; tasks/todos.md records deferred goals only"
871
+ },
872
+ "information_lifecycle": {
873
+ "notes": {
874
+ "dir": "tasks/notes",
875
+ "purpose": "task-local implementation decisions, deviations, tradeoffs, and open questions",
876
+ "promotion": "archive on workflow close; promote only repeated or durable findings"
877
+ },
878
+ "evidence": {
879
+ "latest": ".ai/harness/checks/latest.json",
880
+ "snapshots_dir": ".ai/harness/runs",
881
+ "purpose": "raw verification records used to audit notes, reviews, and future promotion"
882
+ },
883
+ "assets": {
884
+ "sources": [".ai/harness/policy.json", ".ai/harness/workflow-contract.json", ".ai/hooks/", "scripts/", "docs/reference-configs/"],
885
+ "promotion_rule": "only promote patterns after verified reuse across tasks or fixtures"
886
+ },
887
+ "memory": {
888
+ "sources": ["docs/researches/", "tasks/lessons.md", "gbrain"],
889
+ "rule": "memory is advisory; current repo state and evidence override summaries"
890
+ },
891
+ "external_knowledge": {
892
+ "default_brain_path": "brain/<project>/*",
893
+ "project_path": "brain/<project>/*",
894
+ "manifest_file": ".ai/harness/brain-manifest.json",
895
+ "drift_check": "scripts/check-brain-manifest.sh",
896
+ "sync_script": "scripts/sync-brain-docs.sh",
897
+ "hook_trigger": "PostToolUse Edit|Write for manifest entries with sync.direction=repo-to-brain",
898
+ "rule": "external knowledge stores long-lived explanations, runbooks, and patterns only; repo-local contracts, hooks, scripts, checks, and evidence remain authoritative",
899
+ "sync_rule": "only explicitly opted-in repo-to-brain manifest entries may be written to the default brain vault; pointer-only externalized stubs remain check-only"
900
+ }
901
+ },
902
+ "handoff_resume": {
903
+ "resume_packet_file": ".ai/harness/handoff/resume.md",
904
+ "global_handoff_dir": "~/.codex/handoffs",
905
+ "auto_start_new_session": false
906
+ },
907
+ "plan_capture": {
908
+ "script": "scripts/capture-plan.sh",
909
+ "sources": ["codex-plan-mode", "waza-think", "forge-plan"],
910
+ "rule": "Codex Plan mode and Waza think planning should capture decision-complete plans into plans/plan-*.md; implementation approval then projects the active approved plan through scripts/plan-to-todo.sh"
911
+ },
912
+ "planning": {
913
+ "pending_orchestration_file": ".ai/harness/planning/pending.json",
914
+ "source_of_truth": "transient host planning bridge only; plans/ and .ai/harness/active-plan remain authoritative"
915
+ },
916
+ "guards": {
917
+ "edit_plan_gate": "advice",
918
+ "edit_plan_gate_modes": ["enforce", "advice", "off"],
919
+ "rule": "pre-edit-guard advises when implementation lacks an active plan; execution remains available unless a real safety boundary blocks it"
920
+ },
921
+ "sidecar_research": {
922
+ "default": true,
923
+ "output_dir": "docs/researches",
924
+ "preferred_runners": ["subagent", "codex exec --json", "main-thread trace"],
925
+ "spawn_decision": "main agent decides from task breadth, context impact, raw-log volume, and callable runner availability; do not ask the user for spawn confirmation",
926
+ "fallback_runner": "main-thread trace",
927
+ "main_thread_policy": "if spawning is not worthwhile or no sidecar runner is callable, perform bounded research in the main thread; consume conclusions and evidence paths, not raw logs"
928
+ },
929
+ "documentation": {
930
+ "profile": "minimal-agentic",
931
+ "required": ["docs/spec.md", "docs/architecture/index.md"],
932
+ "on_demand": ["docs/brief.md", "docs/tech-stack.md", "docs/decisions.md", "docs/architecture.md", "docs/packages.md"],
933
+ "reference_configs": ["harness-overview.md", "agentic-development-flow.md", "external-tooling.md", "sprint-contracts.md", "handoff-protocol.md", "document-generation.md", "global-working-rules.md"],
934
+ "reference_source": "user-level-runtime-docs",
935
+ "reference_stub_marker": "<!-- forge: reference-config-stub v1 -->",
936
+ "reference_resolver": "forge docs path <doc-id>",
937
+ "rule": "create optional docs only when the agent has concrete repo evidence or the user asks; docs/reference-configs contains repo-local pointer stubs while full generic runtime docs live in the user-level/package forge install"
938
+ },
939
+ "lsp_profiles": {
940
+ "default": "typescript-lsp",
941
+ "selection": "functional-block-first",
942
+ "rule": "use block-level LSP/tooling hints before broad repo assumptions"
943
+ },
944
+ "worktree_strategy": {
945
+ "auto_on_conflict": true,
946
+ "auto_for_contract_tasks": true,
947
+ "branch_prefix": "codex/",
948
+ "base_branch": "main",
949
+ "worktree_dir_template": "../{{repo}}-wt-{{slug}}",
950
+ "start_script": "scripts/contract-worktree.sh start --plan <plan-file>",
951
+ "finish_script": "scripts/contract-worktree.sh finish",
952
+ "cleanup_script": "scripts/contract-worktree.sh cleanup --slug <slug>",
953
+ "conflict_signals": [
954
+ "dirty_worktree_overlaps_task_files",
955
+ "current_branch_not_suitable_for_task",
956
+ "existing_changes_unrelated_but_would_block_review",
957
+ "task_requires_clean_validation_surface"
958
+ ],
959
+ "validation_route": "waza:check",
960
+ "merge_back": {
961
+ "target": "main",
962
+ "requires_clean_check": true,
963
+ "preserve_unrelated_changes": true
964
+ }
965
+ },
966
+ "upgrade": {
967
+ "strategy_version": 1,
968
+ "supported_legacy_versions": ["pre-tasks-first", "tasks-first-without-contract-manifest", "current-v1"],
969
+ "action_classes": {
970
+ "preserve": "keep user-authored hooks, ignored reference material, private operations state, secrets, and local env files unchanged",
971
+ "archive": "move user-authored legacy workflow documents or checklists into archive/research surfaces before refresh",
972
+ "reconfigure": "merge managed config defaults without overwriting explicit repo overrides",
973
+ "remove": "delete only workflow-contract actions marked ownership=known_generated"
974
+ },
975
+ "cleanup": {
976
+ "source": ".ai/harness/workflow-contract.json#migrations.upgrade.actions",
977
+ "remove_only_ownership": "known_generated",
978
+ "unknown_files": "preserve-or-archive",
979
+ "custom_hooks": "preserve",
980
+ "ignored_reference_material": "preserve",
981
+ "local_operations_state": "preserve",
982
+ "local_secrets": "preserve"
983
+ },
984
+ "reporting": {
985
+ "inspector_field": "upgrade_plan",
986
+ "dry_run_required": true
987
+ }
988
+ },
989
+ "profiles": {
990
+ "orchestration": "shared-long-running-harness",
991
+ "evaluation": "browser-qa",
992
+ "handoff": "artifact-aware",
993
+ "recovery": "hybrid",
994
+ "state": "file-backed"
995
+ },
996
+ "external_tooling": {
997
+ "routing": {
998
+ "complex": "gstack",
999
+ "simple": "waza",
1000
+ "knowledge": "gbrain"
1001
+ },
1002
+ "hosts": [
1003
+ "claude-code",
1004
+ "codex"
1005
+ ],
1006
+ "mode": "agent-readiness-required",
1007
+ "detection": "init-migrate",
1008
+ "readiness_gate": "scripts/check-agent-tooling.sh --host codex --strict-readiness",
1009
+ "waza": {
1010
+ "source_repo": "tw93/Waza",
1011
+ "source_url": "https://github.com/tw93/Waza.git",
1012
+ "managed_skills": ["think", "hunt", "check", "health"],
1013
+ "primary_host": "codex",
1014
+ "codex_primary_path": "~/.codex/skills",
1015
+ "staging_cache_path": "~/.agents/skills",
1016
+ "sync_mode": "stage-upstream-then-copy-to-codex",
1017
+ "host_drift_policy": "report-per-host-version-staging-and-upstream-drift"
1018
+ },
1019
+ "codex_automation_profile": {
1020
+ "required_skills": ["health", "check", "mermaid"],
1021
+ "optional_skills": [],
1022
+ "mode": "codex-runtime-reference",
1023
+ "source": "~/.codex/skills",
1024
+ "routes": {
1025
+ "workflow_health": "waza:health",
1026
+ "review_gate": "waza:check",
1027
+ "architecture_diagram": "mermaid"
1028
+ },
1029
+ "vendoring_policy": "do-not-vendor-skill-body"
1030
+ },
1031
+ "diagram_design": {
1032
+ "skill_name": "mermaid",
1033
+ "primary_host": "codex",
1034
+ "codex_primary_path": "~/.codex/skills/mermaid",
1035
+ "sync_mode": "external-installed-skill",
1036
+ "vendoring_policy": "do-not-vendor"
1037
+ },
1038
+ "gbrain": {
1039
+ "mcp": "candidate-disabled"
1040
+ },
1041
+ "codegraph": {
1042
+ "package": "@colbymchenry/codegraph",
1043
+ "primary_host": "both",
1044
+ "install_mode": "target-aware-mcp",
1045
+ "codex_config_path": "~/.codex/config.toml",
1046
+ "claude_config_path": "~/.claude.json",
1047
+ "index_dir": ".codegraph",
1048
+ "readiness": "required-for-agent-code-navigation",
1049
+ "hook_policy": "do-not-block-hooks",
1050
+ "install_command": "bun add -g @colbymchenry/codegraph && forge tools configure codegraph --target codex --location global",
1051
+ "project_init_command": "codegraph init -i .",
1052
+ "sync_command": "codegraph sync .",
1053
+ "vendoring_policy": "do-not-add-package-dependency"
1054
+ }
1055
+ },
1056
+ "agentic_development": {
1057
+ "routing": {
1058
+ "product_discovery": "gstack:office-hours",
1059
+ "complex_engineering_plan": "gstack:plan-eng-review",
1060
+ "design_plan": "gstack:plan-design-review",
1061
+ "small_or_medium_plan": "waza:think",
1062
+ "bug_or_regression": "waza:hunt",
1063
+ "post_implementation_review": "waza:check"
1064
+ },
1065
+ "due_diligence": {
1066
+ "levels": ["P1_GLOBAL_ARCHITECTURE", "P2_DATA_FLOW_TRACE", "P3_DESIGN_DECISION"],
1067
+ "explicit_report_required_for": ["plan-eng-review", "hunt", "risky_refactor", "deployment", "auth_payment_data", "shared_contract"]
1068
+ }
1069
+ },
1070
+ "enforcement": {
1071
+ "worktree_guard": "warn-by-default",
1072
+ "verification_gate": "contract-and-review",
1073
+ "completion_requires_checks": true
1074
+ }
1075
+ }
1076
+ POLICY_EOF
1077
+ fi
1078
+
1079
+ if [[ ! -f ".ai/harness/brain-manifest.json" ]]; then
1080
+ cat > ".ai/harness/brain-manifest.json" <<'BRAIN_MANIFEST_EOF'
1081
+ {
1082
+ "version": 1,
1083
+ "project": "<project>",
1084
+ "mode": "repo-contract-external-knowledge",
1085
+ "default_brain_path": "brain/<project>/*",
1086
+ "rules": [
1087
+ "repo-local contracts, hooks, scripts, checks, and evidence remain authoritative",
1088
+ "default brain stores long-lived explanations, runbooks, decisions, references, and patterns",
1089
+ "hook runtime may sync explicitly opted-in repo-to-brain entries only; it must not query gbrain, MCP, or unregistered default brain paths"
1090
+ ],
1091
+ "entries": []
1092
+ }
1093
+ BRAIN_MANIFEST_EOF
1094
+ fi
1095
+
1096
+ if [[ ! -f ".ai/context/context-map.json" ]]; then
1097
+ cat > ".ai/context/context-map.json" <<'CONTEXT_EOF'
1098
+ {
1099
+ "version": 1,
1100
+ "profile": "stable-root-progressive-subdir",
1101
+ "functional_block_selector": {
1102
+ "script": "scripts/select-agent-context-blocks.sh",
1103
+ "config_file": ".ai/context/agent-context-blocks.txt",
1104
+ "env": "FORGE_CONTEXT_BLOCKS",
1105
+ "rule": "compatibility selector; capability registry is the source of truth"
1106
+ },
1107
+ "lsp_profiles": {
1108
+ "default": "typescript-lsp",
1109
+ "selection": "functional-block-first"
1110
+ },
1111
+ "root_context_files": [
1112
+ "CLAUDE.md",
1113
+ "AGENTS.md",
1114
+ "docs/spec.md",
1115
+ "tasks/current.md",
1116
+ "tasks/todos.md",
1117
+ "tasks/lessons.md",
1118
+ ".ai/context/capabilities.json",
1119
+ ".ai/harness/policy.json"
1120
+ ],
1121
+ "discoverable_contexts": [
1122
+ {
1123
+ "path": "docs/reference-configs/*.md",
1124
+ "priority": "low",
1125
+ "char_budget": 900,
1126
+ "purpose": "deep-doc"
1127
+ },
1128
+ {
1129
+ "path": "tasks/workstreams/**/*.md",
1130
+ "priority": "high",
1131
+ "char_budget": 1200,
1132
+ "purpose": "capability-workstream"
1133
+ }
1134
+ ],
1135
+ "budgets": {
1136
+ "root_total_chars": 12000,
1137
+ "per_discoverable_file_chars": 1200
1138
+ }
1139
+ }
1140
+ CONTEXT_EOF
1141
+ fi
1142
+ }
1143
+
1144
+ slug=""
1145
+ title=""
1146
+ new_plan=0
1147
+
1148
+ while [[ $# -gt 0 ]]; do
1149
+ case "$1" in
1150
+ --new-plan)
1151
+ new_plan=1
1152
+ shift
1153
+ ;;
1154
+ --slug)
1155
+ [[ -n "${2:-}" ]] || { echo "Error: --slug requires a value" >&2; usage; exit 1; }
1156
+ slug="$2"
1157
+ shift 2
1158
+ ;;
1159
+ --title)
1160
+ [[ -n "${2:-}" ]] || { echo "Error: --title requires a value" >&2; usage; exit 1; }
1161
+ title="$2"
1162
+ shift 2
1163
+ ;;
1164
+ --help|-h)
1165
+ usage
1166
+ exit 0
1167
+ ;;
1168
+ *)
1169
+ echo "Unknown argument: $1" >&2
1170
+ usage
1171
+ exit 1
1172
+ ;;
1173
+ esac
1174
+ done
1175
+
1176
+ ensure_templates
1177
+ ensure_auxiliary_files
1178
+ ensure_idle_todo
1179
+ ensure_current_status_snapshot
1180
+
1181
+ active_plan="$(get_active_plan || true)"
1182
+ if [[ -n "$active_plan" && "$new_plan" -eq 0 ]]; then
1183
+ echo "Workflow ready. Active plan: $active_plan"
1184
+ exit 0
1185
+ fi
1186
+
1187
+ if [[ ! -f "docs/spec.md" ]]; then
1188
+ if [[ -x "scripts/new-spec.sh" ]]; then
1189
+ bash "scripts/new-spec.sh"
1190
+ fi
1191
+ fi
1192
+
1193
+ if [[ -z "$slug" ]]; then
1194
+ if [[ "$new_plan" -eq 1 ]]; then
1195
+ echo "--new-plan requires --slug" >&2
1196
+ exit 1
1197
+ fi
1198
+ echo "Workflow ready. No active plan present."
1199
+ echo "Create one with: bash scripts/ensure-task-workflow.sh --slug <slug> --title <title>"
1200
+ exit 0
1201
+ fi
1202
+
1203
+ slug="$(normalize_slug "$slug")"
1204
+ if [[ -z "$slug" ]]; then
1205
+ echo "Slug is empty after normalization" >&2
1206
+ exit 1
1207
+ fi
1208
+
1209
+ if [[ -z "$title" ]]; then
1210
+ title="$slug"
1211
+ fi
1212
+
1213
+ if [[ -x "scripts/new-plan.sh" ]]; then
1214
+ bash "scripts/new-plan.sh" --slug "$slug" --title "$title"
1215
+ else
1216
+ echo "Missing scripts/new-plan.sh" >&2
1217
+ exit 1
1218
+ fi