@moretea-labs/forge 1.6.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/AGENTS.md +4 -0
  2. package/CHANGELOG.md +39 -0
  3. package/CLAUDE.md +4 -0
  4. package/README.md +2 -2
  5. package/README.zh-CN.md +1 -1
  6. package/SKILL.md +2 -2
  7. package/THIRD_PARTY_NOTICES.md +1 -1
  8. package/agents/openai.yaml +1 -1
  9. package/assets/hooks/hook-input.sh +11 -8
  10. package/assets/hooks/lib/session-state.sh +10 -7
  11. package/assets/hooks/lib/workflow-state.sh +13 -177
  12. package/assets/hooks/post-tool-observer.sh +8 -2
  13. package/assets/hooks/prompt-guard.sh +5 -81
  14. package/assets/hooks/session-start-context.sh +56 -1
  15. package/assets/partials/05-workflow.partial.md +1 -1
  16. package/assets/partials-agents/02-operating-mode.partial.md +2 -0
  17. package/assets/partials-agents/03-orchestration.partial.md +1 -1
  18. package/assets/plugin-registry.v1.json +3 -3
  19. package/assets/reference-configs/document-generation.md +1 -1
  20. package/assets/reference-configs/harness-overview.md +1 -1
  21. package/assets/reference-configs/sprint-contracts.md +3 -3
  22. package/assets/skill-version.json +2 -2
  23. package/assets/templates/contract.template.md +2 -7
  24. package/assets/templates/helpers/capture-plan.sh +2 -2
  25. package/assets/templates/helpers/check-architecture-sync.sh +17 -0
  26. package/assets/templates/helpers/check-task-workflow.sh +4 -4
  27. package/assets/templates/helpers/contract-worktree.sh +1 -21
  28. package/assets/templates/helpers/ensure-task-workflow.sh +11 -36
  29. package/assets/templates/helpers/inspect-project-state.ts +8 -6
  30. package/assets/templates/helpers/migrate-project-template.sh +22 -45
  31. package/assets/templates/helpers/migrate-workflow-docs.ts +9 -7
  32. package/assets/templates/helpers/new-plan.sh +1 -1
  33. package/assets/templates/helpers/plan-to-todo.sh +12 -37
  34. package/assets/templates/helpers/ship-worktrees.sh +2 -29
  35. package/assets/templates/helpers/verify-contract.sh +1 -111
  36. package/assets/templates/helpers/verify-sprint.sh +3 -180
  37. package/assets/templates/helpers/workflow-contract.ts +5 -1
  38. package/assets/templates/plan.template.md +1 -1
  39. package/assets/templates/review.template.md +9 -34
  40. package/assets/workflow-contract.v1.json +10 -19
  41. package/docs/README.md +10 -10
  42. package/docs/architecture/CURRENT.md +178 -0
  43. package/docs/architecture/EVOLUTION.md +42 -0
  44. package/docs/architecture/current/README.md +4 -156
  45. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
  46. package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
  47. package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
  48. package/docs/architecture/history/README.md +7 -0
  49. package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
  50. package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
  51. package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
  52. package/docs/architecture/history.md +3 -34
  53. package/docs/architecture/index.md +15 -98
  54. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
  55. package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
  56. package/docs/architecture/versions/1.6.md +38 -0
  57. package/docs/architecture/versions/1.7.md +41 -0
  58. package/docs/forge-chatgpt-browser-engine.md +2 -2
  59. package/docs/forge-chatgpt-mcp-setup.md +4 -28
  60. package/docs/forge-chatgpt-supervised-automation.md +3 -3
  61. package/docs/forge-github-issue-launcher.md +1 -1
  62. package/docs/forge-plugin-management.md +1 -1
  63. package/docs/forge-runtime-self-healing-loop.md +1 -1
  64. package/docs/operations/controller-browser-plugin.md +26 -6
  65. package/docs/operations/controller-performance-and-502.md +143 -0
  66. package/docs/operations/controller-reliability-runbook.md +1 -1
  67. package/docs/operations/features.md +2 -2
  68. package/docs/operations/github-repository.md +1 -1
  69. package/docs/operations/homebrew.md +2 -2
  70. package/docs/operations/mcp-tool-exposure.md +5 -3
  71. package/docs/wiki/Architecture.md +6 -6
  72. package/docs/wiki/Implementation.md +2 -2
  73. package/docs/wiki/Integrations.md +2 -2
  74. package/docs/wiki/Work-Lifecycle.md +1 -1
  75. package/package.json +33 -11
  76. package/scripts/activate-source-baseline.ts +17 -13
  77. package/scripts/architecture-event.ts +2 -820
  78. package/scripts/architecture-queue.sh +2 -645
  79. package/scripts/archive-architecture-request.sh +2 -242
  80. package/scripts/archive-workflow.sh +1 -291
  81. package/scripts/benchmark-background-check-overlap.ts +228 -0
  82. package/scripts/benchmark-mcp-host.sh +117 -0
  83. package/scripts/benchmark-mcp-transport.ts +170 -0
  84. package/scripts/benchmark-quality-harness.ts +146 -0
  85. package/scripts/benchmark-route-session-concurrency.ts +207 -6
  86. package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
  87. package/scripts/benchmark-typescript-navigation.ts +186 -0
  88. package/scripts/benchmark-work-efficiency.ts +334 -0
  89. package/scripts/capability-config.ts +2 -392
  90. package/scripts/capability-resolver.ts +2 -503
  91. package/scripts/capture-plan.sh +1 -332
  92. package/scripts/check-agent-tooling.sh +2 -1558
  93. package/scripts/check-architecture-sync.sh +2 -371
  94. package/scripts/check-brain-manifest.sh +2 -253
  95. package/scripts/check-context-files.sh +2 -47
  96. package/scripts/check-deploy-sql-order.sh +2 -115
  97. package/scripts/check-mcp-compatibility.ts +14 -0
  98. package/scripts/check-runtime-architecture.mjs +349 -79
  99. package/scripts/check-skill-version.ts +3 -191
  100. package/scripts/check-source-duplication.mjs +61 -0
  101. package/scripts/check-stable-baseline.ts +92 -0
  102. package/scripts/check-task-sync.sh +2 -63
  103. package/scripts/check-task-workflow.sh +2 -1000
  104. package/scripts/codex-handoff-resume.sh +2 -267
  105. package/scripts/context-contract-sync.sh +2 -514
  106. package/scripts/contract-run.ts +2 -463
  107. package/scripts/contract-worktree.sh +1 -722
  108. package/scripts/ensure-task-workflow.sh +1 -1225
  109. package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
  110. package/scripts/inspect-project-state.ts +4 -279
  111. package/scripts/install-standalone-recovery.ts +24 -0
  112. package/scripts/lib/project-init-lib.sh +22 -46
  113. package/scripts/lib/run-forge-helper.sh +19 -0
  114. package/scripts/lib/run-forge-helper.ts +26 -0
  115. package/scripts/migrate-project-template.sh +1 -1189
  116. package/scripts/migrate-workflow-docs.ts +4 -412
  117. package/scripts/new-plan.sh +1 -180
  118. package/scripts/new-spec.sh +1 -47
  119. package/scripts/new-sprint.sh +1 -46
  120. package/scripts/plan-to-todo.sh +1 -796
  121. package/scripts/prepare-codex-handoff.sh +2 -201
  122. package/scripts/prepare-handoff.sh +1 -78
  123. package/scripts/refresh-current-status.sh +2 -467
  124. package/scripts/run-governed-gate.ts +5 -1
  125. package/scripts/select-agent-context-blocks.sh +2 -64
  126. package/scripts/ship-worktrees.sh +1 -558
  127. package/scripts/smoke-ios-physical-device.ts +4 -2
  128. package/scripts/smoke-runtime-recovery.ts +1 -35
  129. package/scripts/smoke-schedule-engine.ts +1 -20
  130. package/scripts/sprint-backlog.sh +1 -834
  131. package/scripts/stage-runtime-release.ts +2 -1
  132. package/scripts/summarize-failures.sh +2 -123
  133. package/scripts/switch-plan.sh +1 -150
  134. package/scripts/sync-brain-docs.sh +2 -379
  135. package/scripts/sync-generated-authority.mjs +175 -0
  136. package/scripts/verify-contract.sh +2 -703
  137. package/scripts/verify-forge-runtime.sh +0 -1
  138. package/scripts/verify-sprint.sh +1 -677
  139. package/scripts/workflow-contract.ts +4 -205
  140. package/scripts/workstream-sync.sh +2 -261
  141. package/src/cli/agent-jobs/executor-health.ts +1 -1
  142. package/src/cli/commands/init-hook.ts +3 -3
  143. package/src/cli/commands/mcp.ts +9 -5
  144. package/src/cli/commands/plugin.ts +12 -3
  145. package/src/cli/commands/recovery.ts +25 -3
  146. package/src/cli/commands/runtime.ts +55 -3
  147. package/src/cli/commands/security.ts +12 -1
  148. package/src/cli/commands/setup-profile.ts +31 -21
  149. package/src/cli/controller/check-runner.ts +113 -5
  150. package/src/cli/controller/composite-result.ts +1 -1
  151. package/src/cli/controller/context/focus.ts +51 -0
  152. package/src/cli/controller/context/instruction-context.ts +114 -0
  153. package/src/cli/controller/context/known-paths.ts +76 -0
  154. package/src/cli/controller/context/query-planning.ts +110 -0
  155. package/src/cli/controller/context/rule-resolution.ts +532 -0
  156. package/src/cli/controller/context/source-materializer.ts +278 -0
  157. package/src/cli/controller/context/structural.ts +16 -0
  158. package/src/cli/controller/context/types.ts +286 -0
  159. package/src/cli/controller/context-pack.ts +828 -487
  160. package/src/cli/controller/launch-agents.ts +77 -2
  161. package/src/cli/controller/operational-plan.ts +2 -2
  162. package/src/cli/controller/work-mode.ts +6 -4
  163. package/src/cli/editing/edit-session.ts +60 -7
  164. package/src/cli/github/contracts.ts +16 -0
  165. package/src/cli/github/github.ts +135 -16
  166. package/src/cli/github/session.ts +2 -1
  167. package/src/cli/installer/managed-entries.ts +15 -1
  168. package/src/cli/local-bridge/console-automations.ts +54 -78
  169. package/src/cli/local-bridge/console-view-models.ts +1 -35
  170. package/src/cli/local-bridge/facade-api.ts +37 -264
  171. package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
  172. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +23 -13
  173. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
  174. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +6 -4
  175. package/src/cli/local-bridge/frontend/src/lib/api.ts +1 -6
  176. package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
  177. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +2 -2
  178. package/src/cli/local-bridge/frontend/src/styles.css +1 -1
  179. package/src/cli/local-bridge/frontend/src/types.ts +5 -8
  180. package/src/cli/local-bridge/job-store.ts +1 -490
  181. package/src/cli/local-bridge/server.ts +2 -515
  182. package/src/cli/local-bridge/ui-dist/app.css +1 -1
  183. package/src/cli/local-bridge/ui-dist/app.js +3703 -3757
  184. package/src/cli/mcp/auth.ts +5 -5
  185. package/src/cli/mcp/instructions.ts +3 -2
  186. package/src/cli/mcp/legacy-tool-service.ts +10 -222
  187. package/src/cli/mcp/multi-repository.ts +16 -5
  188. package/src/cli/mcp/oauth.ts +175 -26
  189. package/src/cli/mcp/post-finalize-work-attribution.ts +150 -0
  190. package/src/cli/mcp/repository-tools.ts +282 -146
  191. package/src/cli/mcp/server.ts +586 -116
  192. package/src/cli/mcp/tool-capability-cache.ts +1 -1
  193. package/src/cli/mcp/tool-contract.ts +14 -0
  194. package/src/cli/mcp/toolset-selection.ts +1 -1
  195. package/src/cli/mcp/toolset.ts +44 -7
  196. package/src/cli/mcp/transports/http.ts +124 -14
  197. package/src/cli/mcp/transports/session-registry.ts +43 -5
  198. package/src/cli/mcp/types.ts +3 -3
  199. package/src/cli/repositories/command-classifier.ts +103 -21
  200. package/src/cli/repositories/command-executor.ts +78 -526
  201. package/src/cli/repositories/command-process.ts +108 -0
  202. package/src/cli/repositories/command-scope.ts +99 -41
  203. package/src/cli/repositories/controller-home.ts +7 -8
  204. package/src/cli/repositories/git-command-executor.ts +2 -0
  205. package/src/cli/repositories/locks.ts +53 -16
  206. package/src/cli/repositories/repository-snapshot.ts +124 -0
  207. package/src/cli/repositories/selected-path-actions.ts +17 -9
  208. package/src/cli/repositories/structured-git.ts +118 -6
  209. package/src/cli/repository/inspector.ts +563 -65
  210. package/src/cli/repository/session-cache.ts +58 -17
  211. package/src/cli/v81-entry.ts +1 -4
  212. package/src/effects/fs-transaction.ts +85 -17
  213. package/src/runtime/context/codegraph-read-provider.ts +233 -2
  214. package/src/runtime/context/codegraph-sidecar.cjs +74 -40
  215. package/src/runtime/context/generic-lsp-provider.ts +355 -0
  216. package/src/runtime/context/lsp-client.ts +283 -0
  217. package/src/runtime/context/semantic-navigation-contract.ts +61 -0
  218. package/src/runtime/context/semantic-navigation.ts +223 -0
  219. package/src/runtime/context/swift-navigation.ts +565 -0
  220. package/src/runtime/context/typescript-navigation.ts +226 -0
  221. package/src/runtime/control-plane/dispatch-priority.ts +28 -0
  222. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +48 -16
  223. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
  224. package/src/runtime/control-plane/execution/repository-work-attribution.ts +106 -0
  225. package/src/runtime/control-plane/execution/retained-work-resume.ts +203 -0
  226. package/src/runtime/control-plane/execution/session-store.ts +18 -0
  227. package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
  228. package/src/runtime/control-plane/execution/work-completion-authority.ts +58 -0
  229. package/src/runtime/control-plane/execution/work-evidence-policy.ts +200 -0
  230. package/src/runtime/control-plane/execution/work-execution-support.ts +386 -0
  231. package/src/runtime/control-plane/execution/work-finalization-service.ts +1913 -0
  232. package/src/runtime/control-plane/execution/work-handle-authority.ts +96 -0
  233. package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
  234. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
  235. package/src/runtime/control-plane/execution/work-operation-service.ts +468 -0
  236. package/src/runtime/control-plane/execution/work-path-scope.ts +37 -0
  237. package/src/runtime/control-plane/execution/work-preparation-service.ts +479 -0
  238. package/src/runtime/control-plane/execution/work-process-evidence.ts +129 -0
  239. package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
  240. package/src/runtime/control-plane/execution/work-task-receipt.ts +22 -18
  241. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +156 -11
  242. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +22 -14
  243. package/src/runtime/control-plane/execution/work-verification-context.ts +56 -0
  244. package/src/runtime/control-plane/execution/work-verification-service.ts +388 -0
  245. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +90 -9
  246. package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
  247. package/src/runtime/control-plane/facade/controller-round-relay.ts +1118 -0
  248. package/src/runtime/control-plane/facade/controller-session-store.ts +302 -12
  249. package/src/runtime/control-plane/facade/goal-workloop-access.ts +17 -1
  250. package/src/runtime/control-plane/facade/goal-workloop.ts +928 -190
  251. package/src/runtime/control-plane/facade/index.ts +3 -0
  252. package/src/runtime/control-plane/facade/plan-contract-store.ts +275 -42
  253. package/src/runtime/control-plane/facade/repository-work-admission.ts +147 -0
  254. package/src/runtime/control-plane/facade/requirement-authority.ts +83 -0
  255. package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
  256. package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
  257. package/src/runtime/control-plane/facade/types.ts +90 -10
  258. package/src/runtime/control-plane/facade/work-contract-store.ts +157 -261
  259. package/src/runtime/control-plane/facade/work-state-machine.ts +250 -0
  260. package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
  261. package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
  262. package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
  263. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
  264. package/src/runtime/control-plane/global-scheduler/maintenance.ts +152 -0
  265. package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
  266. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
  267. package/src/runtime/control-plane/global-scheduler/scheduler.ts +278 -543
  268. package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
  269. package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
  270. package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
  271. package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
  272. package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
  273. package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
  274. package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
  275. package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
  276. package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
  277. package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
  278. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +63 -0
  279. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +365 -117
  280. package/src/runtime/control-plane/launcher/launch-reservation-store.ts +89 -0
  281. package/src/runtime/control-plane/launcher/thin-launcher.ts +244 -11
  282. package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
  283. package/src/runtime/control-plane/persistence/requirement-store.ts +0 -12
  284. package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
  285. package/src/runtime/control-plane/release-retention.ts +62 -2
  286. package/src/runtime/control-plane/repo-actor/registry.ts +4 -2
  287. package/src/runtime/control-plane/routing/route-policy.ts +24 -21
  288. package/src/runtime/control-plane/routing/workspace-admission.ts +70 -0
  289. package/src/runtime/control-plane/runtime-status-client.ts +0 -2
  290. package/src/runtime/diagnostics/mcp-timing.ts +13 -0
  291. package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
  292. package/src/runtime/diagnostics/performance.ts +24 -1
  293. package/src/runtime/evidence/event-ledger.ts +1 -1
  294. package/src/runtime/evidence/process-check-execution.ts +18 -0
  295. package/src/runtime/execution/jobs/child-reference.ts +6 -2
  296. package/src/runtime/execution/jobs/store.ts +58 -4
  297. package/src/runtime/execution/jobs/types.ts +1 -1
  298. package/src/runtime/execution/managed-workspace.ts +203 -1
  299. package/src/runtime/execution/process-runtime/check-facade.ts +51 -4
  300. package/src/runtime/execution/process-runtime/check-result.ts +88 -0
  301. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +7 -1
  302. package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
  303. package/src/runtime/execution/process-runtime/command-facade.ts +367 -40
  304. package/src/runtime/execution/process-runtime/gc.ts +38 -6
  305. package/src/runtime/execution/process-runtime/lightweight-managed.ts +1201 -0
  306. package/src/runtime/execution/process-runtime/persisted-check.ts +51 -5
  307. package/src/runtime/execution/process-runtime/resource-claims.ts +10 -6
  308. package/src/runtime/execution/process-runtime/runtime.ts +53 -3
  309. package/src/runtime/execution/process-runtime/store.ts +1 -0
  310. package/src/runtime/execution/process-runtime/types.ts +4 -12
  311. package/src/runtime/execution/thin-harness/async-process.ts +12 -2
  312. package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
  313. package/src/runtime/execution/work-activity.ts +21 -0
  314. package/src/runtime/execution/workers/executor.ts +18 -61
  315. package/src/runtime/gateway/mcp/execution-tools.ts +35 -1852
  316. package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +61 -0
  317. package/src/runtime/gateway/mcp/process-tools.ts +83 -37
  318. package/src/runtime/gateway/mcp/router.ts +186 -84
  319. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +565 -0
  320. package/src/runtime/gateway/mcp/runtime-tools.ts +2378 -1947
  321. package/src/runtime/plugins/app-store-connect-adapter.ts +216 -47
  322. package/src/runtime/plugins/browser-adapter.ts +2662 -829
  323. package/src/runtime/plugins/browser-automation-service.ts +10 -0
  324. package/src/runtime/plugins/browser-handoff-host.ts +2 -25
  325. package/src/runtime/plugins/browser-handoff.ts +110 -5
  326. package/src/runtime/plugins/browser-macos-bridge.ts +701 -63
  327. package/src/runtime/plugins/browser-manifest-surface.ts +603 -0
  328. package/src/runtime/plugins/browser-native-session-service.ts +222 -0
  329. package/src/runtime/plugins/browser-node-bridge.ts +6 -34
  330. package/src/runtime/plugins/browser-provider-registry.ts +109 -0
  331. package/src/runtime/plugins/browser-runtime-contract.ts +154 -0
  332. package/src/runtime/plugins/browser-runtime.ts +193 -0
  333. package/src/runtime/plugins/browser-session-authority.ts +332 -0
  334. package/src/runtime/plugins/browser-session-store.ts +121 -0
  335. package/src/runtime/plugins/browser-session-types.ts +98 -0
  336. package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
  337. package/src/runtime/plugins/desktop-operator-registration.ts +10 -4
  338. package/src/runtime/plugins/external-adapter.ts +358 -3
  339. package/src/runtime/plugins/external-unix-socket.ts +7 -1
  340. package/src/runtime/plugins/first-party-registry.ts +2 -0
  341. package/src/runtime/plugins/github-adapter.ts +125 -0
  342. package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
  343. package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
  344. package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
  345. package/src/runtime/plugins/ios-adapter.ts +106 -16
  346. package/src/runtime/plugins/ios-agent-device.ts +234 -64
  347. package/src/runtime/plugins/ios-physical-device.ts +1143 -392
  348. package/src/runtime/plugins/lightweight-action.ts +153 -0
  349. package/src/runtime/plugins/local-system-adapter.ts +123 -6
  350. package/src/runtime/plugins/macos-capability-broker.ts +47 -9
  351. package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
  352. package/src/runtime/plugins/plugin-management-adapter.ts +49 -8
  353. package/src/runtime/plugins/resend-adapter.ts +1 -1
  354. package/src/runtime/plugins/store.ts +330 -33
  355. package/src/runtime/plugins/types.ts +38 -3
  356. package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
  357. package/src/runtime/projections/git-status-sampler.ts +16 -16
  358. package/src/runtime/projections/materialized-view.ts +28 -10
  359. package/src/runtime/recovery/maintenance-executor.ts +426 -25
  360. package/src/runtime/root/mcp-transport.ts +180 -10
  361. package/src/runtime/root/package-connector-service.ts +230 -10
  362. package/src/runtime/root/package-runtime-release.ts +143 -17
  363. package/src/runtime/root/package-runtime-service.ts +461 -22
  364. package/src/runtime/root/release-manifest.ts +144 -18
  365. package/src/runtime/root/release-materialize.ts +125 -32
  366. package/src/runtime/root/release-store.ts +48 -11
  367. package/src/runtime/root/runtime.ts +23 -5
  368. package/src/runtime/root/service.ts +100 -29
  369. package/src/runtime/root/types.ts +12 -0
  370. package/src/runtime/safe-tooling/ios-development.ts +321 -63
  371. package/src/runtime/shared/trusted-executable.ts +62 -0
  372. package/src/runtime/shared/trusted-node-executable.ts +48 -0
  373. package/src/runtime/standalone-recovery/core.ts +1079 -240
  374. package/src/runtime/standalone-recovery/entry.ts +100 -24
  375. package/src/runtime/standalone-recovery/installer.ts +20 -4
  376. package/src/runtime/standalone-recovery/service-labels.ts +2 -0
  377. package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
  378. package/src/runtime/workflow/schedules/browser-probe.ts +81 -3
  379. package/src/runtime/workflow/schedules/engine.ts +364 -202
  380. package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
  381. package/src/runtime/workflow/schedules/settlement.ts +64 -17
  382. package/src/runtime/workflow/schedules/store.ts +209 -19
  383. package/src/runtime/workflow/schedules/types.ts +2 -4
  384. package/src/runtime/workflow/schedules/work-continuation.ts +26 -13
  385. package/src/testing/test-governance.ts +8 -40
  386. package/assets/reference-configs/heartbeat-triage.md +0 -57
  387. package/assets/templates/helpers/harness-trace-grade.sh +0 -150
  388. package/assets/templates/helpers/heartbeat-triage.sh +0 -361
  389. package/assets/templates/helpers/maintenance-triage.sh +0 -167
  390. package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
  391. package/docs/architecture/current/architecture-invariants.md +0 -331
  392. package/docs/architecture/current/automation-and-schedule-engine.md +0 -459
  393. package/docs/architecture/current/codegraph-context-provider.md +0 -238
  394. package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
  395. package/docs/architecture/current/controller-repository-decoupling.md +0 -148
  396. package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -373
  397. package/docs/architecture/current/entity-model.md +0 -612
  398. package/docs/architecture/current/external-plugin-governance.md +0 -396
  399. package/docs/architecture/current/failure-recovery.md +0 -447
  400. package/docs/architecture/current/governance.md +0 -213
  401. package/docs/architecture/current/human-interaction-plane.md +0 -87
  402. package/docs/architecture/current/implementation-status.md +0 -128
  403. package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
  404. package/docs/architecture/current/legacy-governance.md +0 -58
  405. package/docs/architecture/current/local-workspace-target-grants.md +0 -70
  406. package/docs/architecture/current/migration-roadmap.md +0 -105
  407. package/docs/architecture/current/multi-repository-execution.md +0 -371
  408. package/docs/architecture/current/operations-runbook.md +0 -45
  409. package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
  410. package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
  411. package/docs/architecture/current/repository-access-modes.md +0 -102
  412. package/docs/architecture/current/route-policy.md +0 -15
  413. package/docs/architecture/current/route-session-concurrency.md +0 -85
  414. package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
  415. package/docs/architecture/current/runtime-directory-map.md +0 -49
  416. package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
  417. package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
  418. package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
  419. package/docs/architecture/current/system-overview.md +0 -169
  420. package/docs/architecture/current/target-requirements-traceability.md +0 -202
  421. package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
  422. package/docs/architecture/current/thin-harness-v1.md +0 -321
  423. package/docs/architecture/current/verification-and-release-gates.md +0 -391
  424. package/docs/forge-autonomous-goal-loop.md +0 -9
  425. package/docs/forge-provider-configuration.md +0 -7
  426. package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -93
  427. package/docs/operations/gmail-assistant-routines.md +0 -186
  428. package/docs/operations/personal-assistant-operator-guide.md +0 -61
  429. package/docs/operations/provider-configuration.md +0 -31
  430. package/scripts/harness-trace-grade.sh +0 -150
  431. package/scripts/heartbeat-triage.sh +0 -361
  432. package/scripts/maintenance-triage.sh +0 -167
  433. package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
  434. package/src/cli/repositories/goal-registry.ts +0 -239
  435. package/src/runtime/assistant/action-proposals.ts +0 -279
  436. package/src/runtime/assistant/intent.ts +0 -395
  437. package/src/runtime/assistant/model-provider.ts +0 -460
  438. package/src/runtime/assistant/openapi.ts +0 -223
  439. package/src/runtime/assistant/policy.ts +0 -89
  440. package/src/runtime/assistant/readiness.ts +0 -258
  441. package/src/runtime/assistant/routine-runtime.ts +0 -477
  442. package/src/runtime/assistant/schedule-binding.ts +0 -171
  443. package/src/runtime/assistant/standing-grants.ts +0 -375
  444. package/src/runtime/assistant/store.ts +0 -243
  445. package/src/runtime/assistant/types.ts +0 -135
  446. package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
  447. package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
  448. package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
  449. package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
  450. package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
  451. package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
  452. package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
  453. package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
  454. package/src/runtime/control-plane/goal-loop/index.ts +0 -13
  455. package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
  456. package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
  457. package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
  458. package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
  459. package/src/runtime/control-plane/goal-loop/types.ts +0 -378
  460. package/src/runtime/control-plane/startup-recovery.ts +0 -198
  461. package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
  462. package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
  463. package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
  464. package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
  465. package/src/runtime/workflow/findings/store.ts +0 -204
  466. package/src/runtime/workflow/findings/types.ts +0 -58
  467. package/src/runtime/workflow/portfolio/engine.ts +0 -20
  468. package/src/runtime/workflow/portfolio/store.ts +0 -185
  469. package/src/runtime/workflow/portfolio/types.ts +0 -29
