@moretea-labs/forge 1.5.1 → 1.7.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 (434) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +46 -0
  3. package/CLAUDE.md +2 -0
  4. package/DESIGN.md +7 -2
  5. package/README.md +4 -4
  6. package/README.zh-CN.md +2 -2
  7. package/SKILL.md +2 -2
  8. package/THIRD_PARTY_NOTICES.md +1 -1
  9. package/agents/openai.yaml +1 -1
  10. package/assets/hooks/hook-input.sh +11 -8
  11. package/assets/hooks/lib/session-state.sh +10 -7
  12. package/assets/hooks/lib/workflow-state.sh +13 -177
  13. package/assets/hooks/post-tool-observer.sh +8 -2
  14. package/assets/hooks/pre-edit-guard.sh +8 -39
  15. package/assets/hooks/prompt-guard.sh +7 -83
  16. package/assets/hooks/session-start-context.sh +56 -1
  17. package/assets/partials/05-workflow.partial.md +1 -1
  18. package/assets/partials-agents/03-orchestration.partial.md +1 -1
  19. package/assets/plugin-registry.v1.json +54 -3
  20. package/assets/reference-configs/document-generation.md +1 -1
  21. package/assets/reference-configs/harness-overview.md +1 -1
  22. package/assets/reference-configs/hook-operations.md +1 -1
  23. package/assets/reference-configs/sprint-contracts.md +3 -3
  24. package/assets/skill-version.json +2 -2
  25. package/assets/templates/contract.template.md +2 -7
  26. package/assets/templates/helpers/capture-plan.sh +2 -2
  27. package/assets/templates/helpers/check-task-workflow.sh +4 -4
  28. package/assets/templates/helpers/contract-worktree.sh +1 -21
  29. package/assets/templates/helpers/ensure-task-workflow.sh +13 -38
  30. package/assets/templates/helpers/migrate-project-template.sh +22 -45
  31. package/assets/templates/helpers/new-plan.sh +1 -1
  32. package/assets/templates/helpers/plan-to-todo.sh +12 -37
  33. package/assets/templates/helpers/ship-worktrees.sh +2 -29
  34. package/assets/templates/helpers/sprint-backlog.sh +6 -6
  35. package/assets/templates/helpers/verify-contract.sh +1 -111
  36. package/assets/templates/helpers/verify-sprint.sh +3 -180
  37. package/assets/templates/plan.template.md +1 -1
  38. package/assets/templates/review.template.md +9 -34
  39. package/assets/workflow-contract.v1.json +10 -19
  40. package/docs/README.md +10 -10
  41. package/docs/architecture/CURRENT.md +170 -0
  42. package/docs/architecture/EVOLUTION.md +42 -0
  43. package/docs/architecture/current/README.md +4 -156
  44. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
  45. package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
  46. package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
  47. package/docs/architecture/history/README.md +7 -0
  48. package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
  49. package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
  50. package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
  51. package/docs/architecture/history.md +3 -34
  52. package/docs/architecture/index.md +15 -98
  53. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
  54. package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
  55. package/docs/architecture/versions/1.6.md +38 -0
  56. package/docs/architecture/versions/1.7.md +41 -0
  57. package/docs/forge-chatgpt-browser-engine.md +2 -2
  58. package/docs/forge-chatgpt-mcp-setup.md +4 -28
  59. package/docs/forge-chatgpt-supervised-automation.md +3 -3
  60. package/docs/forge-github-issue-launcher.md +1 -1
  61. package/docs/forge-runtime-self-healing-loop.md +1 -1
  62. package/docs/operations/controller-browser-plugin.md +38 -22
  63. package/docs/operations/controller-performance-and-502.md +124 -0
  64. package/docs/operations/controller-reliability-runbook.md +1 -1
  65. package/docs/operations/features.md +3 -3
  66. package/docs/operations/github-repository.md +1 -1
  67. package/docs/operations/homebrew.md +2 -2
  68. package/docs/operations/mcp-tool-exposure.md +5 -3
  69. package/docs/tutorials/01-install-and-start.md +1 -1
  70. package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
  71. package/docs/wiki/Architecture.md +6 -6
  72. package/docs/wiki/Implementation.md +2 -2
  73. package/docs/wiki/Installation.md +1 -1
  74. package/docs/wiki/Integrations.md +2 -2
  75. package/docs/wiki/Quick-Start.md +1 -1
  76. package/docs/wiki/Work-Lifecycle.md +1 -1
  77. package/package.json +29 -10
  78. package/scripts/activate-source-baseline.ts +17 -13
  79. package/scripts/benchmark-background-check-overlap.ts +228 -0
  80. package/scripts/benchmark-mcp-host.sh +117 -0
  81. package/scripts/benchmark-mcp-transport.ts +170 -0
  82. package/scripts/benchmark-quality-harness.ts +146 -0
  83. package/scripts/benchmark-route-session-concurrency.ts +207 -6
  84. package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
  85. package/scripts/benchmark-typescript-navigation.ts +186 -0
  86. package/scripts/benchmark-work-efficiency.ts +334 -0
  87. package/scripts/capture-plan.sh +3 -3
  88. package/scripts/check-agent-tooling.sh +8 -35
  89. package/scripts/check-architecture-sync.sh +17 -86
  90. package/scripts/check-mcp-compatibility.ts +14 -0
  91. package/scripts/check-public-docs.sh +14 -1
  92. package/scripts/check-runtime-architecture.mjs +107 -64
  93. package/scripts/check-stable-baseline.ts +92 -0
  94. package/scripts/check-task-workflow.sh +4 -4
  95. package/scripts/contract-worktree.sh +1 -21
  96. package/scripts/ensure-task-workflow.sh +22 -55
  97. package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
  98. package/scripts/install-standalone-recovery.ts +24 -0
  99. package/scripts/lib/project-init-lib.sh +15 -44
  100. package/scripts/migrate-chatgpt-automation-schedules.ts +64 -0
  101. package/scripts/migrate-project-template.sh +23 -1179
  102. package/scripts/new-plan.sh +1 -1
  103. package/scripts/plan-to-todo.sh +11 -36
  104. package/scripts/run-governed-gate.ts +2 -1
  105. package/scripts/ship-worktrees.sh +2 -29
  106. package/scripts/smoke-ios-physical-device.ts +4 -2
  107. package/scripts/smoke-runtime-recovery.ts +1 -35
  108. package/scripts/smoke-schedule-engine.ts +1 -20
  109. package/scripts/sprint-backlog.sh +1 -1
  110. package/scripts/verify-contract.sh +1 -111
  111. package/scripts/verify-forge-runtime.sh +0 -1
  112. package/scripts/verify-sprint.sh +3 -180
  113. package/scripts/workflow-contract.ts +1 -5
  114. package/src/cli/commands/chatgpt.ts +31 -2
  115. package/src/cli/commands/init-hook.ts +3 -3
  116. package/src/cli/commands/mcp.ts +9 -5
  117. package/src/cli/commands/plugin.ts +37 -10
  118. package/src/cli/commands/recovery.ts +25 -3
  119. package/src/cli/commands/runtime.ts +55 -3
  120. package/src/cli/commands/security.ts +12 -1
  121. package/src/cli/commands/setup-profile.ts +31 -21
  122. package/src/cli/controller/check-runner.ts +106 -3
  123. package/src/cli/controller/composite-result.ts +1 -1
  124. package/src/cli/controller/context/focus.ts +51 -0
  125. package/src/cli/controller/context/instruction-context.ts +114 -0
  126. package/src/cli/controller/context/known-paths.ts +76 -0
  127. package/src/cli/controller/context/query-planning.ts +110 -0
  128. package/src/cli/controller/context/rule-resolution.ts +532 -0
  129. package/src/cli/controller/context/source-materializer.ts +278 -0
  130. package/src/cli/controller/context/structural.ts +16 -0
  131. package/src/cli/controller/context/types.ts +286 -0
  132. package/src/cli/controller/context-pack.ts +898 -430
  133. package/src/cli/controller/launch-agents.ts +77 -2
  134. package/src/cli/controller/operational-plan.ts +2 -2
  135. package/src/cli/controller/work-mode.ts +6 -4
  136. package/src/cli/editing/edit-session.ts +60 -7
  137. package/src/cli/github/github.ts +133 -0
  138. package/src/cli/hook/prompt-guard-decision.ts +17 -18
  139. package/src/cli/hook/prompt-intents.ts +1 -1
  140. package/src/cli/installer/managed-entries.ts +15 -1
  141. package/src/cli/local-bridge/console-automations.ts +225 -67
  142. package/src/cli/local-bridge/console-view-models.ts +3 -35
  143. package/src/cli/local-bridge/facade-api.ts +2 -217
  144. package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
  145. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +153 -3
  146. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
  147. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +183 -3
  148. package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +1 -1
  149. package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +4 -3
  150. package/src/cli/local-bridge/frontend/src/lib/api.ts +18 -11
  151. package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
  152. package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +1 -1
  153. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +4 -3
  154. package/src/cli/local-bridge/frontend/src/styles.css +27 -11
  155. package/src/cli/local-bridge/frontend/src/types.ts +8 -7
  156. package/src/cli/local-bridge/job-store.ts +1 -490
  157. package/src/cli/local-bridge/server.ts +29 -532
  158. package/src/cli/local-bridge/ui-dist/app.css +1 -1
  159. package/src/cli/local-bridge/ui-dist/app.js +5101 -4967
  160. package/src/cli/mcp/auth.ts +5 -5
  161. package/src/cli/mcp/instructions.ts +3 -2
  162. package/src/cli/mcp/legacy-tool-service.ts +0 -189
  163. package/src/cli/mcp/multi-repository.ts +16 -5
  164. package/src/cli/mcp/oauth.ts +175 -26
  165. package/src/cli/mcp/paths.ts +8 -2
  166. package/src/cli/mcp/repository-tools.ts +356 -101
  167. package/src/cli/mcp/server.ts +625 -54
  168. package/src/cli/mcp/tool-capability-cache.ts +1 -1
  169. package/src/cli/mcp/toolset-selection.ts +1 -1
  170. package/src/cli/mcp/toolset.ts +42 -5
  171. package/src/cli/mcp/transports/http.ts +125 -15
  172. package/src/cli/mcp/transports/session-registry.ts +67 -5
  173. package/src/cli/mcp/types.ts +3 -3
  174. package/src/cli/repositories/command-classifier.ts +209 -14
  175. package/src/cli/repositories/command-executor.ts +55 -521
  176. package/src/cli/repositories/command-process.ts +108 -0
  177. package/src/cli/repositories/command-scope.ts +99 -41
  178. package/src/cli/repositories/controller-home.ts +7 -8
  179. package/src/cli/repositories/git-command-executor.ts +2 -0
  180. package/src/cli/repositories/locks.ts +53 -16
  181. package/src/cli/repositories/repository-snapshot.ts +121 -0
  182. package/src/cli/repositories/safe-patch.ts +6 -4
  183. package/src/cli/repositories/selected-path-actions.ts +17 -9
  184. package/src/cli/repositories/structured-git.ts +110 -10
  185. package/src/cli/repository/inspector.ts +565 -62
  186. package/src/cli/repository/session-cache.ts +58 -17
  187. package/src/cli/v81-entry.ts +1 -4
  188. package/src/effects/fs-transaction.ts +85 -17
  189. package/src/runtime/context/codegraph-read-provider.ts +233 -2
  190. package/src/runtime/context/codegraph-sidecar.cjs +74 -40
  191. package/src/runtime/context/generic-lsp-provider.ts +355 -0
  192. package/src/runtime/context/lsp-client.ts +283 -0
  193. package/src/runtime/context/semantic-navigation.ts +275 -0
  194. package/src/runtime/context/swift-navigation.ts +565 -0
  195. package/src/runtime/context/typescript-navigation.ts +226 -0
  196. package/src/runtime/control-plane/dispatch-priority.ts +28 -0
  197. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +196 -2
  198. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
  199. package/src/runtime/control-plane/execution/execution-identity.ts +65 -14
  200. package/src/runtime/control-plane/execution/session-store.ts +18 -0
  201. package/src/runtime/control-plane/execution/validation.ts +15 -2
  202. package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
  203. package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
  204. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
  205. package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
  206. package/src/runtime/control-plane/execution/work-task-receipt.ts +54 -11
  207. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +175 -8
  208. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +28 -21
  209. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +87 -9
  210. package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
  211. package/src/runtime/control-plane/facade/controller-round-relay.ts +991 -0
  212. package/src/runtime/control-plane/facade/controller-session-store.ts +144 -14
  213. package/src/runtime/control-plane/facade/goal-workloop-access.ts +9 -2
  214. package/src/runtime/control-plane/facade/goal-workloop.ts +885 -105
  215. package/src/runtime/control-plane/facade/index.ts +1 -0
  216. package/src/runtime/control-plane/facade/plan-contract-store.ts +211 -26
  217. package/src/runtime/control-plane/facade/requirement-board.ts +24 -8
  218. package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
  219. package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
  220. package/src/runtime/control-plane/facade/types.ts +55 -11
  221. package/src/runtime/control-plane/facade/work-contract-store.ts +204 -73
  222. package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
  223. package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
  224. package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
  225. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
  226. package/src/runtime/control-plane/global-scheduler/maintenance.ts +145 -0
  227. package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
  228. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
  229. package/src/runtime/control-plane/global-scheduler/scheduler.ts +273 -542
  230. package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
  231. package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
  232. package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
  233. package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
  234. package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
  235. package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
  236. package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
  237. package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
  238. package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
  239. package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
  240. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +50 -0
  241. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +642 -51
  242. package/src/runtime/control-plane/launcher/launch-reservation-store.ts +40 -0
  243. package/src/runtime/control-plane/launcher/thin-launcher.ts +194 -10
  244. package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
  245. package/src/runtime/control-plane/persistence/requirement-store.ts +15 -11
  246. package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
  247. package/src/runtime/control-plane/release-retention.ts +62 -2
  248. package/src/runtime/control-plane/routing/route-policy.ts +7 -16
  249. package/src/runtime/control-plane/runtime-status-client.ts +0 -2
  250. package/src/runtime/diagnostics/mcp-timing.ts +19 -0
  251. package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
  252. package/src/runtime/diagnostics/performance.ts +24 -1
  253. package/src/runtime/evidence/event-ledger.ts +1 -1
  254. package/src/runtime/execution/jobs/store.ts +58 -4
  255. package/src/runtime/execution/jobs/types.ts +1 -1
  256. package/src/runtime/execution/managed-workspace.ts +203 -1
  257. package/src/runtime/execution/process-runtime/check-facade.ts +52 -14
  258. package/src/runtime/execution/process-runtime/check-result.ts +63 -2
  259. package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
  260. package/src/runtime/execution/process-runtime/command-facade.ts +346 -40
  261. package/src/runtime/execution/process-runtime/gc.ts +98 -12
  262. package/src/runtime/execution/process-runtime/lightweight-managed.ts +1184 -0
  263. package/src/runtime/execution/process-runtime/persisted-check.ts +57 -6
  264. package/src/runtime/execution/process-runtime/resource-claims.ts +97 -8
  265. package/src/runtime/execution/process-runtime/runtime.ts +59 -4
  266. package/src/runtime/execution/process-runtime/store.ts +7 -0
  267. package/src/runtime/execution/process-runtime/types.ts +2 -0
  268. package/src/runtime/execution/thin-harness/async-process.ts +12 -2
  269. package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
  270. package/src/runtime/execution/workers/executor.ts +0 -48
  271. package/src/runtime/gateway/mcp/execution-tools.ts +1219 -126
  272. package/src/runtime/gateway/mcp/process-tools.ts +83 -37
  273. package/src/runtime/gateway/mcp/router.ts +185 -83
  274. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +546 -0
  275. package/src/runtime/gateway/mcp/runtime-tools.ts +2555 -1616
  276. package/src/runtime/model-clients/deepseek-adapter.ts +0 -32
  277. package/src/runtime/plugins/app-store-connect-adapter.ts +123 -19
  278. package/src/runtime/plugins/browser-adapter.ts +2925 -318
  279. package/src/runtime/plugins/browser-automation-service.ts +10 -0
  280. package/src/runtime/plugins/browser-handoff-host.ts +6 -31
  281. package/src/runtime/plugins/browser-handoff.ts +92 -5
  282. package/src/runtime/plugins/browser-macos-bridge.ts +586 -45
  283. package/src/runtime/plugins/browser-node-bridge.ts +6 -34
  284. package/src/runtime/plugins/browser-provider-registry.ts +109 -0
  285. package/src/runtime/plugins/browser-runtime-contract.ts +152 -0
  286. package/src/runtime/plugins/browser-runtime.ts +183 -0
  287. package/src/runtime/plugins/browser-session-authority.ts +332 -0
  288. package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
  289. package/src/runtime/plugins/desktop-operator-registration.ts +15 -12
  290. package/src/runtime/plugins/external-adapter.ts +324 -3
  291. package/src/runtime/plugins/external-registration.ts +84 -5
  292. package/src/runtime/plugins/external-unix-socket.ts +7 -1
  293. package/src/runtime/plugins/first-party-registry.ts +4 -2
  294. package/src/runtime/plugins/github-adapter.ts +125 -0
  295. package/src/runtime/plugins/gmail-adapter.ts +28 -2
  296. package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
  297. package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
  298. package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
  299. package/src/runtime/plugins/ios-adapter.ts +106 -16
  300. package/src/runtime/plugins/ios-agent-device.ts +234 -64
  301. package/src/runtime/plugins/ios-physical-device.ts +1143 -392
  302. package/src/runtime/plugins/lightweight-action.ts +153 -0
  303. package/src/runtime/plugins/local-system-adapter.ts +125 -8
  304. package/src/runtime/plugins/macos-capability-broker.ts +55 -9
  305. package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
  306. package/src/runtime/plugins/plugin-management-adapter.ts +181 -0
  307. package/src/runtime/plugins/resend-adapter.ts +1 -1
  308. package/src/runtime/plugins/store.ts +366 -24
  309. package/src/runtime/plugins/types.ts +39 -2
  310. package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
  311. package/src/runtime/projections/git-status-sampler.ts +16 -16
  312. package/src/runtime/projections/materialized-view.ts +28 -10
  313. package/src/runtime/recovery/actions.ts +0 -10
  314. package/src/runtime/recovery/classifier.ts +0 -9
  315. package/src/runtime/recovery/maintenance-executor.ts +415 -18
  316. package/src/runtime/recovery/probe.ts +0 -1
  317. package/src/runtime/recovery/types.ts +0 -1
  318. package/src/runtime/root/mcp-transport.ts +180 -10
  319. package/src/runtime/root/package-connector-service.ts +186 -8
  320. package/src/runtime/root/package-runtime-release.ts +143 -17
  321. package/src/runtime/root/package-runtime-service.ts +430 -22
  322. package/src/runtime/root/release-manifest.ts +7 -2
  323. package/src/runtime/root/release-materialize.ts +162 -19
  324. package/src/runtime/root/release-store.ts +48 -11
  325. package/src/runtime/root/runtime.ts +23 -5
  326. package/src/runtime/root/service.ts +100 -27
  327. package/src/runtime/root/types.ts +2 -0
  328. package/src/runtime/safe-tooling/index.ts +0 -1
  329. package/src/runtime/safe-tooling/ios-development.ts +321 -63
  330. package/src/runtime/safe-tooling/types.ts +0 -30
  331. package/src/runtime/shared/trusted-executable.ts +62 -0
  332. package/src/runtime/shared/trusted-node-executable.ts +48 -0
  333. package/src/runtime/standalone-recovery/core.ts +702 -94
  334. package/src/runtime/standalone-recovery/entry.ts +99 -23
  335. package/src/runtime/standalone-recovery/installer.ts +19 -3
  336. package/src/runtime/standalone-recovery/service-labels.ts +2 -0
  337. package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
  338. package/src/runtime/workflow/schedules/browser-probe.ts +258 -0
  339. package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +40 -0
  340. package/src/runtime/workflow/schedules/engine.ts +509 -80
  341. package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
  342. package/src/runtime/workflow/schedules/settlement.ts +48 -4
  343. package/src/runtime/workflow/schedules/store.ts +131 -10
  344. package/src/runtime/workflow/schedules/types.ts +6 -3
  345. package/src/runtime/workflow/schedules/work-continuation.ts +120 -34
  346. package/src/testing/test-governance.ts +8 -40
  347. package/assets/reference-configs/heartbeat-triage.md +0 -57
  348. package/assets/templates/helpers/harness-trace-grade.sh +0 -150
  349. package/assets/templates/helpers/heartbeat-triage.sh +0 -361
  350. package/assets/templates/helpers/maintenance-triage.sh +0 -167
  351. package/bin/forge-desktop-helper.mjs +0 -204
  352. package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
  353. package/docs/architecture/current/architecture-invariants.md +0 -331
  354. package/docs/architecture/current/automation-and-schedule-engine.md +0 -453
  355. package/docs/architecture/current/codegraph-context-provider.md +0 -226
  356. package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
  357. package/docs/architecture/current/controller-repository-decoupling.md +0 -148
  358. package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -354
  359. package/docs/architecture/current/entity-model.md +0 -592
  360. package/docs/architecture/current/external-plugin-governance.md +0 -396
  361. package/docs/architecture/current/failure-recovery.md +0 -447
  362. package/docs/architecture/current/governance.md +0 -213
  363. package/docs/architecture/current/human-interaction-plane.md +0 -87
  364. package/docs/architecture/current/implementation-status.md +0 -128
  365. package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
  366. package/docs/architecture/current/legacy-governance.md +0 -58
  367. package/docs/architecture/current/local-workspace-target-grants.md +0 -70
  368. package/docs/architecture/current/migration-roadmap.md +0 -105
  369. package/docs/architecture/current/multi-repository-execution.md +0 -371
  370. package/docs/architecture/current/operations-runbook.md +0 -45
  371. package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
  372. package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
  373. package/docs/architecture/current/repository-access-modes.md +0 -102
  374. package/docs/architecture/current/route-policy.md +0 -15
  375. package/docs/architecture/current/route-session-concurrency.md +0 -85
  376. package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
  377. package/docs/architecture/current/runtime-directory-map.md +0 -49
  378. package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
  379. package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
  380. package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
  381. package/docs/architecture/current/system-overview.md +0 -144
  382. package/docs/architecture/current/target-requirements-traceability.md +0 -202
  383. package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
  384. package/docs/architecture/current/thin-harness-v1.md +0 -311
  385. package/docs/architecture/current/verification-and-release-gates.md +0 -391
  386. package/docs/forge-autonomous-goal-loop.md +0 -9
  387. package/docs/forge-provider-configuration.md +0 -7
  388. package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -83
  389. package/docs/operations/controller-desktop-plugin.md +0 -112
  390. package/docs/operations/gmail-assistant-routines.md +0 -186
  391. package/docs/operations/personal-assistant-operator-guide.md +0 -61
  392. package/docs/operations/provider-configuration.md +0 -31
  393. package/scripts/harness-trace-grade.sh +0 -150
  394. package/scripts/heartbeat-triage.sh +0 -361
  395. package/scripts/maintenance-triage.sh +0 -167
  396. package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
  397. package/src/cli/repositories/goal-registry.ts +0 -239
  398. package/src/runtime/assistant/action-proposals.ts +0 -279
  399. package/src/runtime/assistant/intent.ts +0 -395
  400. package/src/runtime/assistant/model-provider.ts +0 -460
  401. package/src/runtime/assistant/openapi.ts +0 -223
  402. package/src/runtime/assistant/policy.ts +0 -89
  403. package/src/runtime/assistant/readiness.ts +0 -258
  404. package/src/runtime/assistant/routine-runtime.ts +0 -477
  405. package/src/runtime/assistant/schedule-binding.ts +0 -171
  406. package/src/runtime/assistant/standing-grants.ts +0 -375
  407. package/src/runtime/assistant/store.ts +0 -243
  408. package/src/runtime/assistant/types.ts +0 -135
  409. package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
  410. package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
  411. package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
  412. package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
  413. package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
  414. package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
  415. package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
  416. package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
  417. package/src/runtime/control-plane/goal-loop/index.ts +0 -13
  418. package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
  419. package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
  420. package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
  421. package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
  422. package/src/runtime/control-plane/goal-loop/types.ts +0 -378
  423. package/src/runtime/control-plane/startup-recovery.ts +0 -198
  424. package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
  425. package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
  426. package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
  427. package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
  428. package/src/runtime/plugins/desktop-adapter.ts +0 -374
  429. package/src/runtime/safe-tooling/browser-safe.ts +0 -133
  430. package/src/runtime/workflow/findings/store.ts +0 -204
  431. package/src/runtime/workflow/findings/types.ts +0 -58
  432. package/src/runtime/workflow/portfolio/engine.ts +0 -20
  433. package/src/runtime/workflow/portfolio/store.ts +0 -185
  434. package/src/runtime/workflow/portfolio/types.ts +0 -29
