@moretea-labs/forge 1.7.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/AGENTS.md +58 -62
  2. package/CHANGELOG.md +39 -0
  3. package/CLAUDE.md +42 -62
  4. package/README.md +2 -2
  5. package/SKILL.md +0 -1
  6. package/THIRD_PARTY_NOTICES.md +5 -2
  7. package/adapters/browser/index.ts +2 -0
  8. package/adapters/chatgpt/browser-delivery-host.ts +71 -0
  9. package/adapters/chatgpt/browser-delivery-runtime.ts +783 -0
  10. package/adapters/chatgpt/controller-binding-store.ts +55 -0
  11. package/adapters/chatgpt/controller-host.ts +119 -0
  12. package/adapters/chatgpt/controller-round-host.ts +78 -0
  13. package/adapters/chatgpt/controller-round-settlement-store.ts +45 -0
  14. package/adapters/chatgpt/provider-delivery.ts +113 -0
  15. package/adapters/chatgpt/work-conversation-binding-store.ts +192 -0
  16. package/adapters/chatgpt/wsl-bridge-delivery-host.ts +63 -0
  17. package/adapters/computer/desktop-operator-contract.ts +7 -0
  18. package/adapters/computer/desktop-operator-discovery.ts +201 -0
  19. package/adapters/computer/desktop-operator-negotiation.ts +174 -0
  20. package/adapters/computer/desktop-operator-provider.ts +312 -0
  21. package/adapters/computer/index.ts +1 -0
  22. package/adapters/computer/interaction-target-authority.ts +944 -0
  23. package/adapters/controller-process/binding-store.ts +34 -0
  24. package/adapters/controller-process/controller-host.ts +26 -0
  25. package/adapters/mcp/access-mode.ts +132 -0
  26. package/adapters/mcp/audit.ts +32 -0
  27. package/adapters/mcp/auth.ts +407 -0
  28. package/adapters/mcp/controller-round-compatibility.ts +184 -0
  29. package/adapters/mcp/frozen-client-semantic-compatibility.ts +292 -0
  30. package/adapters/mcp/instructions.ts +36 -0
  31. package/adapters/mcp/legacy-context.ts +18 -0
  32. package/adapters/mcp/multi-repository.ts +437 -0
  33. package/adapters/mcp/oauth.ts +391 -0
  34. package/adapters/mcp/paths.ts +140 -0
  35. package/adapters/mcp/policy.ts +232 -0
  36. package/adapters/mcp/proxy-env.ts +62 -0
  37. package/adapters/mcp/readiness-projection.ts +24 -0
  38. package/adapters/mcp/redaction.ts +21 -0
  39. package/adapters/mcp/repo.ts +24 -0
  40. package/adapters/mcp/runtime-gateway/artifact-adapter.ts +52 -0
  41. package/adapters/mcp/runtime-gateway/context-adapter.ts +829 -0
  42. package/adapters/mcp/runtime-gateway/controller-authority-adapter.ts +191 -0
  43. package/adapters/mcp/runtime-gateway/engineering-preconditions.ts +147 -0
  44. package/adapters/mcp/runtime-gateway/execution-control-adapter.ts +28 -0
  45. package/adapters/mcp/runtime-gateway/execution-tools.ts +207 -0
  46. package/adapters/mcp/runtime-gateway/filesystem-adapter.ts +38 -0
  47. package/adapters/mcp/runtime-gateway/gateway-execution-adapter.ts +411 -0
  48. package/adapters/mcp/runtime-gateway/legacy-ios-tool-adapter.ts +105 -0
  49. package/adapters/mcp/runtime-gateway/maintenance-adapter.ts +44 -0
  50. package/adapters/mcp/runtime-gateway/model-adapter.ts +63 -0
  51. package/adapters/mcp/runtime-gateway/persisted-check-process.ts +3 -0
  52. package/adapters/mcp/runtime-gateway/plugin-adapter.ts +308 -0
  53. package/adapters/mcp/runtime-gateway/process-tools.ts +289 -0
  54. package/adapters/mcp/runtime-gateway/protected-computer-adapter.ts +76 -0
  55. package/adapters/mcp/runtime-gateway/recovery-adapter.ts +268 -0
  56. package/adapters/mcp/runtime-gateway/recovery-client-adapter.ts +70 -0
  57. package/adapters/mcp/runtime-gateway/recovery-tool-contract.ts +99 -0
  58. package/adapters/mcp/runtime-gateway/repository-compat-adapter.ts +110 -0
  59. package/adapters/mcp/runtime-gateway/result-adapter.ts +108 -0
  60. package/adapters/mcp/runtime-gateway/router.ts +728 -0
  61. package/adapters/mcp/runtime-gateway/runtime-observation-adapter.ts +1251 -0
  62. package/adapters/mcp/runtime-gateway/runtime-tool-definitions.ts +634 -0
  63. package/adapters/mcp/runtime-gateway/runtime-tool-shared.ts +27 -0
  64. package/adapters/mcp/runtime-gateway/runtime-tools.ts +68 -0
  65. package/adapters/mcp/runtime-gateway/scheduler-adapter.ts +186 -0
  66. package/adapters/mcp/runtime-gateway/shared-adapter.ts +25 -0
  67. package/adapters/mcp/runtime-gateway/status-inbox-adapter.ts +870 -0
  68. package/adapters/mcp/runtime-gateway/work-adapter.ts +3186 -0
  69. package/adapters/mcp/runtime-gateway/work-compat-adapter.ts +502 -0
  70. package/adapters/mcp/runtime-gateway/work-validation-reconciler.ts +1 -0
  71. package/adapters/mcp/server.ts +1048 -0
  72. package/adapters/mcp/setup.ts +791 -0
  73. package/adapters/mcp/tool-capability-cache.ts +87 -0
  74. package/adapters/mcp/tool-mapping/access-tools.ts +387 -0
  75. package/adapters/mcp/tool-mapping/legacy-tool-service.ts +5265 -0
  76. package/adapters/mcp/tool-mapping/post-finalize-work-attribution.ts +150 -0
  77. package/adapters/mcp/tool-mapping/repository-tools.ts +1691 -0
  78. package/adapters/mcp/tool-mapping/tools.ts +9 -0
  79. package/adapters/mcp/tool-mapping/umbrella-tools.ts +117 -0
  80. package/adapters/mcp/toolset-names.ts +74 -0
  81. package/adapters/mcp/toolset-selection.ts +41 -0
  82. package/adapters/mcp/toolset.ts +336 -0
  83. package/adapters/mcp/transports/http.ts +1456 -0
  84. package/adapters/mcp/transports/session-registry.ts +513 -0
  85. package/adapters/mcp/transports/stdio.ts +8 -0
  86. package/adapters/mcp/tunnels/openai-secure-tunnel.ts +139 -0
  87. package/adapters/mcp/types.ts +41 -0
  88. package/assets/AGENTS.md +2 -16
  89. package/assets/CLAUDE.md +2 -16
  90. package/assets/hooks/AGENTS.md +3 -14
  91. package/assets/hooks/CLAUDE.md +3 -14
  92. package/assets/hooks/hook-input.sh +9 -2
  93. package/assets/hooks/lib/workflow-state.sh +28 -10
  94. package/assets/hooks/prompt-guard.sh +63 -37
  95. package/assets/hooks/security-sentinel.sh +2 -1
  96. package/assets/hooks/session-start-context.sh +7 -5
  97. package/assets/hooks/stop-orchestrator.sh +13 -3
  98. package/assets/initializer-question-pack.v4.json +11 -7
  99. package/assets/partials/05-workflow.partial.md +18 -73
  100. package/assets/partials/07-footer.partial.md +1 -1
  101. package/assets/partials-agents/02-operating-mode.partial.md +1 -2
  102. package/assets/partials-agents/04-task-protocol.partial.md +14 -59
  103. package/assets/partials-agents/06-quality-safety.partial.md +11 -16
  104. package/assets/partials-agents/08-deep-docs.partial.md +1 -2
  105. package/assets/plan-map.json +11 -11
  106. package/assets/plugin-registry.v1.json +9 -3
  107. package/assets/plugin-trust-policy.v1.json +6 -0
  108. package/assets/recovery/ForgeRecovery.ps1 +100 -0
  109. package/assets/recovery/forge-wsl-rescue +271 -0
  110. package/assets/reference-configs/development-protocol.md +11 -15
  111. package/assets/reference-configs/document-generation.md +1 -1
  112. package/assets/reference-configs/global-working-rules.md +9 -1
  113. package/assets/reference-configs/harness-overview.md +22 -112
  114. package/assets/reference-configs/hook-operations.md +1 -1
  115. package/assets/reference-configs/sprint-contracts.md +2 -2
  116. package/assets/skill-version.json +2 -2
  117. package/assets/templates/helpers/architecture-event.ts +3 -34
  118. package/assets/templates/helpers/architecture-queue.sh +61 -10
  119. package/assets/templates/helpers/archive-workflow.sh +90 -180
  120. package/assets/templates/helpers/capability-config.ts +8 -11
  121. package/assets/templates/helpers/capability-resolver.ts +37 -19
  122. package/assets/templates/helpers/capture-plan.sh +2 -2
  123. package/assets/templates/helpers/check-architecture-sync.sh +1 -9
  124. package/assets/templates/helpers/check-task-sync.sh +82 -11
  125. package/assets/templates/helpers/check-task-workflow.sh +1 -3
  126. package/assets/templates/helpers/context-contract-sync.sh +1 -12
  127. package/assets/templates/helpers/contract-worktree.sh +26 -24
  128. package/assets/templates/helpers/ensure-task-workflow.sh +6 -8
  129. package/assets/templates/helpers/inspect-project-state.ts +1 -1
  130. package/assets/templates/helpers/migrate-project-template.sh +1 -1
  131. package/assets/templates/helpers/migrate-workflow-docs.ts +53 -239
  132. package/assets/templates/helpers/new-plan.sh +2 -2
  133. package/assets/templates/helpers/plan-to-todo.sh +3 -31
  134. package/assets/templates/helpers/sprint-backlog.sh +1 -1
  135. package/assets/templates/helpers/switch-plan.sh +1 -1
  136. package/assets/templates/helpers/workflow-contract.ts +1 -0
  137. package/assets/workflow-contract.v1.json +63 -171
  138. package/assets/workflows/xiaohongshu/xiaohongshu.collect-metrics.v1.draft.json +118 -0
  139. package/assets/workflows/xiaohongshu/xiaohongshu.publish-image-note.v1.draft.json +316 -0
  140. package/assets/workflows/xiaohongshu/xiaohongshu.publish-long-text.v1.draft.json +324 -0
  141. package/docs/architecture/CURRENT.md +148 -13
  142. package/docs/architecture/EVOLUTION.md +13 -0
  143. package/docs/architecture/decisions/20260801-controller-home-sqlite-state.md +2 -1
  144. package/docs/architecture/decisions/20260831-independent-windows-wsl-host-rescue.md +59 -0
  145. package/docs/architecture/decisions/20260904-ios-device-migration-baseline.md +120 -0
  146. package/docs/architecture/decisions/20260904-repository-runtime-data-boundary.md +42 -0
  147. package/docs/architecture/decisions/20260907-assistant-learning-loop.md +35 -0
  148. package/docs/architecture/decisions/20260907-controller-round-transition-policy.md +296 -0
  149. package/docs/architecture/decisions/20260907-maintenance-diagnosis-bounded-read.md +39 -0
  150. package/docs/architecture/domains/verification.md +7 -0
  151. package/docs/architecture/domains/workflow-engine.md +1 -1
  152. package/docs/architecture/index.md +3 -3
  153. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +19 -8
  154. package/docs/architecture/requests/2026-09-04-computer-plugin-workflow-taxonomy.md +124 -0
  155. package/docs/forge-chatgpt-mcp-setup.md +5 -3
  156. package/docs/forge-plugin-management.md +20 -4
  157. package/docs/forge-runtime-self-healing-loop.md +2 -0
  158. package/docs/operations/benchmark-cross-version-freeze.md +38 -0
  159. package/docs/operations/controller-browser-plugin.md +3 -1
  160. package/docs/operations/homebrew.md +2 -2
  161. package/docs/operations/platform-support.md +16 -8
  162. package/docs/operations/platform-support.zh-CN.md +2 -2
  163. package/docs/operations/standalone-disaster-recovery.md +26 -1
  164. package/docs/operations/uu-remote-rescue.md +41 -0
  165. package/docs/operations/windows-wsl-host-rescue.md +133 -0
  166. package/docs/public-usage-guide.md +1 -1
  167. package/docs/public-usage-guide.zh-CN.md +1 -1
  168. package/docs/tutorials/01-install-and-start.md +1 -1
  169. package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
  170. package/docs/tutorials/02-connect-chatgpt.md +4 -4
  171. package/docs/tutorials/02-connect-chatgpt.zh-CN.md +4 -4
  172. package/docs/wiki/Implementation.md +1 -1
  173. package/package.json +23 -14
  174. package/packages/kernel/controller/api/index.ts +2 -0
  175. package/packages/kernel/controller/application/controller-round-service.ts +29 -0
  176. package/packages/kernel/controller/application/controller-service.ts +30 -0
  177. package/packages/kernel/controller/domain/controller-round-transition-policy.ts +308 -0
  178. package/packages/kernel/controller/domain/controller-round.ts +107 -0
  179. package/packages/kernel/controller/domain/execution-quality.ts +133 -0
  180. package/packages/kernel/controller/domain/types.ts +56 -0
  181. package/packages/kernel/controller/index.ts +1 -0
  182. package/packages/kernel/controller/infrastructure/controller-binding-store.ts +84 -0
  183. package/packages/kernel/controller/infrastructure/controller-round-store.ts +1384 -0
  184. package/packages/kernel/controller/infrastructure/controller-session-store.ts +578 -0
  185. package/packages/kernel/controller/ports/controller-host.ts +16 -0
  186. package/packages/kernel/goal/api/index.ts +1 -0
  187. package/packages/kernel/goal/domain/types.ts +40 -0
  188. package/packages/kernel/goal/index.ts +1 -0
  189. package/packages/kernel/identity/api/index.ts +5 -0
  190. package/packages/kernel/identity/application/identity-service.ts +67 -0
  191. package/packages/kernel/identity/domain/scope.ts +63 -0
  192. package/packages/kernel/identity/domain/semantic-sync.ts +81 -0
  193. package/packages/kernel/identity/domain/types.ts +44 -0
  194. package/packages/kernel/identity/domain/workspace.ts +56 -0
  195. package/packages/kernel/identity/index.ts +1 -0
  196. package/packages/kernel/identity/infrastructure/identity-store.ts +75 -0
  197. package/packages/kernel/memory/api/index.ts +5 -0
  198. package/packages/kernel/memory/application/experience-service.ts +118 -0
  199. package/packages/kernel/memory/application/outcome-service.ts +77 -0
  200. package/packages/kernel/memory/domain/experience.ts +103 -0
  201. package/packages/kernel/memory/domain/operational-prior.ts +92 -0
  202. package/packages/kernel/memory/index.ts +1 -0
  203. package/packages/kernel/progression/api/index.ts +2 -0
  204. package/packages/kernel/progression/application/projector.ts +211 -0
  205. package/packages/kernel/progression/domain/types.ts +116 -0
  206. package/packages/kernel/progression/index.ts +1 -0
  207. package/packages/kernel/scheduler/api/index.ts +6 -0
  208. package/packages/kernel/scheduler/application/continuation-service.ts +212 -0
  209. package/packages/kernel/scheduler/application/eligibility.ts +252 -0
  210. package/packages/kernel/scheduler/application/schedule-service.ts +24 -0
  211. package/packages/kernel/scheduler/application/settlement.ts +197 -0
  212. package/packages/kernel/scheduler/domain/continuation.ts +38 -0
  213. package/packages/kernel/scheduler/domain/schedule.ts +149 -0
  214. package/packages/kernel/scheduler/index.ts +1 -0
  215. package/packages/kernel/scheduler/infrastructure/continuation-dispatch-store.ts +38 -0
  216. package/packages/kernel/scheduler/infrastructure/schedule-store.ts +785 -0
  217. package/packages/kernel/work/api/index.ts +15 -0
  218. package/packages/kernel/work/application/work-service.ts +148 -0
  219. package/packages/kernel/work/domain/admission-policy.ts +34 -0
  220. package/packages/kernel/work/domain/check-receipt.ts +43 -0
  221. package/packages/kernel/work/domain/context-closure-receipt.ts +32 -0
  222. package/packages/kernel/work/domain/engineering-contracts.ts +157 -0
  223. package/packages/kernel/work/domain/engineering-design.ts +281 -0
  224. package/packages/kernel/work/domain/engineering-profile.ts +242 -0
  225. package/packages/kernel/work/domain/execution-concurrency.ts +254 -0
  226. package/packages/kernel/work/domain/execution-snapshot.ts +33 -0
  227. package/packages/kernel/work/domain/implementation-review.ts +510 -0
  228. package/packages/kernel/work/domain/project-engineering-contract.ts +202 -0
  229. package/packages/kernel/work/domain/repository-completion-receipt.ts +73 -0
  230. package/packages/kernel/work/domain/state-machine.ts +259 -0
  231. package/packages/kernel/work/domain/types.ts +528 -0
  232. package/packages/kernel/work/index.ts +1 -0
  233. package/packages/kernel/work/infrastructure/work-contract-store.ts +1876 -0
  234. package/packages/kernel/work/ports/work-contract-store.ts +18 -0
  235. package/packages/plugin-runtime/browser/index.ts +3 -0
  236. package/packages/plugin-runtime/browser/provider-registry.ts +110 -0
  237. package/packages/plugin-runtime/browser/runtime-contract.ts +150 -0
  238. package/packages/plugin-runtime/browser/session-authority.ts +61 -0
  239. package/packages/plugin-runtime/computer/index.ts +6 -0
  240. package/packages/plugin-runtime/computer/provider-error.ts +26 -0
  241. package/packages/plugin-runtime/computer/provider-registration.ts +52 -0
  242. package/packages/plugin-runtime/computer/provider-registry.ts +63 -0
  243. package/packages/plugin-runtime/computer/provider.ts +19 -0
  244. package/packages/plugin-runtime/computer/target-authority.ts +190 -0
  245. package/packages/plugin-runtime/computer/target-persistence.ts +54 -0
  246. package/packages/plugin-runtime/external/index.ts +1 -0
  247. package/packages/plugin-runtime/external/unix-jsonl-transport.ts +457 -0
  248. package/packages/plugin-runtime/index.ts +3 -0
  249. package/packages/protocols/browser/index.ts +1 -0
  250. package/packages/protocols/browser/session.ts +98 -0
  251. package/packages/protocols/computer/contract.ts +199 -0
  252. package/packages/protocols/computer/index.ts +1 -0
  253. package/packages/protocols/failure/contract.ts +158 -0
  254. package/packages/protocols/failure/index.ts +1 -0
  255. package/packages/protocols/handoff/index.ts +1 -0
  256. package/packages/protocols/handoff/status.ts +22 -0
  257. package/packages/protocols/mcp/execution-context.ts +11 -0
  258. package/packages/protocols/mcp/index.ts +2 -0
  259. package/packages/protocols/mcp/tool-contract.ts +42 -0
  260. package/packages/workflow-runtime/api/index.ts +2 -0
  261. package/packages/workflow-runtime/application/interpreter.ts +342 -0
  262. package/packages/workflow-runtime/domain/workflow-asset.ts +223 -0
  263. package/packages/workflow-runtime/index.ts +1 -0
  264. package/scripts/assemble-template.ts +1 -1
  265. package/scripts/benchmark-computer-hotpath.ts +255 -0
  266. package/scripts/benchmark-controller-round2.ts +54 -2
  267. package/scripts/benchmark-ios-agent-device.ts +3 -6
  268. package/scripts/benchmark-mcp-transport.ts +3 -4
  269. package/scripts/benchmark-operational-memory-activation.ts +235 -0
  270. package/scripts/benchmark-operational-shadow.ts +28 -0
  271. package/scripts/bootstrap-runtime-maintenance-recovery.sh +4 -1
  272. package/scripts/canary-chatgpt-provider-delivery.ts +97 -0
  273. package/scripts/canary-controller-semantic-wait.ts +195 -0
  274. package/scripts/canary-global-hook.sh +2 -2
  275. package/scripts/check-mcp-compatibility.ts +173 -7
  276. package/scripts/check-platform-support.mjs +28 -2
  277. package/scripts/check-public-docs.sh +1 -1
  278. package/scripts/check-release-readiness.sh +1 -1
  279. package/scripts/check-repository-hygiene.mjs +92 -0
  280. package/scripts/check-runtime-architecture.mjs +1206 -95
  281. package/scripts/check-source-duplication.mjs +9 -1
  282. package/scripts/check-tarball-install-smoke.sh +98 -15
  283. package/scripts/controller-ngrok-rotation.sh +5 -4
  284. package/scripts/create-project-dirs.sh +10 -74
  285. package/scripts/forge-local-recovery-helper.mjs +204 -0
  286. package/scripts/forge-uu-remote-rescue-helper.d.mts +31 -0
  287. package/scripts/forge-uu-remote-rescue-helper.mjs +409 -0
  288. package/scripts/forge-windows-host-recovery-helper.mjs +136 -0
  289. package/scripts/hook-shim.sh +2 -2
  290. package/scripts/init-project.sh +12 -70
  291. package/scripts/install-desktop-operator-registration.ts +4 -2
  292. package/scripts/install-independent-windows-wsl-recovery.ts +125 -0
  293. package/scripts/install-standalone-recovery.ts +122 -10
  294. package/scripts/install-uu-remote-rescue-registration.ts +74 -0
  295. package/scripts/install-windows-host-recovery-registration.ts +22 -0
  296. package/scripts/lib/controller-home-env.sh +6 -3
  297. package/scripts/lib/project-init-lib.sh +39 -582
  298. package/scripts/migrate-chatgpt-automation-schedules.ts +2 -2
  299. package/scripts/migrate-windows-wsl-controller-home.ts +306 -0
  300. package/scripts/open-source-audit-allowlist.txt +12 -1
  301. package/scripts/portability-bindings.mjs +70 -0
  302. package/scripts/run-bounded-command.mjs +55 -0
  303. package/scripts/run-bun-test-file.ts +22 -6
  304. package/scripts/run-governed-gate.ts +4 -1
  305. package/scripts/smoke-mcp-http-runtime.ts +1 -1
  306. package/scripts/smoke-runtime-recovery.ts +34 -1
  307. package/scripts/smoke-schedule-engine.ts +1 -1
  308. package/scripts/stage-runtime-release.ts +6 -1
  309. package/scripts/test-governance.ts +51 -2
  310. package/src/cli/agent-jobs/job-manager.ts +10 -1
  311. package/src/cli/chatgpt-browser/bind-server.ts +2 -1
  312. package/src/cli/chatgpt-browser/binding.ts +20 -10
  313. package/src/cli/chatgpt-browser/bridge-extension.ts +75 -0
  314. package/src/cli/chatgpt-browser/bridge-provider.ts +376 -11
  315. package/src/cli/chatgpt-browser/engine.ts +10 -11
  316. package/src/cli/chatgpt-browser/native-provider.ts +24 -83
  317. package/src/cli/chatgpt-browser/oracle-provider.ts +5 -3
  318. package/src/cli/chatgpt-browser/types.ts +1 -0
  319. package/src/cli/commands/bootstrap-control.ts +334 -0
  320. package/src/cli/commands/brain-assistant.ts +38 -0
  321. package/src/cli/commands/brain.ts +193 -40
  322. package/src/cli/commands/chatgpt.ts +127 -0
  323. package/src/cli/commands/computer.ts +437 -0
  324. package/src/cli/commands/doctor.ts +18 -1
  325. package/src/cli/commands/init-hook.ts +71 -61
  326. package/src/cli/commands/init.ts +3 -1
  327. package/src/cli/commands/mcp.ts +16 -10
  328. package/src/cli/commands/plugin.ts +38 -12
  329. package/src/cli/commands/recovery.ts +493 -80
  330. package/src/cli/commands/runtime.ts +9 -4
  331. package/src/cli/commands/setup-profile.ts +89 -39
  332. package/src/cli/commands/status.ts +2 -1
  333. package/src/cli/controller/check-runner.ts +487 -98
  334. package/src/cli/controller/context/types.ts +7 -1
  335. package/src/cli/controller/context-pack.ts +23 -3
  336. package/src/cli/controller/issue-store.ts +1 -1
  337. package/src/cli/controller/systemd-user.ts +110 -0
  338. package/src/cli/controller/types.ts +10 -70
  339. package/src/cli/controller/worklog.ts +67 -13
  340. package/src/cli/editing/edit-operation-contract.ts +92 -0
  341. package/src/cli/editing/edit-session.ts +289 -13
  342. package/src/cli/github/plugin.ts +17 -12
  343. package/src/cli/hook/route-registry.ts +3 -5
  344. package/src/cli/hook/runtime.ts +49 -3
  345. package/src/cli/index.ts +3 -0
  346. package/src/cli/local-bridge/connector-freshness.ts +2 -2
  347. package/src/cli/local-bridge/console-automations.ts +2 -2
  348. package/src/cli/local-bridge/facade-api.ts +41 -14
  349. package/src/cli/local-bridge/job-store.ts +1 -1
  350. package/src/cli/local-bridge/server.ts +24 -27
  351. package/src/cli/mcp/access-mode.ts +2 -132
  352. package/src/cli/mcp/access-tools.ts +2 -387
  353. package/src/cli/mcp/audit.ts +2 -32
  354. package/src/cli/mcp/auth.ts +2 -404
  355. package/src/cli/mcp/instructions.ts +2 -34
  356. package/src/cli/mcp/legacy-context.ts +2 -16
  357. package/src/cli/mcp/legacy-tool-service.ts +2 -5308
  358. package/src/cli/mcp/multi-repository.ts +2 -436
  359. package/src/cli/mcp/oauth.ts +2 -375
  360. package/src/cli/mcp/openai-secure-tunnel.ts +2 -0
  361. package/src/cli/mcp/paths.ts +2 -140
  362. package/src/cli/mcp/policy.ts +2 -232
  363. package/src/cli/mcp/post-finalize-work-attribution.ts +2 -150
  364. package/src/cli/mcp/proxy-env.ts +2 -62
  365. package/src/cli/mcp/readiness-projection.ts +2 -24
  366. package/src/cli/mcp/redaction.ts +2 -21
  367. package/src/cli/mcp/repo.ts +2 -24
  368. package/src/cli/mcp/repository-tools.ts +2 -1585
  369. package/src/cli/mcp/server.ts +2 -951
  370. package/src/cli/mcp/setup.ts +2 -737
  371. package/src/cli/mcp/tool-capability-cache.ts +2 -87
  372. package/src/cli/mcp/tool-contract.ts +2 -14
  373. package/src/cli/mcp/tools.ts +2 -9
  374. package/src/cli/mcp/toolset-names.ts +2 -70
  375. package/src/cli/mcp/toolset-selection.ts +2 -41
  376. package/src/cli/mcp/toolset.ts +2 -336
  377. package/src/cli/mcp/transports/AGENTS.md +1 -10
  378. package/src/cli/mcp/transports/CLAUDE.md +1 -10
  379. package/src/cli/mcp/transports/http.ts +2 -1414
  380. package/src/cli/mcp/transports/session-registry.ts +2 -490
  381. package/src/cli/mcp/transports/stdio.ts +2 -8
  382. package/src/cli/mcp/types.ts +2 -41
  383. package/src/cli/mcp/umbrella-tools.ts +2 -117
  384. package/src/cli/repositories/command-executor.ts +64 -18
  385. package/src/cli/repositories/command-scope.ts +117 -1
  386. package/src/cli/repositories/controller-home.ts +119 -1
  387. package/src/cli/repositories/identity.ts +13 -0
  388. package/src/cli/repositories/registry.ts +68 -49
  389. package/src/cli/repositories/repository-snapshot.ts +53 -7
  390. package/src/cli/repositories/runtime-storage.ts +27 -2
  391. package/src/cli/repositories/safe-patch.ts +34 -38
  392. package/src/cli/repositories/selected-path-actions.ts +22 -2
  393. package/src/cli/repositories/structured-git.ts +105 -25
  394. package/src/cli/runtime/helper-runner.ts +7 -0
  395. package/src/cli/runtime-invocation.ts +8 -1
  396. package/src/cli/tools/codegraph.ts +44 -25
  397. package/src/core/adoption/manifest-templates.ts +1 -1
  398. package/src/core/adoption/plan.ts +3 -26
  399. package/src/core/adoption/workflow-contract-plan.ts +17 -9
  400. package/src/effects/process-runner.ts +8 -14
  401. package/src/runtime/context/assistant-context.ts +154 -0
  402. package/src/runtime/context/assistant-work-context.ts +147 -0
  403. package/src/runtime/context/codegraph-cache-boundary.ts +255 -0
  404. package/src/runtime/context/codegraph-read-provider.ts +55 -22
  405. package/src/runtime/context/codegraph-sidecar.cjs +8 -1
  406. package/src/runtime/context/context-closure.ts +268 -0
  407. package/src/runtime/context/context-plane.ts +211 -0
  408. package/src/runtime/context/project-engineering-contract.ts +60 -0
  409. package/src/runtime/control-plane/bootstrap/capability-provider.ts +74 -0
  410. package/src/runtime/control-plane/bootstrap/control-api.ts +57 -0
  411. package/src/runtime/control-plane/bootstrap/index.ts +5 -0
  412. package/src/runtime/control-plane/bootstrap/state-machine.ts +141 -0
  413. package/src/runtime/control-plane/bootstrap/store.ts +21 -0
  414. package/src/runtime/control-plane/bootstrap/types.ts +87 -0
  415. package/src/runtime/control-plane/cleanup-artifact-retention.ts +328 -0
  416. package/src/runtime/control-plane/codegraph-cache-retention.ts +164 -0
  417. package/src/runtime/control-plane/concurrency/work-execution-concurrency.ts +320 -0
  418. package/src/runtime/control-plane/execution/content-equivalent-commit-authority.ts +169 -0
  419. package/src/runtime/control-plane/execution/controller-authority-recovery.ts +350 -0
  420. package/src/runtime/control-plane/execution/direct-canonical-work-reconciliation.ts +85 -0
  421. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +417 -100
  422. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +103 -15
  423. package/src/runtime/control-plane/execution/implementation-review-content.ts +95 -0
  424. package/src/runtime/control-plane/execution/repository-work-attribution.ts +2 -2
  425. package/src/runtime/control-plane/execution/retained-work-resume.ts +336 -6
  426. package/src/runtime/control-plane/execution/validation.ts +28 -3
  427. package/src/runtime/control-plane/execution/work-authority-reconciler.ts +116 -0
  428. package/src/runtime/control-plane/execution/work-completion-authority.ts +44 -2
  429. package/src/runtime/control-plane/execution/work-evidence-policy.ts +34 -3
  430. package/src/runtime/control-plane/execution/work-execution-support.ts +42 -22
  431. package/src/runtime/control-plane/execution/work-finalization-service.ts +1103 -166
  432. package/src/runtime/control-plane/execution/work-handle-authority.ts +267 -16
  433. package/src/runtime/control-plane/execution/work-handle-store.ts +77 -0
  434. package/src/runtime/control-plane/execution/work-head-settlement.ts +75 -0
  435. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +145 -23
  436. package/src/runtime/control-plane/execution/work-operation-service.ts +49 -13
  437. package/src/runtime/control-plane/execution/work-preparation-service.ts +31 -15
  438. package/src/runtime/control-plane/execution/work-remote-delivery.ts +1 -1
  439. package/src/runtime/control-plane/execution/work-task-receipt.ts +20 -1
  440. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +407 -76
  441. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +88 -18
  442. package/src/runtime/control-plane/execution/work-verification-context.ts +1 -1
  443. package/src/runtime/control-plane/execution/work-verification-service.ts +258 -4
  444. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +200 -15
  445. package/src/runtime/control-plane/facade/capability-registry.ts +21 -10
  446. package/src/runtime/control-plane/facade/controller-round-relay.ts +3 -1118
  447. package/src/runtime/control-plane/facade/controller-session-store.ts +2 -488
  448. package/src/runtime/control-plane/facade/goal-workloop-access.ts +6 -3
  449. package/src/runtime/control-plane/facade/goal-workloop.ts +972 -137
  450. package/src/runtime/control-plane/facade/handoff-inbox-application.ts +158 -0
  451. package/src/runtime/control-plane/facade/handoff-inbox-store.ts +10 -0
  452. package/src/runtime/control-plane/facade/index.ts +4 -2
  453. package/src/runtime/control-plane/facade/operation-digest.ts +22 -58
  454. package/src/runtime/control-plane/facade/plan-contract-store.ts +1004 -38
  455. package/src/runtime/control-plane/facade/repository-work-admission.ts +19 -1
  456. package/src/runtime/control-plane/facade/requirement-authority.ts +218 -0
  457. package/src/runtime/control-plane/facade/requirement-board.ts +6 -1
  458. package/src/runtime/control-plane/facade/rh-work-operation-contract.ts +48 -0
  459. package/src/runtime/control-plane/facade/semantic-admission.ts +8 -16
  460. package/src/runtime/control-plane/facade/suggested-actions.ts +4 -1
  461. package/src/runtime/control-plane/facade/types.ts +189 -532
  462. package/src/runtime/control-plane/facade/work-admission-policy.ts +84 -35
  463. package/src/runtime/control-plane/facade/work-contract-store.ts +2 -1043
  464. package/src/runtime/control-plane/facade/work-implementation-review.ts +2 -0
  465. package/src/runtime/control-plane/facade/work-state-machine.ts +2 -250
  466. package/src/runtime/control-plane/generated-cache-retention.ts +239 -18
  467. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +12 -1
  468. package/src/runtime/control-plane/global-scheduler/maintenance.ts +76 -13
  469. package/src/runtime/control-plane/global-scheduler/periodic-cleanup-entry.ts +55 -0
  470. package/src/runtime/control-plane/global-scheduler/periodic-cleanup-process.ts +98 -0
  471. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +1 -1
  472. package/src/runtime/control-plane/global-scheduler/scheduler-worker-entry.ts +10 -0
  473. package/src/runtime/control-plane/global-scheduler/scheduler.ts +173 -81
  474. package/src/runtime/control-plane/global-scheduler/worker-launch.ts +18 -6
  475. package/src/runtime/control-plane/launcher/chatgpt-round-continuation.ts +397 -0
  476. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +2 -177
  477. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +301 -560
  478. package/src/runtime/control-plane/launcher/provider-mcp-bootstrap.ts +20 -4
  479. package/src/runtime/control-plane/launcher/thin-launcher.ts +50 -4
  480. package/src/runtime/control-plane/lifecycle-retention-metrics.ts +60 -0
  481. package/src/runtime/control-plane/persistence/experience-store.ts +169 -0
  482. package/src/runtime/control-plane/persistence/operational-prior-store.ts +348 -0
  483. package/src/runtime/control-plane/persistence/requirement-store.ts +30 -22
  484. package/src/runtime/control-plane/persistence/sqlite-store.ts +545 -76
  485. package/src/runtime/control-plane/persistence/workflow-content-store.ts +98 -0
  486. package/src/runtime/control-plane/persistence/workflow-registry-store.ts +186 -0
  487. package/src/runtime/control-plane/persistence/workflow-run-store.ts +123 -0
  488. package/src/runtime/control-plane/release-retention.ts +56 -16
  489. package/src/runtime/control-plane/repository-namespace-retention.ts +208 -0
  490. package/src/runtime/control-plane/routing/route-policy.ts +19 -0
  491. package/src/runtime/control-plane/runtime-cleanup.ts +574 -37
  492. package/src/runtime/control-plane/runtime-generation.ts +6 -0
  493. package/src/runtime/control-plane/workspace/semantic-sync-service.ts +465 -0
  494. package/src/runtime/control-plane/workspace/workspace-store.ts +80 -0
  495. package/src/runtime/diagnostics/incident-repair.ts +406 -0
  496. package/src/runtime/diagnostics/mcp-timing.ts +125 -6
  497. package/src/runtime/diagnostics/performance.ts +6 -14
  498. package/src/runtime/diagnostics/read-only-tool.ts +1 -1
  499. package/src/runtime/evidence/artifact-store.ts +65 -2
  500. package/src/runtime/evidence/operational-shadow.ts +38 -0
  501. package/src/runtime/evidence/process-check-receipt.ts +5 -43
  502. package/src/runtime/evidence/sensitive-output.ts +4 -4
  503. package/src/runtime/execution/jobs/receipt-recovery.ts +1 -1
  504. package/src/runtime/execution/jobs/store.ts +121 -2
  505. package/src/runtime/execution/managed-workspace.ts +55 -5
  506. package/src/runtime/execution/process-runtime/canary.ts +19 -5
  507. package/src/runtime/execution/process-runtime/check-classification.ts +48 -0
  508. package/src/runtime/execution/process-runtime/check-facade.ts +23 -9
  509. package/src/runtime/execution/process-runtime/check-receipt.ts +1 -1
  510. package/src/runtime/execution/process-runtime/check-result-retention.ts +132 -0
  511. package/src/runtime/execution/process-runtime/check-result.ts +73 -2
  512. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +42 -3
  513. package/src/runtime/execution/process-runtime/check-storage.ts +187 -0
  514. package/src/runtime/execution/process-runtime/command-facade.ts +38 -87
  515. package/src/runtime/execution/process-runtime/index.ts +1 -0
  516. package/src/runtime/execution/process-runtime/interactive-admission.ts +2 -1
  517. package/src/runtime/execution/process-runtime/lightweight-managed.ts +32 -1
  518. package/src/runtime/execution/process-runtime/persisted-check.ts +128 -21
  519. package/src/runtime/execution/process-runtime/resource-claims.ts +60 -3
  520. package/src/runtime/execution/process-runtime/runtime.ts +132 -15
  521. package/src/runtime/execution/process-runtime/types.ts +22 -0
  522. package/src/runtime/execution/workers/executor.ts +16 -13
  523. package/src/runtime/execution/workers/worker-entry.ts +1 -1
  524. package/src/runtime/gateway/mcp/execution-tools.ts +2 -207
  525. package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +2 -61
  526. package/src/runtime/gateway/mcp/persisted-check-process.ts +2 -3
  527. package/src/runtime/gateway/mcp/process-tools.ts +2 -289
  528. package/src/runtime/gateway/mcp/router.ts +2 -1125
  529. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +2 -565
  530. package/src/runtime/gateway/mcp/runtime-tools.ts +2 -6651
  531. package/src/runtime/gateway/mcp/work-validation-reconciler.ts +2 -1
  532. package/src/runtime/maintenance/cleanup.ts +38 -24
  533. package/src/runtime/platform/browser-product-discovery.ts +174 -0
  534. package/src/runtime/platform/computer-platform.ts +14 -0
  535. package/src/runtime/platform/executable-discovery.ts +54 -0
  536. package/src/runtime/platform/fetch-http-server.ts +90 -0
  537. package/src/runtime/platform/service-manager.ts +138 -0
  538. package/src/runtime/platform/windows-host-discovery.ts +118 -0
  539. package/src/runtime/platform/windows-recovery-deployment.ts +67 -0
  540. package/src/runtime/plugins/action-application.ts +135 -0
  541. package/src/runtime/plugins/app-store-connect-adapter.ts +9 -21
  542. package/src/runtime/plugins/browser-adapter.ts +140 -100
  543. package/src/runtime/plugins/browser-automation-service.ts +15 -36
  544. package/src/runtime/plugins/browser-macos-bridge.ts +69 -21
  545. package/src/runtime/plugins/browser-manifest-surface.ts +30 -6
  546. package/src/runtime/plugins/browser-native-session-service.ts +1 -1
  547. package/src/runtime/plugins/browser-provider-registry.ts +2 -109
  548. package/src/runtime/plugins/browser-registration.ts +16 -0
  549. package/src/runtime/plugins/browser-runtime-contract.ts +2 -154
  550. package/src/runtime/plugins/browser-runtime.ts +41 -9
  551. package/src/runtime/plugins/browser-session-authority.ts +101 -291
  552. package/src/runtime/plugins/browser-session-legacy-migration.ts +203 -0
  553. package/src/runtime/plugins/browser-session-store.ts +229 -36
  554. package/src/runtime/plugins/browser-session-types.ts +2 -98
  555. package/src/runtime/plugins/capability-authorization-grants.ts +17 -0
  556. package/src/runtime/plugins/catalog-trust.ts +82 -0
  557. package/src/runtime/plugins/computer-registration.ts +839 -0
  558. package/src/runtime/plugins/config-store.ts +119 -0
  559. package/src/runtime/plugins/desktop-operator-external-policy.ts +932 -0
  560. package/src/runtime/plugins/desktop-operator-registration.ts +111 -8
  561. package/src/runtime/plugins/errors.ts +8 -1
  562. package/src/runtime/plugins/external-adapter.ts +45 -322
  563. package/src/runtime/plugins/external-provider-policy.ts +48 -0
  564. package/src/runtime/plugins/external-registration.ts +9 -1
  565. package/src/runtime/plugins/external-unix-socket-probe.cjs +9 -3
  566. package/src/runtime/plugins/external-unix-socket.ts +64 -193
  567. package/src/runtime/plugins/first-party-external-registration.ts +163 -0
  568. package/src/runtime/plugins/first-party-registry.ts +3 -1
  569. package/src/runtime/plugins/github-adapter.ts +1 -2
  570. package/src/runtime/plugins/gmail-adapter.ts +6 -6
  571. package/src/runtime/plugins/google-calendar-adapter.ts +6 -6
  572. package/src/runtime/plugins/google-shared.ts +31 -46
  573. package/src/runtime/plugins/google-tasks-adapter.ts +6 -6
  574. package/src/runtime/plugins/ios-adapter.ts +1 -2
  575. package/src/runtime/plugins/local-system-adapter.ts +180 -0
  576. package/src/runtime/plugins/macos-capability-broker.ts +15 -105
  577. package/src/runtime/plugins/resend-adapter.ts +15 -24
  578. package/src/runtime/plugins/store.ts +493 -51
  579. package/src/runtime/plugins/types.ts +8 -1
  580. package/src/runtime/plugins/uu-remote-rescue-registration.ts +155 -0
  581. package/src/runtime/plugins/windows-host-recovery-install.ts +68 -0
  582. package/src/runtime/plugins/windows-host-recovery-registration.ts +85 -0
  583. package/src/runtime/plugins/xiaohongshu-publish.ts +86 -430
  584. package/src/runtime/projections/controller-context.ts +12 -6
  585. package/src/runtime/projections/git-status-sampler.ts +73 -22
  586. package/src/runtime/projections/materialized-view.ts +14 -8
  587. package/src/runtime/recovery/capability-action-application.ts +228 -0
  588. package/src/runtime/recovery/index.ts +3 -0
  589. package/src/runtime/recovery/lifecycle-inventory.ts +338 -0
  590. package/src/runtime/recovery/local-jobs-repair.ts +14 -14
  591. package/src/runtime/recovery/maintenance-executor.ts +358 -76
  592. package/src/runtime/recovery/quarantine-retention.ts +256 -0
  593. package/src/runtime/release/identity.ts +6 -0
  594. package/src/runtime/resources/leases/store.ts +1 -1
  595. package/src/runtime/root/active-execution-power-assertion.ts +139 -0
  596. package/src/runtime/root/assistant-learning-loop.ts +45 -0
  597. package/src/runtime/root/browser-session-composition.ts +59 -0
  598. package/src/runtime/root/computer-composition.ts +191 -0
  599. package/src/runtime/root/computer-target-composition.ts +16 -0
  600. package/src/runtime/root/computer-target-persistence.ts +39 -0
  601. package/src/runtime/root/controller-round-composition.ts +107 -0
  602. package/src/runtime/root/controller-services.ts +2 -0
  603. package/src/runtime/root/entry.ts +4 -3
  604. package/src/runtime/root/gateway-adapter.ts +3 -3
  605. package/src/runtime/root/local-bridge.ts +5 -2
  606. package/src/runtime/root/mcp-transport.ts +5 -5
  607. package/src/runtime/root/package-connector-service.ts +108 -56
  608. package/src/runtime/root/package-runtime-release.ts +86 -18
  609. package/src/runtime/root/package-runtime-service.ts +63 -86
  610. package/src/runtime/root/release-execution-canary.ts +71 -0
  611. package/src/runtime/root/release-loader.ts +68 -0
  612. package/src/runtime/root/release-manifest.ts +106 -2
  613. package/src/runtime/root/release-materialize.ts +103 -4
  614. package/src/runtime/root/release-store.ts +31 -2
  615. package/src/runtime/root/runtime.ts +240 -25
  616. package/src/runtime/root/scheduled-controller-composition.ts +51 -0
  617. package/src/runtime/root/scheduler.ts +12 -4
  618. package/src/runtime/root/service-runner.ts +1 -1
  619. package/src/runtime/root/service.ts +41 -16
  620. package/src/runtime/root/status.ts +1 -0
  621. package/src/runtime/root/types.ts +24 -1
  622. package/src/runtime/shared/local-bridge-surface.ts +1 -1
  623. package/src/runtime/shared/process-environment.ts +19 -4
  624. package/src/runtime/shared/storage-capacity.ts +68 -0
  625. package/src/runtime/standalone-recovery/controller-home-migration.ts +1116 -0
  626. package/src/runtime/standalone-recovery/core.ts +984 -230
  627. package/src/runtime/standalone-recovery/entry.ts +182 -51
  628. package/src/runtime/standalone-recovery/independent-host-rescue.ts +172 -0
  629. package/src/runtime/standalone-recovery/installer.ts +212 -104
  630. package/src/runtime/standalone-recovery/mcp-server.ts +243 -0
  631. package/src/runtime/standalone-recovery/mutation-identity-contract.ts +21 -0
  632. package/src/runtime/standalone-recovery/operation-lock.ts +160 -0
  633. package/src/runtime/standalone-recovery/performance.ts +135 -0
  634. package/src/runtime/standalone-recovery/release.ts +5 -0
  635. package/src/runtime/watchdog/workflow-watchdog.ts +1 -1
  636. package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +1 -1
  637. package/src/runtime/workflow/schedules/engine.ts +191 -343
  638. package/src/runtime/workflow/schedules/pending-activation.ts +1 -1
  639. package/src/runtime/workflow/schedules/settlement.ts +2 -191
  640. package/src/runtime/workflow/schedules/store.ts +2 -607
  641. package/src/runtime/workflow/schedules/types.ts +2 -127
  642. package/src/runtime/workflow/schedules/work-continuation.ts +180 -15
  643. package/src/runtime/workflows/first-party/xiaohongshu.ts +122 -0
  644. package/src/runtime/workflows/runtime.ts +486 -0
  645. package/src/testing/test-governance.ts +90 -29
  646. package/assets/templates/helpers/archive-architecture-request.sh +0 -244
  647. package/docs/architecture/history/README.md +0 -7
  648. package/docs/architecture/history/chatgpt-handoff-facade.md +0 -397
  649. package/docs/architecture/history/global-hook-runtime.md +0 -166
  650. package/docs/architecture/history/ios-semantic-automation-provider-v2.md +0 -170
  651. package/docs/architecture/requests/archive/2026/20260528-154740-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  652. package/docs/architecture/requests/archive/2026/20260528-154816-assets-hooks-assets-hooks-hook-input-sh.md +0 -59
  653. package/docs/architecture/requests/archive/2026/20260528-161851-ai-harness-workflow-contract-json-ai-harness-workflow-contract-json.md +0 -59
  654. package/docs/architecture/requests/archive/2026/20260528-161853-scripts-check-task-workflow-sh-scripts-check-task-workflow-sh.md +0 -59
  655. package/docs/architecture/requests/archive/2026/20260528-161911-assets-workflow-contract-v1-json-assets-workflow-contract-v1-json.md +0 -59
  656. package/docs/architecture/requests/archive/2026/20260528-222416-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  657. package/docs/architecture/requests/archive/2026/20260528-222444-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  658. package/docs/architecture/requests/archive/2026/20260528-222457-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  659. package/docs/architecture/requests/archive/2026/20260528-222648-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  660. package/docs/architecture/requests/archive/2026/20260528-222705-ai-hooks-ai-hooks-worktree-guard-sh.md +0 -59
  661. package/docs/architecture/requests/archive/2026/20260528-222726-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  662. package/docs/architecture/requests/archive/2026/20260528-222727-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  663. package/docs/architecture/requests/archive/2026/20260528-224736-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  664. package/docs/architecture/requests/archive/2026/20260528-233259-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  665. package/docs/architecture/requests/archive/2026/20260528-233335-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  666. package/docs/architecture/requests/archive/2026/20260528-233456-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  667. package/docs/architecture/requests/archive/2026/20260528-233457-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  668. package/docs/architecture/requests/archive/2026/20260528-233637-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  669. package/docs/architecture/requests/archive/2026/20260528-233638-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  670. package/docs/architecture/requests/archive/2026/20260529-000322-root-package-json.md +0 -59
  671. package/docs/architecture/requests/archive/2026/20260529-004238-ai-hooks-ai-hooks-lib-workflow-state-sh.md +0 -59
  672. package/docs/architecture/requests/archive/2026/20260529-020654-ai-harness-policy-json-ai-harness-policy-json.md +0 -63
  673. package/docs/architecture/requests/archive/2026/20260529-094236-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -60
  674. package/docs/architecture/requests/archive/2026/20260529-094323-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -60
  675. package/docs/architecture/requests/archive/2026/20260529-094331-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -60
  676. package/docs/architecture/requests/archive/2026/20260529-094339-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -60
  677. package/docs/architecture/requests/archive/2026/20260529-094430-assets-hooks-assets-hooks-session-start-context-sh.md +0 -60
  678. package/docs/architecture/requests/archive/2026/20260529-094446-ai-hooks-ai-hooks-session-start-context-sh.md +0 -60
  679. package/docs/architecture/requests/archive/2026/20260613-002040-runtime-harness-hook-adapters.md +0 -68
  680. package/docs/architecture/requests/archive/2026/root.md +0 -68
  681. package/docs/architecture/requests/archive/2026/runtime-harness-hook-adapters.md +0 -76
  682. package/docs/architecture/requests/archive/2026/verification-evals-checks.md +0 -68
  683. package/docs/architecture/requests/archive/2026/workflow-engine-contract-assets.md +0 -69
  684. package/scripts/archive-architecture-request.sh +0 -4
  685. package/scripts/run-skill-evals.ts +0 -1022