@@ -39,6 +39,149 @@ 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
+ ## Recurring Connection Failure Ledger
124
+
125
+ Keep these failure signatures distinct. A public `502` identifies the failed
126
+ hop; it does not identify the failed owner or authorize a whole-Runtime
127
+ rollback.
128
+
129
+ | Signature | Verified evidence | Correct recovery owner |
130
+ | --- | --- | --- |
131
+ | Runtime activation/port conflict | `RUNTIME_RELEASE_AUTHORITY_MISMATCH`, port `8767` already in use, or orphaned `mcp serve` | Whole-Runtime Recovery transaction; see the 2026-08-23 incident above. |
132
+ | Connector/release binding drift | Runtime `ready=true`, but Connector loopback/public MCP fails or returns `5xx` | Connector Recovery reconciles the active immutable release, then verifies local ownership and the public endpoint. |
133
+ | Connector launched with a Recovery-role binary | Connector plist starts `forge-recovery-gateway` or `forge-recovery-watchdog`; stderr repeats `RECOVERY_*_ROLE_ONLY` | Repair the Connector with the absolute interpreter recorded by Runtime activation. A Connector launch spec must reject a Recovery-role binary. |
134
+ | Connector outage misclassified as a Runtime outage | Runtime status and local active Gateway are healthy while the Watchdog records `restart_primary_runtime` for a Connector probe failure | Count and restart the Connector under its own bounded budget; do not consume the Runtime restart/rollback budget. |
135
+
136
+ The launch interpreter is part of the Connector's immutable release binding:
137
+ detached activation passes its recorded absolute `nodeExecutable` to candidate
138
+ and rollback Connector installs, and Recovery services retain the same explicit
139
+ interpreter for later binding repair. Regression coverage must exercise a
140
+ failed Connector while the Canonical Runtime remains healthy.
141
+
142
+ ## Session Continuation Fails With 404 MCP_TOOL_SURFACE_CHANGED (2026-08-23)
143
+
144
+ Second incident on the same day, different failure mode. After a session is
145
+ created, every follow-up (`notifications/initialized`, `tools/call`) returned
146
+ HTTP 404 with:
147
+
148
+ ```json
149
+ {"error":"session_not_found","code":"MCP_TOOL_SURFACE_CHANGED",
150
+ "message":"MCP Runtime tool surface changed; initialize a new session so tools/list is refreshed.",
151
+ "recoverable":true,"action":"reinitialize",
152
+ "previousFingerprint":"<session>","currentFingerprint":"<published>"}
153
+ ```
154
+
155
+ Root cause: the Gateway session fence compares the **live** Runtime schema
156
+ fingerprint captured at `initialize` (`readCanonicalRuntimeToolSchema` ->
157
+ `proxy.listTools()`) against the **published** fingerprint in
158
+ `runtime/status.json`. The Runtime publishes `status.json` once at startup and
159
+ does not republish when its live tool surface changes at runtime (e.g. a
160
+ plugin registers or code edits change the tool set). Once the two values
161
+ diverge, every session continuation is rejected as a tool-surface change, so
162
+ the tunnel/connector appears broken even though `/health` shows both
163
+ fingerprints matching the published value.
164
+
165
+ Diagnostic fingerprint:
166
+
167
+ - Gateway `/health` shows `toolSurfaceFingerprint` equal to
168
+ `runtimeToolSurfaceFingerprint` (both read the published value), but a real
169
+ `initialize` session stores a different fingerprint.
170
+ - Follow-up requests get the `MCP_TOOL_SURFACE_CHANGED` 404 with
171
+ `previousFingerprint != currentFingerprint`.
172
+
173
+ Remediation:
174
+
175
+ - Restart the canonical Runtime service
176
+ (`launchctl kickstart -k gui/$UID/com.moretea.forge.runtime.<suffix>`) so it
177
+ republishes `status.json` from its current surface, then verify
178
+ `initialize` -> `notifications/initialized` (202) -> `tools/call` (200) with
179
+ a valid OAuth token.
180
+ - Known code defect to fix: the Runtime should republish `status.json`
181
+ whenever its live tool surface changes (tool list changed), and/or the
182
+ Gateway fence should prefer the live fingerprint for the current-schema
183
+ comparison instead of trusting a stale publication.
184
+
42
185
  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
