@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
@@ -39,6 +39,130 @@ Call `GET /health` on the local MCP endpoint. The response includes:
39
39
 
40
40
  A growing `rejectedOverload` value with no matching capacity-eviction or close activity means clients are submitting protected work faster than the Controller can accept it. A pool full of stream-only sessions should now self-recover. Retrying with backoff is preferable to increasing every limit.
41
41
 
42
+ ## Runtime Activation Failure Looks Like a 502 (2026-08-23 incident)
43
+
44
+ When a new Runtime release activation fails, the public MCP path can return
45
+ HTTP `500` on `initialize`, which the tunnel surfaces as a `502`-style
46
+ connection failure. The chain observed on 2026-08-23:
47
+
48
+ 1. A Runtime release activation started a new `mcp serve` process while the
49
+ launchd gateway already owned `127.0.0.1:8767`. The new process failed to
50
+ bind (`Failed to start server. Is port 8767 in use?`) but did **not exit**;
51
+ it kept running as an orphan (`PPID 1`) spinning at ~98% CPU.
52
+ 2. The canonical Runtime (port 8765) failed to start for the new release
53
+ (`RUNTIME_RELEASE_AUTHORITY_MISMATCH` in
54
+ `runtime/service/logs/stderr.log`), so the gateway could not complete MCP
55
+ `initialize` and returned HTTP 500.
56
+ 3. `tunnel-client` posted the upstream error to the control plane
57
+ (`dispatcher received MCP upstream error`, `upstream_status=500`,
58
+ `rpc_method=initialize`), which the remote client saw as a failed
59
+ connection / 502.
60
+
61
+ Diagnostic fingerprint:
62
+
63
+ - `gateway.stderr.log` contains `Failed to start server. Is port 8767 in use?`
64
+ - `runtime/service/logs/stderr.log` contains repeated
65
+ `RUNTIME_RELEASE_AUTHORITY_MISMATCH`
66
+ - recovery watchdog log shows `restart_primary_runtime` attempts followed by
67
+ `action":"rollback"` restoring the previous release
68
+ - a stray `bun ... mcp serve` process with `PPID 1` and high `%CPU`
69
+
70
+ Remediation:
71
+
72
+ - The standalone Recovery watchdog automatically rolls back after the bounded
73
+ restart budget is exhausted; wait for `action":"healthy"` in
74
+ `recovery/audit/watchdog.log` before doing anything else.
75
+ - Kill the orphaned `mcp serve` child of the failed release (verify it holds no
76
+ listening sockets first); it only burns CPU after a failed port bind.
77
+ - Verify the canonical Runtime answers `initialize` on its own port and that
78
+ the tunnel log shows no new `upstream_status=500` entries.
79
+
80
+ Known code defect to fix: `mcp serve` should exit with a non-zero status when
81
+ the requested port is already in use instead of staying alive in a hot loop.
82
+
83
+ ## Connector/Activation Recovery Gaps Behind Intermittent 502 (2026-08-27)
84
+
85
+ A second class of intermittent `502` was traced to release/Connector coherence rather
86
+ than to a permanently dead Recovery service.
87
+
88
+ Observed evidence:
89
+
90
+ - a live Forge MCP request returned `502` while independent Recovery observed the
91
+ Canonical Runtime briefly as `RUNTIME_NOT_RUNNING`; the Runtime became ready again
92
+ a few seconds later after release authority reverted to the prior package release;
93
+ - separate MCP connection failures also occurred while independent Recovery still
94
+ observed the Canonical Runtime as ready, proving that not every `502` is a whole-
95
+ Runtime failure;
96
+ - the persistent package Connector health probe accepted any received HTTP status,
97
+ so `500`/`502` could be classified as healthy and the broken service reused;
98
+ - detached macOS package activation scheduled the Runtime switch and then rebound the
99
+ Connector to the candidate release before the activation helper committed the
100
+ Runtime service. If helper activation failed, Runtime authority/service rolled back
101
+ while Connector authority/plist could remain on the candidate generation;
102
+ - standalone Recovery's Connector action previously restarted the already-installed
103
+ launchd service. A stale/mutable launch spec therefore remained stale after restart.
104
+
105
+ Corrected invariants:
106
+
107
+ 1. Connector reuse accepts only the expected MCP/OAuth endpoint semantics (`200` or
108
+ the unauthenticated `401` Bearer challenge); `5xx` is always unhealthy.
109
+ 2. Detached activation does not switch the Connector in the installer. The activation
110
+ helper installs the Runtime service first and only then commits the Connector to the
111
+ same immutable package release. A Runtime activation failure therefore leaves the
112
+ prior Connector generation untouched.
113
+ 3. Connector-only Recovery first reconciles the canonical package Connector against
114
+ the active immutable Runtime release, then verifies local ownership/public MCP, and
115
+ only then decides whether a launchd/tunnel restart is still required.
116
+ 4. Whole-Runtime rollback remains deliberately stricter than Connector recovery. A
117
+ known-good Runtime is not rolled back merely because its Connector or external
118
+ tunnel drifted; those hops must be repaired independently.
119
+ 5. Recovery `runtime_status` reports bounded Watchdog decision evidence (last action,
120
+ reason and restart/failure counters) so incident review can distinguish "Recovery
121
+ never fired" from "Recovery fired and the client observed the bounded outage".
122
+
123
+ ## Session Continuation Fails With 404 MCP_TOOL_SURFACE_CHANGED (2026-08-23)
124
+
125
+ Second incident on the same day, different failure mode. After a session is
126
+ created, every follow-up (`notifications/initialized`, `tools/call`) returned
127
+ HTTP 404 with:
128
+
129
+ ```json
130
+ {"error":"session_not_found","code":"MCP_TOOL_SURFACE_CHANGED",
131
+ "message":"MCP Runtime tool surface changed; initialize a new session so tools/list is refreshed.",
132
+ "recoverable":true,"action":"reinitialize",
133
+ "previousFingerprint":"<session>","currentFingerprint":"<published>"}
134
+ ```
135
+
136
+ Root cause: the Gateway session fence compares the **live** Runtime schema
137
+ fingerprint captured at `initialize` (`readCanonicalRuntimeToolSchema` ->
138
+ `proxy.listTools()`) against the **published** fingerprint in
139
+ `runtime/status.json`. The Runtime publishes `status.json` once at startup and
140
+ does not republish when its live tool surface changes at runtime (e.g. a
141
+ plugin registers or code edits change the tool set). Once the two values
142
+ diverge, every session continuation is rejected as a tool-surface change, so
143
+ the tunnel/connector appears broken even though `/health` shows both
144
+ fingerprints matching the published value.
145
+
146
+ Diagnostic fingerprint:
147
+
148
+ - Gateway `/health` shows `toolSurfaceFingerprint` equal to
149
+ `runtimeToolSurfaceFingerprint` (both read the published value), but a real
150
+ `initialize` session stores a different fingerprint.
151
+ - Follow-up requests get the `MCP_TOOL_SURFACE_CHANGED` 404 with
152
+ `previousFingerprint != currentFingerprint`.
153
+
154
+ Remediation:
155
+
156
+ - Restart the canonical Runtime service
157
+ (`launchctl kickstart -k gui/$UID/com.moretea.forge.runtime.<suffix>`) so it
158
+ republishes `status.json` from its current surface, then verify
159
+ `initialize` -> `notifications/initialized` (202) -> `tools/call` (200) with
160
+ a valid OAuth token.
161
+ - Known code defect to fix: the Runtime should republish `status.json`
162
+ whenever its live tool surface changes (tool list changed), and/or the
163
+ Gateway fence should prefer the live fingerprint for the current-schema
164
+ comparison instead of trusting a stale publication.
165
+
42
166
  Call `GET /ready` separately. A 503 from `/ready` with `/health` still returning 200 means the Runtime is live but cannot safely admit another initialize. `sessionCapacity.recoveryRecommended=false` preserves active work and waits; `true` is evidence for standalone Recovery's bounded whole-Runtime restart policy after the configured stall limit.