@@ -0,0 +1,41 @@
1
+ export type McpProfileName = 'planner' | 'executor' | 'orchestrator' | 'controller';
2
+ export type McpPathIntent = 'read' | 'write';
3
+ export type McpAgentRunnerName = 'codex' | 'claude';
4
+ /** Controller MCP tools/list exposure profile.
5
+ * - facade: explicit five-tool ChatGPT orchestration surface
6
+ * - core/advanced (default compatibility labels): bounded stable controller surface
7
+ * - full: compatibility mode — all legacy + runtime tools
8
+ */
9
+ export type McpToolset = 'facade' | 'core' | 'advanced' | 'full';
10
+
11
+ export interface McpPolicy {
12
+ profile: McpProfileName;
13
+ readGlobs: string[];
14
+ writeGlobs: string[];
15
+ denyGlobs: string[];
16
+ maxFileBytes: number;
17
+ execution: {
18
+ fixedWorkflowCheck: boolean;
19
+ codexRunner: boolean;
20
+ agentRunner: boolean;
21
+ allowedAgents: McpAgentRunnerName[];
22
+ runnerTimeoutMs: number;
23
+ runnerMaxTimeoutMs: number;
24
+ };
25
+ }
26
+
27
+ export interface McpPathDecision {
28
+ ok: boolean;
29
+ relativePath?: string;
30
+ absolutePath?: string;
31
+ reason?: string;
32
+ }
33
+
34
+ export interface McpAuditEntry {
35
+ timestamp: string;
36
+ tool: string;
37
+ status: 'ok' | 'blocked' | 'failed';
38
+ targetPath?: string;
39
+ inputHash?: string;
40
+ error?: string;
41
+ }
package/assets/AGENTS.md CHANGED
@@ -10,17 +10,15 @@ Keep this file focused on the local contract for this primary functional block.
10
10
  - Name: `contract-assets`
