@moretea-labs/forge 1.5.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +46 -0
  3. package/CLAUDE.md +2 -0
  4. package/DESIGN.md +7 -2
  5. package/README.md +4 -4
  6. package/README.zh-CN.md +2 -2
  7. package/SKILL.md +2 -2
  8. package/THIRD_PARTY_NOTICES.md +1 -1
  9. package/agents/openai.yaml +1 -1
  10. package/assets/hooks/hook-input.sh +11 -8
  11. package/assets/hooks/lib/session-state.sh +10 -7
  12. package/assets/hooks/lib/workflow-state.sh +13 -177
  13. package/assets/hooks/post-tool-observer.sh +8 -2
  14. package/assets/hooks/pre-edit-guard.sh +8 -39
  15. package/assets/hooks/prompt-guard.sh +7 -83
  16. package/assets/hooks/session-start-context.sh +56 -1
  17. package/assets/partials/05-workflow.partial.md +1 -1
  18. package/assets/partials-agents/03-orchestration.partial.md +1 -1
  19. package/assets/plugin-registry.v1.json +54 -3
  20. package/assets/reference-configs/document-generation.md +1 -1
  21. package/assets/reference-configs/harness-overview.md +1 -1
  22. package/assets/reference-configs/hook-operations.md +1 -1
  23. package/assets/reference-configs/sprint-contracts.md +3 -3
  24. package/assets/skill-version.json +2 -2
  25. package/assets/templates/contract.template.md +2 -7
  26. package/assets/templates/helpers/capture-plan.sh +2 -2
  27. package/assets/templates/helpers/check-task-workflow.sh +4 -4
  28. package/assets/templates/helpers/contract-worktree.sh +1 -21
  29. package/assets/templates/helpers/ensure-task-workflow.sh +13 -38
  30. package/assets/templates/helpers/migrate-project-template.sh +22 -45
  31. package/assets/templates/helpers/new-plan.sh +1 -1
  32. package/assets/templates/helpers/plan-to-todo.sh +12 -37
  33. package/assets/templates/helpers/ship-worktrees.sh +2 -29
  34. package/assets/templates/helpers/sprint-backlog.sh +6 -6
  35. package/assets/templates/helpers/verify-contract.sh +1 -111
  36. package/assets/templates/helpers/verify-sprint.sh +3 -180
  37. package/assets/templates/plan.template.md +1 -1
  38. package/assets/templates/review.template.md +9 -34
  39. package/assets/workflow-contract.v1.json +10 -19
  40. package/docs/README.md +10 -10
  41. package/docs/architecture/CURRENT.md +170 -0
  42. package/docs/architecture/EVOLUTION.md +42 -0
  43. package/docs/architecture/current/README.md +4 -156
  44. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
  45. package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
  46. package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
  47. package/docs/architecture/history/README.md +7 -0
  48. package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
  49. package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
  50. package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
  51. package/docs/architecture/history.md +3 -34
  52. package/docs/architecture/index.md +15 -98
  53. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
  54. package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
  55. package/docs/architecture/versions/1.6.md +38 -0
  56. package/docs/architecture/versions/1.7.md +41 -0
  57. package/docs/forge-chatgpt-browser-engine.md +2 -2
  58. package/docs/forge-chatgpt-mcp-setup.md +4 -28
  59. package/docs/forge-chatgpt-supervised-automation.md +3 -3
  60. package/docs/forge-github-issue-launcher.md +1 -1
  61. package/docs/forge-runtime-self-healing-loop.md +1 -1
  62. package/docs/operations/controller-browser-plugin.md +38 -22
  63. package/docs/operations/controller-performance-and-502.md +124 -0
  64. package/docs/operations/controller-reliability-runbook.md +1 -1
  65. package/docs/operations/features.md +3 -3
  66. package/docs/operations/github-repository.md +1 -1
  67. package/docs/operations/homebrew.md +2 -2
  68. package/docs/operations/mcp-tool-exposure.md +5 -3
  69. package/docs/tutorials/01-install-and-start.md +1 -1
  70. package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
  71. package/docs/wiki/Architecture.md +6 -6
  72. package/docs/wiki/Implementation.md +2 -2
  73. package/docs/wiki/Installation.md +1 -1
  74. package/docs/wiki/Integrations.md +2 -2
  75. package/docs/wiki/Quick-Start.md +1 -1
  76. package/docs/wiki/Work-Lifecycle.md +1 -1
  77. package/package.json +29 -10
  78. package/scripts/activate-source-baseline.ts +17 -13
  79. package/scripts/benchmark-background-check-overlap.ts +228 -0
  80. package/scripts/benchmark-mcp-host.sh +117 -0
  81. package/scripts/benchmark-mcp-transport.ts +170 -0
  82. package/scripts/benchmark-quality-harness.ts +146 -0
  83. package/scripts/benchmark-route-session-concurrency.ts +207 -6
  84. package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
  85. package/scripts/benchmark-typescript-navigation.ts +186 -0
  86. package/scripts/benchmark-work-efficiency.ts +334 -0
  87. package/scripts/capture-plan.sh +3 -3
  88. package/scripts/check-agent-tooling.sh +8 -35
  89. package/scripts/check-architecture-sync.sh +17 -86
  90. package/scripts/check-mcp-compatibility.ts +14 -0
  91. package/scripts/check-public-docs.sh +14 -1
  92. package/scripts/check-runtime-architecture.mjs +107 -64
  93. package/scripts/check-stable-baseline.ts +92 -0
  94. package/scripts/check-task-workflow.sh +4 -4
  95. package/scripts/contract-worktree.sh +1 -21
  96. package/scripts/ensure-task-workflow.sh +22 -55
  97. package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
  98. package/scripts/install-standalone-recovery.ts +24 -0
  99. package/scripts/lib/project-init-lib.sh +15 -44
  100. package/scripts/migrate-chatgpt-automation-schedules.ts +64 -0
  101. package/scripts/migrate-project-template.sh +23 -1179
  102. package/scripts/new-plan.sh +1 -1
  103. package/scripts/plan-to-todo.sh +11 -36
  104. package/scripts/run-governed-gate.ts +2 -1
  105. package/scripts/ship-worktrees.sh +2 -29
  106. package/scripts/smoke-ios-physical-device.ts +4 -2
  107. package/scripts/smoke-runtime-recovery.ts +1 -35
  108. package/scripts/smoke-schedule-engine.ts +1 -20
  109. package/scripts/sprint-backlog.sh +1 -1
  110. package/scripts/verify-contract.sh +1 -111
  111. package/scripts/verify-forge-runtime.sh +0 -1
  112. package/scripts/verify-sprint.sh +3 -180
  113. package/scripts/workflow-contract.ts +1 -5
  114. package/src/cli/commands/chatgpt.ts +31 -2
  115. package/src/cli/commands/init-hook.ts +3 -3
  116. package/src/cli/commands/mcp.ts +9 -5
  117. package/src/cli/commands/plugin.ts +37 -10
  118. package/src/cli/commands/recovery.ts +25 -3
  119. package/src/cli/commands/runtime.ts +55 -3
  120. package/src/cli/commands/security.ts +12 -1
  121. package/src/cli/commands/setup-profile.ts +31 -21
  122. package/src/cli/controller/check-runner.ts +106 -3
  123. package/src/cli/controller/composite-result.ts +1 -1
  124. package/src/cli/controller/context/focus.ts +51 -0
  125. package/src/cli/controller/context/instruction-context.ts +114 -0
  126. package/src/cli/controller/context/known-paths.ts +76 -0
  127. package/src/cli/controller/context/query-planning.ts +110 -0
  128. package/src/cli/controller/context/rule-resolution.ts +532 -0
  129. package/src/cli/controller/context/source-materializer.ts +278 -0
  130. package/src/cli/controller/context/structural.ts +16 -0
  131. package/src/cli/controller/context/types.ts +286 -0
  132. package/src/cli/controller/context-pack.ts +898 -430
  133. package/src/cli/controller/launch-agents.ts +77 -2
  134. package/src/cli/controller/operational-plan.ts +2 -2
  135. package/src/cli/controller/work-mode.ts +6 -4
  136. package/src/cli/editing/edit-session.ts +60 -7
  137. package/src/cli/github/github.ts +133 -0
  138. package/src/cli/hook/prompt-guard-decision.ts +17 -18
  139. package/src/cli/hook/prompt-intents.ts +1 -1
  140. package/src/cli/installer/managed-entries.ts +15 -1
  141. package/src/cli/local-bridge/console-automations.ts +225 -67
  142. package/src/cli/local-bridge/console-view-models.ts +3 -35
  143. package/src/cli/local-bridge/facade-api.ts +2 -217
  144. package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
  145. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +153 -3
  146. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
  147. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +183 -3
  148. package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +1 -1
  149. package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +4 -3
  150. package/src/cli/local-bridge/frontend/src/lib/api.ts +18 -11
  151. package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
  152. package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +1 -1
  153. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +4 -3
  154. package/src/cli/local-bridge/frontend/src/styles.css +27 -11
  155. package/src/cli/local-bridge/frontend/src/types.ts +8 -7
  156. package/src/cli/local-bridge/job-store.ts +1 -490
  157. package/src/cli/local-bridge/server.ts +29 -532
  158. package/src/cli/local-bridge/ui-dist/app.css +1 -1
  159. package/src/cli/local-bridge/ui-dist/app.js +5101 -4967
  160. package/src/cli/mcp/auth.ts +5 -5
  161. package/src/cli/mcp/instructions.ts +3 -2
  162. package/src/cli/mcp/legacy-tool-service.ts +0 -189
  163. package/src/cli/mcp/multi-repository.ts +16 -5
  164. package/src/cli/mcp/oauth.ts +175 -26
  165. package/src/cli/mcp/paths.ts +8 -2
  166. package/src/cli/mcp/repository-tools.ts +356 -101
  167. package/src/cli/mcp/server.ts +625 -54
  168. package/src/cli/mcp/tool-capability-cache.ts +1 -1
  169. package/src/cli/mcp/toolset-selection.ts +1 -1
  170. package/src/cli/mcp/toolset.ts +42 -5
  171. package/src/cli/mcp/transports/http.ts +125 -15
  172. package/src/cli/mcp/transports/session-registry.ts +67 -5
  173. package/src/cli/mcp/types.ts +3 -3
  174. package/src/cli/repositories/command-classifier.ts +209 -14
  175. package/src/cli/repositories/command-executor.ts +55 -521
  176. package/src/cli/repositories/command-process.ts +108 -0
  177. package/src/cli/repositories/command-scope.ts +99 -41
  178. package/src/cli/repositories/controller-home.ts +7 -8
  179. package/src/cli/repositories/git-command-executor.ts +2 -0
  180. package/src/cli/repositories/locks.ts +53 -16
  181. package/src/cli/repositories/repository-snapshot.ts +121 -0
  182. package/src/cli/repositories/safe-patch.ts +6 -4
  183. package/src/cli/repositories/selected-path-actions.ts +17 -9
  184. package/src/cli/repositories/structured-git.ts +110 -10
  185. package/src/cli/repository/inspector.ts +565 -62
  186. package/src/cli/repository/session-cache.ts +58 -17
  187. package/src/cli/v81-entry.ts +1 -4
  188. package/src/effects/fs-transaction.ts +85 -17
  189. package/src/runtime/context/codegraph-read-provider.ts +233 -2
  190. package/src/runtime/context/codegraph-sidecar.cjs +74 -40
  191. package/src/runtime/context/generic-lsp-provider.ts +355 -0
  192. package/src/runtime/context/lsp-client.ts +283 -0
  193. package/src/runtime/context/semantic-navigation.ts +275 -0
  194. package/src/runtime/context/swift-navigation.ts +565 -0
  195. package/src/runtime/context/typescript-navigation.ts +226 -0
  196. package/src/runtime/control-plane/dispatch-priority.ts +28 -0
  197. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +196 -2
  198. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
  199. package/src/runtime/control-plane/execution/execution-identity.ts +65 -14
  200. package/src/runtime/control-plane/execution/session-store.ts +18 -0
  201. package/src/runtime/control-plane/execution/validation.ts +15 -2
  202. package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
  203. package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
  204. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
  205. package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
  206. package/src/runtime/control-plane/execution/work-task-receipt.ts +54 -11
  207. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +175 -8
  208. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +28 -21
  209. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +87 -9
  210. package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
  211. package/src/runtime/control-plane/facade/controller-round-relay.ts +991 -0
  212. package/src/runtime/control-plane/facade/controller-session-store.ts +144 -14
  213. package/src/runtime/control-plane/facade/goal-workloop-access.ts +9 -2
  214. package/src/runtime/control-plane/facade/goal-workloop.ts +885 -105
  215. package/src/runtime/control-plane/facade/index.ts +1 -0
  216. package/src/runtime/control-plane/facade/plan-contract-store.ts +211 -26
  217. package/src/runtime/control-plane/facade/requirement-board.ts +24 -8
  218. package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
  219. package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
  220. package/src/runtime/control-plane/facade/types.ts +55 -11
  221. package/src/runtime/control-plane/facade/work-contract-store.ts +204 -73
  222. package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
  223. package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
  224. package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
  225. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
  226. package/src/runtime/control-plane/global-scheduler/maintenance.ts +145 -0
  227. package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
  228. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
  229. package/src/runtime/control-plane/global-scheduler/scheduler.ts +273 -542
  230. package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
  231. package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
  232. package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
  233. package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
  234. package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
  235. package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
  236. package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
  237. package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
  238. package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
  239. package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
  240. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +50 -0
  241. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +642 -51
  242. package/src/runtime/control-plane/launcher/launch-reservation-store.ts +40 -0
  243. package/src/runtime/control-plane/launcher/thin-launcher.ts +194 -10
  244. package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
  245. package/src/runtime/control-plane/persistence/requirement-store.ts +15 -11
  246. package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
  247. package/src/runtime/control-plane/release-retention.ts +62 -2
  248. package/src/runtime/control-plane/routing/route-policy.ts +7 -16
  249. package/src/runtime/control-plane/runtime-status-client.ts +0 -2
  250. package/src/runtime/diagnostics/mcp-timing.ts +19 -0
  251. package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
  252. package/src/runtime/diagnostics/performance.ts +24 -1
  253. package/src/runtime/evidence/event-ledger.ts +1 -1
  254. package/src/runtime/execution/jobs/store.ts +58 -4
  255. package/src/runtime/execution/jobs/types.ts +1 -1
  256. package/src/runtime/execution/managed-workspace.ts +203 -1
  257. package/src/runtime/execution/process-runtime/check-facade.ts +52 -14
  258. package/src/runtime/execution/process-runtime/check-result.ts +63 -2
  259. package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
  260. package/src/runtime/execution/process-runtime/command-facade.ts +346 -40
  261. package/src/runtime/execution/process-runtime/gc.ts +98 -12
  262. package/src/runtime/execution/process-runtime/lightweight-managed.ts +1184 -0
  263. package/src/runtime/execution/process-runtime/persisted-check.ts +57 -6
  264. package/src/runtime/execution/process-runtime/resource-claims.ts +97 -8
  265. package/src/runtime/execution/process-runtime/runtime.ts +59 -4
  266. package/src/runtime/execution/process-runtime/store.ts +7 -0
  267. package/src/runtime/execution/process-runtime/types.ts +2 -0
  268. package/src/runtime/execution/thin-harness/async-process.ts +12 -2
  269. package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
  270. package/src/runtime/execution/workers/executor.ts +0 -48
  271. package/src/runtime/gateway/mcp/execution-tools.ts +1219 -126
  272. package/src/runtime/gateway/mcp/process-tools.ts +83 -37
  273. package/src/runtime/gateway/mcp/router.ts +185 -83
  274. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +546 -0
  275. package/src/runtime/gateway/mcp/runtime-tools.ts +2555 -1616
  276. package/src/runtime/model-clients/deepseek-adapter.ts +0 -32
  277. package/src/runtime/plugins/app-store-connect-adapter.ts +123 -19
  278. package/src/runtime/plugins/browser-adapter.ts +2925 -318
  279. package/src/runtime/plugins/browser-automation-service.ts +10 -0
  280. package/src/runtime/plugins/browser-handoff-host.ts +6 -31
  281. package/src/runtime/plugins/browser-handoff.ts +92 -5
  282. package/src/runtime/plugins/browser-macos-bridge.ts +586 -45
  283. package/src/runtime/plugins/browser-node-bridge.ts +6 -34
  284. package/src/runtime/plugins/browser-provider-registry.ts +109 -0
  285. package/src/runtime/plugins/browser-runtime-contract.ts +152 -0
  286. package/src/runtime/plugins/browser-runtime.ts +183 -0
  287. package/src/runtime/plugins/browser-session-authority.ts +332 -0
  288. package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
  289. package/src/runtime/plugins/desktop-operator-registration.ts +15 -12
  290. package/src/runtime/plugins/external-adapter.ts +324 -3
  291. package/src/runtime/plugins/external-registration.ts +84 -5
  292. package/src/runtime/plugins/external-unix-socket.ts +7 -1
  293. package/src/runtime/plugins/first-party-registry.ts +4 -2
  294. package/src/runtime/plugins/github-adapter.ts +125 -0
  295. package/src/runtime/plugins/gmail-adapter.ts +28 -2
  296. package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
  297. package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
  298. package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
  299. package/src/runtime/plugins/ios-adapter.ts +106 -16
  300. package/src/runtime/plugins/ios-agent-device.ts +234 -64
  301. package/src/runtime/plugins/ios-physical-device.ts +1143 -392
  302. package/src/runtime/plugins/lightweight-action.ts +153 -0
  303. package/src/runtime/plugins/local-system-adapter.ts +125 -8
  304. package/src/runtime/plugins/macos-capability-broker.ts +55 -9
  305. package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
  306. package/src/runtime/plugins/plugin-management-adapter.ts +181 -0
  307. package/src/runtime/plugins/resend-adapter.ts +1 -1
  308. package/src/runtime/plugins/store.ts +366 -24
  309. package/src/runtime/plugins/types.ts +39 -2
  310. package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
  311. package/src/runtime/projections/git-status-sampler.ts +16 -16
  312. package/src/runtime/projections/materialized-view.ts +28 -10
  313. package/src/runtime/recovery/actions.ts +0 -10
  314. package/src/runtime/recovery/classifier.ts +0 -9
  315. package/src/runtime/recovery/maintenance-executor.ts +415 -18
  316. package/src/runtime/recovery/probe.ts +0 -1
  317. package/src/runtime/recovery/types.ts +0 -1
  318. package/src/runtime/root/mcp-transport.ts +180 -10
  319. package/src/runtime/root/package-connector-service.ts +186 -8
  320. package/src/runtime/root/package-runtime-release.ts +143 -17
  321. package/src/runtime/root/package-runtime-service.ts +430 -22
  322. package/src/runtime/root/release-manifest.ts +7 -2
  323. package/src/runtime/root/release-materialize.ts +162 -19
  324. package/src/runtime/root/release-store.ts +48 -11
  325. package/src/runtime/root/runtime.ts +23 -5
  326. package/src/runtime/root/service.ts +100 -27
  327. package/src/runtime/root/types.ts +2 -0
  328. package/src/runtime/safe-tooling/index.ts +0 -1
  329. package/src/runtime/safe-tooling/ios-development.ts +321 -63
  330. package/src/runtime/safe-tooling/types.ts +0 -30
  331. package/src/runtime/shared/trusted-executable.ts +62 -0
  332. package/src/runtime/shared/trusted-node-executable.ts +48 -0
  333. package/src/runtime/standalone-recovery/core.ts +702 -94
  334. package/src/runtime/standalone-recovery/entry.ts +99 -23
  335. package/src/runtime/standalone-recovery/installer.ts +19 -3
  336. package/src/runtime/standalone-recovery/service-labels.ts +2 -0
  337. package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
  338. package/src/runtime/workflow/schedules/browser-probe.ts +258 -0
  339. package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +40 -0
  340. package/src/runtime/workflow/schedules/engine.ts +509 -80
  341. package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
  342. package/src/runtime/workflow/schedules/settlement.ts +48 -4
  343. package/src/runtime/workflow/schedules/store.ts +131 -10
  344. package/src/runtime/workflow/schedules/types.ts +6 -3
  345. package/src/runtime/workflow/schedules/work-continuation.ts +120 -34
  346. package/src/testing/test-governance.ts +8 -40
  347. package/assets/reference-configs/heartbeat-triage.md +0 -57
  348. package/assets/templates/helpers/harness-trace-grade.sh +0 -150
  349. package/assets/templates/helpers/heartbeat-triage.sh +0 -361
  350. package/assets/templates/helpers/maintenance-triage.sh +0 -167
  351. package/bin/forge-desktop-helper.mjs +0 -204
  352. package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
  353. package/docs/architecture/current/architecture-invariants.md +0 -331
  354. package/docs/architecture/current/automation-and-schedule-engine.md +0 -453
  355. package/docs/architecture/current/codegraph-context-provider.md +0 -226
  356. package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
  357. package/docs/architecture/current/controller-repository-decoupling.md +0 -148
  358. package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -354
  359. package/docs/architecture/current/entity-model.md +0 -592
  360. package/docs/architecture/current/external-plugin-governance.md +0 -396
  361. package/docs/architecture/current/failure-recovery.md +0 -447
  362. package/docs/architecture/current/governance.md +0 -213
  363. package/docs/architecture/current/human-interaction-plane.md +0 -87
  364. package/docs/architecture/current/implementation-status.md +0 -128
  365. package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
  366. package/docs/architecture/current/legacy-governance.md +0 -58
  367. package/docs/architecture/current/local-workspace-target-grants.md +0 -70
  368. package/docs/architecture/current/migration-roadmap.md +0 -105
  369. package/docs/architecture/current/multi-repository-execution.md +0 -371
  370. package/docs/architecture/current/operations-runbook.md +0 -45
  371. package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
  372. package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
  373. package/docs/architecture/current/repository-access-modes.md +0 -102
  374. package/docs/architecture/current/route-policy.md +0 -15
  375. package/docs/architecture/current/route-session-concurrency.md +0 -85
  376. package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
  377. package/docs/architecture/current/runtime-directory-map.md +0 -49
  378. package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
  379. package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
  380. package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
  381. package/docs/architecture/current/system-overview.md +0 -144
  382. package/docs/architecture/current/target-requirements-traceability.md +0 -202
  383. package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
  384. package/docs/architecture/current/thin-harness-v1.md +0 -311
  385. package/docs/architecture/current/verification-and-release-gates.md +0 -391
  386. package/docs/forge-autonomous-goal-loop.md +0 -9
  387. package/docs/forge-provider-configuration.md +0 -7
  388. package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -83
  389. package/docs/operations/controller-desktop-plugin.md +0 -112
  390. package/docs/operations/gmail-assistant-routines.md +0 -186
  391. package/docs/operations/personal-assistant-operator-guide.md +0 -61
  392. package/docs/operations/provider-configuration.md +0 -31
  393. package/scripts/harness-trace-grade.sh +0 -150
  394. package/scripts/heartbeat-triage.sh +0 -361
  395. package/scripts/maintenance-triage.sh +0 -167
  396. package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
  397. package/src/cli/repositories/goal-registry.ts +0 -239
  398. package/src/runtime/assistant/action-proposals.ts +0 -279
  399. package/src/runtime/assistant/intent.ts +0 -395
  400. package/src/runtime/assistant/model-provider.ts +0 -460
  401. package/src/runtime/assistant/openapi.ts +0 -223
  402. package/src/runtime/assistant/policy.ts +0 -89
  403. package/src/runtime/assistant/readiness.ts +0 -258
  404. package/src/runtime/assistant/routine-runtime.ts +0 -477
  405. package/src/runtime/assistant/schedule-binding.ts +0 -171
  406. package/src/runtime/assistant/standing-grants.ts +0 -375
  407. package/src/runtime/assistant/store.ts +0 -243
  408. package/src/runtime/assistant/types.ts +0 -135
  409. package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
  410. package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
  411. package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
  412. package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
  413. package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
  414. package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
  415. package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
  416. package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
  417. package/src/runtime/control-plane/goal-loop/index.ts +0 -13
  418. package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
  419. package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
  420. package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
  421. package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
  422. package/src/runtime/control-plane/goal-loop/types.ts +0 -378
  423. package/src/runtime/control-plane/startup-recovery.ts +0 -198
  424. package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
  425. package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
  426. package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
  427. package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
  428. package/src/runtime/plugins/desktop-adapter.ts +0 -374
  429. package/src/runtime/safe-tooling/browser-safe.ts +0 -133
  430. package/src/runtime/workflow/findings/store.ts +0 -204
  431. package/src/runtime/workflow/findings/types.ts +0 -58
  432. package/src/runtime/workflow/portfolio/engine.ts +0 -20
  433. package/src/runtime/workflow/portfolio/store.ts +0 -185
  434. package/src/runtime/workflow/portfolio/types.ts +0 -29