43
167
 
44
168
  ## Diagnostic Order
@@ -68,7 +68,7 @@ A release change is performed only as an explicitly authorized whole-Runtime ope
68
68
  1. validate one immutable release manifest, configuration, database compatibility range, and Worker protocol;
69
69
  2. quiesce admission and stop the complete Runtime;
70
70
  3. atomically select the candidate as the one active whole release;
71
- 4. let the single Forge Runtime service start `forge-runtime` from that complete release;
71
+ 4. atomically mirror the selected release's signed `forge-runtime` entrypoint to the fixed physical service path `runtime/service/active-forge-runtime`, then let the single Forge Runtime service start that stable path with the selected release manifest/environment;
72
72
  5. require binary whole-Runtime readiness;
73
73
  6. on failure, stop the service, restore the previous release and its bound local SQLite backup, then start and verify the complete previous Runtime.
74
74
 
@@ -24,10 +24,10 @@ These features are part of the default local setup:
24
24
  | Codex / Claude | Delegated implementation for work too large for Direct Edit | Install and authenticate the corresponding CLI; explicitly enable the dev runner. |
25
25
  | GitHub | Issue/Project synchronization, PR workflows, cloud-agent sessions | Authenticated `gh` and repository permission. |
26
26
  | Tailscale / Cloudflare | Stable HTTPS endpoint for ChatGPT MCP | Tunnel client and appropriate account/domain configuration. |