11
11
  - Primary prefix: `assets/workflow-contract.v1.json`
12
12
  - Architecture module: `docs/architecture/modules/workflow-engine/contract-assets.md`
13
- - Workstream: `tasks/workstreams/workflow-engine/contract-assets`
14
13
 
15
14
  ## Positioning
16
15
 
17
- Owns the workflow-engine-contract-assets capability boundary declared in .ai/context/capabilities.json.
16
+ Owns packaged workflow/compatibility contract assets. Mutable execution lifecycle is Controller Home authority; assets must not reintroduce repo-local machine workflow state.
18
17
 
19
18
  ## Source Map
20
19
 
21
20
  - Primary prefix: `assets/workflow-contract.v1.json` (entrypoint)
22
21
  - Architecture module: `docs/architecture/modules/workflow-engine/contract-assets.md` (design-source)
23
- - Workstream: `tasks/workstreams/workflow-engine/contract-assets` (durable-progress)
24
22
 
25
23
  ## Refresh Hints
26
24
 
@@ -52,17 +50,5 @@ Owns the workflow-engine-contract-assets capability boundary declared in .ai/con
52
50
  - Semantic diagram source: `docs/architecture/modules/workflow-engine/contract-assets.md`
53
51
  - Latest human diagram: `(none yet)`