@@ -1,49 +0,0 @@
1
- # Runtime Directory Map
2
-
3
- > Status: **Runtime Authority**
4
-
5
- ```text
6
- src/runtime/
7
- root/ Canonical Runtime root lifecycle, readiness and write fencing
8
- release/ Whole-release identity, active/previous selection and rollback metadata
9
- standalone-recovery/ Independent diagnostics, service repair and offline whole-Runtime rollback
10
- gateway/mcp/ Thin command admission, policy and runtime tools
11
- control-plane/
12
- global-scheduler/ Global fairness, quotas, process dispatch and reconciliation
13
- repo-actor/ Repository-local single-owner scheduling
14
- governance/ External side-effect and requirement-growth policy
15
- workflow/
16
- schedules/ Trigger, bounded Occurrence, persisted Decision and backoff
17
- portfolio/ Cross-repository DAG and Saga
18
- findings/ Deduplicated Candidate Finding and explicit promotion
19
- plugins/ Derived manifests, discovery registry, policy-typed actions and provider adapters
20
- execution/
21
- jobs/ Durable Job schema, indexes, Operation Receipts and compatibility projection
22
- workers/ Isolated one-Job process execution
23
- thin-harness/ Fast Path router, latency trace, receipts, typed batch, lightweight lanes
24
- resources/
25
- claims/ Conflict taxonomy and conservative unknown scope
26
- leases/ Lease, renewal, release and fencing
27
- evidence/ Unified events, exact-revision evidence and bounded Artifacts
28
- projections/ Dirty-marker invalidated materialized read models
29
- release/ Release freeze, gate and manifest
30
- shared/ Atomic file and portable Node TypeScript-loader utilities
31
- ```
32
-
33
- `src/cli/` contains the Forge CLI, MCP adapter surface and bounded internal operation implementations. It is not a second lifecycle owner. Gateway handlers admit and route work; the Runtime Root, Process Runtime and bounded Workers own execution.
34
-
35
- When Controller Home explicitly enables the Local Bridge without selecting external `standalone` or `remote` mode, `src/runtime/root/local-bridge.ts` starts that HTTP UI/API as an in-process module of the Canonical Runtime and closes it before releasing Runtime ownership. Its compatibility projection may describe the endpoint, but it is not a separate process, launch service, readiness authority, or recovery owner.
36
-
37
- New scheduling ownership must be added under `src/runtime/`, never inside MCP transport handlers.
38
-
39
- ## Runtime Storage Ownership and Quarantine
40
-
41
- Each bound directory under Controller Home contains `.forge-owner.json` with `repoId`, binding name, and management identity. Repository-local `.ai/harness/<binding>` paths are links to these owned directories.
42
-
43
- Migration tooling may quarantine pre-cutover state for offline inspection under:
44
-
45
- ```text
46
- <controller-home>/repositories/<repoId>/quarantine/runtime-storage/<binding>/
47
- ```
48
-
49
- Execution readiness remains false for active/unreadable Run or Local Job state and for non-directory/path conflicts. A non-empty worktree directory by itself is not a reason to perform an unsafe move or to block forever.
@@ -1,85 +0,0 @@
1
- # Runtime Health and Resource Lifecycle
2
-
3
- Status: Current implementation note (2026-07-16)
4
-
5
- This note records the additive runtime-health and cleanup semantics. It does not
6
- create a new Controller boundary, health database, projection worker, or cleanup
7
- scheduler.
8
-
9
- ## Observation versus evaluation
10
-
11
- Runtime callers collect diagnostic observations from the Canonical Runtime,
12
- Scheduler, Workers, materialized projections, Local Controller endpoint, and
13
- runtime storage. `src/runtime/health/evaluator.ts` remains a side-effect-free
14
- operational evaluator for blockers and warnings; it is not a lifecycle or
15
- readiness authority. The Runtime Root publishes the only public Runtime
16
- readiness decision as `ready: boolean`, with module observations retained only
17
- as diagnostic evidence.
18
-
19
- Projection age is not a health signal by itself. A readable idle projection is
20
- usable even when old. A dirty/source-changed projection is warning-level during
21
- the bounded refresh grace period and becomes a blocker only when the required
22
- refresh is missed or the build fails.
23
-
24
- Task Ledger status describes workflow progress and is not live process
25
- ownership. A Task may remain `running` across sequential Runs while no Worker is
26
- currently active. Differences between Task Ledger running counts and runtime
27
- Worker counts are repository-scoped attention evidence; they never block the
28
- global Gateway, Controller readiness, or release rollout. Execution readiness
29
- continues to fail closed on durable Job, queue, Lease, current-attention, and
30
- projection-build evidence.
31
-
32
- ## Projection content and producer health
33
-
34
- `RepositoryRuntimeProjection.metadata` distinguishes content revision, source
35
- revision, content fingerprint, build attempt/success times, build errors, and
36
- producer generation. Dirty-marker invalidation remains the source-change signal;
37
- hot reads may rebuild in memory but do not clear the marker or rewrite a
38
- projection heartbeat.
39
-
40
- ## Local Controller capability
41
-
42
- The expected health endpoint and its Local Controller surface are authoritative.
43
- Embedded, standalone, remote, disabled, and unknown modes are represented in
44
- runtime state and `/health`. A healthy expected endpoint can therefore report a
45
- ready capability while persisted `running=false` or stale PID evidence is kept
46
- as a warning. Wrong surfaces, missing endpoints, generation mismatches, and
47
- inactive-slot evidence remain blockers when the capability is required.
48
-
49
- ## Current attention and history
50
-
51
- `buildRuntimeOperationalView` provides one read model with three explicit
52
- sections: current health blockers, pending attention, and recent history.
53
- Pending handoffs include acknowledged/in-progress items until they are explicitly
54
- resolved or dismissed. Terminal Jobs, resolved handoffs, and prior incidents
55
- remain in history and never degrade readiness merely because they exist. The
56
- underlying Job, event, and handoff records are not deleted by this view.
57
-
58
- ## Ownership-aware cleanup
59
-
60
- Ownership is embedded in supported lifecycle records through `ManagedResource`.
61
- Agent Run worktrees and Execution Jobs carry an owner, type, timestamps, state,
62
- and optional retention/path data. Transitional runtime-slot records are not
63
- cleanup authority. Missing legacy metadata remains unknown and is protected.
64
- Existing cleanup authorities retain
65
- their startup/periodic/manual entrypoints, now emit a bounded audited
66
- `CleanupCycleSummary`, isolate failures, and default automatic removal to 50
67
- items per cycle. Type-specific collectors continue to guard process identity,
68
- TTL, worktree references, and known runtime roots.
69
-
70
- The implementation intentionally does not broaden automatic deletion for legacy
71
- artifacts, edit sessions, branches, or unproven temporary resources. Those
72
- resources remain retained until their existing Git/reference/lease authority can
73
- prove eligibility.
74
-
75
- ## Canonical lifecycle boundary
76
-
77
- Runtime slot, candidate/standby, and Supervisor records are no longer source
78
- contracts. Cleanup proves eligibility from current Runtime ownership, exact
79
- release authority, process identity, Job attempt, Lease tokens, and explicit
80
- whole-release rollback references; it never infers authority from historical
81
- slot or component metadata.
82
-
83
- Focused regression coverage protects idle projections, missed refreshes, endpoint
84
- capability precedence, attention/history separation, bounded cleanup, and
85
- identity-safe compatibility behavior.
@@ -1,422 +0,0 @@
1
- # Scheduler and Resource Claims
2
-
3
- > Status: **Runtime Authority**
4
-
5
- ## 1. Objective
6
-
7
- The scheduler decides when accepted work may execute and where it may run. It protects repository state without turning every repository into a global serial bottleneck.
8
-
9
- The core model is:
10
-
11
- ```text
12
- Global Scheduler
13
- -> Repo Actor mailbox
14
- -> Job readiness
15
- -> Resource Claims
16
- -> Placement
17
- -> Lease
18
- -> Worker
19
- -> Integration Queue
20
- ```
21
-
22
- ## 2. Per-Repository Actor
23
-
24
- ### Target Architecture
25
-
26
- Each Repository has one logical Repo Actor that serializes repository-local scheduling decisions.
27
-
28
- Its mailbox accepts commands such as:
29
-
30
- ```text
31
- admit Job
32
- cancel Job
33
- retry Job
34
- grant/release Claim
35
- renew/revoke Lease
36
- reconcile active state
37
- enqueue integration
38
- enter/leave release freeze
39
- update Task after evidence
40
- ```
41
-
42
- The mailbox may be implemented through a single daemon queue, durable file queue, or equivalent mechanism. The invariant is single logical ownership, not one operating-system thread per repository.
43
-
44
- ### Actor Responsibilities
45
-
46
- The Repo Actor owns:
47
-
48
- - idempotency admission;
49
- - dependency readiness;
50
- - active write conflict decisions;
51
- - Workspace and Worktree placement;
52
- - Heavy Check ordering;
53
- - integration ordering;
54
- - release barriers;
55
- - repository-local priority aging;
56
- - reconciliation after restart.
57
-
58
- It does not run Agent processes or long commands.
59
-
60
- ## 3. Global Scheduler
61
-
62
- The Global Scheduler owns scarce system capacity:
63
-
64
- ```text
65
- Agent process slots
66
- Worker slots
67
- Heavy Check slots
68
- provider quotas
69
- memory / CPU budgets
70
- cross-repository priority
71
- ```
72
-
73
- It does not inspect path-level repository conflicts itself. It asks the relevant Repo Actor for repository-local eligibility.
74
-
75
- ## 4. Resource Taxonomy
76
-
77
- Resources use stable keys.
78
-
79
- ### Repository and Checkout Resources
80
-
81
- ```text
82
- repo-state:<repoId>
83
- workspace:<checkoutId>
84
- git-index:<checkoutId>
85
- git-refs:<repoId>
86
- integration:<checkoutId>
87
- release:<repoId>
88
- remote-write:<repoId>
89
- ```
90
-
91
- ### Execution Capacity Resources
92
-
93
- ```text
94
- agent-slot:<provider>
95
- worker-slot:<class>
96
- heavy-check:<repoId>
97
- light-check:<repoId>
98
- worktree-slot:<repoId>
99
- ```
100
-
101
- ### Path Resources
102
-
103
- ```text
104
- path:<repoId>:<normalized-scope>
105
- ```
106
-
107
- Path Claims are advisory scheduling precision layered on top of Workspace/Worktree isolation. They never weaken hard path-policy enforcement.
108
-
109
- ## 5. Claim Model
110
-
111
- A Job declares required Claims before dispatch:
112
-
113
- ```text
114
- resourceKey
115
- mode: shared | exclusive
116
- scope
117
- reason
118
- holdPhase
119
- ```
120
-
121
- `holdPhase` identifies how long the resource is required:
122
-
123
- - admission transaction;
124
- - execution;
125
- - integration;
126
- - verification;
127
- - release.
128
-
129
- Claims are persisted so waiting state survives Controller restart.
130
-
131
- ## 6. Claim Compatibility
132
-
133
- General compatibility:
134
-
135
- | Existing | Requested | Compatible |
136
- | --- | --- | ---: |
137
- | shared | shared | yes, subject to quota |
138
- | shared | exclusive | no |
139
- | exclusive | shared | no |
140
- | exclusive | exclusive | no |
141
-
142
- Path compatibility adds scope comparison. Two explicit non-overlapping path scopes may execute concurrently only when placement and checkout resources also permit it.
143
-
144
- Read-only work normally uses shared Claims and does not conflict with path writes unless it requires a repository mechanism that itself is exclusive.
145
-
146
- ## 7. Unknown Scope
147
-
148
- A non-read-only Job with no trustworthy write scope claims:
149
-
150
- ```text
151
- path:<repoId>:*
152
- ```
153
-
154
- It conflicts with every other repository write scope.
155
-
156
- This is intentionally stricter than treating missing scope as “no known conflict.” Unknown means uncertainty, not independence.
157
-
158
- The Controller may reduce the Claim after bounded investigation identifies explicit paths.
159
-
160
- ## 8. Workspace Single Writer
161
-
162
- A Checkout Workspace has one exclusive write Claim:
163
-
164
- ```text
165
- workspace:<checkoutId>
166
- ```
167
-
168
- The following all require it:
169
-
170
- - Direct Edit;
171
- - Workspace Agent execution;
172
- - repository command classified as workspace write;
173
- - integration into that Checkout;
174
- - deterministic formatter or generator that writes files.
175
-
176
- Read-only queries and processes may run concurrently if they do not require an exclusive Git/index resource.
177
-
178
- ## 9. Worktree Placement
179
-
180
- Worktree execution requires:
181
-
182
- ```text
183
- worktree-slot:<repoId>
184
- git-refs:<repoId> during creation/cleanup
185
- workspace:<worktreeCheckoutId> during execution
186
- path claims for scheduling visibility
187
- ```
188
-
189
- Worktrees allow implementation concurrency but do not bypass:
190
-
191
- - Task dependencies;
192
- - allowed/forbidden path enforcement;
193
- - Agent/Worker quotas;
194
- - integration serialization;
195
- - release freeze policy.
196
-
197
- ## 10. Placement Algorithm
198
-
199
- For one ready write Job:
200
-
201
- ```text
202
- 1. honor explicit workspace/worktree/provider request when safe
203
- 2. inspect current Workspace writer
204
- 3. inspect repository dirty state and ownership
205
- 4. inspect path scope and concurrent Jobs
206
- 5. prefer Workspace for one serial writer
207
- 6. choose Worktree when concurrency or isolation is required
208
- 7. wait when Worktree creation or later integration would be unsafe
209
- ```
210
-
211
- A dirty Workspace is not automatically unavailable. The Actor distinguishes:
212
-
213
- - changes owned by the same Edit Session/Job;
214
- - unrelated user changes;
215
- - staged/index changes;
216
- - untracked generated artifacts;
217
- - known runtime-only paths.
218
-
219
- Unrelated user changes must be preserved. A new writer may be isolated or wait.
220
-
221
- ## 11. Conflict Matrix
222
-
223
- | Work A | Work B | Default policy |
224
- | --- | --- | --- |
225
- | Read-only | Read-only | concurrent |
226
- | Read-only | Workspace write | concurrent when read mechanism is safe |
227
- | Direct Edit | Direct Edit, same Checkout | serialize |
228
- | Direct Edit | Workspace Agent, same Checkout | serialize |
229
- | Workspace Agent | Workspace Agent, same Checkout | serialize |
230
- | Worktree Agent | Worktree Agent | concurrent subject to quotas |
231
- | Worktree Agent, overlapping paths | Worktree Agent | may execute concurrently; integration serialized and conflict-checked |
232
- | Workspace write | Worktree Agent | concurrent if Git ref operations are bounded and path policy allows |
233
- | Light Check | Workspace write | configured by check purity; default shared read |
234
- | Heavy Check | Heavy Check, same repo | serialize |
235
- | Integration | Any Checkout writer | serialize on target Workspace |
236
- | Git ref mutation | Another Git ref mutation | serialize per repository |
237
- | Release Gate | New write admission | release freeze blocks new writes |
238
- | Remote write | Remote write | serialize and require authorization |
239
-
240
- ## 12. Conflict Outcomes
241
-
242
- Temporary resource contention produces waiting details, not failure:
243
-
244
- ```text
245
- waiting_for_workspace
246
- waiting_for_worktree_slot
247
- waiting_for_agent_slot
248
- waiting_for_heavy_check
249
- waiting_for_git_refs
250
- waiting_for_integration
251
- waiting_for_release_barrier
252
- waiting_for_dependency
253
- ```
254
-
255
- Each waiting Job records:
256
-
257
- ```text
258
- blockedResource
259
- blockedByJobIds
260
- queuedAt
261
- priority
262
- nextEvaluationAt
263
- deadlineAt
264
- ```
265
-
266
- Irrecoverable policy or scope violations fail before execution.
267
-
268
- ## 13. Short Locks and Long Leases
269
-
270
- ### Transaction Lock
271
-
272
- Used for atomic operations such as:
273
-
274
- - reserve request ID;
275
- - create Job;
276
- - transition Task;
277
- - update active index;
278
- - grant Claim;
279
- - advance fencing token.
280
-
281
- It should be held for milliseconds and released before Worker execution.
282
-
283
- ### Lease
284
-
285
- Used for long ownership:
286
-
287
- - Workspace writer;
288
- - Worktree owner;
289
- - Heavy Check execution;
290
- - Integration;
291
- - release freeze stewardship.
292
-
293
- Leases are renewable, expiring, and fenced.
294
-
295
- ## 14. Fencing Tokens
296
-
297
- Every exclusive resource maintains a monotonically increasing token.
298
-
299
- When a new Lease is granted:
300
-
301
- ```text
302
- fencingToken = previousToken + 1
303
- ```
304
-
305
- A Worker includes the token on lifecycle and result writes. A write with an older token is rejected or recorded as stale evidence.
306
-
307
- This prevents a paused or partitioned Worker from overwriting state after ownership moved.
308
-
309
- ## 15. Heavy and Light Checks
310
-
311
- Checks declare a concurrency class.
312
-
313
- ### Heavy Check
314
-
315
- Examples include full test, CI, release, public export, coverage, or controller-wide verification.
316
-
317
- Default policy:
318
-
319
- - one active per repository;
320
- - global heavy-check quota;
321
- - identical Revision/check requests share execution;
322
- - Revision changes while queued make the old request stale;
323
- - subscriber cancellation is independent.
324
-
325
- ### Light Check
326
-
327
- Examples include type checks or focused tests when repository policy classifies them as light.
328
-
329
- They may run concurrently up to a per-repository limit, but should not overload the same build cache or mutate generated files without explicit Claims.
330
-
331
- ## 16. Integration Queue
332
-
333
- Every isolated change targeting the same Checkout enters one serialized queue.
334
-
335
- Queue record:
336
-
337
- ```text
338
- sourceRunId
339
- reviewedDiffHash
340
- baseRevision
341
- targetCheckoutId
342
- priority
343
- enqueuedAt
344
- requiredChecks
345
- ```
346
-
347
- Integration flow:
348
-
349
- ```text
350
- acquire integration + workspace Claims
351
- -> verify source evidence
352
- -> compare target Revision and dirty state
353
- -> apply deterministic patch
354
- -> persist Integration Record
355
- -> run focused verification
356
- -> release Claims
357
- -> clean Worktree only after durable success
358
- ```
359
-
360
- On conflict:
361
-
362
- - preserve the Worktree;
363
- - mark integration conflict;
364
- - release target Claims;
365
- - create a focused repair action;
366
- - do not rebase, reset, or overwrite automatically.
367
-
368
- ## 17. Priority and Aging
369
-
370
- Within a repository, Jobs are ordered by:
371
-
372
- ```text
373
- explicit priority
374
- user-initiated over scheduled work
375
- critical dependency path
376
- wait age
377
- risk and review boundary
378
- estimated resource cost
379
- ```
380
-
381
- Aging prevents low-priority Jobs from starving. Scheduled maintenance cannot continuously outrank a new user request.
382
-
383
- ## 18. Preemption
384
-
385
- Default local work is non-preemptive once a Worker is actively writing. New higher-priority work waits or uses a Worktree.
386
-
387
- Preemption may cancel only when:
388
-
389
- - the Job contract declares it safe;
390
- - no external side effect is in an uncertain state;
391
- - a durable checkpoint exists;
392
- - cancellation evidence and cleanup are recorded.
393
-
394
- ## 19. Release Freeze
395
-
396
- When a repository enters Release Freeze:
397
-
398
- - no new write Job is admitted for execution;
399
- - existing writers may finish or be explicitly cancelled;
400
- - Integration Queue must drain;
401
- - read-only inspection and release checks may continue;
402
- - Schedule Occurrences may triage but cannot dispatch mutation Jobs;
403
- - the release Lease is exclusive.
404
-
405
- The full release contract is defined in `verification-and-release-gates.md`.
406
-
407
- ## 20. Implemented Runtime and Maintenance Rule
408
-
409
- The runtime now implements:
410
-
411
- - one repository-specific actor mailbox;
412
- - persisted Claims on every Execution Job;
413
- - renewable Leases with monotonically increasing fencing tokens;
414
- - conservative `repo-content:*` scope for unknown writes;
415
- - explicit waiting states for Workspace, Heavy Check, Integration, release and dependencies;
416
- - Workspace single-writer semantics and automatic Worktree placement for eligible Agent work;
417
- - exclusive Integration, Git-ref, remote and release resources;
418
- - global/per-repository capacity, provider quotas, Heavy Check limits and host-pressure admission;
419
- - persisted priority aging and repository fairness state;
420
- - owner-bound Worker heartbeat, Lease renewal, release and terminal writes.
421
-
422
- New concurrency features must express their resources through this model. Additional ad-hoc long-lived locks require an ADR and may not execute on the Gateway event loop.
@@ -1,77 +0,0 @@
1
- # Session-Aware Execution and Authorization
2
-
3
- > Status: **Runtime Authority**
4
-
5
- ## Scope
6
-
7
- Controller MCP execution is bound to a durable Session Context and Work Handle. A
8
- Work Handle is the execution binding for an existing WorkContract; it is not a
9
- second task lifecycle. The binding records repository, checkout/worktree, branch,
10
- Goal, principal, controller instance, and the captured permission revision.
11
-
12
- ## Execution path
13
-
14
- ```text
15
- MCP transport
16
- -> Session Context
17
- -> Work Handle + WorkContract
18
- -> cheap/full validation
19
- -> unified authorization decision
20
- -> repository command or structured Git operation
21
- -> bounded result / resultRef + timing audit
22
- ```
23
-
24
- Ordinary read, test, build, lint, format, local edit, and repository Git
25
- operations inside the active worktree are automatically allowed when Full Access
26
- is active. Request mode uses a GoalDelegation captured by `work_prepare` for the
27
- same session, repository, work, Goal, and permission revision. This removes
28
- per-command interruptions without creating a parallel policy engine.
29
-
30
- ## Work preparation idempotency
31
-
32
- Creating new Work requires a stable `request_id`. Before a WorkContract or
33
- managed worktree is created, the Controller atomically persists a request record
34
- scoped to repository, authenticated session, and principal. The record binds a
35
- canonical preparation fingerprint to one Work id. Identical sequential,
36
- concurrent, or post-restart retries reuse that Work id and workspace. Reusing the
37
- same request id with different preparation parameters fails closed before any
38
- additional WorkContract, branch, checkout, or worktree is created.
39
-
40
- ## Authorization boundary
41
-
42
- The unified decision is one of:
43
-
44
- - `allow`, with source `policy`, `full_access`, `goal_delegation`,
45
- `gpt_risk_delegate`, or `user_confirmation`;
46
- - `user_confirmation_required`, with a durable `approvalRequestId`, exact
47
- consequences, and a continuation that can be retried from the conversation;
48
- - `deny`, for example secret and credential access.
49
-
50
- Full Access does not authorize repository escape, secret access, destructive
51
- loss of existing user work, force push, remote publication, deployment, or
52
- other external side effects. A Goal delegation has the same hard boundaries.
53
-
54
- ## Invalidation
55
-
56
- Delegation and approval state are invalid when any of these change: repository,
57
- work handle, Goal, principal/session, controlled worktree, command parameters,
58
- risk class, or permission revision. Controller instance changes explicitly
59
- invalidate persisted sessions so an old process cannot continue with stale
60
- authority.
61
-
62
- ## Natural-language approval
63
-
64
- The Controller persists approval requests under repository-scoped Controller
65
- Home storage. `approval_resolve` records a confirmation from the current
66
- conversation; GUI approval is an optional projection, not the only continuation
67
- path. A resolved request may be retried only with the same identity, permission
68
- revision, and command parameters. Any incomplete approval response is an
69
- internal error: user-facing responses must contain a request id and continuation.
70
-
71
- ## Compatibility and evidence
72
-
73
- Legacy stateless repository tools remain available. They use the same command
74
- classifier and authorization result, while composite execution tools provide
75
- session/work validation, idempotent finalization, bounded result references, and
76
- MCP timing records. Result references are Controller Home scoped to session,
77
- principal, repository, and optional work handle.