27
- | Browser | Playwright navigation, screenshots, and bounded browser evidence | Browser binaries and allowed domains. |
27
+ | Browser | Playwright navigation, screenshots, and bounded browser evidence | Browser binaries and HTTP(S) URL scheme validation. |
28
28
  | CodeGraph | Additional code relationships and impact navigation | CodeGraph CLI; native Windows automatic setup is not yet enabled. |
29
- | Google Workspace | Gmail and Calendar assistant actions | Explicit OAuth setup and plugin permission. |
30
- | Schedules and findings | Supervised recurring checks and candidate findings | Canonical Forge Runtime running; live actions remain policy-gated. |
29
+ | Google Workspace | Gmail and Calendar plugin actions | Explicit OAuth setup and plugin permission. |
30
+ | Schedules | Supervised recurring checks | Canonical Forge Runtime running; live actions remain policy-gated. |
31
31
 
32
32
  ## Tool exposure
33
33
 
@@ -42,7 +42,7 @@ Use Issues for reproducible defects and scoped feature requests. Use Discussions
42
42
 
43
43
  ## Documentation ownership
44
44
 
45
- The GitHub Wiki is a presentation target. Versioned source lives under `docs/wiki/`. Deeper engineering detail remains under `docs/architecture/current/` and `docs/operations/`.
45
+ The GitHub Wiki is a presentation target. Versioned source lives under `docs/wiki/`. Deeper engineering detail remains under `docs/architecture/CURRENT.md` and `docs/operations/`.
46
46
 
47
47
  Public documentation must distinguish current facts from historical evidence. Avoid hard-coding “next release” versions in operational runbooks; derive versions from `package.json` so routine releases do not leave stale docs behind.
48
48
 
@@ -6,8 +6,8 @@ Homebrew is planned as a convenience layer after the first stable npm/GitHub rel
6
6
 
7
7
  Do not publish a formula until all of the following are true:
8
8
 
9
- - `@moretea-labs/forge@1.5.1` exists on npm;
10
- - Git tag and GitHub Release `v1.5.1` exist and point to the tested commit;
9
+ - `@moretea-labs/forge@1.7.0` exists on npm;
10
+ - Git tag and GitHub Release `v1.7.0` exist and point to the tested commit;
11
11
  - the npm tarball has an immutable checksum;
12
12
  - macOS installation and `forge --version` / `forge doctor` tests pass;
13
13
  - upgrade and uninstall behavior is documented.
@@ -6,8 +6,9 @@ Controller MCP uses one stable default schema so ChatGPT can reliably read, edit
6
6
 
7
7
  | Toolset | CLI | Behavior |
8
8
  | --- | --- | --- |