54
52
  - Pending architecture request: `(none)`
55
-
56
- ## Active Workstreams
57
-
58
- - `tasks/workstreams/workflow-engine/contract-assets/cleanup-script-policy.md`
59
- - status: completed
60
- - current_slice: todo-01
61
- - source_plan: (none)
62
-
63
- ## Current Session Projection
64
-
65
- - Durable progress lives under `tasks/workstreams/workflow-engine/contract-assets`.
66
- - `tasks/current.md` is a tracked derived status snapshot, not a live lock or task source.
67
- - `tasks/todos.md` is the deferred-goal ledger; current execution slices stay in the active plan's `## Task Breakdown`.
53
+ - Runtime progress authority: Forge Controller Home Requirement/Plan/Work/Evidence; this repository block contains authored architecture context only.
68
54
  <!-- END ARCHITECTURE CONTRACT -->
package/assets/CLAUDE.md CHANGED
@@ -10,17 +10,15 @@ Keep this file focused on the local contract for this primary functional block.
10
10
  - Name: `contract-assets`
11
11
  - Primary prefix: `assets/workflow-contract.v1.json`
12
12
  - Architecture module: `docs/architecture/modules/workflow-engine/contract-assets.md`
13
- - Workstream: `tasks/workstreams/workflow-engine/contract-assets`
14
13
 
