@moretea-labs/forge 1.8.0 → 1.8.2

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 (695) hide show
  1. package/AGENTS.md +73 -7
  2. package/CHANGELOG.md +34 -0
  3. package/CLAUDE.md +17 -2
  4. package/CONTRIBUTING.md +3 -2
  5. package/README.en.md +24 -3
  6. package/README.md +10 -6
  7. package/README.zh-CN.md +5 -3
  8. package/THIRD_PARTY_NOTICES.md +1 -2
  9. package/adapters/chatgpt/browser-delivery-host.ts +7 -1
  10. package/adapters/chatgpt/browser-delivery-runtime.ts +531 -56
  11. package/adapters/chatgpt/controller-binding-store.ts +101 -22
  12. package/adapters/chatgpt/controller-round-host.ts +15 -25
  13. package/adapters/chatgpt/controller-round-settlement-store.ts +58 -4
  14. package/adapters/chatgpt/provider-delivery.ts +229 -2
  15. package/adapters/chatgpt/work-conversation-binding-store.ts +99 -54
  16. package/adapters/computer/chatgpt-extension-target.ts +708 -0
  17. package/adapters/computer/chrome-extension/background.js +541 -0
  18. package/adapters/computer/chrome-extension/content.js +402 -0
  19. package/adapters/computer/chrome-extension/core.js +24 -0
  20. package/adapters/computer/chrome-extension/manifest.json +32 -0
  21. package/adapters/computer/desktop-operator-discovery.ts +11 -31
  22. package/adapters/computer/desktop-operator-provider.ts +18 -6
  23. package/adapters/computer/interaction-target-authority.ts +178 -24
  24. package/adapters/mcp/access-mode.ts +18 -39
  25. package/adapters/mcp/auth.ts +2 -7
  26. package/adapters/mcp/instructions.ts +6 -5
  27. package/adapters/mcp/multi-repository.ts +10 -47
  28. package/adapters/mcp/oauth.ts +73 -0
  29. package/adapters/mcp/paths.ts +4 -1
  30. package/adapters/mcp/runtime-gateway/bounded-result-runtime.ts +62 -0
  31. package/adapters/mcp/runtime-gateway/cognition-settlement.ts +201 -0
  32. package/adapters/mcp/runtime-gateway/context-adapter.ts +490 -113
  33. package/adapters/mcp/runtime-gateway/context-pack-sidecar.ts +83 -0
  34. package/adapters/mcp/runtime-gateway/controller-authority-adapter.ts +20 -5
  35. package/adapters/mcp/runtime-gateway/core-capability-adapter.ts +258 -0
  36. package/adapters/mcp/runtime-gateway/engineering-preconditions.ts +10 -27
  37. package/adapters/mcp/runtime-gateway/engineering-tool-contract.ts +15 -0
  38. package/adapters/mcp/runtime-gateway/execution-tools.ts +14 -54
  39. package/adapters/mcp/runtime-gateway/gateway-execution-adapter.ts +2 -1
  40. package/adapters/mcp/runtime-gateway/plugin-adapter.ts +132 -47
  41. package/adapters/mcp/runtime-gateway/process-tools.ts +173 -23
  42. package/adapters/mcp/runtime-gateway/protected-computer-adapter.ts +16 -4
  43. package/adapters/mcp/runtime-gateway/recovery-adapter.ts +69 -52
  44. package/adapters/mcp/runtime-gateway/repository-compat-adapter.ts +4 -35
  45. package/adapters/mcp/runtime-gateway/result-adapter.ts +10 -4
  46. package/adapters/mcp/runtime-gateway/router.ts +19 -507
  47. package/adapters/mcp/runtime-gateway/routing-policy.ts +506 -0
  48. package/adapters/mcp/runtime-gateway/runtime-observation-adapter.ts +15 -66
  49. package/adapters/mcp/runtime-gateway/runtime-readiness-observation.ts +218 -0
  50. package/adapters/mcp/runtime-gateway/runtime-tool-definitions.ts +123 -178
  51. package/adapters/mcp/runtime-gateway/runtime-tools.ts +11 -5
  52. package/adapters/mcp/runtime-gateway/scheduler-adapter.ts +37 -1
  53. package/adapters/mcp/runtime-gateway/shared-adapter.ts +20 -0
  54. package/adapters/mcp/runtime-gateway/status-inbox-adapter.ts +416 -270
  55. package/adapters/mcp/runtime-gateway/typescript-navigation-sidecar.ts +140 -0
  56. package/adapters/mcp/runtime-gateway/work-adapter.ts +262 -3123
  57. package/adapters/mcp/runtime-gateway/work-controller-operations.ts +257 -0
  58. package/adapters/mcp/runtime-gateway/work-detail-projection.ts +60 -0
  59. package/adapters/mcp/runtime-gateway/work-input-wire-migration.ts +229 -0
  60. package/adapters/mcp/runtime-gateway/work-learning-operations.ts +145 -0
  61. package/adapters/mcp/runtime-gateway/work-list-projection.ts +38 -0
  62. package/adapters/mcp/runtime-gateway/work-plan-operations.ts +382 -0
  63. package/adapters/mcp/runtime-gateway/work-repair-adapter.ts +308 -0
  64. package/adapters/mcp/runtime-gateway/work-requirement-operations.ts +148 -0
  65. package/adapters/mcp/runtime-gateway/work-semantic-operations.ts +320 -0
  66. package/adapters/mcp/runtime-gateway/work-workflow-operations.ts +113 -0
  67. package/adapters/mcp/runtime-gateway/workflow-supervisor-adapter.ts +180 -0
  68. package/adapters/mcp/server.ts +91 -26
  69. package/adapters/mcp/setup.ts +5 -13
  70. package/adapters/mcp/tool-mapping/access-tools.ts +0 -6
  71. package/adapters/mcp/tool-mapping/legacy-tool-service.ts +703 -3092
  72. package/adapters/mcp/tool-mapping/post-finalize-work-attribution.ts +5 -10
  73. package/adapters/mcp/tool-mapping/repository-tools.ts +170 -213
  74. package/adapters/mcp/toolset-names.ts +11 -37
  75. package/adapters/mcp/toolset.ts +19 -92
  76. package/{src/cli → adapters}/mcp/transports/AGENTS.md +5 -5
  77. package/{src/cli → adapters}/mcp/transports/CLAUDE.md +5 -5
  78. package/adapters/mcp/transports/http-observation.ts +377 -0
  79. package/adapters/mcp/transports/http-post-lifecycle.ts +19 -0
  80. package/adapters/mcp/transports/http.ts +200 -683
  81. package/adapters/mcp/transports/oauth-http.ts +322 -0
  82. package/adapters/mcp/transports/session-registry.ts +6 -0
  83. package/adapters/mcp/tunnels/openai-secure-tunnel.ts +89 -5
  84. package/adapters/mcp/types.ts +0 -6
  85. package/assets/hooks/lib/session-state.sh +0 -38
  86. package/assets/hooks/post-bash.sh +1 -1
  87. package/assets/hooks/post-tool-observer.sh +0 -5
  88. package/assets/hooks/prompt-guard.sh +0 -55
  89. package/assets/partials/04-project-structure.partial.md +1 -1
  90. package/assets/partials/07-footer.partial.md +1 -1
  91. package/assets/partials-agents/02-operating-mode.partial.md +1 -1
  92. package/assets/partials-agents/08-deep-docs.partial.md +1 -1
  93. package/assets/plugin-registry.v1.json +6 -4
  94. package/assets/reference-configs/agentic-development-flow.md +26 -1
  95. package/assets/reference-configs/external-tooling.md +0 -76
  96. package/assets/reference-configs/global-working-rules.md +19 -0
  97. package/assets/reference-configs/release-deploy.md +1 -1
  98. package/assets/templates/helpers/architecture-queue.sh +1 -1
  99. package/assets/templates/helpers/check-agent-tooling.sh +1 -327
  100. package/assets/templates/helpers/check-task-workflow.sh +1 -1
  101. package/assets/templates/helpers/ensure-task-workflow.sh +0 -14
  102. package/assets/templates/helpers/migrate-project-template.sh +2 -2
  103. package/assets/workflow-contract.v1.json +0 -2
  104. package/docs/README.md +5 -2
  105. package/docs/architecture/CURRENT.md +205 -51
  106. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +14 -5
  107. package/docs/architecture/decisions/20260823-immediate-controller-relay.md +6 -3
  108. package/docs/architecture/decisions/20260904-ios-device-migration-baseline.md +42 -0
  109. package/docs/architecture/decisions/20260907-assistant-learning-loop.md +2 -0
  110. package/docs/architecture/decisions/20260907-controller-round-transition-policy.md +19 -4
  111. package/docs/architecture/decisions/20260916-workflow-supervisor-authority.md +249 -0
  112. package/docs/architecture/decisions/20260917-cognitive-memory-foundation.md +82 -0
  113. package/docs/architecture/decisions/20260918-stable-candidate-release-lifecycle.md +234 -0
  114. package/docs/architecture/decisions/20260919-autonomous-work-liveness.md +62 -0
  115. package/docs/architecture/decisions/20260924-thin-semantic-working-context.md +74 -0
  116. package/docs/architecture/decisions/20261001-supervisor-turn-authority.md +342 -0
  117. package/docs/architecture/decisions/20261005-forge-v3-desktop-client-boundary.md +77 -0
  118. package/docs/architecture/decisions/20261009-exact-code-context-discovery.md +19 -0
  119. package/docs/architecture/decisions/20261009-generated-xcode-cache-retention.md +37 -0
  120. package/docs/architecture/decisions/20261011-autonomous-continuation-convergence.md +597 -0
  121. package/docs/architecture/decisions/20261017-edit-session-finalization-reconciliation.md +17 -0
  122. package/docs/architecture/decisions/20261019-retire-host-skills.md +16 -0
  123. package/docs/architecture/diagrams/agentic-dev-plugin-architecture.html +1 -1
  124. package/docs/architecture/domains/public-surface.md +3 -5
  125. package/docs/architecture/domains/verification.md +6 -5
  126. package/docs/architecture/domains/workflow-engine.md +6 -0
  127. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +3 -3
  128. package/docs/architecture/requests/2026-09-04-computer-plugin-workflow-taxonomy.md +4 -4
  129. package/docs/architecture/reviews/20261015-code-search-runtime-acceptance.md +75 -0
  130. package/docs/forge-plugin-management.md +16 -4
  131. package/docs/operations/controller-browser-plugin.md +23 -0
  132. package/docs/operations/controller-performance-and-502.md +17 -0
  133. package/docs/operations/controller-reliability-runbook.md +2 -2
  134. package/docs/operations/features.md +6 -7
  135. package/docs/operations/features.zh-CN.md +1 -1
  136. package/docs/operations/github-repository.md +4 -4
  137. package/docs/operations/github-semantic-release-projection.md +20 -0
  138. package/docs/operations/homebrew.md +2 -2
  139. package/docs/operations/mcp-tool-exposure.md +13 -52
  140. package/docs/operations/releasing.md +2 -0
  141. package/docs/operations/runtime-performance-diagnostics.md +8 -0
  142. package/docs/operations/standalone-disaster-recovery.md +15 -7
  143. package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
  144. package/docs/tutorials/03-first-repository-task.md +2 -0
  145. package/docs/wiki/Computer-and-Plugins.md +78 -0
  146. package/docs/wiki/Computer-and-Plugins.zh-CN.md +88 -0
  147. package/docs/wiki/Home.md +16 -2
  148. package/docs/wiki/Implementation.md +25 -13
  149. package/docs/wiki/Installation.md +28 -32
  150. package/docs/wiki/Integrations.md +4 -0
  151. package/docs/wiki/Quick-Start.md +35 -22
  152. package/docs/wiki/Releases-and-Upgrades.md +15 -25
  153. package/docs/wiki/_Sidebar.md +5 -1
  154. package/package.json +25 -25
  155. package/packages/kernel/cognition/api/index.ts +6 -0
  156. package/packages/kernel/cognition/application/activation-service.ts +451 -0
  157. package/packages/kernel/cognition/application/consolidation-service.ts +185 -0
  158. package/packages/kernel/cognition/application/legacy-experience-adapter.ts +38 -0
  159. package/packages/kernel/cognition/application/memory-service.ts +64 -0
  160. package/packages/kernel/cognition/domain/learning.ts +106 -0
  161. package/packages/kernel/cognition/domain/memory.ts +254 -0
  162. package/packages/kernel/controller/api/index.ts +1 -0
  163. package/packages/kernel/controller/application/continuation-service.ts +281 -0
  164. package/packages/kernel/controller/application/controller-round-service.ts +12 -0
  165. package/packages/kernel/controller/domain/controller-round-transition-policy.ts +242 -21
  166. package/packages/kernel/controller/domain/controller-round.ts +4 -1
  167. package/packages/kernel/controller/domain/execution-quality.ts +3 -1
  168. package/packages/kernel/controller/infrastructure/controller-round-store.ts +689 -103
  169. package/packages/kernel/controller/infrastructure/controller-session-store.ts +348 -97
  170. package/packages/kernel/controller/ports/controller-host.ts +2 -0
  171. package/packages/kernel/identity/api/index.ts +10 -0
  172. package/packages/kernel/identity/domain/activity-projection.ts +43 -0
  173. package/packages/kernel/identity/domain/capability-broker.ts +60 -0
  174. package/packages/kernel/identity/domain/grant.ts +72 -0
  175. package/packages/kernel/identity/domain/owned-resource.ts +116 -0
  176. package/packages/kernel/identity/domain/user-request.ts +93 -0
  177. package/packages/kernel/identity/infrastructure/activity-projection-store.ts +87 -0
  178. package/packages/kernel/identity/infrastructure/capability-broker.ts +81 -0
  179. package/packages/kernel/identity/infrastructure/grant-store.ts +284 -0
  180. package/packages/kernel/identity/infrastructure/owned-resource-store.ts +259 -0
  181. package/packages/kernel/identity/infrastructure/user-request-store.ts +182 -0
  182. package/packages/kernel/scheduler/api/index.ts +0 -2
  183. package/packages/kernel/scheduler/application/eligibility.ts +4 -1
  184. package/packages/kernel/scheduler/application/schedule-service.ts +3 -0
  185. package/packages/kernel/scheduler/application/settlement.ts +0 -15
  186. package/packages/kernel/scheduler/domain/schedule.ts +87 -0
  187. package/packages/kernel/scheduler/infrastructure/schedule-store.ts +166 -143
  188. package/packages/kernel/work/api/index.ts +3 -2
  189. package/packages/kernel/work/application/work-service.ts +18 -42
  190. package/packages/kernel/work/domain/current-task-lineage.ts +104 -0
  191. package/packages/kernel/work/domain/engineering-design.ts +10 -5
  192. package/packages/kernel/work/domain/engineering-profile.ts +8 -12
  193. package/packages/kernel/work/domain/evaluation-promotion-receipt.ts +186 -0
  194. package/packages/kernel/work/domain/execution-concurrency.ts +19 -26
  195. package/packages/kernel/work/domain/execution-snapshot.ts +0 -31
  196. package/packages/kernel/work/domain/implementation-review.ts +14 -331
  197. package/packages/kernel/work/domain/objective-graph.ts +119 -0
  198. package/packages/kernel/work/domain/project-engineering-contract.ts +23 -1
  199. package/packages/kernel/work/domain/repository-completion-receipt.ts +1 -1
  200. package/packages/kernel/work/domain/state-machine.ts +34 -65
  201. package/packages/kernel/work/domain/types.ts +57 -51
  202. package/packages/kernel/work/infrastructure/work-contract-store.ts +847 -729
  203. package/packages/kernel/work/ports/work-contract-store.ts +5 -2
  204. package/packages/plugin-runtime/browser/provider-registry.ts +12 -36
  205. package/packages/plugin-runtime/browser/session-authority.ts +2 -1
  206. package/packages/plugin-runtime/computer/chatgpt-identity.ts +24 -0
  207. package/packages/plugin-runtime/computer/conversation-target.ts +153 -0
  208. package/packages/plugin-runtime/computer/index.ts +2 -0
  209. package/packages/plugin-runtime/computer/target-authority.ts +26 -1
  210. package/packages/plugin-runtime/external/unix-jsonl-transport.ts +142 -18
  211. package/packages/protocols/computer/contract.ts +27 -1
  212. package/scripts/activate-source-baseline.ts +7 -9
  213. package/scripts/assemble-template.ts +11 -72
  214. package/scripts/canary-controller-semantic-wait.ts +12 -24
  215. package/scripts/check-mcp-compatibility.ts +94 -201
  216. package/scripts/check-package-identity.mjs +0 -5
  217. package/scripts/check-runtime-architecture.mjs +921 -239
  218. package/scripts/forge-local-recovery-helper.mjs +93 -15
  219. package/scripts/init-project.sh +0 -46
  220. package/scripts/install-ios-hid-toolchain.sh +60 -0
  221. package/scripts/install-standalone-recovery.ts +1 -1
  222. package/scripts/lib/project-init-lib.sh +6 -3
  223. package/scripts/migrate-windows-wsl-controller-home.ts +2 -0
  224. package/scripts/open-source-audit-allowlist.txt +1 -3
  225. package/scripts/run-bounded-command.mjs +5 -0
  226. package/scripts/run-governed-gate.ts +2 -1
  227. package/scripts/run-mobile-monitor-bridge.ts +0 -1
  228. package/scripts/smoke-control-plane-failure-domain.ts +94 -0
  229. package/scripts/smoke-ios-physical-device.ts +38 -10
  230. package/scripts/smoke-mcp-http-runtime.ts +12 -8
  231. package/scripts/smoke-mcp-tool-surface.ts +27 -41
  232. package/scripts/smoke-runtime-recovery.ts +12 -43
  233. package/scripts/smoke-schedule-engine.ts +23 -15
  234. package/scripts/smoke-unattended-transport-recovery.ts +223 -0
  235. package/scripts/smoke-user-request-continuation-restart.ts +232 -0
  236. package/scripts/smoke-workflow-supervisor-chrome-adapter.ts +95 -0
  237. package/scripts/smoke-workflow-supervisor-process-restart.ts +276 -0
  238. package/scripts/smoke-workflow-supervisor-restart-recovery.ts +150 -0
  239. package/scripts/smoke-workflow-supervisor.ts +103 -0
  240. package/scripts/sync-generated-authority.mjs +0 -1
  241. package/scripts/verify-forge-runtime.sh +2 -1
  242. package/src/cli/agent-jobs/executor-health.ts +12 -35
  243. package/src/cli/agent-jobs/integration.ts +20 -51
  244. package/src/cli/agent-jobs/job-manager.ts +7 -3
  245. package/src/cli/chatgpt-browser/file-policy.ts +2 -2
  246. package/src/cli/commands/brain-assistant.ts +27 -13
  247. package/src/cli/commands/brain.ts +13 -15
  248. package/src/cli/commands/chatgpt.ts +1 -163
  249. package/src/cli/commands/doctor.ts +1 -143
  250. package/src/cli/commands/global-runtime.ts +3 -196
  251. package/src/cli/commands/init-hook.ts +6 -23
  252. package/src/cli/commands/init.ts +3 -252
  253. package/src/cli/commands/mcp.ts +0 -5
  254. package/src/cli/commands/prompt-guard-decision.ts +0 -2
  255. package/src/cli/commands/recovery.ts +137 -135
  256. package/src/cli/commands/repository.ts +17 -1
  257. package/src/cli/commands/runtime.ts +3 -3
  258. package/src/cli/commands/setup-execution.ts +41 -0
  259. package/src/cli/commands/setup-profile.ts +8 -0
  260. package/src/cli/controller/check-runner.ts +13 -2
  261. package/src/cli/controller/completion-backlog.ts +3 -3
  262. package/src/cli/controller/completion-orchestrator.ts +5 -44
  263. package/src/cli/controller/completion-target.ts +3 -72
  264. package/src/cli/controller/composite-operations.ts +1 -1
  265. package/src/cli/controller/context/instruction-context.ts +1 -1
  266. package/src/cli/controller/context/known-paths.ts +2 -2
  267. package/src/cli/controller/context/query-planning.ts +11 -4
  268. package/src/cli/controller/context/rule-resolution.ts +2 -2
  269. package/src/cli/controller/context/source-materializer.ts +83 -102
  270. package/src/cli/controller/context/structural-provider.ts +84 -0
  271. package/src/cli/controller/context/structural.ts +6 -6
  272. package/src/cli/controller/context/types.ts +8 -9
  273. package/src/cli/controller/context-pack.ts +107 -84
  274. package/src/cli/controller/execution-completion.ts +4 -7
  275. package/src/cli/controller/execution-policy.ts +36 -153
  276. package/src/cli/controller/governance.ts +2 -3
  277. package/src/cli/controller/issue-store.ts +4 -99
  278. package/src/cli/controller/launch-agents.ts +59 -18
  279. package/src/cli/controller/operational-plan.ts +25 -52
  280. package/src/cli/controller/runtime-config.ts +5 -1
  281. package/src/cli/controller/stuck-state-migration.ts +2 -3
  282. package/src/cli/controller/systemd-user.ts +42 -10
  283. package/src/cli/editing/edit-session.ts +18 -12
  284. package/src/cli/github/github.ts +4 -4
  285. package/src/cli/github/semantic-projection.ts +174 -0
  286. package/src/cli/hook/prompt-intents.ts +0 -9
  287. package/src/cli/index.ts +1 -43
  288. package/src/cli/local-bridge/connector-freshness.ts +1 -12
  289. package/src/cli/local-bridge/console-automations.ts +19 -14
  290. package/src/cli/local-bridge/console-view-models.ts +4 -13
  291. package/src/cli/local-bridge/facade-api.ts +64 -193
  292. package/src/cli/local-bridge/server.ts +24 -147
  293. package/src/cli/local-bridge/types.ts +0 -1
  294. package/src/cli/mcp/oauth-client-retirement.ts +74 -0
  295. package/src/cli/repositories/command-classifier.ts +0 -9
  296. package/src/cli/repositories/command-executor.ts +29 -23
  297. package/src/cli/repositories/command-scope.ts +37 -18
  298. package/src/cli/repositories/controller-home.ts +48 -0
  299. package/src/cli/repositories/ephemeral-workspace.ts +20 -30
  300. package/src/cli/repositories/git-command-executor.ts +2 -2
  301. package/src/cli/repositories/locks.ts +20 -0
  302. package/src/cli/repositories/registry.ts +79 -12
  303. package/src/cli/repositories/safe-patch.ts +2 -12
  304. package/src/cli/repositories/structured-git.ts +101 -5
  305. package/src/cli/repository/inspector.ts +185 -343
  306. package/src/cli/repository/session-cache.ts +92 -6
  307. package/src/effects/process-runner.ts +17 -1
  308. package/src/runtime/context/assistant-context.ts +20 -7
  309. package/src/runtime/context/assistant-work-context.ts +89 -27
  310. package/src/runtime/context/automatic-learning.ts +565 -0
  311. package/src/runtime/context/cognitive-attention.ts +173 -0
  312. package/src/runtime/context/cognitive-skill-canary.ts +158 -0
  313. package/src/runtime/context/context-closure.ts +46 -9
  314. package/src/runtime/context/context-pack-process.ts +103 -0
  315. package/src/runtime/context/context-plane.ts +1 -9
  316. package/src/runtime/context/direct-controller-learning.ts +298 -0
  317. package/src/runtime/context/generic-lsp-provider.ts +1 -1
  318. package/src/runtime/context/semantic-navigation-contract.ts +16 -0
  319. package/src/runtime/context/semantic-navigation.ts +7 -35
  320. package/src/runtime/context/typescript-navigation-process.ts +145 -0
  321. package/src/runtime/context/typescript-navigation.ts +89 -3
  322. package/src/runtime/control-plane/cleanup-artifact-retention.ts +215 -12
  323. package/src/runtime/control-plane/concurrency/work-execution-concurrency.ts +9 -47
  324. package/src/runtime/control-plane/execution/controller-authority-recovery.ts +34 -4
  325. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +29 -20
  326. package/src/runtime/control-plane/execution/execution-identity.ts +23 -3
  327. package/src/runtime/control-plane/execution/repository-work-attribution.ts +7 -30
  328. package/src/runtime/control-plane/execution/retained-work-resume.ts +206 -199
  329. package/src/runtime/control-plane/execution/session-store.ts +31 -1
  330. package/src/runtime/control-plane/execution/validation.ts +6 -8
  331. package/src/runtime/control-plane/execution/work-authority-reconciler.ts +13 -42
  332. package/src/runtime/control-plane/execution/work-check-evidence.ts +137 -0
  333. package/src/runtime/control-plane/execution/work-completion-authority.ts +30 -85
  334. package/src/runtime/control-plane/execution/work-delivery-service.ts +616 -0
  335. package/src/runtime/control-plane/execution/work-evidence-policy.ts +12 -50
  336. package/src/runtime/control-plane/execution/work-execution-support.ts +50 -149
  337. package/src/runtime/control-plane/execution/work-handle-authority.ts +197 -110
  338. package/src/runtime/control-plane/execution/work-handle-store.ts +72 -44
  339. package/src/runtime/control-plane/execution/work-head-settlement.ts +53 -20
  340. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +52 -29
  341. package/src/runtime/control-plane/execution/work-operation-service.ts +60 -34
  342. package/src/runtime/control-plane/execution/work-preparation-service.ts +231 -267
  343. package/src/runtime/control-plane/execution/work-process-evidence.ts +2 -2
  344. package/src/runtime/control-plane/execution/work-remote-delivery.ts +2 -3
  345. package/src/runtime/control-plane/execution/work-revision-diff.ts +39 -0
  346. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +201 -199
  347. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +33 -85
  348. package/src/runtime/control-plane/execution/work-verification-service.ts +406 -50
  349. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +6 -2
  350. package/src/runtime/control-plane/facade/capability-registry.ts +364 -37
  351. package/src/runtime/control-plane/facade/check-normalization.ts +3 -9
  352. package/src/runtime/control-plane/facade/codex-delegation.ts +10 -11
  353. package/src/runtime/control-plane/facade/controller-connection.ts +135 -0
  354. package/src/runtime/control-plane/facade/goal-workloop-access.ts +1 -20
  355. package/src/runtime/control-plane/facade/goal-workloop.ts +281 -1753
  356. package/src/runtime/control-plane/facade/handoff-inbox-application.ts +12 -25
  357. package/src/runtime/control-plane/facade/handoff-inbox-store.ts +256 -52
  358. package/src/runtime/control-plane/facade/index.ts +0 -1
  359. package/src/runtime/control-plane/facade/operation-digest.ts +12 -15
  360. package/src/runtime/control-plane/facade/plan-contract-store.ts +451 -991
  361. package/src/runtime/control-plane/facade/policy-gate.ts +0 -23
  362. package/src/runtime/control-plane/facade/repository-work-admission.ts +12 -22
  363. package/src/runtime/control-plane/facade/requirement-authority.ts +102 -199
  364. package/src/runtime/control-plane/facade/requirement-board.ts +3 -3
  365. package/src/runtime/control-plane/facade/rh-work-operation-contract.ts +51 -14
  366. package/src/runtime/control-plane/facade/self-healing-loop.ts +18 -53
  367. package/src/runtime/control-plane/facade/suggested-actions.ts +15 -18
  368. package/src/runtime/control-plane/facade/types.ts +49 -108
  369. package/src/runtime/control-plane/facade/work-continuation.ts +9 -9
  370. package/src/runtime/control-plane/generated-cache-retention.ts +206 -59
  371. package/src/runtime/control-plane/global-scheduler/autonomous-continuation.ts +248 -0
  372. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +1 -1
  373. package/src/runtime/control-plane/global-scheduler/maintenance.ts +256 -117
  374. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -12
  375. package/src/runtime/control-plane/global-scheduler/scheduler.ts +66 -40
  376. package/src/runtime/control-plane/global-scheduler/wake-signal.ts +42 -2
  377. package/src/runtime/control-plane/governance/access-policy.ts +19 -2
  378. package/src/runtime/control-plane/governance/authorization.ts +20 -3
  379. package/src/runtime/control-plane/governance/external-effects.ts +1 -1
  380. package/src/runtime/control-plane/launcher/chatgpt-round-continuation.ts +63 -300
  381. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +29 -300
  382. package/src/runtime/control-plane/launcher/local-conversation-controller.ts +238 -0
  383. package/src/runtime/control-plane/launcher/provider-mcp-bootstrap.ts +5 -2
  384. package/src/runtime/control-plane/launcher/thin-launcher.ts +96 -240
  385. package/src/runtime/control-plane/persistence/cognition-store.ts +820 -0
  386. package/src/runtime/control-plane/persistence/experience-store.ts +162 -29
  387. package/src/runtime/control-plane/persistence/requirement-store.ts +216 -74
  388. package/src/runtime/control-plane/persistence/sqlite-store.ts +113 -6
  389. package/src/runtime/control-plane/release-retention.ts +135 -47
  390. package/src/runtime/control-plane/repository-namespace-retention.ts +2 -2
  391. package/src/runtime/control-plane/runtime-cleanup.ts +295 -107
  392. package/src/runtime/control-plane/workspace/project-onboarding.ts +80 -0
  393. package/src/runtime/control-plane/workspace/semantic-sync-service.ts +19 -5
  394. package/src/runtime/control-plane/workspace/workspace-store.ts +169 -0
  395. package/src/runtime/diagnostics/incident-repair.ts +313 -146
  396. package/src/runtime/diagnostics/mcp-timing.ts +114 -0
  397. package/src/runtime/evidence/artifact-store.ts +158 -40
  398. package/src/runtime/evidence/evidence-store.ts +112 -8
  399. package/src/runtime/evidence/output-handle-index.ts +225 -0
  400. package/src/runtime/evidence/result-store.ts +158 -44
  401. package/src/runtime/evidence/sensitive-output.ts +22 -2
  402. package/src/runtime/execution/jobs/child-reference.ts +11 -0
  403. package/src/runtime/execution/jobs/receipt-recovery.ts +1 -11
  404. package/src/runtime/execution/jobs/store.ts +3 -4
  405. package/src/runtime/execution/managed-workspace.ts +57 -0
  406. package/src/runtime/execution/process-runtime/check-facade.ts +1 -1
  407. package/src/runtime/execution/process-runtime/check-result-retention.ts +2 -2
  408. package/src/runtime/execution/process-runtime/check-result.ts +105 -1
  409. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +18 -8
  410. package/src/runtime/execution/process-runtime/command-facade.ts +82 -30
  411. package/src/runtime/execution/process-runtime/gc.ts +15 -2
  412. package/src/runtime/execution/process-runtime/handle-index.ts +176 -0
  413. package/src/runtime/execution/process-runtime/host-command-lane.ts +139 -0
  414. package/src/runtime/execution/process-runtime/index.ts +3 -0
  415. package/src/runtime/execution/process-runtime/lightweight-managed.ts +251 -72
  416. package/src/runtime/execution/process-runtime/persisted-check.ts +3 -3
  417. package/src/runtime/execution/process-runtime/process-runner-entry.ts +47 -5
  418. package/src/runtime/execution/process-runtime/process-scope.ts +160 -0
  419. package/src/runtime/execution/process-runtime/resource-claims.ts +65 -61
  420. package/src/runtime/execution/process-runtime/runtime.ts +55 -18
  421. package/src/runtime/execution/process-runtime/store.ts +30 -2
  422. package/src/runtime/execution/process-runtime/types.ts +6 -1
  423. package/src/runtime/execution/thin-harness/execution-router.ts +16 -16
  424. package/src/runtime/execution/thin-harness/fast-executor.ts +2 -2
  425. package/src/runtime/execution/thin-harness/search-worker.ts +2 -2
  426. package/src/runtime/execution/workers/executor.ts +3 -8
  427. package/src/runtime/maintenance/cleanup.ts +41 -5
  428. package/src/runtime/platform/service-inventory.ts +130 -0
  429. package/src/runtime/platform/service-manager.ts +8 -0
  430. package/src/runtime/plugins/action-application.ts +97 -29
  431. package/src/runtime/plugins/app-store-connect-adapter.ts +290 -18
  432. package/src/runtime/plugins/browser-adapter.ts +1124 -333
  433. package/src/runtime/plugins/browser-automation-service.ts +23 -3
  434. package/src/runtime/plugins/browser-macos-bridge.ts +431 -137
  435. package/src/runtime/plugins/browser-manifest-surface.ts +47 -12
  436. package/src/runtime/plugins/browser-native-session-service.ts +63 -13
  437. package/src/runtime/plugins/browser-registration.ts +18 -0
  438. package/src/runtime/plugins/browser-runtime.ts +40 -36
  439. package/src/runtime/plugins/browser-session-authority.ts +2 -2
  440. package/src/runtime/plugins/browser-session-store.ts +46 -76
  441. package/src/runtime/plugins/capability-authorization-grants.ts +258 -62
  442. package/src/runtime/plugins/computer-chatgpt-browser-adapter-installer.ts +228 -0
  443. package/src/runtime/plugins/computer-registration.ts +298 -20
  444. package/src/runtime/plugins/desktop-operator-external-policy.ts +36 -4
  445. package/src/runtime/plugins/desktop-operator-registration.ts +12 -4
  446. package/src/runtime/plugins/external-adapter.ts +42 -6
  447. package/src/runtime/plugins/external-registration.ts +21 -1
  448. package/src/runtime/plugins/github-adapter.ts +30 -3
  449. package/src/runtime/plugins/gmail-adapter.ts +189 -3
  450. package/src/runtime/plugins/google-calendar-adapter.ts +2 -2
  451. package/src/runtime/plugins/google-shared.ts +24 -12
  452. package/src/runtime/plugins/google-tasks-adapter.ts +2 -2
  453. package/src/runtime/plugins/ios/remote-xpc-hid.ts +70 -30
  454. package/src/runtime/plugins/ios-adapter.ts +46 -41
  455. package/src/runtime/plugins/ios-agent-device.ts +54 -4
  456. package/src/runtime/plugins/ios-device-ownership.ts +103 -0
  457. package/src/runtime/plugins/ios-physical-device.ts +497 -79
  458. package/src/runtime/plugins/lightweight-action.ts +208 -2
  459. package/src/runtime/plugins/local-system-adapter.ts +12 -100
  460. package/src/runtime/plugins/managed-process-adapter.ts +12 -5
  461. package/src/runtime/plugins/plugin-action-sidecar.ts +17 -13
  462. package/src/runtime/plugins/plugin-management-adapter.ts +1 -1
  463. package/src/runtime/plugins/store.ts +682 -435
  464. package/src/runtime/plugins/types.ts +24 -0
  465. package/src/runtime/plugins/xiaohongshu-publish.ts +16 -0
  466. package/src/runtime/projections/git-status-sampler.ts +2 -19
  467. package/src/runtime/projections/invalidation.ts +7 -3
  468. package/src/runtime/projections/materialized-view.ts +80 -36
  469. package/src/runtime/recovery/actions.ts +4 -4
  470. package/src/runtime/recovery/capability-action-application.ts +46 -45
  471. package/src/runtime/recovery/lifecycle-inventory.ts +30 -40
  472. package/src/runtime/recovery/maintenance-executor.ts +374 -123
  473. package/src/runtime/recovery/probe.ts +2 -2
  474. package/src/runtime/recovery/store.ts +29 -11
  475. package/src/runtime/release/release-coordinator.ts +312 -0
  476. package/src/runtime/release/release-session.ts +716 -0
  477. package/src/runtime/release/release-state-migration.ts +25 -0
  478. package/src/runtime/resources/leases/store.ts +56 -25
  479. package/src/runtime/root/computer-composition.ts +191 -6
  480. package/src/runtime/root/controller-progression-composition.ts +254 -0
  481. package/src/runtime/root/controller-round-composition.ts +20 -1
  482. package/src/runtime/root/deployment-topology.ts +106 -0
  483. package/src/runtime/root/entry.ts +4 -3
  484. package/src/runtime/root/known-good-recovery.ts +184 -0
  485. package/src/runtime/root/local-bridge.ts +0 -1
  486. package/src/runtime/root/mcp-transport.ts +111 -18
  487. package/src/runtime/root/ownership.ts +261 -9
  488. package/src/runtime/root/package-connector-service.ts +227 -29
  489. package/src/runtime/root/package-runtime-release.ts +117 -30
  490. package/src/runtime/root/package-runtime-service.ts +24 -24
  491. package/src/runtime/root/release-execution-canary.ts +57 -12
  492. package/src/runtime/root/release-loader.ts +90 -8
  493. package/src/runtime/root/release-manifest.ts +80 -40
  494. package/src/runtime/root/release-materialize.ts +372 -106
  495. package/src/runtime/root/release-store.ts +395 -36
  496. package/src/runtime/root/runtime-lane.ts +191 -0
  497. package/src/runtime/root/runtime.ts +160 -29
  498. package/src/runtime/root/scheduled-controller-composition.ts +29 -3
  499. package/src/runtime/root/service-runner.ts +2 -2
  500. package/src/runtime/root/service.ts +126 -44
  501. package/src/runtime/root/status.ts +48 -0
  502. package/src/runtime/root/types.ts +32 -9
  503. package/src/runtime/root/workflow-supervisor-composition.ts +681 -0
  504. package/src/runtime/root/workflow-supervisor-runtime.ts +564 -0
  505. package/src/runtime/root/write-fence.ts +50 -2
  506. package/src/runtime/safe-tooling/google-credential-store.ts +67 -22
  507. package/src/runtime/safe-tooling/google-oauth-broker.ts +25 -7
  508. package/src/runtime/safe-tooling/ios-development.ts +22 -8
  509. package/src/runtime/safe-tooling/job-summary.ts +1 -1
  510. package/src/runtime/safe-tooling/workspace-auth.ts +5 -2
  511. package/src/runtime/shared/atomic-text-file.ts +21 -0
  512. package/src/runtime/shared/bounded-child-supervisor.ts +9 -1
  513. package/src/runtime/shared/json-files.ts +8 -3
  514. package/src/runtime/shared/process-environment.ts +20 -9
  515. package/src/runtime/shared/response-budget.ts +1 -3
  516. package/src/runtime/standalone-recovery/controller-home-migration.ts +16 -24
  517. package/src/runtime/standalone-recovery/core.ts +3792 -417
  518. package/src/runtime/standalone-recovery/entry.ts +507 -45
  519. package/src/runtime/standalone-recovery/installer.ts +262 -148
  520. package/src/runtime/standalone-recovery/mcp-server.ts +29 -193
  521. package/src/runtime/standalone-recovery/operation-lock.ts +12 -2
  522. package/src/runtime/standalone-recovery/performance.ts +54 -16
  523. package/src/runtime/standalone-recovery/release.ts +53 -5
  524. package/src/runtime/standalone-recovery/service-labels.ts +5 -2
  525. package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +5 -2
  526. package/src/runtime/workflow/schedules/browser-probe.ts +17 -6
  527. package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +11 -3
  528. package/src/runtime/workflow/schedules/engine.ts +166 -178
  529. package/src/runtime/workflow/schedules/pending-activation.ts +11 -4
  530. package/src/runtime/workflow/schedules/work-continuation.ts +95 -11
  531. package/src/runtime/workflows/runtime.ts +15 -19
  532. package/src/testing/test-governance.ts +5 -1
  533. package/supervisor/chatgpt-conversation.ts +23 -0
  534. package/supervisor/client.ts +218 -0
  535. package/supervisor/control-plane.ts +963 -0
  536. package/supervisor/entry.ts +15 -0
  537. package/supervisor/forge-validators.ts +147 -0
  538. package/supervisor/index.ts +5 -0
  539. package/supervisor/native-browser-adapter.ts +1151 -0
  540. package/supervisor/native-messaging/host.ts +58 -0
  541. package/supervisor/native-messaging/manifest.ts +26 -0
  542. package/supervisor/native-messaging/protocol.ts +27 -0
  543. package/supervisor/paths.ts +18 -0
  544. package/supervisor/protocol.ts +250 -0
  545. package/supervisor/server.ts +412 -0
  546. package/supervisor/store.ts +1870 -0
  547. package/supervisor/tsconfig.json +8 -0
  548. package/supervisor/types.ts +261 -0
  549. package/SKILL.md +0 -427
  550. package/adapters/chatgpt/controller-host.ts +0 -119
  551. package/adapters/mcp/controller-round-compatibility.ts +0 -184
  552. package/adapters/mcp/frozen-client-semantic-compatibility.ts +0 -292
  553. package/adapters/mcp/runtime-gateway/work-compat-adapter.ts +0 -502
  554. package/adapters/mcp/runtime-gateway/work-validation-reconciler.ts +0 -1
  555. package/adapters/mcp/toolset-selection.ts +0 -41
  556. package/agents/openai.yaml +0 -4
  557. package/assets/skill-hooks.json +0 -41
  558. package/assets/skill-version.json +0 -189
  559. package/assets/skills/claude-review/SKILL.md +0 -231
  560. package/assets/skills/codex-review/SKILL.md +0 -103
  561. package/assets/templates/helpers/check-skill-version.ts +0 -193
  562. package/packages/kernel/progression/api/index.ts +0 -2
  563. package/packages/kernel/progression/application/projector.ts +0 -211
  564. package/packages/kernel/progression/domain/types.ts +0 -116
  565. package/packages/kernel/progression/index.ts +0 -1
  566. package/packages/kernel/scheduler/application/continuation-service.ts +0 -212
  567. package/packages/kernel/scheduler/domain/continuation.ts +0 -38
  568. package/packages/kernel/scheduler/infrastructure/continuation-dispatch-store.ts +0 -38
  569. package/packages/kernel/work/domain/admission-policy.ts +0 -34
  570. package/scripts/benchmark-background-check-overlap.ts +0 -228
  571. package/scripts/benchmark-computer-hotpath.ts +0 -255
  572. package/scripts/benchmark-controller-hotpath.ts +0 -212
  573. package/scripts/benchmark-controller-round2.ts +0 -191
  574. package/scripts/benchmark-ios-agent-device.ts +0 -511
  575. package/scripts/benchmark-mcp-host.sh +0 -117
  576. package/scripts/benchmark-mcp-transport.ts +0 -169
  577. package/scripts/benchmark-operational-memory-activation.ts +0 -235
  578. package/scripts/benchmark-operational-shadow.ts +0 -28
  579. package/scripts/benchmark-quality-harness.ts +0 -146
  580. package/scripts/benchmark-route-session-concurrency.ts +0 -915
  581. package/scripts/benchmark-thin-harness-gateway-ab.ts +0 -632
  582. package/scripts/benchmark-thin-harness-mcp-e2e.ts +0 -498
  583. package/scripts/benchmark-thin-harness.ts +0 -251
  584. package/scripts/benchmark-typescript-navigation.ts +0 -186
  585. package/scripts/benchmark-work-efficiency.ts +0 -334
  586. package/scripts/build-controller-ui.ts +0 -28
  587. package/scripts/check-npm-release.sh +0 -32
  588. package/scripts/check-public-release-surface.sh +0 -19
  589. package/scripts/check-release-published.sh +0 -57
  590. package/scripts/check-release-readiness.sh +0 -37
  591. package/scripts/check-release-version.mjs +0 -74
  592. package/scripts/check-skill-version.ts +0 -5
  593. package/scripts/check-tarball-install-smoke.sh +0 -150
  594. package/scripts/ensure-codegraph.sh +0 -16
  595. package/scripts/package-source-archive.sh +0 -147
  596. package/scripts/public-release-files.txt +0 -39
  597. package/scripts/public-release.ts +0 -174
  598. package/scripts/publish-release-tarball.sh +0 -27
  599. package/scripts/route-nl-vs-ts-eval.ts +0 -679
  600. package/scripts/run-skill-hook.ts +0 -244
  601. package/scripts/stage-runtime-release.ts +0 -44
  602. package/scripts/sync-codex-installed-copies.sh +0 -182
  603. package/src/cli/commands/tools.ts +0 -167
  604. package/src/cli/controller/progress.ts +0 -656
  605. package/src/cli/controller/work-mode.ts +0 -181
  606. package/src/cli/local-bridge/console-assets.ts +0 -17
  607. package/src/cli/local-bridge/dashboard.ts +0 -17
  608. package/src/cli/local-bridge/frontend/src/App.tsx +0 -10
  609. package/src/cli/local-bridge/frontend/src/components/Button.tsx +0 -1
  610. package/src/cli/local-bridge/frontend/src/components/DetailPane.tsx +0 -3
  611. package/src/cli/local-bridge/frontend/src/components/SearchField.tsx +0 -1
  612. package/src/cli/local-bridge/frontend/src/components/SectionHeader.tsx +0 -1
  613. package/src/cli/local-bridge/frontend/src/components/Segmented.tsx +0 -1
  614. package/src/cli/local-bridge/frontend/src/components/StatusText.tsx +0 -3
  615. package/src/cli/local-bridge/frontend/src/design/icons.tsx +0 -11
  616. package/src/cli/local-bridge/frontend/src/design/tokens.css +0 -8
  617. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +0 -153
  618. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +0 -37
  619. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +0 -183
  620. package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +0 -2
  621. package/src/cli/local-bridge/frontend/src/features/system/SystemView.tsx +0 -2
  622. package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +0 -4
  623. package/src/cli/local-bridge/frontend/src/lib/api.ts +0 -30
  624. package/src/cli/local-bridge/frontend/src/lib/format.ts +0 -4
  625. package/src/cli/local-bridge/frontend/src/lib/routes.ts +0 -7
  626. package/src/cli/local-bridge/frontend/src/main.tsx +0 -1
  627. package/src/cli/local-bridge/frontend/src/shell/AppShell.tsx +0 -1
  628. package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +0 -2
  629. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +0 -4
  630. package/src/cli/local-bridge/frontend/src/styles.css +0 -28
  631. package/src/cli/local-bridge/frontend/src/types.ts +0 -15
  632. package/src/cli/local-bridge/frontend/src/vite-env.d.ts +0 -1
  633. package/src/cli/local-bridge/frontend/vite.config.ts +0 -27
  634. package/src/cli/local-bridge/ui-dist/app.css +0 -1
  635. package/src/cli/local-bridge/ui-dist/app.js +0 -11228
  636. package/src/cli/mcp/access-mode.ts +0 -2
  637. package/src/cli/mcp/access-tools.ts +0 -2
  638. package/src/cli/mcp/audit.ts +0 -2
  639. package/src/cli/mcp/auth.ts +0 -2
  640. package/src/cli/mcp/instructions.ts +0 -2
  641. package/src/cli/mcp/legacy-context.ts +0 -2
  642. package/src/cli/mcp/legacy-tool-service.ts +0 -2
  643. package/src/cli/mcp/multi-repository.ts +0 -2
  644. package/src/cli/mcp/oauth.ts +0 -2
  645. package/src/cli/mcp/openai-secure-tunnel.ts +0 -2
  646. package/src/cli/mcp/paths.ts +0 -2
  647. package/src/cli/mcp/policy.ts +0 -2
  648. package/src/cli/mcp/post-finalize-work-attribution.ts +0 -2
  649. package/src/cli/mcp/proxy-env.ts +0 -2
  650. package/src/cli/mcp/readiness-projection.ts +0 -2
  651. package/src/cli/mcp/redaction.ts +0 -2
  652. package/src/cli/mcp/repo.ts +0 -2
  653. package/src/cli/mcp/repository-tools.ts +0 -2
  654. package/src/cli/mcp/server.ts +0 -2
  655. package/src/cli/mcp/setup.ts +0 -2
  656. package/src/cli/mcp/tool-capability-cache.ts +0 -2
  657. package/src/cli/mcp/tool-contract.ts +0 -2
  658. package/src/cli/mcp/tools.ts +0 -2
  659. package/src/cli/mcp/toolset-names.ts +0 -2
  660. package/src/cli/mcp/toolset-selection.ts +0 -2
  661. package/src/cli/mcp/toolset.ts +0 -2
  662. package/src/cli/mcp/transports/http.ts +0 -2
  663. package/src/cli/mcp/transports/session-registry.ts +0 -2
  664. package/src/cli/mcp/transports/stdio.ts +0 -2
  665. package/src/cli/mcp/types.ts +0 -2
  666. package/src/cli/mcp/umbrella-tools.ts +0 -2
  667. package/src/cli/tools/codegraph.ts +0 -695
  668. package/src/core/adoption/helper-wrapper-plan.ts +0 -159
  669. package/src/runtime/context/codegraph-cache-boundary.ts +0 -255
  670. package/src/runtime/context/codegraph-read-provider.ts +0 -611
  671. package/src/runtime/context/codegraph-sidecar.cjs +0 -248
  672. package/src/runtime/control-plane/codegraph-cache-retention.ts +0 -164
  673. package/src/runtime/control-plane/execution/content-equivalent-commit-authority.ts +0 -169
  674. package/src/runtime/control-plane/execution/direct-canonical-work-reconciliation.ts +0 -85
  675. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +0 -655
  676. package/src/runtime/control-plane/execution/work-finalization-service.ts +0 -2850
  677. package/src/runtime/control-plane/execution/work-path-scope.ts +0 -37
  678. package/src/runtime/control-plane/execution/work-task-receipt.ts +0 -468
  679. package/src/runtime/control-plane/facade/controller-round-relay.ts +0 -3
  680. package/src/runtime/control-plane/facade/work-admission-policy.ts +0 -142
  681. package/src/runtime/control-plane/facade/work-implementation-review.ts +0 -2
  682. package/src/runtime/control-plane/facade/work-state-machine.ts +0 -2
  683. package/src/runtime/control-plane/facade/work-task-projection.ts +0 -66
  684. package/src/runtime/control-plane/routing/index.ts +0 -1
  685. package/src/runtime/control-plane/routing/route-policy.ts +0 -401
  686. package/src/runtime/control-plane/routing/workspace-admission.ts +0 -70
  687. package/src/runtime/gateway/mcp/execution-tools.ts +0 -2
  688. package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +0 -2
  689. package/src/runtime/gateway/mcp/persisted-check-process.ts +0 -2
  690. package/src/runtime/gateway/mcp/process-tools.ts +0 -2
  691. package/src/runtime/gateway/mcp/router.ts +0 -2
  692. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +0 -2
  693. package/src/runtime/gateway/mcp/runtime-tools.ts +0 -2
  694. package/src/runtime/gateway/mcp/work-validation-reconciler.ts +0 -2
  695. package/src/runtime/plugins/browser-provider-registry.ts +0 -2
