@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,592 +0,0 @@
1
- # Controller Runtime Entity Model
2
-
3
- > Status: **Runtime Authority**
4
-
5
- ## 1. Modeling Principle
6
-
7
- Forge separates four kinds of truth:
8
-
9
- 1. **intent** — what should be achieved;
10
- 2. **execution** — what the system attempted;
11
- 3. **evidence** — what actually happened;
12
- 4. **projection** — what is convenient to display or query.
13
-
14
- Entities from different categories must not be collapsed merely because they are currently stored in adjacent files or exposed by one tool.
15
-
16
- ## 2. Identity Hierarchy
17
-
18
- ```text
19
- Repository (repoId)
20
- -> Checkout (checkoutId)
21
- -> Issue
22
- -> Task
23
- -> Job [0..N]
24
- -> Run [0..N]
25
- -> Edit Session [0..N]
26
- -> Verification [0..N]
27
-
28
- Schedule
29
- -> Occurrence
30
- -> Job [0..N]
31
-
32
- Portfolio Workflow
33
- -> Repository Node
34
- -> Issue / Task / Job reference
35
- ```
36
-
37
- Resource control is orthogonal:
38
-
39
- ```text
40
- Job / Run / Edit Session
41
- -> Resource Claim [0..N]
42
- -> Lease [0..1 active owner]
43
- ```
44
-
45
- ## 3. Repository
46
-
47
- ### Meaning
48
-
49
- A Repository is the stable controller identity for one logical source repository.
50
-
51
- ### Identity
52
-
53
- ```text
54
- repoId
55
- ```
56
-
57
- `repoId` is not a branch name, filesystem path, remote URL, or GitHub repository string. Those values may change while existing durable entities retain their repository identity.
58
-
59
- ### Current Implementation
60
-
61
- `RepositoryRecord` already stores stable identity, canonical root, remote metadata, checkout collection, GitHub mapping, enabled state, and Controller Home storage strategy.
62
-
63
- ### Target Architecture
64
-
65
- A Repository owns exactly one logical Repo Actor and one repository-local scheduling domain.
66
-
67
- ### Migration Rule
68
-
69
- Remote or path changes must be diagnosed and explicitly reconciled. They must not create a second active repository record for the same canonical repository or silently rebind existing entities.
70
-
71
- ## 4. Checkout
72
-
73
- A Checkout identifies one local working copy or Worktree associated with a Repository.
74
-
75
- ```text
76
- checkoutId
77
- repoId
78
- canonicalRoot
79
- branch
80
- worktree
81
- ```
82
-
83
- A Repository may have multiple Checkouts. Workspace single-writer claims are scoped to a Checkout; repository ref, integration, and release claims may be scoped to the Repository.
84
-
85
- ## 5. Issue
86
-
87
- ### Meaning
88
-
89
- An Issue is a durable container for one coherent defect, feature, investigation, or governance objective.
90
-
91
- It owns:
92
-
93
- - title and summary;
94
- - goals and non-goals;
95
- - Issue-level acceptance criteria;
96
- - related artifacts;
97
- - ordered Tasks;
98
- - collaboration links;
99
- - lifecycle and archive state.
100
-
101
- ### Rules
102
-
103
- - An Issue is not an execution attempt.
104
- - An Issue may remain active while some Tasks are done, blocked, or superseded.
105
- - Current focus is a presentation hint, not exclusive execution ownership.
106
- - An Issue becomes done only when its required Task and acceptance semantics are satisfied.
107
-
108
- ## 6. Task
109
-
110
- ### Meaning
111
-
112
- A Task is the smallest durable work-intent unit that can be independently scoped, scheduled, verified, and accepted.
113
-
114
- It owns:
115
-
116
- ```text
117
- taskId
118
- dependsOn
119
- notes
120
- runIds
121
- verification
122
- workId
123
- ```
124
-
125
- When `workId` is present, the objective, scope, checks, acceptance criteria,
126
- risk, status, and completion evidence above are compatibility fields from the
127
- legacy Task ledger. Work is the only mutable execution contract; readers may
128
- derive these fields from the linked Work, but Task writers must not maintain a
129
- second lifecycle.
130
-
131
- ### Rules
132
-
133
- - A Task has one objective.
134
- - Dependencies are Task identities, not Run identities.
135
- - Agent selection occurs at dispatch time; a stored Agent is at most a recommendation.
136
- - A Task may have multiple Runs and Edit Sessions across its history.
137
- - A Task without Work remains a legacy planning record during migration.
138
- - A Work-backed Task exposes a derived compatibility status; Work owns the
139
- mutable execution status and technical phase.
140
- - Runs and Processes are evidence and execution facts. They cannot write a
141
- Requirement outcome or promote a Work-backed Task to completion.
142
-
143
- ### Compatibility Lifecycle
144
-
145
- ```text
146
- backlog
147
- -> analysis
148
- -> planned
149
- -> ready
150
- -> executing
151
- -> review
152
- -> integrated
153
- -> verifying
154
- -> verified
155
- -> done
156
- ```
157
-
158
- Alternative transitions include:
159
-
160
- ```text
161
- ready/executing/review/verifying
162
- -> blocked
163
- -> changes_requested
164
- -> ready or executing
165
-
166
- any non-terminal
167
- -> cancelled
168
- -> superseded
169
- ```
170
-
171
- ### Current Implementation
172
-
173
- Current status names include `running` instead of a distinct `executing` abstraction and include compatibility states such as `launch_blocked`. Effective status also incorporates the latest Run.
174
-
175
- ### Migration Rule
176
-
177
- Existing status values remain readable for migration and UI compatibility. The
178
- canonical Work phase vocabulary is deliberately smaller:
179
-
180
- ```text
181
- implementation -> verification -> delivery -> cleanup
182
- ```
183
-
184
- The phase is technical execution context, not a user-facing Requirement
185
- lifecycle. A Work completion receipt must identify the Work, exact target
186
- branch/revision, valid delivery reachability, and blocker-free cleanup before a
187
- terminal completed Work can be written.
188
-
189
- ## 7. Job
190
-
191
- ### Meaning
192
-
193
- A Job is one accepted asynchronous system operation.
194
-
195
- Examples:
196
-
197
- - dispatch an existing Task;
198
- - start a Quick Agent session;
199
- - run a named check;
200
- - verify an Edit Session;
201
- - execute a repository command;
202
- - integrate a reviewed Run;
203
- - execute a release gate;
204
- - reconcile stale state;
205
- - process one Schedule Occurrence.
206
-
207
- ### Required Identity
208
-
209
- ```text
210
- jobId
211
- repoId
212
- operationType
213
- requestId
214
- semanticKey
215
- ```
216
-
217
- ### Required Metadata
218
-
219
- ```text
220
- createdAt
221
- updatedAt
222
- status
223
- requestedBy
224
- payloadRef or bounded payload
225
- resultRef
226
- error
227
- attempt
228
- parentJobId
229
- correlationId
230
- causationId
231
- deadlineAt
232
- ```
233
-
234
- ### Ownership
235
-
236
- The Repo Actor owns Job admission and repository-local ordering. A Worker owns execution only while holding the Job's valid Lease.
237
-
238
- ### Rules
239
-
240
- - Job creation precedes execution.
241
- - A Job may create or link a Run, but is not a Run.
242
- - Terminal Job records are immutable except for append-only audit annotations.
243
- - Retry creates a new Job attempt linked to the prior Job unless the operation contract defines retry inside the same durable Job.
244
-
245
- ## 8. Run
246
-
247
- ### Meaning
248
-
249
- A Run is one Agent execution attempt for one Task.
250
-
251
- It owns:
252
-
253
- ```text
254
- runId
255
- issueId
256
- taskId
257
- agent
258
- provider
259
- executionMode
260
- repoRoot / executionRoot
261
- baseRevision
262
- process identity
263
- timeout / deadline
264
- heartbeat
265
- stdout / stderr / result / events
266
- terminal outcome
267
- integration metadata
268
- ```
269
-
270
- ### Rules
271
-
272
- - A Run never changes which Task objective it attempts.
273
- - A failed, cancelled, timed-out, or unknown Run remains historical evidence.
274
- - Retry creates a new Run.
275
- - A successful isolated Run is not accepted until its reviewed changes are integrated or explicitly represented by an approved external collaboration path.
276
- - A Run self-report cannot mark its Task done.
277
-
278
- ## 9. Direct Edit Session
279
-
280
- ### Meaning
281
-
282
- A Direct Edit Session is a transactional sequence of bounded deterministic file operations controlled by the Controller.
283
-
284
- It owns:
285
-
286
- ```text
287
- sessionId
288
- purpose
289
- allowedPaths
290
- baseRevision
291
- revisions
292
- operations
293
- savepoints
294
- backups
295
- aggregateDiff
296
- requestedChecks
297
- checkResults
298
- review metadata
299
- ```
300
-
301
- ### Current Lifecycle
302
-
303
- ```text
304
- open
305
- -> dirty
306
- -> checked
307
- -> finalized
308
-
309
- dirty/checked
310
- -> check_failed
311
- -> dirty
312
-
313
- open/dirty/checked/check_failed
314
- -> rolled_back
315
- ```
316
-
317
- ### Rules
318
-
319
- - Each patch batch creates a numbered Revision.
320
- - Every operation records before/after hashes where applicable.
321
- - Checks apply to the current Edit Session Revision.
322
- - A failed check does not require discarding the session; another correction Revision may follow.
323
- - Finalization closes the transaction but does not by itself prove Task-level acceptance.
324
-
325
- ## 10. Integration
326
-
327
- Integration is a deterministic operation that applies one reviewed change set to a target Checkout.
328
-
329
- Integration may be represented as a dedicated Job and produces an Integration Record containing:
330
-
331
- ```text
332
- sourceRunId or sourceEditSessionId
333
- sourceBaseRevision
334
- targetCheckoutId
335
- targetRevisionBefore
336
- targetRevisionAfter
337
- reviewedDiffHash
338
- appliedFiles
339
- conflicts
340
- cleanupOutcome
341
- ```
342
-
343
- Integration is not an Agent role. Conflicts are explicit outcomes, not instructions to silently rebase or overwrite.
344
-
345
- ## 11. Verification
346
-
347
- ### Meaning
348
-
349
- Verification is persisted evidence that declared checks and acceptance criteria were evaluated against a specific repository state.
350
-
351
- A Verification Record owns:
352
-
353
- ```text
354
- verificationId or embedded identity
355
- repoId
356
- checkoutId
357
- revision
358
- runId / editSessionId / integrationId
359
- reviewedDiffHash
360
- checkResults
361
- commandEvidence
362
- acceptanceResults
363
- reviewer
364
- verifiedAt
365
- autoCompleted
366
- ```
367
-
368
- ### Rules
369
-
370
- - Verification binds to an exact Revision.
371
- - Evidence from an older relevant Revision becomes stale.
372
- - Verification may fail and lead to `changes_requested`.
373
- - Required checks are executed by the Controller or trusted repository systems; caller-provided success flags are not authoritative.
374
-
375
- ## 12. Acceptance
376
-
377
- Acceptance is the workflow decision that evidence satisfies the Task or Issue contract.
378
-
379
- Acceptance is distinct from Verification:
380
-
381
- - Verification asks whether evidence passes the declared criteria.
382
- - Acceptance asks whether the work may enter its final workflow state.
383
-
384
- Low-risk work may auto-accept when policy and evidence allow. High-risk or destructive work requires human acceptance.
385
-
386
- ## 13. Check Execution
387
-
388
- A Check Execution is a Job running one named deterministic repository check.
389
-
390
- Its semantic identity includes:
391
-
392
- ```text
393
- repoId
394
- checkoutId
395
- checkId
396
- revision
397
- environmentFingerprint
398
- timeout contract
399
- ```
400
-
401
- Identical active semantic identities may share one physical execution with independent subscribers. Completed evidence may be reused only while the cache key remains valid.
402
-
403
- ## 14. Resource Claim
404
-
405
- A Resource Claim declares what an operation needs before it can run.
406
-
407
- ```text
408
- claimId
409
- repoId
410
- jobId
411
- resourceKey
412
- mode: shared | exclusive
413
- scope
414
- state: requested | granted | released | expired
415
- ```
416
-
417
- Examples:
418
-
419
- ```text
420
- workspace:<checkoutId>
421
- worktree-slot:<repoId>
422
- path:<repoId>:src/cli/mcp/**
423
- git-index:<checkoutId>
424
- git-refs:<repoId>
425
- heavy-check:<repoId>
426
- integration:<checkoutId>
427
- release:<repoId>
428
- remote-write:<repoId>
429
- ```
430
-
431
- A Claim expresses scheduling intent. A Lease expresses temporary execution ownership.
432
-
433
- ## 15. Lease
434
-
435
- A Lease grants temporary ownership of one resource to one Job.
436
-
437
- ```text
438
- leaseId
439
- resourceKey
440
- ownerJobId
441
- fencingToken
442
- acquiredAt
443
- expiresAt
444
- heartbeatAt
445
- releasedAt
446
- ```
447
-
448
- Rules:
449
-
450
- - Leases expire unless renewed.
451
- - A newer fencing token invalidates writes from older owners.
452
- - A Worker process identity is evidence, not Lease identity.
453
- - Process death allows reconciliation but does not itself define the final business outcome.
454
-
455
- ## 16. Schedule
456
-
457
- A Schedule defines a recurring or condition-driven automation policy.
458
-
459
- It owns:
460
-
461
- ```text
462
- scheduleId
463
- repository selector or portfolio selector
464
- trigger
465
- policy
466
- work template
467
- budget
468
- retry and backoff
469
- stop conditions
470
- enabled state
471
- ```
472
-
473
- A Schedule does not execute forever. It creates bounded Occurrences.
474
-
475
- ## 17. Occurrence
476
-
477
- An Occurrence is one trigger window of one Schedule.
478
-
479
- ```text
480
- occurrenceId
481
- scheduleId
482
- repoId
483
- windowKey
484
- requestId
485
- status
486
- decision
487
- jobIds
488
- budgetUsed
489
- outcome
490
- nextEligibleAt
491
- ```
492
-
493
- One Schedule and window key may have at most one Occurrence. Outcomes include:
494
-
495
- ```text
496
- nothing_to_do
497
- work_dispatched
498
- work_completed
499
- work_failed
500
- external_blocker
501
- human_attention_required
502
- release_ready
503
- budget_exhausted
504
- cancelled
505
- ```
506
-
507
- ## 18. Candidate Finding
508
-
509
- A Candidate Finding is a structured automation observation that is not yet a formal Issue or Task.
510
-
511
- It contains:
512
-
513
- ```text
514
- findingId
515
- semanticKey
516
- repoId
517
- sourceOccurrenceId
518
- evidence
519
- confidence
520
- firstSeenAt
521
- lastSeenAt
522
- occurrenceCount
523
- status
524
- ```
525
-
526
- Promotion requires configured evidence. Repeated speculative suggestions must deduplicate instead of generating unlimited Issues.
527
-
528
- ## 19. Portfolio Workflow
529
-
530
- A Portfolio Workflow coordinates dependency-aware work across multiple repositories.
531
-
532
- It owns repository nodes and cross-repository dependencies but delegates each repository-local operation to that repository's Actor.
533
-
534
- It uses Saga semantics rather than distributed atomic commit:
535
-
536
- ```text
537
- prepare -> execute node -> verify node -> checkpoint -> continue
538
- \-> stop or compensate
539
- ```
540
-
541
- ## 20. Event and Projection
542
-
543
- An Event is append-only history:
544
-
545
- ```text
546
- eventId
547
- eventType
548
- repoId
549
- entityType
550
- entityId
551
- requestId
552
- correlationId
553
- causationId
554
- revision
555
- occurredAt
556
- dataRef
557
- ```
558
-
559
- A Projection is a rebuildable read model. Projection corruption must not rewrite source lifecycle state; it is repaired from durable entities and events.
560
-
561
- ## 21. Relationship Rules
562
-
563
- - One Issue owns many Tasks.
564
- - One Task may own many Runs, Jobs, Edit Sessions, and Verification records.
565
- - One Job may link at most one primary Run but may depend on child Jobs.
566
- - One Run belongs to exactly one Task.
567
- - One Occurrence belongs to exactly one Schedule and may create many Jobs.
568
- - One active Lease has one owner Job and one fencing token.
569
- - One resource may have many compatible shared Claims or one exclusive owner.
570
- - One Verification applies to one exact repository Revision.
571
-
572
- ## 22. Deletion and Retention
573
-
574
- Durable workflow and evidence entities are normally archived, not deleted.
575
-
576
- Ephemeral Quick Agent Issue metadata may be cleaned after terminal completion, but Run and Job evidence remains durable according to retention policy.
577
-
578
- Runtime projections, expired Leases, caches, and disposable Worktrees may be removed after durable terminal evidence and cleanup records exist.
579
-
580
- ## 22. Structured Execution Outcome
581
-
582
- A Job result and a Job failure are separate concepts. Durable execution records may contain all of the following independently:
583
-
584
- ```text
585
- result bounded operation-specific value
586
- outcome.process exit code, timeout, stdout/stderr artifact paths
587
- outcome.policy allowed, approval-required, or rejected decision
588
- outcome.infrastructure storage, spawn, transport, or runtime failure
589
- error terminal workflow error when the Job did not succeed
590
- ```
591
-
592
- Successful stdout is never stored in `error`. Compatibility Local Jobs project the durable Execution Job status, result, and structured outcome without becoming a second source of lifecycle truth.