15
14
  ## Positioning
16
15
 
17
- Owns the workflow-engine-contract-assets capability boundary declared in .ai/context/capabilities.json.
16
+ Owns packaged workflow/compatibility contract assets. Mutable execution lifecycle is Controller Home authority; assets must not reintroduce repo-local machine workflow state.
18
17
 
19
18
  ## Source Map
20
19
 
21
20
  - Primary prefix: `assets/workflow-contract.v1.json` (entrypoint)
22
21
  - Architecture module: `docs/architecture/modules/workflow-engine/contract-assets.md` (design-source)
23
- - Workstream: `tasks/workstreams/workflow-engine/contract-assets` (durable-progress)
24
22
 
25
23
  ## Refresh Hints
26
24
 
@@ -52,17 +50,5 @@ Owns the workflow-engine-contract-assets capability boundary declared in .ai/con
52
50
  - Semantic diagram source: `docs/architecture/modules/workflow-engine/contract-assets.md`
53
51
  - Latest human diagram: `(none yet)`
54
52
  - Pending architecture request: `(none)`
55
-
56
- ## Active Workstreams
57
-
58
- - `tasks/workstreams/workflow-engine/contract-assets/cleanup-script-policy.md`
59
- - status: completed
60
- - current_slice: todo-01
61
- - source_plan: (none)
62
-
63
- ## Current Session Projection
64
-
65
- - Durable progress lives under `tasks/workstreams/workflow-engine/contract-assets`.
66
- - `tasks/current.md` is a tracked derived status snapshot, not a live lock or task source.
67
- - `tasks/todos.md` is the deferred-goal ledger; current execution slices stay in the active plan's `## Task Breakdown`.
53
+ - Runtime progress authority: Forge Controller Home Requirement/Plan/Work/Evidence; this repository block contains authored architecture context only.
68
54
  <!-- END ARCHITECTURE CONTRACT -->