@@ -14,13 +14,6 @@ export type PolicySideEffect =
14
14
  | 'destructive_remote'
15
15
  | 'raw_secret_config';
16
16
 
17
- export interface DirectEditBoundary {
18
- scopeClear: boolean;
19
- maxChangedFiles?: number;
20
- maxChangedLines?: number;
21
- pathsExplicit?: boolean;
22
- }
23
-
24
17
  export interface PolicyGateInput {
25
18
  capability?: CapabilityDescriptor;
26
19
  capabilityId?: string;
@@ -29,7 +22,6 @@ export interface PolicyGateInput {
29
22
  accessMode?: AccessMode;
30
23
  approvalConfirmed?: boolean;
31
24
  dryRun?: boolean;
32
- directEditBoundary?: DirectEditBoundary;
33
25
  }
34
26
 
35
27
  function approvalAction(reason: string, capabilityId?: string): SuggestedNextAction {
@@ -62,11 +54,6 @@ function accessEffectFromSideEffect(sideEffect: PolicySideEffect): AccessEffect
62
54
  return 'secret_access';
63
55
  }
64
56
 
65
- function directEditWithinBoundary(boundary: DirectEditBoundary | undefined): boolean {
66
- if (!boundary) return false;
67
- return boundary.scopeClear && boundary.pathsExplicit === true && (boundary.maxChangedFiles ?? 99) <= 3 && (boundary.maxChangedLines ?? 9999) <= 200;
68
- }
69
-
70
57
  export function evaluatePolicyGate(input: PolicyGateInput): PolicyDecision {
71
58
  const capabilityId = input.capability?.capabilityId ?? input.capabilityId;
72
59
  const risk = input.risk ?? input.capability?.risk;
@@ -108,16 +95,6 @@ export function evaluatePolicyGate(input: PolicyGateInput): PolicyDecision {
108
95
  };
109
96
  }
110
97
 
111
- if (sideEffect === 'local_repo_write' && directEditWithinBoundary(input.directEditBoundary)) {
112
- return {
113
- decision: 'allowed',
114
- reason: 'Bounded direct edit is within the lightweight Direct Control policy boundary.',
115
- capabilityId,
116
- warnings,
117
- suggestedNextActions: [],
118
- };
119
- }
120
-
121
98
  if (input.approvalConfirmed) {
122
99
  return {
123
100
  decision: 'allowed',
@@ -1,5 +1,4 @@
1
1
  import type { AccessMode } from '../governance/access-policy';
2
- import type { RouteDecision } from '../routing/route-policy';
3
2
  import { createWorkContract, executionPlacementForWork, getWorkContract, updateWorkContract, type WorkContractStoreOptions } from '../../../../packages/kernel/work/api/index';
4
3
  import { executionPlacement, readForgeInstanceIdentity } from '../../../../packages/kernel/identity/api/index';
5
4
  import type { WorkContract } from './types';
@@ -18,12 +17,15 @@ export interface PreparedRepositoryWorkAdmissionInput {
18
17
  repoId: string;
19
18
  objective: string;
20
19
  acceptanceCriteria: string[];
21
- allowedPaths: string[];
22
20
  checks: string[];
23
21
  accessMode: AccessMode;
24
22
  isolated: boolean;
25
23
  requestedBy: WorkContract['requestedBy'];
26
24
  requestId: string;
25
+ /** Legacy ingress-only path hints; concrete mutation scope is EditSession-owned. */
26
+ allowedPaths?: string[];
27
+ /** Legacy ingress-only path hints; concrete mutation scope is EditSession-owned. */
28
+ forbiddenPaths?: string[];
27
29
  }
28
30
 
29
31
  /**
@@ -39,17 +41,12 @@ export function admitPreparedRepositoryWorkContract(
39
41
  workId: input.workId,
40
42
  repoId: input.repoId,
41
43
  executionPlacement: repositoryExecutionPlacement(store, input.repoId),
42
- mode: input.isolated ? 'goal_workloop' : 'direct_control',
43
44
  objective: input.objective,
44
45
  acceptanceCriteria: input.acceptanceCriteria,
45
- allowedPaths: input.allowedPaths,
46
- forbiddenPaths: [],
47
46
  checks: input.checks,
48
47
  constraints: {
49
48
  accessMode: input.accessMode,
50
49
  workspaceMode: input.isolated ? 'isolated' : 'current',
51
- requireWorktree: input.isolated,
52
- directMainProhibited: input.isolated,
53
50
  allowCommit: true,
54
51
  allowMerge: true,
55
52
  allowCleanup: true,
@@ -71,27 +68,26 @@ export interface DirectEditWorkAdmissionInput {
71
68
  controllerInstanceId?: string;
72
69
  baseRevision?: string;
73
70
  workspaceFingerprint: string;
74
- routeDecision: RouteDecision;
75
71
  objective: string;
76
72
  issueId?: string;
77
73
  taskId?: string;
78
- allowedPaths: string[];
79
74
  checks: string[];
80
75
  requestedBy: WorkContract['requestedBy'];
76
+ /** Legacy ingress-only path hints; concrete mutation scope is EditSession-owned. */
77
+ allowedPaths?: string[];
78
+ /** Legacy ingress-only path hints; concrete mutation scope is EditSession-owned. */
79
+ forbiddenPaths?: string[];
81
80
  }
82
81
 
83
82
  /**
84
83
  * Canonical compatibility admission for an Edit Session bound to Direct Work.
85
- * The caller supplies the canonical Route Policy decision as evidence; this
86
- * boundary rejects any decision that requires isolation or a non-direct lane.
84
+ * Direct-edit admission is selected explicitly by this capability boundary;
85
+ * no route/mode token authorizes or rejects the operation.
87
86
  */
88
87
  export function admitDirectEditWorkContract(
89
88
  store: WorkContractStoreOptions,
90
89
  input: DirectEditWorkAdmissionInput,
91
90
  ): WorkContract {
92
- if (input.routeDecision.executionMode !== 'direct_control' || input.routeDecision.requiresIsolation) {
93
- throw new Error('DIRECT_EDIT_WORK_ROUTE_CONFLICT: canonical Route Policy does not permit Direct Control');
94
- }
95
91
  return createWorkContract(store, {
96
92
  workId: input.workId,
97
93
  repoId: input.repoId,
@@ -101,20 +97,15 @@ export function admitDirectEditWorkContract(
101
97
  controllerInstanceId: input.controllerInstanceId,
102
98
  baseRevision: input.baseRevision,
103
99
  workspaceFingerprint: input.workspaceFingerprint,
104
- routeDecisionFingerprint: input.routeDecision.inputFingerprint,
105
- routeDecision: input.routeDecision,
106
- mode: 'direct_control',
107
100
  objective: input.objective,
108
101
  acceptanceCriteria: [],
109
- constraints: { workspaceMode: 'current', requireWorktree: false, requireHandoffOnAmbiguity: true },
102
+ constraints: { workspaceMode: 'current' },
110
103
  risk: 'low',
111
- status: 'running',
104
+ dispatchState: 'running',
112
105
  phase: 'implementation',
113
106
  issueId: input.issueId,
114
107
  taskId: input.taskId,
115
108
  scopeSummary: input.objective,
116
- allowedPaths: input.allowedPaths,
117
- forbiddenPaths: [],
118
109
  checks: input.checks,
119
110
  requestedBy: input.requestedBy,
120
111
  evidenceRefs: [],
@@ -160,6 +151,5 @@ export function materializeRepositoryWorkPlacement(
160
151
  }),
161
152
  baseRevision: workspace.baseRevision ?? contract.baseRevision,
162
153
  worktreeRef: workspace.root,
163
- driver: { ...contract.driver, preferred: 'isolated_worktree', allowDirectEdit: false },
164
154
  });
165
155
  }
@@ -1,20 +1,14 @@
1
1
  import {
2
+ bindRequirementCandidateAuditRef,
2
3
  createRequirement,
4
+ listRequirements,
3
5
  readRequirement,
4
- updateRequirement,
5
6
  type CreateRequirementInput,
6
7
  type Requirement,
7
8
  type RequirementStoreOptions,
8
9
  } from '../persistence/requirement-store';
9
- import { readPlanContractStore } from './plan-contract-store';
10
- import { withPlanAdmissionLock } from './semantic-admission';
11
- import {
12
- getControllerRoundRelay,
13
- submitControllerRoundDisposition,
14
- type ControllerRoundRelayRecord,
15
- type SubmitControllerRoundDispositionInput,
16
- } from '../../../../packages/kernel/controller/api/index';
17
- import { getWorkContract } from '../../../../packages/kernel/work/api/index';
10
+ import { cognitionMemoryStore } from '../persistence/cognition-store';
11
+ import { memoryAddressKey, type MemoryUnit } from '../../../../packages/kernel/cognition/api/index';
18
12
 
19
13
  export type RequirementAdmissionDecision = 'created' | 'reuse_existing' | 'existing_conflict';
20
14
 
@@ -47,6 +41,7 @@ export function normalizeRequirementAdmissionInput(input: CreateRequirementInput
47
41
  acceptanceCriteria: bounded(input.acceptanceCriteria, 50),
48
42
  requiredDeliveryReferences: bounded(input.requiredDeliveryReferences, 50),
49
43
  legacyAliases: bounded(input.legacyAliases, 20, 160),
44
+ auditRefs: bounded(input.auditRefs, 50),
50
45
  };
51
46
  if (!normalized.title || !normalized.outcomeStatement) throw new Error('REQUIREMENT_CONTENT_REQUIRED');
52
47
  return normalized;
@@ -92,210 +87,118 @@ export function admitRequirement(
92
87
  }
93
88
  }
94
89
 
90
+ export type RequirementCandidatePromotionDecision =
91
+ | RequirementAdmissionDecision
92
+ | 'candidate_already_promoted';
95
93
 
96
- export interface RequirementContinueResult {
97
- requirement: Requirement;
98
- resumed: boolean;
99
- }
100
-
101
- /**
102
- * Canonical explicit semantic continue for a Requirement that is waiting on
103
- * ChatGPT/user judgement. Persistence owns transition legality; this facade
104
- * owns the semantic meaning so adapters and launchers never mutate Requirement
105
- * state directly.
106
- */
107
- export function continueRequirement(
108
- options: RequirementStoreOptions,
109
- requirementId: string,
110
- ): RequirementContinueResult {
111
- const normalizedId = String(requirementId ?? '').trim();
112
- const current = readRequirement(options, normalizedId)?.value;
113
- if (!current) throw new Error(`REQUIREMENT_NOT_FOUND: ${normalizedId}`);
114
- if (current.state === 'active') return { requirement: current, resumed: false };
115
- if (current.state === 'done' || current.state === 'cancelled') {
116
- throw new Error(`REQUIREMENT_TERMINAL: ${current.requirementId}:${current.state}`);
117
- }
118
- if (current.state !== 'waiting_for_user') {
119
- throw new Error(`REQUIREMENT_CONTINUE_NOT_WAITING: ${current.requirementId}:${current.state}`);
120
- }
121
-
122
- const requirement = updateRequirement(options, {
123
- requirementId: current.requirementId,
124
- action: 'requirement_semantic_continue',
125
- mutate: (latest) => {
126
- if (latest.state === 'active') return latest;
127
- if (latest.state === 'done' || latest.state === 'cancelled') {
128
- throw new Error(`REQUIREMENT_TERMINAL: ${latest.requirementId}:${latest.state}`);
129
- }
130
- if (latest.state !== 'waiting_for_user') {
131
- throw new Error(`REQUIREMENT_CONTINUE_NOT_WAITING: ${latest.requirementId}:${latest.state}`);
132
- }
133
- return {
134
- ...latest,
135
- state: 'active',
136
- needsAttention: false,
137
- attentionSummary: undefined,
138
- };
139
- },
140
- });
141
- return { requirement, resumed: true };
142
- }
143
-
144
- export interface RequirementAcceptanceResult {
145
- requirement: Requirement;
146
- accepted: boolean;
147
- finalizedPlanIds: string[];
148
- }
149
-
150
- export interface RequirementAcceptanceReadiness {
94
+ export interface RequirementCandidatePromotionResult {
95
+ decision: RequirementCandidatePromotionDecision;
151
96
  requirement: Requirement;
152
- finalizedPlanIds: string[];
97
+ created: boolean;
98
+ candidateAuditRef: string;
99
+ candidateMemoryId: string;
100
+ workspaceId: string;
153
101
  }
154
102
 
155
- function requirementAcceptanceContext(
156
- options: RequirementStoreOptions & { repoId: string },
157
- input: { requirementId: string; workId: string; reviewer: string; rationale: string },
158
- ): RequirementAcceptanceReadiness {
159
- const requirementId = String(input.requirementId ?? '').trim();
160
- const workId = String(input.workId ?? '').trim();
161
- const reviewer = String(input.reviewer ?? '').trim();
162
- const rationale = String(input.rationale ?? '').trim();
163
- if (!requirementId) throw new Error('REQUIREMENT_ACCEPTANCE_ID_REQUIRED');
164
- if (!workId) throw new Error('REQUIREMENT_ACCEPTANCE_WORK_REQUIRED');
165
- if (!reviewer || !rationale) throw new Error('REQUIREMENT_ACCEPTANCE_METADATA_REQUIRED');
166
-
167
- const current = readRequirement(options, requirementId)?.value;
168
- if (!current) throw new Error(`REQUIREMENT_NOT_FOUND: ${requirementId}`);
169
- if (current.state === 'cancelled') throw new Error(`REQUIREMENT_TERMINAL: ${requirementId}:cancelled`);
170
- if (current.state === 'planned') throw new Error(`REQUIREMENT_ACCEPTANCE_NOT_ACTIVE: ${requirementId}:planned`);
171
- if (current.state === 'done') {
172
- return { requirement: current, finalizedPlanIds: current.semanticAcceptance?.planIds ?? [] };
173
- }
174
-
175
- const currentPlans = readPlanContractStore({ controllerHome: options.controllerHome, repoId: options.repoId, now: options.now })
176
- .contracts
177
- .filter((plan) => plan.requirementId === requirementId && !plan.supersededBy?.trim() && plan.status !== 'superseded');
178
- const incomplete = currentPlans.filter((plan) => plan.status !== 'finalized');
179
- if (incomplete.length > 0) {
180
- throw new Error(`REQUIREMENT_ACCEPTANCE_PLAN_INCOMPLETE: ${incomplete.map((plan) => `${plan.planId}:${plan.status}`).join(',')}`);
181
- }
182
- const work = getWorkContract({ controllerHome: options.controllerHome, repoId: options.repoId }, workId);
183
- if (!work) throw new Error(`REQUIREMENT_ACCEPTANCE_WORK_NOT_FOUND: ${workId}`);
184
- if (work.requirementId !== requirementId) throw new Error(`REQUIREMENT_ACCEPTANCE_WORK_MISMATCH: ${workId}:${work.requirementId ?? 'none'}:${requirementId}`);
185
- if (work.status !== 'completed') throw new Error(`REQUIREMENT_ACCEPTANCE_WORK_NOT_COMPLETED: ${workId}:${work.status}`);
186
- return { requirement: current, finalizedPlanIds: currentPlans.map((plan) => plan.planId).sort() };
103
+ function activeRequirementCandidate(memory: MemoryUnit, at: string): boolean {
104
+ return !memory.retractedAt
105
+ && memory.validFrom <= at
106
+ && (!memory.expiresAt || memory.expiresAt > at)
107
+ && memory.facets.includes('candidate-finding')
108
+ && memory.facets.includes('requirement-candidate')
109
+ && memory.facets.includes('advisory')
110
+ && memory.concepts.includes('forge.requirement-candidate')
111
+ && memory.provenance.sourceKind === 'system'
112
+ && Boolean(memory.provenance.sourceId?.startsWith('cognitive-requirement-candidate:promoted:'))
113
+ && memory.provenance.evidenceRefs.length > 0;
187
114
  }
188
115
 
189
- function acceptRequirementOutcomeUnlocked(
190
- options: RequirementStoreOptions & { repoId: string },
191
- input: { requirementId: string; workId: string; reviewer: string; rationale: string },
192
- ): RequirementAcceptanceResult {
193
- const context = requirementAcceptanceContext(options, input);
194
- const requirementId = context.requirement.requirementId;
195
- const reviewer = String(input.reviewer ?? '').trim();
196
- const rationale = String(input.rationale ?? '').trim();
197
- const relay = getControllerRoundRelay({ controllerHome: options.controllerHome, repoId: options.repoId }, input.workId);
198
- if (!relay) throw new Error(`REQUIREMENT_ACCEPTANCE_GOAL_COMPLETE_REQUIRED: ${input.workId}:missing_relay`);
199
- if (relay.originWorkId !== input.workId
200
- || relay.requirementId !== requirementId
201
- || relay.disposition !== 'goal_complete'
202
- || relay.status !== 'goal_complete') {
203
- throw new Error(`REQUIREMENT_ACCEPTANCE_GOAL_COMPLETE_REQUIRED: ${input.workId}:${relay.status}:${relay.disposition}`);
204
- }
205
- if (relay.principalId !== reviewer) {
206
- throw new Error(`REQUIREMENT_ACCEPTANCE_CONTROLLER_MISMATCH: ${input.workId}:${relay.principalId}:${reviewer}`);
116
+ function validatedRequirementCandidate(
117
+ options: RequirementStoreOptions,
118
+ workspaceId: string,
119
+ candidateMemoryId: string,
120
+ ): MemoryUnit {
121
+ const workspace = String(workspaceId ?? '').trim();
122
+ const memoryId = String(candidateMemoryId ?? '').trim();
123
+ if (!workspace || !memoryId) throw new Error('REQUIREMENT_CANDIDATE_SCOPE_REQUIRED');
124
+ const scope = { schemaVersion: 1 as const, kind: 'workspace' as const, id: workspace };
125
+ const store = cognitionMemoryStore(options.controllerHome);
126
+ const candidate = store.read(scope, memoryId);
127
+ if (!candidate || !activeRequirementCandidate(candidate, options.now?.() ?? new Date().toISOString())) {
128
+ throw new Error(`REQUIREMENT_CANDIDATE_INVALID: ${memoryId}`);
207
129
  }
208
- if (context.requirement.state === 'done') {
209
- return { requirement: context.requirement, accepted: false, finalizedPlanIds: context.finalizedPlanIds };
130
+ const sourceId = candidate.provenance.sourceId!.slice('cognitive-requirement-candidate:'.length);
131
+ const source = store.read(scope, sourceId);
132
+ if (!source
133
+ || !source.id.startsWith('promoted:')
134
+ || source.retractedAt
135
+ || !source.facets.includes('cross-project')
136
+ || !source.facets.includes('engineering-principle')
137
+ || candidate.provenance.evidenceRefs.some(ref => !source.provenance.evidenceRefs.includes(ref))) {
138
+ throw new Error(`REQUIREMENT_CANDIDATE_SOURCE_INVALID: ${memoryId}`);
210
139
  }
211
-
212
- const acceptedAt = options.now?.() ?? new Date().toISOString();
213
- let accepted = false;
214
- const requirement = updateRequirement(options, {
215
- requirementId,
216
- action: 'requirement_semantic_acceptance',
217
- mutate: (latest) => {
218
- if (latest.state === 'done') return latest;
219
- if (latest.state === 'cancelled') throw new Error(`REQUIREMENT_TERMINAL: ${requirementId}:cancelled`);
220
- if (latest.state === 'planned') throw new Error(`REQUIREMENT_ACCEPTANCE_NOT_ACTIVE: ${requirementId}:planned`);
221
- accepted = true;
222
- return {
223
- ...latest,
224
- state: 'done',
225
- needsAttention: false,
226
- attentionSummary: undefined,
227
- semanticAcceptance: {
228
- reviewer: reviewer.slice(0, 256),
229
- rationale: rationale.slice(0, 2_000),
230
- planIds: context.finalizedPlanIds,
231
- acceptedAt,
232
- },
233
- };
234
- },
235
- });
236
- return { requirement, accepted, finalizedPlanIds: context.finalizedPlanIds };
140
+ return candidate;
237
141
  }
238
142
 
239
- /**
240
- * Canonical explicit semantic acceptance for a Requirement. Direct callers are
241
- * serialized with Plan admission so Requirement completion cannot race a new
242
- * current Plan slice into existence.
243
- */
244
- export function acceptRequirementOutcome(
245
- options: RequirementStoreOptions & { repoId: string },
246
- input: { requirementId: string; workId: string; reviewer: string; rationale: string },
247
- ): RequirementAcceptanceResult {
248
- return withPlanAdmissionLock(options, () => acceptRequirementOutcomeUnlocked(options, input));
143
+ export function requirementCandidateAuditRef(workspaceId: string, candidate: Pick<MemoryUnit, 'id' | 'revision'>): string {
144
+ const scope = { schemaVersion: 1 as const, kind: 'workspace' as const, id: String(workspaceId).trim() };
145
+ return `cognitive-requirement-candidate:${memoryAddressKey({ scope, id: candidate.id })}:r${candidate.revision}`;
249
146
  }
250
147
 
251
- export interface RequirementGoalCompletionResult {
252
- relay: ControllerRoundRelayRecord;
253
- requirementAcceptance: RequirementAcceptanceResult;
148
+ function requirementByCandidateAuditRef(options: RequirementStoreOptions, candidateAuditRef: string): Requirement | undefined {
149
+ return listRequirements(options, 1000)
150
+ .map(record => record.value)
151
+ .find(requirement => requirement.auditRefs.includes(candidateAuditRef));
254
152
  }
255
153
 
256
- /**
257
- * One Goal application boundary for Requirement-bound goal_complete. The same
258
- * short semantic lock used by Plan admission covers readiness, ControllerRound
259
- * disposition persistence, and Requirement acceptance. A retry reuses an
260
- * already-recorded goal_complete relay and repairs only the missing Requirement
261
- * projection; no second ControllerRound or Plan authority is created.
262
- */
263
- export function completeRequirementGoal(
264
- options: RequirementStoreOptions & { repoId: string },
265
- input: Omit<SubmitControllerRoundDispositionInput, 'disposition' | 'requirementId' | 'reason'> & {
266
- requirementId: string;
267
- rationale: string;
154
+ export function promoteRequirementCandidate(
155
+ options: RequirementStoreOptions,
156
+ input: Omit<CreateRequirementInput, 'auditRefs'> & {
157
+ workspaceId: string;
158
+ candidateMemoryId: string;
268
159
  },
269
- ): RequirementGoalCompletionResult {
270
- return withPlanAdmissionLock(options, () => {
271
- const reviewer = input.identity.principalId.trim();
272
- const readinessInput = {
273
- requirementId: input.requirementId,
274
- workId: input.workId,
275
- reviewer,
276
- rationale: input.rationale,
160
+ ): RequirementCandidatePromotionResult {
161
+ const candidate = validatedRequirementCandidate(options, input.workspaceId, input.candidateMemoryId);
162
+ const candidateAuditRef = requirementCandidateAuditRef(input.workspaceId, candidate);
163
+ const prior = requirementByCandidateAuditRef(options, candidateAuditRef);
164
+ if (prior && prior.requirementId !== String(input.requirementId ?? '').trim()) {
165
+ return {
166
+ decision: 'candidate_already_promoted',
167
+ requirement: prior,
168
+ created: false,
169
+ candidateAuditRef,
170
+ candidateMemoryId: candidate.id,
171
+ workspaceId: input.workspaceId,
277
172
  };
278
- requirementAcceptanceContext(options, readinessInput);
173
+ }
279
174
 
280
- const existing = getControllerRoundRelay(options, input.workId);
281
- let relay: ControllerRoundRelayRecord;
282
- if (existing?.status === 'goal_complete' && existing.disposition === 'goal_complete') {
283
- relay = existing;
284
- } else {
285
- try {
286
- relay = submitControllerRoundDisposition(options, {
287
- ...input,
288
- disposition: 'goal_complete',
289
- requirementId: input.requirementId,
290
- reason: input.rationale,
291
- });
292
- } catch (error) {
293
- const raced = getControllerRoundRelay(options, input.workId);
294
- if (!raced || raced.status !== 'goal_complete' || raced.disposition !== 'goal_complete') throw error;
295
- relay = raced;
296
- }
297
- }
298
- const requirementAcceptance = acceptRequirementOutcomeUnlocked(options, readinessInput);
299
- return { relay, requirementAcceptance };
300
- });
175
+ try {
176
+ const admission = admitRequirement(options, {
177
+ ...input,
178
+ auditRefs: [candidateAuditRef],
179
+ });
180
+ const requirement = admission.decision === 'reuse_existing'
181
+ && !admission.requirement.auditRefs.includes(candidateAuditRef)
182
+ ? bindRequirementCandidateAuditRef(options, admission.requirement.requirementId, candidateAuditRef)
183
+ : admission.requirement;
184
+ return {
185
+ ...admission,
186
+ requirement,
187
+ candidateAuditRef,
188
+ candidateMemoryId: candidate.id,
189
+ workspaceId: input.workspaceId,
190
+ };
191
+ } catch (error) {
192
+ if (!(error instanceof Error) || error.message !== 'REQUIREMENT_CANDIDATE_ALREADY_PROMOTED') throw error;
193
+ const raced = requirementByCandidateAuditRef(options, candidateAuditRef);
194
+ if (!raced) throw error;
195
+ return {
196
+ decision: 'candidate_already_promoted',
197
+ requirement: raced,
198
+ created: false,
199
+ candidateAuditRef,
200
+ candidateMemoryId: candidate.id,
201
+ workspaceId: input.workspaceId,
202
+ };
203
+ }
301
204
  }
@@ -77,7 +77,7 @@ function loadScopedWork(options: RequirementBoardOptions): WorkContract[] {
77
77
  return listWorkContracts({
78
78
  controllerHome: options.controllerHome,
79
79
  repoId: options.repoId,
80
- status: 'all',
80
+ state: 'all',
81
81
  limit: 100,
82
82
  });
83
83
  }
@@ -224,7 +224,7 @@ function summarizeDiagnosticWork(work: WorkContract): Record<string, unknown> {
224
224
  worktreeRef: work.worktreeRef,
225
225
  handoffRefs: work.handoffRefs.slice(-3),
226
226
  },
227
- detailPointer: { tool: 'work_get', arguments: { work_id: work.workId, include_events: true } },
227
+ detailPointer: { tool: 'rh_work', arguments: { operation: 'get', work_id: work.workId, detail_level: 'detail' } },
228
228
  };
229
229
  }
230
230
 
@@ -292,7 +292,7 @@ export function buildExecutionDiagnostics(
292
292
  maintenanceFindingTruncatedCount: Math.max(0, requirements.filter((requirement) => requirement.needsAttention).length - maintenanceFindings.length),
293
293
  projectionWarnings,
294
294
  technicalDetailPointers: [
295
- { tool: 'work_list', arguments: { limit: 50 } },
295
+ { tool: 'rh_context', arguments: { operation: 'list', detail_level: 'detail' } },
296
296
  { tool: 'controller_ready', arguments: {} },
297
297
  { tool: 'workflow_watchdog_report', arguments: { include_processes: true } },
298
298
  { tool: 'get_project_governance', arguments: {} },
@@ -8,26 +8,20 @@
8
8
  */
9
9
  export const RH_WORK_OPERATIONS = [
10
10
  'start',
11
- 'continue',
12
- 'verify',
13
- 'review',
14
11
  'repair',
15
- 'finalize',
16
- 'stop',
17
- 'delegate',
18
- 'controller_claim',
19
- 'controller_release',
20
- 'controller_disposition',
21
- 'controller_get_owner',
12
+ 'list',
13
+ 'get',
14
+ 'revise',
15
+ 'complete',
22
16
  'launcher_start',
23
17
  'requirement_create',
24
- 'requirement_continue',
18
+ 'requirement_get',
19
+ 'requirement_revise',
20
+ 'requirement_promote_candidate',
25
21
  'plan_create',
26
22
  'plan_get',
23
+ 'plan_revise',
27
24
  'plan_list',
28
- 'plan_approve',
29
- 'plan_accept_step',
30
- 'plan_supersede',
31
25
  'schedule_create',
32
26
  'schedule_list',
33
27
  'schedule_get',
@@ -37,6 +31,45 @@ export const RH_WORK_OPERATIONS = [
37
31
  'schedule_trigger',
38
32
  'workflow_execute',
39
33
  'workflow_reconcile',
34
+ 'learning_record',
35
+ 'learning_feedback',
36
+ 'outcome_record',
37
+ 'experience_record',
38
+ ] as const;
39
+
40
+ /**
41
+ * There is intentionally no legacy lifecycle operation set. A Runtime that
42
+ * has rolled over to Thin Forge rejects the former verify/review/finalize and
43
+ * controller-claim vocabulary instead of silently translating it.
44
+ */
45
+
46
+ export const RH_WORK_MODEL_OPERATIONS = [
47
+ 'start',
48
+ 'repair',
49
+ 'list',
50
+ 'get',
51
+ 'revise',
52
+ 'complete',
53
+ 'launcher_start',
54
+ 'requirement_create',
55
+ 'requirement_get',
56
+ 'requirement_revise',
57
+ 'requirement_promote_candidate',
58
+ 'plan_create',
59
+ 'plan_get',
60
+ 'plan_revise',
61
+ 'plan_list',
62
+ 'schedule_create',
63
+ 'schedule_list',
64
+ 'schedule_get',
65
+ 'schedule_pause',
66
+ 'schedule_resume',
67
+ 'schedule_delete',
68
+ 'schedule_trigger',
69
+ 'workflow_execute',
70
+ 'workflow_reconcile',
71
+ 'learning_record',
72
+ 'learning_feedback',
40
73
  'outcome_record',
41
74
  'experience_record',
42
75
  ] as const;
@@ -46,3 +79,7 @@ export type RhWorkOperation = (typeof RH_WORK_OPERATIONS)[number];
46
79
  export function isRhWorkOperation(operation: string): operation is RhWorkOperation {
47
80
  return (RH_WORK_OPERATIONS as readonly string[]).includes(operation);
48
81
  }
82
+
83
+ export function isRhWorkAcceptedOperation(operation: string): boolean {
84
+ return isRhWorkOperation(operation);
85
+ }