9
- | **advanced** (default) | `--toolset advanced` | Stable repair-capable surface, capped at 128 tools. Includes the five `rh_*` facades plus high-value repository, Direct Edit, command, Git, Work/Job, Agent, Goal/Work, plugin, browser, iOS, artifact, and recovery tools. |
10
- | **core** | `--toolset core` | Compatibility label for the same stable default schema. It does not reduce capability or require reconnecting. |
9
+ | **facade** (opt-in) | `--toolset facade` | Five-tool ChatGPT orchestration surface: `rh_access`, `rh_status`, `rh_inbox`, `rh_context`, `rh_work`. Internal handlers and capabilities remain registered; only MCP discovery is reduced. Intended for latency/tool-selection A/B before any default migration. |
10
+ | **advanced** (default) | `--toolset advanced` | Current stable 19-tool controller surface. Includes the five `rh_*` facades plus repository, Direct Edit, command, check, plugin-dispatch, Process, and result/evidence tools. |
11
+ | **core** | `--toolset core` | Compatibility label for the same stable default 19-tool schema. It does not reduce capability or require reconnecting. |
11
12
  | **full** | `--toolset full` | Every historical legacy and runtime definition. Use only for old integrations or deep compatibility diagnosis because the much larger schema can reduce tool-selection quality. |
12
13
 
13
14
  Configure via CLI flags, `FORGE_MCP_TOOLSET`, or Controller Home MCP config. Empty/default controller configuration resolves to `advanced`.
@@ -31,7 +32,7 @@ The current implementation separates orchestration from capability without delet
31
32
  2. **Typed atomic tools:** repository inspection, Direct Edit, command, Git, Work/Job, Issue/Task, Goal/Work, plugin, browser, iOS, artifact, and recovery handlers remain public because their schemas preserve operation-specific validation and evidence.
32
33
  3. **Internal handlers and capability registry:** capabilities are grouped as `controller`, `repository-core`, `git`, `issue-task`, `browser`, `ios`, `plugin`, `evidence`, and `runtime-maintenance`. `rh_status`, `rh_context`, and `controller_capabilities` expose this metadata.
33
34
 
34
- The MCP transport currently publishes a static stable schema. It does **not** support loading a domain schema only after ChatGPT selects that domain. Therefore capability grouping improves selection and documentation, but it must not be described as dynamic tool loading. A future transport-level implementation may reduce the discovered schema while retaining the same internal handlers.
35
+ The MCP transport publishes a static schema for each selected toolset. It does **not** dynamically load a domain schema after ChatGPT selects that domain. The opt-in `facade` toolset reduces initial discovery to five facade tools while retaining the same internal handlers; `core`/`advanced` keep the current 19-tool stable schema and `full` keeps the exhaustive compatibility schema.
35
36
 
36
37
  Capability metadata changes do not change `tools/list`; restart the Controller to load new code, but reconnect/rescan ChatGPT only when tool names or input schemas change.
37
38
 
@@ -45,6 +46,7 @@ Remote writes, destructive actions, outside-repository paths, and secret access
45
46
 
46
47
  - Prefer `rh_status`, `rh_access`, `rh_context`, `rh_work`, and `rh_inbox` for normal orchestration.
47
48
  - Use first-class Direct Edit, command, Git, `quick_agent_session`, Goal/Work, iOS, plugin, and artifact tools when the facade is not the shortest reliable path.
49
+ - Use `--toolset facade` only for explicit experiments/clients until latency and workflow coverage are validated; the default remains the stable 19-tool surface.
48
50
  - Keep the stable surface unique and at or below 128 tools.
49
51
  - Add new public tools only when they unlock a real end-to-end workflow; otherwise route capabilities through an existing facade or plugin action.
50
52
 
@@ -34,7 +34,7 @@ For Forge source development only:
34
34
  ```bash
35
35
  git clone https://github.com/moretea-labs/forge.git
36
36
  cd forge
37
- npm ci --ignore-scripts --no-audit --no-fund
37
+ bun install --frozen-lockfile
38
38
  npm install -g . --omit=optional --no-audit --no-fund
39
39
  ```
40
40
 
@@ -34,7 +34,7 @@ forge --version
34
34
  ```bash
35
35
  git clone https://github.com/moretea-labs/forge.git
36
36
  cd forge
37
- npm ci --ignore-scripts --no-audit --no-fund
37
+ bun install --frozen-lockfile
38
38
  npm install -g . --omit=optional --no-audit --no-fund
39
39
  ```
40
40
 
@@ -75,11 +75,11 @@ One Canonical Runtime owns the active local execution authority and one whole-re
75
75
 
76
76
  ## Authoritative documents
77
77
 