186
 
44
187
  ## 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
 
@@ -26,8 +26,8 @@ These features are part of the default local setup:
26
26
  | Tailscale / Cloudflare | Stable HTTPS endpoint for ChatGPT MCP | Tunnel client and appropriate account/domain configuration. |
27
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.6.0` exists on npm;
10
- - Git tag and GitHub Release `v1.6.0` exist and point to the tested commit;
9
+ - `@moretea-labs/forge@1.7.1` exists on npm;
10
+ - Git tag and GitHub Release `v1.7.1` 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
 
@@ -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.
@@ -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
 
@@ -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.6.0",
3
+ "version": "1.7.1",
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",
@@ -94,6 +106,8 @@
94
106
  "test:coverage": "bun test --coverage",
95
107
  "check:type": "bun x tsc --noEmit",
96
108
  "check:runtime-architecture": "node scripts/check-runtime-architecture.mjs",
109
+ "check:generated-authority": "node scripts/sync-generated-authority.mjs --check",
110
+ "check:source-duplication": "node scripts/check-source-duplication.mjs",
97
111
  "check:executable-modes": "bun scripts/repair-executable-modes.ts --check",
98
112
  "repair:executable-modes": "bun scripts/repair-executable-modes.ts",
99
113
  "check:test-governance": "bun scripts/test-governance.ts validate",
@@ -106,6 +120,7 @@
106
120
  "check:main": "bun scripts/run-governed-gate.ts main",
107
121
  "check:ci": "bun run check:main",
108
122
  "check:release": "bun scripts/run-governed-gate.ts release",
123
+ "check:stable-baseline": "bun scripts/check-stable-baseline.ts",
109
124
  "check:release-surface": "bash scripts/check-public-release-surface.sh",
110
125
  "check:release-readiness": "bash scripts/check-release-readiness.sh",
111
126
  "check:open-source-surface": "bash scripts/check-open-source-tracked-surface.sh",
@@ -125,8 +140,8 @@
125
140
  "check:context-files": "forge run check-context-files",
126
141
  "check:deploy-sql": "forge run check-deploy-sql-order",
127
142
  "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",
143
+ "check:task-sync": "forge run check-task-sync",
144
+ "check:task-workflow": "forge run check-task-workflow --strict",
130
145
  "runtime:activate-source-baseline": "bun scripts/activate-source-baseline.ts request",
131
146
  "plugin:install-desktop-operator": "bun scripts/install-desktop-operator-registration.ts",
132
147
  "sync:brain-docs": "forge run sync-brain-docs --all",
@@ -138,15 +153,16 @@
138
153
  "test:bun": "bun -e 'console.error(\"[tests] test:bun is deprecated; running explicit test:full\")' && bun run test:full",
139
154
  "test:node-smoke": "node --test tests/node/*.test.mjs",
140
155
  "check:ci:portable": "FORGE_ALLOW_NODE_ONLY=1 bash scripts/check-ci.sh",
141
- "dev:controller-ui": "vite --config src/cli/local-bridge/frontend/vite.config.ts"
156
+ "dev:controller-ui": "vite --config src/cli/local-bridge/frontend/vite.config.ts",
157
+ "prepack": "node scripts/sync-generated-authority.mjs --check"
142
158
  },
143
159
  "devDependencies": {
144
160
  "@colbymchenry/codegraph": "1.0.1",
145
161
  "@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",
162
+ "@types/cors": "^2.8.19",
163
+ "@types/express": "^5.0.6",
164
+ "@types/react": "^19.2.18",
165
+ "@types/react-dom": "^19.2.4",
150
166
  "@vitejs/plugin-react": "^5.2.0",
151
167
  "vite": "^7.3.0"
152
168
  },
@@ -156,11 +172,17 @@
156
172
  "express": "^5.2.1",
157
173
  "playwright": "^1.54.1",
158
174
  "react": "^19.2.0",
159
- "react-dom": "^19.2.0",
175
+ "react-dom": "^19.2.8",
160
176
  "typescript": "^6.0.3"
161
177
  },
162
178
  "packageManager": "npm@10.0.0",
163
179
  "optionalDependencies": {
180
+ "@colbymchenry/codegraph-darwin-arm64": "1.0.1",
181
+ "@colbymchenry/codegraph-darwin-x64": "1.0.1",
182
+ "@colbymchenry/codegraph-linux-arm64": "1.0.1",
183
+ "@colbymchenry/codegraph-linux-x64": "1.0.1",
184
+ "@colbymchenry/codegraph-win32-arm64": "1.0.1",
185
+ "@colbymchenry/codegraph-win32-x64": "1.0.1",
164
186
  "agent-device": "0.20.2"
165
187
  }
166
188
  }
@@ -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']);