@@ -10,7 +10,7 @@ Keep this file focused on the local contract for this primary functional block.
10
10
  - Route deep implementation detail into nearby docs instead of inflating root agent context files.
11
11
  - Treat `.ai/context/context-map.json` as the index of discoverable context files.
12
12
  - Do not keep pushing context files deeper by default; add lower-level files only for a separately owned functional block with its own commands and invariants.
13
- - Prefer repo-local workflow artifacts over tool-specific chat memory.
13
+ - Prefer authored repository context for durable source knowledge and Controller Home for mutable workflow state; tool-specific chat memory is never authority.
14
14
 
15
15
  <!-- BEGIN CAPABILITY CONTEXT -->
16
16
  ## Capability Context
@@ -20,7 +20,6 @@ Keep this file focused on the local contract for this primary functional block.
20
20
  - Name: `hook-adapters`
21
21
  - Primary prefix: `assets/hooks`
22
22
  - Architecture module: `docs/architecture/modules/runtime-harness/hook-adapters.md`
23
- - Workstream: `tasks/workstreams/runtime-harness/hook-adapters`
24
23
 
25
24
  ## Positioning
26
25
 
@@ -30,12 +29,11 @@ Owns the runtime-harness-hook-adapters capability boundary declared in .ai/conte
30
29
 
31
30
  - Primary prefix: `assets/hooks` (entrypoint)
32
31
  - Architecture module: `docs/architecture/modules/runtime-harness/hook-adapters.md` (design-source)
33
- - Workstream: `tasks/workstreams/runtime-harness/hook-adapters` (durable-progress)
34
32
 
35
33
  ## Refresh Hints
36
34
 
37
35
  - `bun test tests/hook-runtime.test.ts tests/hook-contracts.test.ts tests/workflow-contract.test.ts`
38
- - `bash scripts/check-task-workflow.sh --strict`
36
+ - `forge run check-task-workflow --strict`
39
37
  <!-- END CAPABILITY CONTEXT -->
40
38
 
41
39
  <!-- BEGIN ARCHITECTURE CONTRACT -->
@@ -62,14 +60,5 @@ Owns the runtime-harness-hook-adapters capability boundary declared in .ai/conte
62
60
  - Semantic diagram source: `docs/architecture/modules/runtime-harness/hook-adapters.md`
63
61
  - Latest human diagram: `(none yet)`
64
62
  - Pending architecture request: `(none)`
65
-
66
- ## Active Workstreams
67
-
68
- - (none yet)
69
-
70
- ## Current Session Projection
71
-
72
- - Durable progress lives under `tasks/workstreams/runtime-harness/hook-adapters`.
73
- - `tasks/current.md` is the tracked derived status snapshot; it is not a live lock or task source.
74
- - `tasks/todos.md` is the deferred-goal ledger; current execution slices stay in the active plan's `## Task Breakdown`.
63
+ - Runtime progress authority: Forge Controller Home Requirement/Plan/Work/Evidence; this repository block contains authored architecture context only.
75
64
  <!-- END ARCHITECTURE CONTRACT -->
@@ -10,7 +10,7 @@ Keep this file focused on the local contract for this primary functional block.
10
10
  - Route deep implementation detail into nearby docs instead of inflating root agent context files.
11
11
  - Treat `.ai/context/context-map.json` as the index of discoverable context files.
12
12
  - Do not keep pushing context files deeper by default; add lower-level files only for a separately owned functional block with its own commands and invariants.
13
- - Prefer repo-local workflow artifacts over tool-specific chat memory.
13
+ - Prefer authored repository context for durable source knowledge and Controller Home for mutable workflow state; tool-specific chat memory is never authority.
14
14
 
15
15
  <!-- BEGIN CAPABILITY CONTEXT -->
16
16
  ## Capability Context
@@ -20,7 +20,6 @@ Keep this file focused on the local contract for this primary functional block.
20
20
  - Name: `hook-adapters`
21
21
  - Primary prefix: `assets/hooks`
22
22
  - Architecture module: `docs/architecture/modules/runtime-harness/hook-adapters.md`
23
- - Workstream: `tasks/workstreams/runtime-harness/hook-adapters`
24
23
 
25
24
  ## Positioning
26
25
 
@@ -30,12 +29,11 @@ Owns the runtime-harness-hook-adapters capability boundary declared in .ai/conte
30
29
 
31
30
  - Primary prefix: `assets/hooks` (entrypoint)
32
31
  - Architecture module: `docs/architecture/modules/runtime-harness/hook-adapters.md` (design-source)
33
- - Workstream: `tasks/workstreams/runtime-harness/hook-adapters` (durable-progress)
34
32
 
35
33
  ## Refresh Hints
36
34
 
37
35
  - `bun test tests/hook-runtime.test.ts tests/hook-contracts.test.ts tests/workflow-contract.test.ts`
38
- - `bash scripts/check-task-workflow.sh --strict`
36
+ - `forge run check-task-workflow --strict`
39
37
  <!-- END CAPABILITY CONTEXT -->
40
38
 
41
39
  <!-- BEGIN ARCHITECTURE CONTRACT -->
@@ -62,14 +60,5 @@ Owns the runtime-harness-hook-adapters capability boundary declared in .ai/conte
62
60
  - Semantic diagram source: `docs/architecture/modules/runtime-harness/hook-adapters.md`
63
61
  - Latest human diagram: `(none yet)`
64
62
  - Pending architecture request: `(none)`
65
-
66
- ## Active Workstreams
67
-
68
- - (none yet)
69
-
70
- ## Current Session Projection
71
-
72
- - Durable progress lives under `tasks/workstreams/runtime-harness/hook-adapters`.
73
- - `tasks/current.md` is the tracked derived status snapshot; it is not a live lock or task source.
74
- - `tasks/todos.md` is the deferred-goal ledger; current execution slices stay in the active plan's `## Task Breakdown`.
63
+ - Runtime progress authority: Forge Controller Home Requirement/Plan/Work/Evidence; this repository block contains authored architecture context only.
75
64
  <!-- END ARCHITECTURE CONTRACT -->
@@ -14,9 +14,12 @@ if [[ -z "${HOOK_REPO_ROOT:-}" ]]; then
14
14
  export HOOK_REPO_ROOT
15
15
  fi
16
16
 
17
- if [[ -f "${HOOK_REPO_ROOT:-$(pwd)}/.ai/hooks/lib/workflow-state.sh" ]]; then
17
+ HOOK_BUNDLE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)"
18
+ if [[ -f "$HOOK_BUNDLE_DIR/lib/workflow-state.sh" ]]; then
19
+ # Source workflow helpers from the same selected hook bundle. A central hook
20
+ # must never fall back to a stale repo-local lib and silently change authority.
18
21
  # shellcheck source=/dev/null
19
- . "${HOOK_REPO_ROOT:-$(pwd)}/.ai/hooks/lib/workflow-state.sh"
22
+ . "$HOOK_BUNDLE_DIR/lib/workflow-state.sh"
20
23
  fi
21
24
 