78
- - [System overview](https://github.com/moretea-labs/forge/blob/main/docs/architecture/current/system-overview.md)
79
- - [Architecture invariants](https://github.com/moretea-labs/forge/blob/main/docs/architecture/current/architecture-invariants.md)
80
- - [Multi-repository execution](https://github.com/moretea-labs/forge/blob/main/docs/architecture/current/multi-repository-execution.md)
81
- - [Verification and release gates](https://github.com/moretea-labs/forge/blob/main/docs/architecture/current/verification-and-release-gates.md)
82
- - [Implementation status](https://github.com/moretea-labs/forge/blob/main/docs/architecture/current/implementation-status.md)
83
- - [Runtime directory map](https://github.com/moretea-labs/forge/blob/main/docs/architecture/current/runtime-directory-map.md)
78
+ - [System overview](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
79
+ - [Architecture invariants](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
80
+ - [Multi-repository execution](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
81
+ - [Verification and release gates](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
82
+ - [Implementation status](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
83
+ - [Runtime directory map](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md)
84
84
 
85
85
  Historical snapshots explain previous designs but are not current Runtime contracts.
@@ -143,8 +143,8 @@ Primary code and docs:
143
143
  ```text
144
144
  src/runtime/root/release-store.ts
145
145
  src/runtime/health/
146
- docs/architecture/current/failure-recovery.md
147
- docs/architecture/current/verification-and-release-gates.md
146
+ docs/architecture/../architecture/CURRENT.md
147
+ docs/architecture/../architecture/CURRENT.md
148
148
  ```
149
149
 
150
150
  The primary Runtime cannot be the only authority deciding its own recovery. Standalone Recovery observes the Runtime independently and may perform bounded whole-release restart/rollback only under its own evidence and lock contract.
@@ -7,7 +7,7 @@
7
7
  This is the verified path while `@moretea-labs/forge` remains unpublished:
8
8
 
9
9
  ```bash
10
- npm ci --ignore-scripts --no-audit --no-fund
10
+ bun install --frozen-lockfile
11
11
  npm install -g . --omit=optional --no-audit --no-fund
12
12
  ```
13
13
 
@@ -18,9 +18,9 @@ GitHub operations cover issues, pull requests, checks, repository settings, Wiki
18
18
 
19
19
  Browser and local-system plugins are optional controller capabilities. They use separate grants and do not turn repository access into unrestricted machine access.
20
20
 
21
- ## Google Workspace and personal workflows
21
+ ## Google Workspace
22
22
 
23
- Gmail, Calendar, Contacts, and related assistant routines remain connector-specific. Credentials and personal data are not stored in repository source.
23
+ Gmail, Calendar, Contacts, and other Workspace integrations remain connector-specific. Credentials and personal data are not stored in repository source.
24
24
 
25
25
  ## Apple tooling
26
26
 
@@ -7,7 +7,7 @@ Until the npm RC is publicly available, use the verified source path:
7
7
  ```bash
8
8
  git clone https://github.com/moretea-labs/forge.git
9
9
  cd forge
10
- npm ci --ignore-scripts --no-audit --no-fund
10
+ bun install --frozen-lockfile
11
11
  npm install -g . --omit=optional --no-audit --no-fund
12
12
  ```
13
13
 
@@ -28,4 +28,4 @@ Commit explicit paths, merge through the intended strategy, and record the integ
28
28
 
29
29
  Update task evidence, delete merged branches and temporary worktrees, and verify the target branch is clean. Blocked or failed states remain recoverable; they are not treated as immutable terminal truth.
30
30
 
31
- For detailed lifecycle contracts, see [Job and Run Lifecycle](https://github.com/moretea-labs/forge/blob/main/docs/architecture/current/job-and-run-lifecycle.md).
31
+ For detailed lifecycle contracts, see [Job and Run Lifecycle](https://github.com/moretea-labs/forge/blob/main/docs/architecture/../architecture/CURRENT.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moretea-labs/forge",
3
- "version": "1.5.1",
3
+ "version": "1.7.0",
4
4
  "description": "Local-first action assistant for software work with resumable execution, bounded tools, and reviewable evidence",
5
5
  "license": "MIT",
6
6
  "author": "Moretea Labs contributors",
@@ -54,8 +54,6 @@
54
54
  "docs/forge-chatgpt-mcp-setup.md",
55
55
  "docs/forge-github-issue-launcher.md",
56
56
  "docs/forge-runtime-self-healing-loop.md",
57
- "docs/forge-autonomous-goal-loop.md",
58
- "docs/forge-provider-configuration.md",
59
57
  "docs/forge-plugin-management.md",
60
58
  "README.en.md",
61
59
  "README.zh-CN.md",
@@ -83,7 +81,21 @@
83
81
  "check:controller-ui": "bun scripts/build-controller-ui.ts --check",
84
82
  "check:design": "npx -y @google/design.md@0.4.0 lint DESIGN.md",
85
83
  "benchmark:skills": "bun scripts/run-skill-evals.ts",
84
+ "benchmark:controller-hotpath": "bun scripts/benchmark-controller-hotpath.ts",
85
+ "benchmark:thin-harness-mcp-e2e": "bun scripts/benchmark-thin-harness-mcp-e2e.ts --json",
86
+ "benchmark:mcp-transport": "bun scripts/benchmark-mcp-transport.ts",
87
+ "benchmark:mcp-host": "bash scripts/benchmark-mcp-host.sh",
88
+ "benchmark:work-efficiency": "bun scripts/benchmark-work-efficiency.ts",
86
89
  "benchmark:route-session-concurrency": "bun scripts/benchmark-route-session-concurrency.ts",
90
+ "benchmark:quality-harness": "bun scripts/benchmark-quality-harness.ts",
91
+ "benchmark:background-check-overlap": "bun scripts/benchmark-background-check-overlap.ts",
92
+ "check:quality-harness": "bun scripts/benchmark-quality-harness.ts",
93
+ "check:evaluation-framework": "bun test tests/evaluation-framework.test.ts",
94
+ "check:background-check-overlap": "bun scripts/benchmark-background-check-overlap.ts",
95
+ "check:typescript-navigation": "bun scripts/benchmark-typescript-navigation.ts",
96
+ "check:semantic-navigation-providers": "bun test tests/runtime/semantic-navigation-provider.test.ts",
97
+ "check:check-scheduling": "bun test tests/runtime/check-scheduling.test.ts",
98
+ "check:bootstrap-files": "bun test tests/bootstrap-files.test.ts",
87
99
  "test": "bun scripts/test-governance.ts affected",
88
100
  "test:browser-live": "bun tests/live/browser-native-silent.e2e.ts",
89
101
  "test:core": "bun scripts/test-governance.ts core",
@@ -106,6 +118,7 @@
106
118
  "check:main": "bun scripts/run-governed-gate.ts main",
107
119
  "check:ci": "bun run check:main",
108
120
  "check:release": "bun scripts/run-governed-gate.ts release",
121
+ "check:stable-baseline": "bun scripts/check-stable-baseline.ts",
109
122
  "check:release-surface": "bash scripts/check-public-release-surface.sh",
110
123
  "check:release-readiness": "bash scripts/check-release-readiness.sh",
111
124
  "check:open-source-surface": "bash scripts/check-open-source-tracked-surface.sh",
@@ -125,8 +138,8 @@
125
138
  "check:context-files": "forge run check-context-files",
126
139
  "check:deploy-sql": "forge run check-deploy-sql-order",
127
140
  "check:architecture-sync": "forge run check-architecture-sync",
128
- "check:task-sync": "node bin/forge.mjs run check-task-sync",
129
- "check:task-workflow": "bash scripts/check-task-workflow.sh --strict",
141
+ "check:task-sync": "forge run check-task-sync",
142
+ "check:task-workflow": "forge run check-task-workflow --strict",
130
143
  "runtime:activate-source-baseline": "bun scripts/activate-source-baseline.ts request",
131
144
  "plugin:install-desktop-operator": "bun scripts/install-desktop-operator-registration.ts",
132
145
  "sync:brain-docs": "forge run sync-brain-docs --all",
@@ -143,10 +156,10 @@
143
156
  "devDependencies": {
144
157
  "@colbymchenry/codegraph": "1.0.1",
145
158
  "@types/bun": "latest",
146
- "@types/cors": "^2.8.17",
147
- "@types/express": "^5.0.0",
148
- "@types/react": "^19.2.0",
149
- "@types/react-dom": "^19.2.0",
159
+ "@types/cors": "^2.8.19",
160
+ "@types/express": "^5.0.6",
161
+ "@types/react": "^19.2.18",
162
+ "@types/react-dom": "^19.2.4",
150
163
  "@vitejs/plugin-react": "^5.2.0",
151
164
  "vite": "^7.3.0"
152
165
  },
@@ -156,11 +169,17 @@
156
169
  "express": "^5.2.1",
157
170
  "playwright": "^1.54.1",
158
171
  "react": "^19.2.0",
159
- "react-dom": "^19.2.0",
172
+ "react-dom": "^19.2.8",
160
173
  "typescript": "^6.0.3"
161
174
  },
162
175
  "packageManager": "npm@10.0.0",
163
176
  "optionalDependencies": {
177
+ "@colbymchenry/codegraph-darwin-arm64": "1.0.1",
178
+ "@colbymchenry/codegraph-darwin-x64": "1.0.1",
179
+ "@colbymchenry/codegraph-linux-arm64": "1.0.1",
180
+ "@colbymchenry/codegraph-linux-x64": "1.0.1",
181
+ "@colbymchenry/codegraph-win32-arm64": "1.0.1",
182
+ "@colbymchenry/codegraph-win32-x64": "1.0.1",
164
183
  "agent-device": "0.20.2"
165
184
  }
166
185
  }
@@ -64,19 +64,17 @@ interface CheckDefinition {
64
64
  const CHECKS: readonly CheckDefinition[] = [
65
65
  { id: 'package:check:type', args: ['run', 'check:type'], timeoutMs: 10 * 60_000 },
66
66
  { id: 'package:check:runtime-architecture', args: ['run', 'check:runtime-architecture'], timeoutMs: 3 * 60_000 },
67
- {
68
- id: 'focused:runtime-architecture-replacement',
69
- args: [
70
- 'test',
71
- 'tests/runtime/process-runtime.test.ts',
72
- 'tests/runtime/work-terminal-cleanup.test.ts',
73
- 'tests/runtime/canonical-single-runtime.test.ts',
74
- 'tests/cli/runtime-command.test.ts',
75
- 'tests/runtime/stable-state-and-bootstrap.test.ts',
76
- 'tests/cli/mcp-controller.test.ts',
77
- ],
78
- timeoutMs: 15 * 60_000,
79
- },
67
+ ...[
68
+ 'tests/runtime/process-runtime.test.ts',
69
+ 'tests/runtime/work-terminal-cleanup.test.ts',
70
+ 'tests/runtime/canonical-single-runtime.test.ts',
71
+ 'tests/cli/runtime-command.test.ts',
72
+ 'tests/cli/mcp-http.test.ts',
73
+ ].map((path) => ({
74
+ id: `focused:runtime-architecture-replacement:${path}`,
75
+ args: ['test', '--max-concurrency', '1', `./${path}`],
76
+ timeoutMs: 5 * 60_000,
77
+ })),
80
78
  { id: 'package:test:core', args: ['run', 'test:core'], timeoutMs: 30 * 60_000 },
81
79
  ];
82
80
 
@@ -172,6 +170,12 @@ function terminalOutcome(handle: ReturnType<typeof listWorkHandles>[number]): Wo
172
170
 
173
171
  function cleanupSafety(repoRoot: string, worktreePath: string): { safe: boolean; reason?: string } {
174
172
  if (!existsSync(worktreePath)) return { safe: true };
173
+ const repository = runProcess('git', ['rev-parse', '--is-inside-work-tree'], {
174
+ cwd: worktreePath,
175
+ timeoutMs: 10_000,
176
+ maxOutputBytes: 100_000,
177
+ });
178
+ if (!repository.ok || repository.stdout.trim() !== 'true') return { safe: false, reason: 'WORKTREE_NOT_GIT_REPOSITORY' };
175
179
  const status = git(worktreePath, ['status', '--porcelain']);
176
180
  if (status) return { safe: false, reason: 'WORKTREE_DIRTY' };
177
181
  const head = git(worktreePath, ['rev-parse', 'HEAD']);