@@ -1,94 +0,0 @@
1
- # Control-plane authority inventory
2
-
3
- Status: current implementation
4
- Cutover date: 2026-08-05
5
-
6
- ## Invariant
7
-
8
- Each mutable control-plane record family has exactly one writer. For the
9
- migrated families below that writer targets
10
- `<durable-controller-home>/control-plane.sqlite`. Git stores source and accepted
11
- documentation; artifact roots store bounded external evidence. Neither is a
12
- second lifecycle writer.
13
-
14
- ## Mutable families and writers
15
-
16
- | Family | SQLite identity | Sole writer boundary | Read/default projection |
17
- | --- | --- | --- | --- |
18
- | Requirement | `requirement/controller/<requirementId>` | Requirement store and Requirement facade CAS operations | Requirement Board |
19
- | ExecutionPlan | `plan_contract/<repoId>/<planId>` | Plan-contract store and migrated completion transaction | Requirement Board and Execution Diagnostics |
20
- | PlanStep | versioned member of its ExecutionPlan row | Plan mutation transaction; never Task JSON | Execution Diagnostics; deprecated Task alias derives from this state |
21
- | Work and Requirement/Plan relationship | Work/contract namespaces scoped to repository | Work lifecycle store | Execution Diagnostics |
22
- | Portfolio migration marker | `requirement_portfolio_migration/<repoId>/requirement-portfolio-20260802-v1` | one-time migration transaction | cutover guard and audit diagnostics |
23
- | Revision/audit | `control_plane_records`, `control_plane_audit` | SQLite store transaction | integrity and recovery inspection |
24
- | Repository identity | Git and repository registry, not Issue/Task | repository registration and Git observation paths | Work/diagnostic identity fields |
25
- | Logs, binaries and large evidence | artifact files referenced by stable IDs | process/check/artifact owners | evidence references only |
26
-
27
- ## Frozen compatibility surfaces
28
-
29
- The following surfaces have no durable runtime mutation authority after the
30
- migration marker exists:
31
-
32
- - repository Issue JSON/Markdown creation, status, archive and update;
33
- - repository Task status, verification, completion and dependency mutation;
34
- - `currentIssue` and legacy project-state mutation;
35
- - legacy project-board mutation and default Issue/Task board;
36
- - task-ledger and handoff artifact writes;
37
- - governance reconciliation that mutates Issue/Task/project state;
38
- - MCP aliases for legacy Issue/Task/currentIssue mutation;
39
- - Local Bridge Issue/Task/currentIssue mutation routes;
40
- - fallback overwrite or repository-to-SQLite reconciliation;
41
- - Work-to-Task durable reverse projection.
42
-
43
- Pre-cutover parsing helpers and ephemeral Issue support may remain for an
44
- unmigrated fixture or historical tool compatibility. Every durable public entry
45
- checks the migration marker before reading or writing a legacy file. This is not
46
- a dual-writer allowance.
47
-
48
- ## Compatibility read contract
49
-
50
- A historical Issue/Task alias may appear only in Execution Diagnostics or an
51
- explicit legacy read API. Its state is derived from authoritative Requirement,
52
- ExecutionPlan, PlanStep and Work rows. Responses identify themselves as
53
- `deprecated`, `frozen`, `readOnly` and `controller-home-sqlite` authoritative.
54
- Changing the source Issue/Task file after cutover cannot alter the projection.
55
-
56
- The default user view is Requirement Board. It does not select a
57
- `currentIssue`, expose a mutable legacy board or infer execution state from Git
58
- JSON.
59
-
60
- ## Export contract
61
-
62
- `requirement-portfolio-export` is SQLite-to-offline only. It includes the source
63
- revision, migration fingerprint, per-record SQLite revisions and a content
64
- fingerprint. Publication is staged and atomic. It cannot target `tasks/issues`,
65
- has `replayAllowed: false`, and export failure does not affect the committed
66
- SQLite transaction.
67
-
68
- ## Deletion verification
69
-
70
- The final cutover tests prove:
71
-
72
- 1. all durable Issue/Task writer entry points fail at the cutover guard;
73
- 2. no source file contains both an authoritative SQLite writer call and a
74
- legacy writer call;
75
- 3. no reverse export importer or stale-projection replay path exists;
76
- 4. late legacy writes leave SQLite-derived views unchanged;
77
- 5. Canonical Runtime and standalone Recovery minimum bootstrap do not depend on
78
- legacy Issue/Task files.
79
-
80
- Any later non-critical compatibility residue is recorded as a
81
- MaintenanceFinding. It does not reopen a completed Requirement unless the user
82
- outcome itself regresses.
83
-
84
- ## Session continuation versus HandoffItem
85
-
86
- The frozen `handoff artifact writes` rule refers to lifecycle/decision handoff state. Current hooks may write only the ignored, rebuildable host-session cache under `.ai/harness/session/`; those files are projections for fresh-session context and are never control-plane writers.
87
-
88
- A decision requiring ChatGPT or user judgement is represented by Runtime `HandoffItem` and surfaced through `rh_inbox`. Session Markdown cannot create, acknowledge, resolve, dismiss, supersede, or expire a `HandoffItem`.
89
-
90
- `HandoffItem` persistence intentionally remains Controller-owned JSON at `Controller Home/repositories/<repoId>/handoff-inbox/index.json`, written atomically under the repository handoff-inbox lock. It is the sole authority for the attention/decision inbox. It is not moved into the Requirement/Plan/Work SQLite tables merely for storage uniformity: those tables own transactional delivery lifecycle, while the inbox owns bounded human/controller judgement points. Runtime restart recovery reopens this Controller Home record; repo-local session, projection, controller-packet, and transfer files are never replayed into it.
91
-
92
- Repo-local recovery artifacts now have disjoint namespaces: `.ai/harness/session/` for rebuildable host-session context, `.ai/harness/controller/packets/` for bounded external-controller packets, `.ai/harness/projections/` for read-only compatibility/status views, and `.ai/harness/transfers/` for patch-transfer artifacts. The generic `.ai/harness/handoff/` namespace is retired.
93
-
94
- See `docs/architecture/current/legacy-governance.md` for the RepoHarness-to-Forge disposition rules.
@@ -1,148 +0,0 @@
1
- # Controller 与仓库解耦计划
2
-
3
- ## 背景
4
-
5
- forge 已经具备 Repository Registry、`repoId`、`checkoutId` 和 controller home 运行态目录,但历史启动入口仍然以 `--repo` 为中心。这会让 MCP Gateway、Local Bridge 和具体仓库之间的边界变得模糊:服务看起来像是“从某个仓库启动并代表该仓库”,而不是“全局 controller 服务管理多个仓库”。
6
-
7
- 目标架构应改为:
8
-
9
- ```text
10
- ChatGPT / Local UI
11
- -> MCP Gateway / Local Bridge
12
- -> Controller Runtime
13
- -> Repository Registry
14
- -> repoId + checkoutId scoped repository operation
15
- ```
16
-
17
- `repoRoot` 只应在注册仓库、兼容旧配置、具体执行命令时出现;服务级配置和运行态应逐步迁移到 controller home。
18
-
19
- ## 命名边界
20
-
21
- - **MCP Gateway**:ChatGPT 连接的全局工具网关,不应绑定某个仓库身份。
22
- - **Local Bridge**:本机 Local Workbench/API 兼容名称,负责本地 GUI、移动 intent、本地任务入口。
23
- - **Repository**:被注册、选择、执行的工作目标。
24
- - **repoId / checkoutId**:所有仓库级操作的显式作用域。
25
- - **repoRoot**:仓库本地路径,只在注册和执行层使用。
26
-
27
- ## 分阶段改动
28
-
29
- ### Phase 1:文档与入口语义收敛
30
-
31
- - 将 `--repo` 描述为兼容默认仓库和配置引导入口。
32
- - 文档中明确 MCP Gateway / Local Bridge 是全局 controller 服务。
33
- - GUI 和用户文案避免把 Local Bridge 暴露成用户需要理解的概念。
34
-
35
- ### Phase 2:Local Bridge 支持 repoId-scoped 业务入口
36
-
37
- 先不迁移存储,降低风险。
38
-
39
- - `LocalBridgeServerOptions` 保留 `repoRoot` 作为兼容 fallback。
40
- - 新增 `controllerHome` 和 `defaultRepoId` 选项。
41
- - `/api/snapshot`、`/api/user-snapshot` 支持 `?repoId=` 和 `?checkoutId=`。
42
- - 新增 `/api/repositories/:repoId/snapshot`。
43
- - 新增 `/api/repositories/:repoId/user-snapshot`。
44
- - 仓库列表按 selected repoId 标记 current,而不是只能按启动 repoRoot 判断。
45
- - completion、progress、governance、assistant readiness/intent 和 recovery probe/plan/apply 入口通过 request 解析目标仓库。
46
- - assistant inbox/routines/memory、runtime cleanup、mobile devices 入口通过 request 解析目标仓库。
47
- - project-state、issue focus、launch/archive/restore、task launch/verify/accept/request-changes/cancel/dependencies 和 timeline 入口通过 request 解析目标仓库。
48
- - task detail、worklog export、edit session list/detail/diff/savepoint/verify/finalize/rollback 入口通过 request 解析目标仓库。
49
- - plugin、GitHub sync、browser target、DeepSeek handoff/request 入口通过 request 解析目标仓库。
50
- - local jobs 与 runs 的 detail/log/events/finish/diff/integrate/cancel/retry 入口通过 request 解析目标仓库。
51
-
52
- ### Phase 3:迁移服务级运行态到 controllerHome
53
-
54
- 后续迁移应拆独立任务,避免和 UI/执行逻辑混在一起。
55
-
56
- MCP service-level 配置以 controller home 为 authority:
57
-
58
- ```text
59
- controllerHome/
60
- mcp/mcp.local.json
61
- mcp/mcp.runtime.json
62
- mcp/mcp.oauth.json
63
- mcp/mcp.oauth-tokens.json
64
- mcp/mcp.tokens.json
65
- local-bridge/server.json
66
- local-bridge/sessions.json
67
- plugins/*.json
68
- ```
69
-
70
- 继续 repo-scoped:
71
-
72
- ```text
73
- controllerHome/repositories/<repoId>/runs
74
- controllerHome/repositories/<repoId>/local-jobs
75
- controllerHome/repositories/<repoId>/worktrees
76
- controllerHome/repositories/<repoId>/edit-sessions
77
- controllerHome/repositories/<repoId>/artifacts
78
- controllerHome/repositories/<repoId>/controller-state
79
- ```
80
-
81
- 仓库目录可继续保留 repo policy、兼容 symlink / projection,以及 MCP 旧版本 fallback:
82
-
83
- ```text
84
- .forge/mcp.policy.json
85
- .forge/mcp.local.json # legacy service config fallback
86
- .forge/mcp.tokens.json # legacy bearer fallback
87
- .forge/mcp.oauth.json # legacy OAuth passphrase fallback
88
- .forge/mcp.oauth-tokens.json # legacy OAuth token-store fallback
89
- .forge/mcp.runtime.json # legacy runtime fallback
90
- .forge/plugins/*.json
91
- .forge/external-filesystem-grants.json
92
- .ai/harness/* # compatibility/projection only
93
- ```
94
-
95
- ## 兼容策略
96
-
97
- - 多仓库启用时,MCP 工具和 Local Bridge 写操作必须显式携带 `repoId`,不能靠启动目录猜测。
98
- - 单仓库启用时可以保留 sole repository fallback。
99
- - `--repo` 在迁移完成前继续可用,但不应被描述为服务身份。
100
- - MCP service-level 配置读取顺序为 controllerHome 优先、repo-local `.forge/mcp.*` legacy fallback 其次;新 controller profile setup/restart/keepalive 写入 controllerHome。
101
-
102
- ## 当前完成状态
103
-
104
- - 已新增 Local Bridge request-level repo selection helper。
105
- - 已让 `/api/snapshot` 和 `/api/user-snapshot` 支持 repoId / checkoutId。
106
- - 已新增 repoId-scoped snapshot 和 user-snapshot endpoints。
107
- - 已将主要 Local Bridge 业务 API 改为 request-scoped repo selection,包括 completion、progress、governance、assistant、recovery、project-state、issue/task、timeline、worklog、edit-session、plugin、GitHub、toolchain、local jobs 和 runs。
108
- - 已将 README 的启动说明改为 registry-first / compatibility `--repo` 语义。
109
- - MCP HTTP service-level 配置、auth token、OAuth passphrase/token store、public origin 和 runtime state 已迁移到 controllerHome-backed storage,并保留 `.forge/mcp.*` legacy fallback。
110
- - 当前剩余的 `options.repoRoot` 用法集中在启动默认仓库 fallback、启动时 reconcile、stream signature、runtime policy/mobile intent 兼容入口、仓库列表默认选择和 server close/cache cleanup。
111
-
112
- ## 仍未完成的架构收口
113
-
114
- ### 1. MCP Gateway 身份边界复核
115
-
116
- 已复核 MCP Gateway 的 controller profile 主路径:
117
-
118
- - `src/cli/mcp/server.ts` 在 controller profile 下创建 multi-repository context;`--repo .` 会被降级为未指定 repo,避免把当前目录强行当作服务身份。
119
- - `src/cli/mcp/multi-repository.ts` 会给工具 schema 注入 `repo_id` / `checkout_id`,并在调用时通过 Repository Registry 解析目标仓库。
120
- - 未传 `repo_id` 时只允许 explicit repository fallback 或 sole-repository fallback;多仓库场景应返回解析错误。
121
- - MCP tool 调用会使用目标仓库的 `repository.canonicalRoot` 构造 scoped context,并把 repository/runtimeStorage envelope 写回结果。
122
- - `src/cli/mcp/repository-tools.ts` 的 repository/git/safe-patch/command tools 已按 `repo_id` / `checkout_id` 解析目标仓库,并把 command job payload 绑定到 `repoId` / `checkoutId`。
123
-
124
- durable router 和 runtime gateway 主路径均已完成补充复核:
125
-
126
- - `src/runtime/gateway/mcp/router.ts` 会对可持久化 MCP 调用执行 `resolveRepositorySelection`,将 `repoId` / `checkoutId` 写入 ExecutionJob,并通过 `repositoryScopedToolArgs` 注入目标仓库上下文。
127
- - controller-scoped repository tools 仅限 `repository_register` 以及未指定仓库的 `repository_workbench`;其他 repository tools 会解析目标仓库。
128
- - `src/runtime/gateway/mcp/runtime-tools.ts` 的 tool definitions 暴露 `repo_id`,执行 helper `selected(ctx,args)` 使用 `repo_id` / `checkout_id` / explicit repository / sole-repository fallback 统一解析目标仓库;已抽查 work/git/local-bridge/plugin/recovery/iOS/review/runtime-cleanup 等工具段,均通过目标 repository 执行。
129
-
130
- ### 2. 服务级运行态迁移
131
-
132
- MCP Gateway 的 service-level runtime/config 已迁移到 `controllerHome/mcp/mcp.*`,并将 repo-local `.forge/mcp.*` 降级为 legacy fallback。Local Bridge 仍保留 `options.repoRoot` 用于启动级 reconcile、stream signature、runtime policy 和缓存清理。短期允许作为 compatibility default;长期应迁移为 controller-home/global runtime state,并让 `repoRoot` 只出现在 repository registration 和 repository-scoped execution 层。
133
-
134
- ### 3. 最小多仓库验收
135
-
136
- 不需要膨胀测试,但至少应做以下针对性验证:
137
-
138
- - 注册两个仓库后,分别请求 snapshot / issue / run / plugin API,不串仓。
139
- - `repoId`、`checkoutId`、默认 fallback 三条路径行为明确且可解释。
140
- - GUI 切换仓库后,所有业务请求携带选中的 repoId。
141
- - Local Bridge 重启后,默认仓库只影响初始选择,不影响 request-scoped API。
142
-
143
- ## 后续验收点
144
-
145
- - GUI 切换仓库后,请求应带 `repoId`,而不是依赖启动目录。
146
- - 多仓库注册时,Local Bridge 首页应能显示所有仓库,并正确标记当前选择。
147
- - MCP Gateway 启动和 ChatGPT Connector 配置应逐步不再要求用户位于某个仓库目录。
148
- - repo-local `.forge/mcp.*` 文件只作为 legacy fallback;后续可在迁移窗口结束后进一步降级提示或清理。
@@ -1,354 +0,0 @@
1
- # Dispatch and Agent Strategy
2
-
3
- > Status: **Runtime Authority**
4
-
5
- ## 1. Objective
6
-
7
- Dispatch converts a user or automation objective into the smallest safe execution mechanism. The goal is not to maximize Agent use. The goal is to select the least expensive mechanism that can produce reviewable evidence without losing recoverability.
8
-
9
- The Controller owns dispatch decisions. Workers and Agents execute scoped contracts; they do not decide whether the system should have used Direct Edit, a durable Task, or another repository.
10
-
11
- ## 2. Work Assessment
12
-
13
- Every change request is assessed before execution using:
14
-
15
- ```text
16
- objective clarity
17
- known paths
18
- expected files
19
- expected changed lines
20
- investigation depth
21
- runtime or environment dependencies
22
- parallelism need
23
- dependency graph need
24
- verification duration
25
- risk
26
- external side effects
27
- repository count
28
- ```
29
-
30
- The assessment produces:
31
-
32
- ```text
33
- recommendedMode
34
- confidence
35
- reasons
36
- requiredScope
37
- requiredClaims
38
- verificationClass
39
- humanBoundary
40
- ```
41
-
42
- Repository search is an information-gathering step, not by itself a reason to start an Agent or create a durable Issue.
43
-
44
- ## 3. Execution Modes
45
-
46
- ### 3.1 Direct Edit
47
-
48
- Direct Edit is the default when the Controller understands the implementation and can bound the change precisely.
49
-
50
- Preferred characteristics:
51
-
52
- - objective and behavior are understood;
53
- - target paths can be found with bounded search;
54
- - approximately eight or fewer files;
55
- - approximately one thousand or fewer changed lines;
56
- - no autonomous compile/fix loop is required;
57
- - risk is not destructive;
58
- - focused verification exists.
59
-
60
- Flow:
61
-
62
- ```text
63
- search/read
64
- -> begin Edit Session
65
- -> bounded revisions
66
- -> inspect aggregate diff
67
- -> focused checks
68
- -> finalize or rollback
69
- -> Work verification when linked
70
- ```
71
-
72
- Direct Edit MUST use the same Workspace single-writer resource boundary as a Workspace Agent.
73
-
74
- ### 3.2 Quick Agent
75
-
76
- Quick Agent is used when the objective is clear but implementation requires meaningful exploration or repeated local edit/test cycles, without needing a durable multi-Work dependency graph.
77
-
78
- Preferred characteristics:
79
-
80
- - one coherent objective;
81
- - one reviewable result;
82
- - bounded path scope;
83
- - no long-lived cross-session product workflow;
84
- - retry can replace the whole attempt;
85
- - Agent autonomy provides clear value over Direct Edit.
86
-
87
- Quick Agent work may carry ephemeral diagnostic metadata, but Job and Run evidence remain durable.
88
-
89
- ### 3.3 Requirement, Plan, and Work
90
-
91
- A durable Requirement/Plan/Work graph is required when work has one or more of:
92
-
93
- - multiple independently verifiable objectives;
94
- - dependencies or ordered migration phases;
95
- - parallel implementation opportunities;
96
- - high or destructive risk;
97
- - protected or release-sensitive surfaces;
98
- - cross-repository work;
99
- - long-running verification or environment dependencies;
100
- - schedule-driven recurrence;
101
- - a need for review and recovery across multiple sessions;
102
- - release or rollout coordination.
103
-
104
- A durable Work contract is not ceremony. It owns bounded execution scope, dependencies, evidence, retry history, and completion receipts; Requirement owns user-visible intent and acceptance outcome.
105
-
106
- ## 4. Decision Order
107
-
108
- The Controller applies this order:
109
-
110
- ```text
111
- 1. Is the request read-only?
112
- 2. Can bounded Direct Edit safely satisfy it?
113
- 3. Is one scoped Agent attempt sufficient?
114
- 4. Does the work require durable Requirement/Plan/Work state?
115
- 5. Does it cross repositories or require a Schedule?
116
- 6. Does any external or destructive boundary require human authorization?
117
- ```
118
-
119
- The system MUST NOT default to Agent execution merely because an Agent is available.
120
-
121
- ## 5. Agent Roles
122
-
123
- Agent roles describe responsibility, not permanent products.
124
-
125
- ### Controller / Architect
126
-
127
- Normally ChatGPT or a human-guided controller.
128
-
129
- Owns:
130
-
131
- - problem understanding;
132
- - architecture decisions;
133
- - Task decomposition;
134
- - acceptance criteria;
135
- - scope and resource declarations;
136
- - Agent and execution-mode selection;
137
- - review and acceptance.
138
-
139
- The Controller SHOULD remain runtime-light and MUST NOT become the hidden owner of a long Worker process.
140
-
141
- ### Explorer
142
-
143
- A read-only role used for:
144
-
145
- - root-cause investigation;
146
- - architecture mapping;
147
- - candidate path discovery;
148
- - dependency analysis;
149
- - risk assessment.
150
-
151
- Explorer output is evidence or a proposed plan. It does not authorize writes.
152
-
153
- ### Implementer
154
-
155
- A scoped worker role used for:
156
-
157
- - code or document changes;
158
- - local compile/test/fix loops;
159
- - producing a reviewable diff;
160
- - reporting limitations and unresolved blockers.
161
-
162
- An Implementer cannot accept its own Task.
163
-
164
- ### Verifier
165
-
166
- An optional independent role for high-risk, safety-sensitive, or ambiguity-prone work.
167
-
168
- The Verifier MUST use the Task's declared checks and acceptance criteria as its rubric. It MUST NOT invent a competing quality standard or replace authoritative repository tests.
169
-
170
- Independent verification is not a default for every Task because extra evaluators can add cost and drift without improving acceptance alignment.
171
-
172
- ### Integrator
173
-
174
- Integration is a deterministic system role, not an LLM role.
175
-
176
- It validates source evidence, base revisions, target state, supported file operations, conflicts, and cleanup. An Agent may explain a conflict, but must not silently decide to overwrite it.
177
-
178
- ### Release Steward
179
-
180
- The Release Steward evaluates the release gate, produces the release manifest, and identifies unresolved human boundaries. It cannot silently push, merge, publish, or deploy.
181
-
182
- ## 6. Runtime Agent Selection
183
-
184
- Tasks remain executor-neutral. At dispatch time the Controller chooses among enabled providers based on capability and constraints.
185
-
186
- General policy:
187
-
188
- | Work characteristic | Preferred executor |
189
- | --- | --- |
190
- | Small understood change | Direct Edit |
191
- | Broad repository exploration and repeated code/test loop | Codex or Claude local Agent |
192
- | Architecture, policy, documentation, semantic cross-module review | ChatGPT, Claude, or Direct Edit after analysis |
193
- | GitHub-native collaboration and draft PR | GitHub Copilot session |
194
- | Deterministic check, command, integration, or release gate | Non-Agent Worker |
195
- | Read-only root-cause map | Explorer role |
196
-
197
- Agent choice considers:
198
-
199
- ```text
200
- required tools
201
- repository language
202
- context size
203
- expected autonomy
204
- local availability
205
- provider health
206
- cost budget
207
- past failure classification
208
- need for GitHub collaboration
209
- ```
210
-
211
- A Task does not permanently bind to one Agent. However, switching Agents after failure requires a reason, not reflex.
212
-
213
- ## 7. Failure Classification Before Retry
214
-
215
- Before retry or Agent switching, classify the failure:
216
-
217
- - `infrastructure_failure` — transport, process launch, authentication, unavailable provider;
218
- - `scope_conflict` — resource or allowed-path collision;
219
- - `environment_failure` — missing dependency, build service, credentials, external system;
220
- - `implementation_failure` — produced change does not compile or satisfy checks;
221
- - `acceptance_failure` — implementation works locally but misses declared criteria;
222
- - `integration_failure` — reviewed change cannot be integrated safely;
223
- - `agent_capability_mismatch` — execution requires capabilities unavailable to the selected Agent;
224
- - `controller_contract_failure` — Task scope, acceptance, or prompt was insufficient or contradictory.
225
-
226
- Response policy:
227
-
228
- | Classification | Default response |
229
- | --- | --- |
230
- | Infrastructure | Retry same contract after recovery |
231
- | Scope conflict | Wait, re-scope, or isolate |
232
- | Environment | Block with external dependency evidence |
233
- | Implementation | Request focused changes or retry same Agent |
234
- | Acceptance | Refine implementation, not the criteria unless product intent changed |
235
- | Integration | Preserve Worktree; repair from current target state |
236
- | Capability mismatch | Select a more suitable Agent/provider |
237
- | Controller contract | Re-plan Work before another Run |
238
-
239
- ## 8. Work Execution Contract
240
-
241
- Every Agent Run receives a generated contract containing:
242
-
243
- ```text
244
- repository and checkout identity
245
- Requirement and Work objective
246
- current implementation context
247
- allowed and forbidden paths
248
- required outputs
249
- acceptance criteria
250
- named checks
251
- risk and destructive boundary
252
- resource placement
253
- base revision
254
- budget and deadline
255
- result and artifact paths
256
- completion and stop conditions
257
- ```
258
-
259
- The prompt MUST state that:
260
-
261
- - unrelated changes are forbidden;
262
- - repository state is authoritative over chat memory;
263
- - the Agent must not commit, merge, push, publish, deploy, reset, rebase, or remove Worktrees unless the explicit contract permits it;
264
- - test failure must be reported honestly;
265
- - a successful self-report does not complete the Task;
266
- - user modifications outside scope must be preserved.
267
-
268
- ## 9. Budget Model
269
-
270
- Every Agent or scheduled execution SHOULD declare bounded budgets:
271
-
272
- ```text
273
- wall-clock timeout
274
- maximum retries
275
- maximum parallel children
276
- maximum changed files
277
- maximum changed lines
278
- maximum output bytes
279
- optional token or provider cost budget
280
- ```
281
-
282
- Budget exhaustion produces a durable outcome. It must not silently extend itself indefinitely.
283
-
284
- ## 10. Placement Decision
285
-
286
- Placement is separate from Agent selection.
287
-
288
- ### Workspace
289
-
290
- Use when:
291
-
292
- - no other write owner exists;
293
- - work is serial;
294
- - fast local iteration is valuable;
295
- - the user expects changes in the visible working tree.
296
-
297
- ### Worktree
298
-
299
- Use when:
300
-
301
- - another writer is active;
302
- - independent Tasks should run concurrently;
303
- - isolation is explicitly requested;
304
- - the main Workspace is dirty and safe direct ownership cannot be established;
305
- - implementation should be reviewed before integration.
306
-
307
- ### GitHub branch/provider
308
-
309
- Use when:
310
-
311
- - remote collaboration is requested;
312
- - the provider requires a remote branch;
313
- - a draft PR is a desired artifact;
314
- - local execution is unavailable.
315
-
316
- The default `auto` placement policy chooses Workspace for one local serial writer and Worktree when concurrency exists. It MUST still honor explicit claims and dirty-state safety.
317
-
318
- ## 11. Review and Continuation
319
-
320
- After execution:
321
-
322
- ```text
323
- read Run/Job outcome
324
- -> inspect diff and evidence
325
- -> classify defects or blockers
326
- -> integrate when isolated
327
- -> verify exact Revision
328
- -> accept or request changes
329
- -> unlock dependents
330
- ```
331
-
332
- The Controller may use Direct Edit for a small correction after an Agent Run. This creates separate, reviewable evidence rather than asking the Agent to rerun the entire task unnecessarily.
333
-
334
- ## 12. Anti-Patterns
335
-
336
- The dispatch layer MUST avoid:
337
-
338
- - starting an Agent for a deterministic one-file edit;
339
- - creating a durable Issue solely because file discovery is needed;
340
- - binding every Task permanently to Codex;
341
- - launching multiple Agents with overlapping unknown write scopes;
342
- - using a Verifier with criteria different from Task acceptance;
343
- - retrying on every network error without idempotency lookup;
344
- - treating a successful process exit as product acceptance;
345
- - allowing an automation Agent to recursively create unlimited work;
346
- - using the Controller conversation as the only execution state.
347
-
348
- ## 13. Current Implementation
349
-
350
- The repository implements Direct Edit, Quick Agent and Requirement/Work assessment; runtime Agent selection; bounded Task scope; persistent Runs; Workspace/Worktree placement; and risk-adaptive verification.
351
-
352
- The Thin Gateway keeps deterministic local commands on Direct Edit or Process Runtime paths. Agent dispatch is now an explicit external-Controller handoff; the Kernel no longer creates Execution Jobs for ordinary Agent launches. Work ownership, repository placement, and resource claims remain durable Controller state, while provider selection and model execution belong to the claimed external Controller.
353
-
354
- Failure outcomes are retained on Work, Process, Handoff, or legacy read-only Job evidence as applicable; retries preserve the failed attempt and create a new explicit continuation attempt rather than falling back to implicit Job creation.