22
25
  hook_read_stdin_once() {
@@ -546,6 +549,10 @@ hook_failure_log_file() {
546
549
  workflow_failure_log_file
547
550
  return 0
548
551
  fi
552
+ if [[ -n "${FORGE_HOOK_STATE_ROOT:-}" && "${FORGE_HOOK_STATE_ROOT}" == /* ]]; then
553
+ printf '%s/failures/latest.jsonl' "${FORGE_HOOK_STATE_ROOT%/}"
554
+ return 0
555
+ fi
549
556
  printf '.ai/harness/failures/latest.jsonl'
550
557
  }
551
558
 
@@ -70,44 +70,62 @@ workflow_repo_relative_path() {
70
70
  esac
71
71
  }
72
72
 
73
+ workflow_machine_state_path() {
74
+ local value="$1"
75
+ local default_value="$2"
76
+ local relative_path
77
+
78
+ value="$(workflow_repo_relative_path "$value" "$default_value" '.ai/harness/')"
79
+ if [[ -n "${FORGE_HOOK_STATE_ROOT:-}" && "${FORGE_HOOK_STATE_ROOT}" == /* ]]; then
80
+ relative_path="${value#.ai/harness/}"
81
+ printf '%s/%s' "${FORGE_HOOK_STATE_ROOT%/}" "$relative_path"
82
+ return 0
83
+ fi
84
+ printf '%s' "$value"
85
+ }
86
+
73
87
  workflow_context_map_file() {
74
88
  workflow_repo_relative_path "$(workflow_policy_get '.context.map_file' '.ai/context/context-map.json')" '.ai/context/context-map.json' '.ai/context/'
75
89
  }
76
90
 
77
91
  workflow_failure_log_file() {
78
- workflow_repo_relative_path "$(workflow_policy_get '.harness.failure_log_file' '.ai/harness/failures/latest.jsonl')" '.ai/harness/failures/latest.jsonl' '.ai/harness/'
92
+ workflow_machine_state_path "$(workflow_policy_get '.harness.failure_log_file' '.ai/harness/failures/latest.jsonl')" '.ai/harness/failures/latest.jsonl'
79
93
  }
80
94
 
81
95
  workflow_events_file() {
82
- workflow_repo_relative_path "$(workflow_policy_get '.harness.events_file' '.ai/harness/events.jsonl')" '.ai/harness/events.jsonl' '.ai/harness/'
96
+ workflow_machine_state_path "$(workflow_policy_get '.harness.events_file' '.ai/harness/events.jsonl')" '.ai/harness/events.jsonl'
83
97
  }
84
98
 
85
99
  workflow_trace_file() {
100
+ if [[ -n "${FORGE_HOOK_STATE_ROOT:-}" && "${FORGE_HOOK_STATE_ROOT}" == /* ]]; then
101
+ printf '%s/trace.jsonl' "${FORGE_HOOK_STATE_ROOT%/}"
102
+ return 0
103
+ fi
86
104
  printf '%s' ".claude/.trace.jsonl"
87
105
  }
88
106
 
89
107
  workflow_runs_dir() {
90
- workflow_repo_relative_path "$(workflow_policy_get '.harness.runs_dir' '.ai/harness/runs')" '.ai/harness/runs' '.ai/harness/'
108
+ workflow_machine_state_path "$(workflow_policy_get '.harness.runs_dir' '.ai/harness/runs')" '.ai/harness/runs'
91
109
  }
92
110
 
93
111
  workflow_resume_packet_file() {
94
- workflow_repo_relative_path "$(workflow_policy_get '.session.resume_file' '.ai/harness/session/resume.md')" '.ai/harness/session/resume.md' '.ai/harness/'
112
+ workflow_machine_state_path "$(workflow_policy_get '.session.resume_file' '.ai/harness/session/resume.md')" '.ai/harness/session/resume.md'
95
113
  }
96
114
 
97
115
  workflow_pending_orchestration_file() {
116
+ # Legacy read/migration surface only. Modern controller-home repositories do
117
+ # not create a second file-backed Plan/pending authority from hooks.
98
118
  workflow_repo_relative_path "$(workflow_policy_get '.planning.pending_orchestration_file' '.ai/harness/planning/pending.json')" '.ai/harness/planning/pending.json' '.ai/harness/'
99
119
  }
100
120
 
101
121
  workflow_ensure_harness_surface() {
122
+ # Hooks initialize only rebuildable machine diagnostics. Authored task/context
123
+ # directories and semantic Plan state remain repository/Controller concerns.
102
124
  mkdir -p \
103
- "tasks/notes" \
104
- "$(dirname "$(workflow_context_map_file)")" \
105
- "$(dirname "$(workflow_policy_file)")" \
106
125
  "$(dirname "$(workflow_checks_file)")" \
107
126
  "$(dirname "$(workflow_session_continuation_file)")" \
108
127
  "$(dirname "$(workflow_resume_packet_file)")" \
109
128
  "$(dirname "$(workflow_failure_log_file)")" \
110
- "$(dirname "$(workflow_pending_orchestration_file)")" \
111
129
  "$(workflow_runs_dir)"
112
130
 
113
131
  [[ -f "$(workflow_checks_file)" ]] || printf "{}\n" > "$(workflow_checks_file)"
@@ -1094,11 +1112,11 @@ workflow_active_notes() {
1094
1112
  }
1095
1113
 
1096
1114
  workflow_checks_file() {
1097
- workflow_repo_relative_path "$(workflow_policy_get '.harness.checks_file' '.ai/harness/checks/latest.json')" '.ai/harness/checks/latest.json' '.ai/harness/'
1115
+ workflow_machine_state_path "$(workflow_policy_get '.harness.checks_file' '.ai/harness/checks/latest.json')" '.ai/harness/checks/latest.json'
1098
1116
  }
1099
1117
 
1100
1118
  workflow_session_continuation_file() {
1101
- workflow_repo_relative_path "$(workflow_policy_get '.session.continuation_file' '.ai/harness/session/continuation.md')" '.ai/harness/session/continuation.md' '.ai/harness/'
1119
+ workflow_machine_state_path "$(workflow_policy_get '.session.continuation_file' '.ai/harness/session/continuation.md')" '.ai/harness/session/continuation.md'
1102
1120
  }
1103
1121
 
1104
1122
  # mkdir-based mutual exclusion (macOS ships no flock). Spins ~2s, breaks locks
@@ -1,7 +1,8 @@
1
1
  #!/bin/bash
2
2
  # Prompt Guard Hook — UserPromptSubmit
3
- # Shell layer: filesystem authority (plan/contract/worktree state), capture
4
- # side effects, and host-safe rendering. All prompt-text intent classification
3
+ # Shell layer: compatibility reads for legacy plan/contract/worktree state plus
4
+ # host-safe rendering. Modern controller-home repositories never create or use
5
+ # repo-local Plan/Work files as authority. All prompt-text intent classification
5
6
  # lives in the TypeScript engine behind `prompt-guard-decide`, which receives
6
7
  # {"prompt": ...} on stdin plus PROMPT_GUARD_*_STATE env vars and returns a
7
8
  # single-line verdict JSON (action + intent facts + derived strings).
@@ -392,6 +393,15 @@ pg_fact() {
392
393
  [[ "${!var:-0}" == "1" ]]
393
394
  }
394
395
 
396
+ modern_controller_home_runtime() {
397
+ [[ -f "forge.config.json" ]] || return 1
398
+ if command -v jq >/dev/null 2>&1; then
399
+ [[ "$(jq -r '.runtimeState // empty' forge.config.json 2>/dev/null || true)" == "controller-home" ]]
400
+ return
401
+ fi
402
+ grep -Eq '"runtimeState"[[:space:]]*:[[:space:]]*"controller-home"' forge.config.json 2>/dev/null
403
+ }
404
+
395
405
  # --- Side effects and hints (driven by engine facts) ---
396
406
 
397
407
  emit_pending_orchestration_discussion() {
@@ -603,38 +613,26 @@ run_codegraph_init_command() {
603
613
  return "$status"
604
614
  }
605
615
 
606
- ensure_codegraph_index_for_route() {
607
- local output status
608
-
609
- [[ -f ".codegraph/codegraph.db" ]] && return 0
610
-
611
- output="$(run_codegraph_init_command 2>&1)"
612
- status=$?
613
-
614
- if [[ "$status" -eq 0 && -f ".codegraph/codegraph.db" ]]; then
615
- echo "[CodegraphRoute] Initialized missing CodeGraph index before routing hint."
616
- elif [[ "$status" -ne 127 ]]; then
617
- echo "[CodegraphRoute] CodeGraph index init skipped or failed; run codegraph init -i . if structural tools are unavailable."
616
+ emit_codegraph_route_hint() {
617
+ if pg_fact CODEGRAPH_ROUTE || pg_fact NONTRIVIAL_CODE_TASK; then
618
+ echo "[CodegraphRoute] Structural code-navigation intent detected. Prefer Forge rh_context/semantic navigation or an already-configured structural provider; do not initialize repo-local .codegraph state from a prompt hook."
618
619
  fi
619
620
  }
620
621
 
621
- emit_codegraph_route_hint() {
622
- local session_key session_file=".claude/.session-id"
623
-
624
- mkdir -p .claude
625
- session_key="$(session_state_resolve_key "$session_file" "${1:-}")"
622
+ modern_controller_home_workflow() {
623
+ [[ -f "forge.config.json" ]]
624
+ }
626
625
 
627
- if session_state_codegraph_used "$session_key" || session_state_codegraph_nudged "$session_key"; then
628
- return 0
626
+ emit_modern_controller_home_guidance() {
627
+ if pg_fact THINK_PLAN_START || pg_fact PLAN_START; then
628
+ echo "[ForgeRoute] Planning intent detected. Keep repo files for authored product/architecture content only; use Forge Plan/Work authority when durable execution state is needed."
629
+ echo "[ArchitectureCompleteness] For high-risk or architecture-changing work, Context Closure + Engineering Design receipts are correctness gates; prompt guidance is advisory only."
629
630
  fi
630
-
631
- if pg_fact CODEGRAPH_ROUTE; then
632
- ensure_codegraph_index_for_route || true
633
- echo "[CodegraphRoute] Structural code-navigation intent detected. Prefer CodeGraph context/search/callers/impact before grep/read when available."
634
- session_state_mark_codegraph_nudged "$session_key" || true
635
- elif pg_fact NONTRIVIAL_CODE_TASK; then
636
- echo "[CodegraphRoute] Structural code-navigation intent detected. Prefer CodeGraph context/search/callers/impact before grep/read when available."
637
- session_state_mark_codegraph_nudged "$session_key" || true
631
+ if pg_fact IMPLEMENT; then
632
+ echo "[ArchitectureCompleteness] Implementation intent detected. Preserve the approved authority/lifecycle/authorization/resource/replay/retention contract; Forge admission and implementation review own enforcement."
633
+ fi
634
+ if pg_fact DONE; then
635
+ echo "[Review] Completion intent detected. Use current Forge verification/review evidence; do not materialize repo-local task/check/session closeout state."
638
636
  fi
639
637
  }
640
638
 
@@ -834,6 +832,18 @@ PROMPT_INTENT_TEXT="$(prompt_intent_text)"
834
832
  prompt_guard_refresh_state
835
833
  prompt_guard_engine_call
836
834
 
835
+ # Kernel V2 cutover: forge.config.json selects the Controller Home workflow.
836
+ # Prompt hooks are advisory only in this mode and MUST NOT materialize repo-local
837
+ # Plan/Work/check/session/cache state. Legacy .ai/harness projects continue below
838
+ # only so they can be migrated without breaking their existing workflow.
839
+ if modern_controller_home_workflow; then
840
+ emit_agentic_packaging_hint
841
+ emit_forge_route_hint
842
+ emit_codegraph_route_hint
843
+ emit_modern_controller_home_guidance
844
+ exit 0
845
+ fi
846
+
837
847
  if [[ "$PG_ENGINE_STATE" != "ok" ]]; then
838
848
  if [[ "$PG_ENGINE_STATE" == "legacy" ]]; then
839
849
  echo "[PromptGuard] Advisory: the installed forge CLI predates the prompt-verdict protocol; prompt intent gates are degraded to advisory for this prompt."
@@ -858,6 +868,22 @@ pg_fact DONE && done_intent=1
858
868
  plan_start_intent=0
859
869
  pg_fact PLAN_START && plan_start_intent=1
860
870
 
871
+ if modern_controller_home_runtime; then
872
+ if [ "$plan_start_intent" -eq 1 ]; then
873
+ echo "[PlanStartGate] Planning intent detected. Durable decomposition belongs to Forge Controller Plan/Work; no repo-local Draft plan or pending marker will be created."
874
+ fi
875
+ if [ "$implement_intent" -eq 1 ] && [ "$PG_ACTION" = "spec_block" ]; then
876
+ echo "[SpecGuard] Advisory: docs/spec.md is missing. Create or update authored product truth before implementation when the change needs a durable specification."
877
+ fi
878
+ if [ "$done_intent" -eq 1 ]; then
879
+ echo "[PlanStatusGuard] Controller Home owns completion authority; legacy active-plan/task-contract files are ignored for modern repositories."
880
+ fi
881
+ if [ "$implement_intent" -eq 0 ]; then
882
+ emit_workflow_file_guards
883
+ fi
884
+ exit 0
885
+ fi
886
+
861
887
  plan_research_ready=1
862
888
  if [ "$plan_start_intent" -eq 1 ]; then
863
889
  if ! has_research_for_new_plan; then
@@ -944,9 +970,9 @@ if [ "$done_intent" -eq 1 ]; then
944
970
  IFS=$'\t' read -r total_tasks done_tasks next_task <<< "$task_state"
945
971
  remaining_tasks=$(( ${total_tasks:-0} - ${done_tasks:-0} ))
946
972
  if [ "${remaining_tasks:-0}" -gt 0 ]; then
947
- echo "[ArchiveGuard] Done intent detected but active plan still has $remaining_tasks unchecked item(s). Refusing to auto-archive."
973
+ echo "[WorkflowCloseoutGuard] Done intent detected but active plan still has $remaining_tasks unchecked item(s). Refusing workflow closeout."
948
974
  hook_structured_error \
949
- "ArchiveGuard" \
975
+ "WorkflowCloseoutGuard" \
950
976
  "Done intent with $remaining_tasks unchecked active-plan task(s)." \
951
977
  "Finish the remaining Task Breakdown item: ${next_task:-see $active_plan}." \
952
978
  "state_violation"
@@ -968,22 +994,22 @@ if [ "$done_intent" -eq 1 ]; then
968
994
  fi
969
995
 
970
996
  if [ ! -x scripts/archive-workflow.sh ]; then
971
- echo "[AutoArchive] scripts/archive-workflow.sh is missing or not executable. Skipping auto-archive."
997
+ echo "[WorkflowCloseout] scripts/archive-workflow.sh compatibility helper is missing or not executable. Skipping closeout."
972
998
  hook_structured_error \
973
- "AutoArchive" \
999
+ "WorkflowCloseout" \
974
1000
  "scripts/archive-workflow.sh is missing or not executable." \
975
- "Install the workflow helper before relying on auto-archive." \
1001
+ "Install the workflow closeout helper before relying on automatic terminal cleanup." \
976
1002
  "missing_artifact"
977
1003
  exit 1
978
1004
  fi
979
1005
 
980
1006
  outcome="${PG_DONE_OUTCOME:-Completed}"
981
- echo "[AutoArchive] All quality gates passed. Archiving $active_plan as outcome=$outcome"
1007
+ echo "[WorkflowCloseout] All quality gates passed. Closing $active_plan as outcome=$outcome"
982
1008
  if ! archive_output="$(bash scripts/archive-workflow.sh --plan "$active_plan" --outcome "$outcome" 2>&1)"; then
983
1009
  printf '%s\n' "$archive_output"
984
1010
  hook_structured_error \
985
- "AutoArchive" \
986
- "Automatic archive failed for $active_plan." \
1011
+ "WorkflowCloseout" \
1012
+ "Automatic workflow closeout failed for $active_plan." \
987
1013
  "Run bash scripts/archive-workflow.sh --plan $active_plan --outcome $outcome and resolve the error." \
988
1014
  "contract_failure"
989
1015
  exit 1
@@ -6,7 +6,8 @@ set -euo pipefail
6
6
  # SessionStart context reminder if forge security scan finds anything.
7
7
 
8
8
  REPO_ROOT="${HOOK_REPO_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"
9
- SECURITY_DIR="$REPO_ROOT/.ai/harness/security"
9
+ HOOK_STATE_ROOT="${FORGE_HOOK_STATE_ROOT:-$REPO_ROOT/.ai/harness}"
10
+ SECURITY_DIR="${HOOK_STATE_ROOT%/}/security"
10
11
  STATE_FILE="$SECURITY_DIR/state.sha256"
11
12
  LATEST_FILE="$SECURITY_DIR/latest.json"
12
13
 
@@ -9,9 +9,10 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
9
9
  # shellcheck source=/dev/null
10
10
  . "$SCRIPT_DIR/lib/workflow-state.sh"
11
11
 
12
- # Cold-path housekeeping: both event logs grow unbounded otherwise.
12
+ # Cold-path housekeeping: machine event logs grow unbounded otherwise. Both
13
+ # paths resolve below Controller Home hook-state for modern forge-hook runs.
13
14
  workflow_rotate_events_file "$(workflow_events_file)" 2>/dev/null || true
14
- workflow_rotate_events_file ".ai/harness/architecture/events.jsonl" 2>/dev/null || true
15
+ workflow_rotate_events_file "$(workflow_machine_state_path '.ai/harness/architecture/events.jsonl' '.ai/harness/architecture/events.jsonl')" 2>/dev/null || true
15
16
 
16
17
  resume_file="$(workflow_resume_packet_file)"
17
18
 
@@ -209,11 +210,11 @@ render_tooling_update_context_once() {
209
210
  tooling_update_advisory_context() {
210
211
  local target state_dir report_file marker_file lock_dir tmp_report
211
212
 
212
- [[ -f ".ai/harness/workflow-contract.json" ]] || return 1
213
+ [[ -f "forge.config.json" || -f ".ai/harness/workflow-contract.json" ]] || return 1
213
214
  [[ "${FORGE_TOOLING_ADVISORY:-1}" != "0" ]] || return 1
214
215
 
215
216
  target="$(tooling_update_target)"
216
- state_dir=".ai/harness/security"
217
+ state_dir="$(workflow_machine_state_path '.ai/harness/security' '.ai/harness/security')"
217
218
  report_file="$state_dir/tooling-update-advisory-${target}.json"
218
219
  marker_file="$state_dir/tooling-update-advisory-${target}.rendered"
219
220
  lock_dir="$state_dir/tooling-update-advisory-${target}.lock"
@@ -269,7 +270,8 @@ continuation_section_has_signal() {
269
270
  }
270
271
 
271
272
  capability_context_pending() {
272
- local queue_file=".ai/harness/capability-context/requests.jsonl"
273
+ local queue_file
274
+ queue_file="$(workflow_machine_state_path '.ai/harness/capability-context/requests.jsonl' '.ai/harness/capability-context/requests.jsonl')"
273
275
  local pending_lines=""
274
276
  local pending_count="0"
275
277
 
@@ -12,10 +12,9 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
12
  . "$SCRIPT_DIR/lib/workflow-state.sh"
13
13
 
14
14
  plan_completeness_state_file() {
15
- workflow_repo_relative_path \
15
+ workflow_machine_state_path \
16
16
  "$(workflow_policy_get '.planning.completeness_state_file' '.ai/harness/planning/plan-completeness.json')" \
17
- '.ai/harness/planning/plan-completeness.json' \
18
- '.ai/harness/'
17
+ '.ai/harness/planning/plan-completeness.json'
19
18
  }
20
19
 
21
20
  plan_completeness_signature() {
@@ -155,6 +154,17 @@ should_run_plan_completeness_gate() {
155
154
 
156
155
  refresh_handoff
157
156
 
157
+ # Modern V2 delegates semantic Plan/Work completion to Controller Home. Keep the
158
+ # rebuildable session continuation above, but never revive repo-local pending
159
+ # orchestration or PlanCompleteness as a second completion authority.
160
+ if [[ -f "forge.config.json" ]]; then
161
+ if command -v jq >/dev/null 2>&1; then
162
+ [[ "$(jq -r '.runtimeState // empty' forge.config.json 2>/dev/null || true)" != "controller-home" ]] || exit 0
163
+ elif grep -Eq '"runtimeState"[[:space:]]*:[[:space:]]*"controller-home"' forge.config.json 2>/dev/null; then
164
+ exit 0
165
+ fi
166
+ fi
167
+
158
168
  stop_hook_active="$(hook_json_get '.stop_hook_active' 'false')"
159
169
  last_assistant_message="$(hook_json_get '.last_assistant_message' '')"
160
170
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "version": "initializer-question-pack.v4",
4
- "goal": "Infer strong harness defaults first, then confirm only the decisions that materially change the generated repo-local workflow.",
4
+ "goal": "Infer strong harness defaults first, then confirm only decisions that materially change authored repository structure or Controller-owned workflow behavior.",
5
5
  "decisionPoints": [
6
6
  {
7
7
  "id": "project_identity",
@@ -185,7 +185,7 @@
185
185
  "evaluationProfile": "browser-qa",
186
186
  "handoffProfile": "artifact-aware",
187
187
  "recoveryProfile": "hybrid",
188
- "stateProfile": "file-backed",
188
+ "stateProfile": "controller-home",
189
189
  "contextProfile": "stable-root-progressive-subdir",
190
190
  "documentationProfile": "minimal-agentic",
191
191
  "aiNativeProfile": "none",
@@ -211,7 +211,7 @@
211
211
  "orchestrationProfiles": {
212
212
  "shared-long-running-harness": {
213
213
  "label": "Shared long-running harness",
214
- "description": "Default planner -> generator -> evaluator loop with repo-local artifacts and strict execution gates."
214
+ "description": "Default Controller-guided planning -> implementation -> verification loop with durable Runtime authority in Controller Home and authored repository evidence only."
215
215
  },
216
216
  "lightweight-collaboration": {
217
217
  "label": "Lightweight collaboration",
@@ -253,13 +253,17 @@
253
253
  }
254
254
  },
255
255
  "stateProfiles": {
256
- "file-backed": {
257
- "label": "File-backed",
258
- "description": "Persist execution, verification, and handoff state to repo-local artifacts."
256
+ "controller-home": {
257
+ "label": "Controller Home",
258
+ "description": "Persist mutable execution, verification, authorization, handoff, and lifecycle state under the Forge Controller Home; keep the repository limited to authored/declarative content."
259
259
  },
260
260
  "context-light": {
261
261
  "label": "Context-light",
262
- "description": "Use the same workflow surface with fewer persisted state assumptions for lightweight repos."
262
+ "description": "Use Controller Home only when durable continuity is required; keep bounded direct work ephemeral."
263
+ },
264
+ "file-backed": {
265
+ "label": "Legacy file-backed (migration only)",
266
+ "description": "Compatibility input for older adopted repositories. Do not select for new projects or create new repo-local Runtime state."
263
267
  }
264
268
  },
265
269
  "contextProfiles": {