@moretea-labs/forge 1.7.1 → 1.8.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 (685) hide show
  1. package/AGENTS.md +58 -62
  2. package/CHANGELOG.md +39 -0
  3. package/CLAUDE.md +42 -62
  4. package/README.md +2 -2
  5. package/SKILL.md +0 -1
  6. package/THIRD_PARTY_NOTICES.md +5 -2
  7. package/adapters/browser/index.ts +2 -0
  8. package/adapters/chatgpt/browser-delivery-host.ts +71 -0
  9. package/adapters/chatgpt/browser-delivery-runtime.ts +783 -0
  10. package/adapters/chatgpt/controller-binding-store.ts +55 -0
  11. package/adapters/chatgpt/controller-host.ts +119 -0
  12. package/adapters/chatgpt/controller-round-host.ts +78 -0
  13. package/adapters/chatgpt/controller-round-settlement-store.ts +45 -0
  14. package/adapters/chatgpt/provider-delivery.ts +113 -0
  15. package/adapters/chatgpt/work-conversation-binding-store.ts +192 -0
  16. package/adapters/chatgpt/wsl-bridge-delivery-host.ts +63 -0
  17. package/adapters/computer/desktop-operator-contract.ts +7 -0
  18. package/adapters/computer/desktop-operator-discovery.ts +201 -0
  19. package/adapters/computer/desktop-operator-negotiation.ts +174 -0
  20. package/adapters/computer/desktop-operator-provider.ts +312 -0
  21. package/adapters/computer/index.ts +1 -0
  22. package/adapters/computer/interaction-target-authority.ts +944 -0
  23. package/adapters/controller-process/binding-store.ts +34 -0
  24. package/adapters/controller-process/controller-host.ts +26 -0
  25. package/adapters/mcp/access-mode.ts +132 -0
  26. package/adapters/mcp/audit.ts +32 -0
  27. package/adapters/mcp/auth.ts +407 -0
  28. package/adapters/mcp/controller-round-compatibility.ts +184 -0
  29. package/adapters/mcp/frozen-client-semantic-compatibility.ts +292 -0
  30. package/adapters/mcp/instructions.ts +36 -0
  31. package/adapters/mcp/legacy-context.ts +18 -0
  32. package/adapters/mcp/multi-repository.ts +437 -0
  33. package/adapters/mcp/oauth.ts +391 -0
  34. package/adapters/mcp/paths.ts +140 -0
  35. package/adapters/mcp/policy.ts +232 -0
  36. package/adapters/mcp/proxy-env.ts +62 -0
  37. package/adapters/mcp/readiness-projection.ts +24 -0
  38. package/adapters/mcp/redaction.ts +21 -0
  39. package/adapters/mcp/repo.ts +24 -0
  40. package/adapters/mcp/runtime-gateway/artifact-adapter.ts +52 -0
  41. package/adapters/mcp/runtime-gateway/context-adapter.ts +829 -0
  42. package/adapters/mcp/runtime-gateway/controller-authority-adapter.ts +191 -0
  43. package/adapters/mcp/runtime-gateway/engineering-preconditions.ts +147 -0
  44. package/adapters/mcp/runtime-gateway/execution-control-adapter.ts +28 -0
  45. package/adapters/mcp/runtime-gateway/execution-tools.ts +207 -0
  46. package/adapters/mcp/runtime-gateway/filesystem-adapter.ts +38 -0
  47. package/adapters/mcp/runtime-gateway/gateway-execution-adapter.ts +411 -0
  48. package/adapters/mcp/runtime-gateway/legacy-ios-tool-adapter.ts +105 -0
  49. package/adapters/mcp/runtime-gateway/maintenance-adapter.ts +44 -0
  50. package/adapters/mcp/runtime-gateway/model-adapter.ts +63 -0
  51. package/adapters/mcp/runtime-gateway/persisted-check-process.ts +3 -0
  52. package/adapters/mcp/runtime-gateway/plugin-adapter.ts +308 -0
  53. package/adapters/mcp/runtime-gateway/process-tools.ts +289 -0
  54. package/adapters/mcp/runtime-gateway/protected-computer-adapter.ts +76 -0
  55. package/adapters/mcp/runtime-gateway/recovery-adapter.ts +268 -0
  56. package/adapters/mcp/runtime-gateway/recovery-client-adapter.ts +70 -0
  57. package/adapters/mcp/runtime-gateway/recovery-tool-contract.ts +99 -0
  58. package/adapters/mcp/runtime-gateway/repository-compat-adapter.ts +110 -0
  59. package/adapters/mcp/runtime-gateway/result-adapter.ts +108 -0
  60. package/adapters/mcp/runtime-gateway/router.ts +728 -0
  61. package/adapters/mcp/runtime-gateway/runtime-observation-adapter.ts +1251 -0
  62. package/adapters/mcp/runtime-gateway/runtime-tool-definitions.ts +634 -0
  63. package/adapters/mcp/runtime-gateway/runtime-tool-shared.ts +27 -0
  64. package/adapters/mcp/runtime-gateway/runtime-tools.ts +68 -0
  65. package/adapters/mcp/runtime-gateway/scheduler-adapter.ts +186 -0
  66. package/adapters/mcp/runtime-gateway/shared-adapter.ts +25 -0
  67. package/adapters/mcp/runtime-gateway/status-inbox-adapter.ts +870 -0
  68. package/adapters/mcp/runtime-gateway/work-adapter.ts +3186 -0
  69. package/adapters/mcp/runtime-gateway/work-compat-adapter.ts +502 -0
  70. package/adapters/mcp/runtime-gateway/work-validation-reconciler.ts +1 -0
  71. package/adapters/mcp/server.ts +1048 -0
  72. package/adapters/mcp/setup.ts +791 -0
  73. package/adapters/mcp/tool-capability-cache.ts +87 -0
  74. package/adapters/mcp/tool-mapping/access-tools.ts +387 -0
  75. package/adapters/mcp/tool-mapping/legacy-tool-service.ts +5265 -0
  76. package/adapters/mcp/tool-mapping/post-finalize-work-attribution.ts +150 -0
  77. package/adapters/mcp/tool-mapping/repository-tools.ts +1691 -0
  78. package/adapters/mcp/tool-mapping/tools.ts +9 -0
  79. package/adapters/mcp/tool-mapping/umbrella-tools.ts +117 -0
  80. package/adapters/mcp/toolset-names.ts +74 -0
  81. package/adapters/mcp/toolset-selection.ts +41 -0
  82. package/adapters/mcp/toolset.ts +336 -0
  83. package/adapters/mcp/transports/http.ts +1456 -0
  84. package/adapters/mcp/transports/session-registry.ts +513 -0
  85. package/adapters/mcp/transports/stdio.ts +8 -0
  86. package/adapters/mcp/tunnels/openai-secure-tunnel.ts +139 -0
  87. package/adapters/mcp/types.ts +41 -0
  88. package/assets/AGENTS.md +2 -16
  89. package/assets/CLAUDE.md +2 -16
  90. package/assets/hooks/AGENTS.md +3 -14
  91. package/assets/hooks/CLAUDE.md +3 -14
  92. package/assets/hooks/hook-input.sh +9 -2
  93. package/assets/hooks/lib/workflow-state.sh +28 -10
  94. package/assets/hooks/prompt-guard.sh +63 -37
  95. package/assets/hooks/security-sentinel.sh +2 -1
  96. package/assets/hooks/session-start-context.sh +7 -5
  97. package/assets/hooks/stop-orchestrator.sh +13 -3
  98. package/assets/initializer-question-pack.v4.json +11 -7
  99. package/assets/partials/05-workflow.partial.md +18 -73
  100. package/assets/partials/07-footer.partial.md +1 -1
  101. package/assets/partials-agents/02-operating-mode.partial.md +1 -2
  102. package/assets/partials-agents/04-task-protocol.partial.md +14 -59
  103. package/assets/partials-agents/06-quality-safety.partial.md +11 -16
  104. package/assets/partials-agents/08-deep-docs.partial.md +1 -2
  105. package/assets/plan-map.json +11 -11
  106. package/assets/plugin-registry.v1.json +9 -3
  107. package/assets/plugin-trust-policy.v1.json +6 -0
  108. package/assets/recovery/ForgeRecovery.ps1 +100 -0
  109. package/assets/recovery/forge-wsl-rescue +271 -0
  110. package/assets/reference-configs/development-protocol.md +11 -15
  111. package/assets/reference-configs/document-generation.md +1 -1
  112. package/assets/reference-configs/global-working-rules.md +9 -1
  113. package/assets/reference-configs/harness-overview.md +22 -112
  114. package/assets/reference-configs/hook-operations.md +1 -1
  115. package/assets/reference-configs/sprint-contracts.md +2 -2
  116. package/assets/skill-version.json +2 -2
  117. package/assets/templates/helpers/architecture-event.ts +3 -34
  118. package/assets/templates/helpers/architecture-queue.sh +61 -10
  119. package/assets/templates/helpers/archive-workflow.sh +90 -180
  120. package/assets/templates/helpers/capability-config.ts +8 -11
  121. package/assets/templates/helpers/capability-resolver.ts +37 -19
  122. package/assets/templates/helpers/capture-plan.sh +2 -2
  123. package/assets/templates/helpers/check-architecture-sync.sh +1 -9
  124. package/assets/templates/helpers/check-task-sync.sh +82 -11
  125. package/assets/templates/helpers/check-task-workflow.sh +1 -3
  126. package/assets/templates/helpers/context-contract-sync.sh +1 -12
  127. package/assets/templates/helpers/contract-worktree.sh +26 -24
  128. package/assets/templates/helpers/ensure-task-workflow.sh +6 -8
  129. package/assets/templates/helpers/inspect-project-state.ts +1 -1
  130. package/assets/templates/helpers/migrate-project-template.sh +1 -1
  131. package/assets/templates/helpers/migrate-workflow-docs.ts +53 -239
  132. package/assets/templates/helpers/new-plan.sh +2 -2
  133. package/assets/templates/helpers/plan-to-todo.sh +3 -31
  134. package/assets/templates/helpers/sprint-backlog.sh +1 -1
  135. package/assets/templates/helpers/switch-plan.sh +1 -1
  136. package/assets/templates/helpers/workflow-contract.ts +1 -0
  137. package/assets/workflow-contract.v1.json +63 -171
  138. package/assets/workflows/xiaohongshu/xiaohongshu.collect-metrics.v1.draft.json +118 -0
  139. package/assets/workflows/xiaohongshu/xiaohongshu.publish-image-note.v1.draft.json +316 -0
  140. package/assets/workflows/xiaohongshu/xiaohongshu.publish-long-text.v1.draft.json +324 -0
  141. package/docs/architecture/CURRENT.md +148 -13
  142. package/docs/architecture/EVOLUTION.md +13 -0
  143. package/docs/architecture/decisions/20260801-controller-home-sqlite-state.md +2 -1
  144. package/docs/architecture/decisions/20260831-independent-windows-wsl-host-rescue.md +59 -0
  145. package/docs/architecture/decisions/20260904-ios-device-migration-baseline.md +120 -0
  146. package/docs/architecture/decisions/20260904-repository-runtime-data-boundary.md +42 -0
  147. package/docs/architecture/decisions/20260907-assistant-learning-loop.md +35 -0
  148. package/docs/architecture/decisions/20260907-controller-round-transition-policy.md +296 -0
  149. package/docs/architecture/decisions/20260907-maintenance-diagnosis-bounded-read.md +39 -0
  150. package/docs/architecture/domains/verification.md +7 -0
  151. package/docs/architecture/domains/workflow-engine.md +1 -1
  152. package/docs/architecture/index.md +3 -3
  153. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +19 -8
  154. package/docs/architecture/requests/2026-09-04-computer-plugin-workflow-taxonomy.md +124 -0
  155. package/docs/forge-chatgpt-mcp-setup.md +5 -3
  156. package/docs/forge-plugin-management.md +20 -4
  157. package/docs/forge-runtime-self-healing-loop.md +2 -0
  158. package/docs/operations/benchmark-cross-version-freeze.md +38 -0
  159. package/docs/operations/controller-browser-plugin.md +3 -1
  160. package/docs/operations/homebrew.md +2 -2
  161. package/docs/operations/platform-support.md +16 -8
  162. package/docs/operations/platform-support.zh-CN.md +2 -2
  163. package/docs/operations/standalone-disaster-recovery.md +26 -1
  164. package/docs/operations/uu-remote-rescue.md +41 -0
  165. package/docs/operations/windows-wsl-host-rescue.md +133 -0
  166. package/docs/public-usage-guide.md +1 -1
  167. package/docs/public-usage-guide.zh-CN.md +1 -1
  168. package/docs/tutorials/01-install-and-start.md +1 -1
  169. package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
  170. package/docs/tutorials/02-connect-chatgpt.md +4 -4
  171. package/docs/tutorials/02-connect-chatgpt.zh-CN.md +4 -4
  172. package/docs/wiki/Implementation.md +1 -1
  173. package/package.json +23 -14
  174. package/packages/kernel/controller/api/index.ts +2 -0
  175. package/packages/kernel/controller/application/controller-round-service.ts +29 -0
  176. package/packages/kernel/controller/application/controller-service.ts +30 -0
  177. package/packages/kernel/controller/domain/controller-round-transition-policy.ts +308 -0
  178. package/packages/kernel/controller/domain/controller-round.ts +107 -0
  179. package/packages/kernel/controller/domain/execution-quality.ts +133 -0
  180. package/packages/kernel/controller/domain/types.ts +56 -0
  181. package/packages/kernel/controller/index.ts +1 -0
  182. package/packages/kernel/controller/infrastructure/controller-binding-store.ts +84 -0
  183. package/packages/kernel/controller/infrastructure/controller-round-store.ts +1384 -0
  184. package/packages/kernel/controller/infrastructure/controller-session-store.ts +578 -0
  185. package/packages/kernel/controller/ports/controller-host.ts +16 -0
  186. package/packages/kernel/goal/api/index.ts +1 -0
  187. package/packages/kernel/goal/domain/types.ts +40 -0
  188. package/packages/kernel/goal/index.ts +1 -0
  189. package/packages/kernel/identity/api/index.ts +5 -0
  190. package/packages/kernel/identity/application/identity-service.ts +67 -0
  191. package/packages/kernel/identity/domain/scope.ts +63 -0
  192. package/packages/kernel/identity/domain/semantic-sync.ts +81 -0
  193. package/packages/kernel/identity/domain/types.ts +44 -0
  194. package/packages/kernel/identity/domain/workspace.ts +56 -0
  195. package/packages/kernel/identity/index.ts +1 -0
  196. package/packages/kernel/identity/infrastructure/identity-store.ts +75 -0
  197. package/packages/kernel/memory/api/index.ts +5 -0
  198. package/packages/kernel/memory/application/experience-service.ts +118 -0
  199. package/packages/kernel/memory/application/outcome-service.ts +77 -0
  200. package/packages/kernel/memory/domain/experience.ts +103 -0
  201. package/packages/kernel/memory/domain/operational-prior.ts +92 -0
  202. package/packages/kernel/memory/index.ts +1 -0
  203. package/packages/kernel/progression/api/index.ts +2 -0
  204. package/packages/kernel/progression/application/projector.ts +211 -0
  205. package/packages/kernel/progression/domain/types.ts +116 -0
  206. package/packages/kernel/progression/index.ts +1 -0
  207. package/packages/kernel/scheduler/api/index.ts +6 -0
  208. package/packages/kernel/scheduler/application/continuation-service.ts +212 -0
  209. package/packages/kernel/scheduler/application/eligibility.ts +252 -0
  210. package/packages/kernel/scheduler/application/schedule-service.ts +24 -0
  211. package/packages/kernel/scheduler/application/settlement.ts +197 -0
  212. package/packages/kernel/scheduler/domain/continuation.ts +38 -0
  213. package/packages/kernel/scheduler/domain/schedule.ts +149 -0
  214. package/packages/kernel/scheduler/index.ts +1 -0
  215. package/packages/kernel/scheduler/infrastructure/continuation-dispatch-store.ts +38 -0
  216. package/packages/kernel/scheduler/infrastructure/schedule-store.ts +785 -0
  217. package/packages/kernel/work/api/index.ts +15 -0
  218. package/packages/kernel/work/application/work-service.ts +148 -0
  219. package/packages/kernel/work/domain/admission-policy.ts +34 -0
  220. package/packages/kernel/work/domain/check-receipt.ts +43 -0
  221. package/packages/kernel/work/domain/context-closure-receipt.ts +32 -0
  222. package/packages/kernel/work/domain/engineering-contracts.ts +157 -0
  223. package/packages/kernel/work/domain/engineering-design.ts +281 -0
  224. package/packages/kernel/work/domain/engineering-profile.ts +242 -0
  225. package/packages/kernel/work/domain/execution-concurrency.ts +254 -0
  226. package/packages/kernel/work/domain/execution-snapshot.ts +33 -0
  227. package/packages/kernel/work/domain/implementation-review.ts +510 -0
  228. package/packages/kernel/work/domain/project-engineering-contract.ts +202 -0
  229. package/packages/kernel/work/domain/repository-completion-receipt.ts +73 -0
  230. package/packages/kernel/work/domain/state-machine.ts +259 -0
  231. package/packages/kernel/work/domain/types.ts +528 -0
  232. package/packages/kernel/work/index.ts +1 -0
  233. package/packages/kernel/work/infrastructure/work-contract-store.ts +1876 -0
  234. package/packages/kernel/work/ports/work-contract-store.ts +18 -0
  235. package/packages/plugin-runtime/browser/index.ts +3 -0
  236. package/packages/plugin-runtime/browser/provider-registry.ts +110 -0
  237. package/packages/plugin-runtime/browser/runtime-contract.ts +150 -0
  238. package/packages/plugin-runtime/browser/session-authority.ts +61 -0
  239. package/packages/plugin-runtime/computer/index.ts +6 -0
  240. package/packages/plugin-runtime/computer/provider-error.ts +26 -0
  241. package/packages/plugin-runtime/computer/provider-registration.ts +52 -0
  242. package/packages/plugin-runtime/computer/provider-registry.ts +63 -0
  243. package/packages/plugin-runtime/computer/provider.ts +19 -0
  244. package/packages/plugin-runtime/computer/target-authority.ts +190 -0
  245. package/packages/plugin-runtime/computer/target-persistence.ts +54 -0
  246. package/packages/plugin-runtime/external/index.ts +1 -0
  247. package/packages/plugin-runtime/external/unix-jsonl-transport.ts +457 -0
  248. package/packages/plugin-runtime/index.ts +3 -0
  249. package/packages/protocols/browser/index.ts +1 -0
  250. package/packages/protocols/browser/session.ts +98 -0
  251. package/packages/protocols/computer/contract.ts +199 -0
  252. package/packages/protocols/computer/index.ts +1 -0
  253. package/packages/protocols/failure/contract.ts +158 -0
  254. package/packages/protocols/failure/index.ts +1 -0
  255. package/packages/protocols/handoff/index.ts +1 -0
  256. package/packages/protocols/handoff/status.ts +22 -0
  257. package/packages/protocols/mcp/execution-context.ts +11 -0
  258. package/packages/protocols/mcp/index.ts +2 -0
  259. package/packages/protocols/mcp/tool-contract.ts +42 -0
  260. package/packages/workflow-runtime/api/index.ts +2 -0
  261. package/packages/workflow-runtime/application/interpreter.ts +342 -0
  262. package/packages/workflow-runtime/domain/workflow-asset.ts +223 -0
  263. package/packages/workflow-runtime/index.ts +1 -0
  264. package/scripts/assemble-template.ts +1 -1
  265. package/scripts/benchmark-computer-hotpath.ts +255 -0
  266. package/scripts/benchmark-controller-round2.ts +54 -2
  267. package/scripts/benchmark-ios-agent-device.ts +3 -6
  268. package/scripts/benchmark-mcp-transport.ts +3 -4
  269. package/scripts/benchmark-operational-memory-activation.ts +235 -0
  270. package/scripts/benchmark-operational-shadow.ts +28 -0
  271. package/scripts/bootstrap-runtime-maintenance-recovery.sh +4 -1
  272. package/scripts/canary-chatgpt-provider-delivery.ts +97 -0
  273. package/scripts/canary-controller-semantic-wait.ts +195 -0
  274. package/scripts/canary-global-hook.sh +2 -2
  275. package/scripts/check-mcp-compatibility.ts +173 -7
  276. package/scripts/check-platform-support.mjs +28 -2
  277. package/scripts/check-public-docs.sh +1 -1
  278. package/scripts/check-release-readiness.sh +1 -1
  279. package/scripts/check-repository-hygiene.mjs +92 -0
  280. package/scripts/check-runtime-architecture.mjs +1206 -95
  281. package/scripts/check-source-duplication.mjs +9 -1
  282. package/scripts/check-tarball-install-smoke.sh +98 -15
  283. package/scripts/controller-ngrok-rotation.sh +5 -4
  284. package/scripts/create-project-dirs.sh +10 -74
  285. package/scripts/forge-local-recovery-helper.mjs +204 -0
  286. package/scripts/forge-uu-remote-rescue-helper.d.mts +31 -0
  287. package/scripts/forge-uu-remote-rescue-helper.mjs +409 -0
  288. package/scripts/forge-windows-host-recovery-helper.mjs +136 -0
  289. package/scripts/hook-shim.sh +2 -2
  290. package/scripts/init-project.sh +12 -70
  291. package/scripts/install-desktop-operator-registration.ts +4 -2
  292. package/scripts/install-independent-windows-wsl-recovery.ts +125 -0
  293. package/scripts/install-standalone-recovery.ts +122 -10
  294. package/scripts/install-uu-remote-rescue-registration.ts +74 -0
  295. package/scripts/install-windows-host-recovery-registration.ts +22 -0
  296. package/scripts/lib/controller-home-env.sh +6 -3
  297. package/scripts/lib/project-init-lib.sh +39 -582
  298. package/scripts/migrate-chatgpt-automation-schedules.ts +2 -2
  299. package/scripts/migrate-windows-wsl-controller-home.ts +306 -0
  300. package/scripts/open-source-audit-allowlist.txt +12 -1
  301. package/scripts/portability-bindings.mjs +70 -0
  302. package/scripts/run-bounded-command.mjs +55 -0
  303. package/scripts/run-bun-test-file.ts +22 -6
  304. package/scripts/run-governed-gate.ts +4 -1
  305. package/scripts/smoke-mcp-http-runtime.ts +1 -1
  306. package/scripts/smoke-runtime-recovery.ts +34 -1
  307. package/scripts/smoke-schedule-engine.ts +1 -1
  308. package/scripts/stage-runtime-release.ts +6 -1
  309. package/scripts/test-governance.ts +51 -2
  310. package/src/cli/agent-jobs/job-manager.ts +10 -1
  311. package/src/cli/chatgpt-browser/bind-server.ts +2 -1
  312. package/src/cli/chatgpt-browser/binding.ts +20 -10
  313. package/src/cli/chatgpt-browser/bridge-extension.ts +75 -0
  314. package/src/cli/chatgpt-browser/bridge-provider.ts +376 -11
  315. package/src/cli/chatgpt-browser/engine.ts +10 -11
  316. package/src/cli/chatgpt-browser/native-provider.ts +24 -83
  317. package/src/cli/chatgpt-browser/oracle-provider.ts +5 -3
  318. package/src/cli/chatgpt-browser/types.ts +1 -0
  319. package/src/cli/commands/bootstrap-control.ts +334 -0
  320. package/src/cli/commands/brain-assistant.ts +38 -0
  321. package/src/cli/commands/brain.ts +193 -40
  322. package/src/cli/commands/chatgpt.ts +127 -0
  323. package/src/cli/commands/computer.ts +437 -0
  324. package/src/cli/commands/doctor.ts +18 -1
  325. package/src/cli/commands/init-hook.ts +71 -61
  326. package/src/cli/commands/init.ts +3 -1
  327. package/src/cli/commands/mcp.ts +16 -10
  328. package/src/cli/commands/plugin.ts +38 -12
  329. package/src/cli/commands/recovery.ts +493 -80
  330. package/src/cli/commands/runtime.ts +9 -4
  331. package/src/cli/commands/setup-profile.ts +89 -39
  332. package/src/cli/commands/status.ts +2 -1
  333. package/src/cli/controller/check-runner.ts +487 -98
  334. package/src/cli/controller/context/types.ts +7 -1
  335. package/src/cli/controller/context-pack.ts +23 -3
  336. package/src/cli/controller/issue-store.ts +1 -1
  337. package/src/cli/controller/systemd-user.ts +110 -0
  338. package/src/cli/controller/types.ts +10 -70
  339. package/src/cli/controller/worklog.ts +67 -13
  340. package/src/cli/editing/edit-operation-contract.ts +92 -0
  341. package/src/cli/editing/edit-session.ts +289 -13
  342. package/src/cli/github/plugin.ts +17 -12
  343. package/src/cli/hook/route-registry.ts +3 -5
  344. package/src/cli/hook/runtime.ts +49 -3
  345. package/src/cli/index.ts +3 -0
  346. package/src/cli/local-bridge/connector-freshness.ts +2 -2
  347. package/src/cli/local-bridge/console-automations.ts +2 -2
  348. package/src/cli/local-bridge/facade-api.ts +41 -14
  349. package/src/cli/local-bridge/job-store.ts +1 -1
  350. package/src/cli/local-bridge/server.ts +24 -27
  351. package/src/cli/mcp/access-mode.ts +2 -132
  352. package/src/cli/mcp/access-tools.ts +2 -387
  353. package/src/cli/mcp/audit.ts +2 -32
  354. package/src/cli/mcp/auth.ts +2 -404
  355. package/src/cli/mcp/instructions.ts +2 -34
  356. package/src/cli/mcp/legacy-context.ts +2 -16
  357. package/src/cli/mcp/legacy-tool-service.ts +2 -5308
  358. package/src/cli/mcp/multi-repository.ts +2 -436
  359. package/src/cli/mcp/oauth.ts +2 -375
  360. package/src/cli/mcp/openai-secure-tunnel.ts +2 -0
  361. package/src/cli/mcp/paths.ts +2 -140
  362. package/src/cli/mcp/policy.ts +2 -232
  363. package/src/cli/mcp/post-finalize-work-attribution.ts +2 -150
  364. package/src/cli/mcp/proxy-env.ts +2 -62
  365. package/src/cli/mcp/readiness-projection.ts +2 -24
  366. package/src/cli/mcp/redaction.ts +2 -21
  367. package/src/cli/mcp/repo.ts +2 -24
  368. package/src/cli/mcp/repository-tools.ts +2 -1585
  369. package/src/cli/mcp/server.ts +2 -951
  370. package/src/cli/mcp/setup.ts +2 -737
  371. package/src/cli/mcp/tool-capability-cache.ts +2 -87
  372. package/src/cli/mcp/tool-contract.ts +2 -14
  373. package/src/cli/mcp/tools.ts +2 -9
  374. package/src/cli/mcp/toolset-names.ts +2 -70
  375. package/src/cli/mcp/toolset-selection.ts +2 -41
  376. package/src/cli/mcp/toolset.ts +2 -336
  377. package/src/cli/mcp/transports/AGENTS.md +1 -10
  378. package/src/cli/mcp/transports/CLAUDE.md +1 -10
  379. package/src/cli/mcp/transports/http.ts +2 -1414
  380. package/src/cli/mcp/transports/session-registry.ts +2 -490
  381. package/src/cli/mcp/transports/stdio.ts +2 -8
  382. package/src/cli/mcp/types.ts +2 -41
  383. package/src/cli/mcp/umbrella-tools.ts +2 -117
  384. package/src/cli/repositories/command-executor.ts +64 -18
  385. package/src/cli/repositories/command-scope.ts +117 -1
  386. package/src/cli/repositories/controller-home.ts +119 -1
  387. package/src/cli/repositories/identity.ts +13 -0
  388. package/src/cli/repositories/registry.ts +68 -49
  389. package/src/cli/repositories/repository-snapshot.ts +53 -7
  390. package/src/cli/repositories/runtime-storage.ts +27 -2
  391. package/src/cli/repositories/safe-patch.ts +34 -38
  392. package/src/cli/repositories/selected-path-actions.ts +22 -2
  393. package/src/cli/repositories/structured-git.ts +105 -25
  394. package/src/cli/runtime/helper-runner.ts +7 -0
  395. package/src/cli/runtime-invocation.ts +8 -1
  396. package/src/cli/tools/codegraph.ts +44 -25
  397. package/src/core/adoption/manifest-templates.ts +1 -1
  398. package/src/core/adoption/plan.ts +3 -26
  399. package/src/core/adoption/workflow-contract-plan.ts +17 -9
  400. package/src/effects/process-runner.ts +8 -14
  401. package/src/runtime/context/assistant-context.ts +154 -0
  402. package/src/runtime/context/assistant-work-context.ts +147 -0
  403. package/src/runtime/context/codegraph-cache-boundary.ts +255 -0
  404. package/src/runtime/context/codegraph-read-provider.ts +55 -22
  405. package/src/runtime/context/codegraph-sidecar.cjs +8 -1
  406. package/src/runtime/context/context-closure.ts +268 -0
  407. package/src/runtime/context/context-plane.ts +211 -0
  408. package/src/runtime/context/project-engineering-contract.ts +60 -0
  409. package/src/runtime/control-plane/bootstrap/capability-provider.ts +74 -0
  410. package/src/runtime/control-plane/bootstrap/control-api.ts +57 -0
  411. package/src/runtime/control-plane/bootstrap/index.ts +5 -0
  412. package/src/runtime/control-plane/bootstrap/state-machine.ts +141 -0
  413. package/src/runtime/control-plane/bootstrap/store.ts +21 -0
  414. package/src/runtime/control-plane/bootstrap/types.ts +87 -0
  415. package/src/runtime/control-plane/cleanup-artifact-retention.ts +328 -0
  416. package/src/runtime/control-plane/codegraph-cache-retention.ts +164 -0
  417. package/src/runtime/control-plane/concurrency/work-execution-concurrency.ts +320 -0
  418. package/src/runtime/control-plane/execution/content-equivalent-commit-authority.ts +169 -0
  419. package/src/runtime/control-plane/execution/controller-authority-recovery.ts +350 -0
  420. package/src/runtime/control-plane/execution/direct-canonical-work-reconciliation.ts +85 -0
  421. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +417 -100
  422. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +103 -15
  423. package/src/runtime/control-plane/execution/implementation-review-content.ts +95 -0
  424. package/src/runtime/control-plane/execution/repository-work-attribution.ts +2 -2
  425. package/src/runtime/control-plane/execution/retained-work-resume.ts +336 -6
  426. package/src/runtime/control-plane/execution/validation.ts +28 -3
  427. package/src/runtime/control-plane/execution/work-authority-reconciler.ts +116 -0
  428. package/src/runtime/control-plane/execution/work-completion-authority.ts +44 -2
  429. package/src/runtime/control-plane/execution/work-evidence-policy.ts +34 -3
  430. package/src/runtime/control-plane/execution/work-execution-support.ts +42 -22
  431. package/src/runtime/control-plane/execution/work-finalization-service.ts +1103 -166
  432. package/src/runtime/control-plane/execution/work-handle-authority.ts +267 -16
  433. package/src/runtime/control-plane/execution/work-handle-store.ts +77 -0
  434. package/src/runtime/control-plane/execution/work-head-settlement.ts +75 -0
  435. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +145 -23
  436. package/src/runtime/control-plane/execution/work-operation-service.ts +49 -13
  437. package/src/runtime/control-plane/execution/work-preparation-service.ts +31 -15
  438. package/src/runtime/control-plane/execution/work-remote-delivery.ts +1 -1
  439. package/src/runtime/control-plane/execution/work-task-receipt.ts +20 -1
  440. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +407 -76
  441. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +88 -18
  442. package/src/runtime/control-plane/execution/work-verification-context.ts +1 -1
  443. package/src/runtime/control-plane/execution/work-verification-service.ts +258 -4
  444. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +200 -15
  445. package/src/runtime/control-plane/facade/capability-registry.ts +21 -10
  446. package/src/runtime/control-plane/facade/controller-round-relay.ts +3 -1118
  447. package/src/runtime/control-plane/facade/controller-session-store.ts +2 -488
  448. package/src/runtime/control-plane/facade/goal-workloop-access.ts +6 -3
  449. package/src/runtime/control-plane/facade/goal-workloop.ts +972 -137
  450. package/src/runtime/control-plane/facade/handoff-inbox-application.ts +158 -0
  451. package/src/runtime/control-plane/facade/handoff-inbox-store.ts +10 -0
  452. package/src/runtime/control-plane/facade/index.ts +4 -2
  453. package/src/runtime/control-plane/facade/operation-digest.ts +22 -58
  454. package/src/runtime/control-plane/facade/plan-contract-store.ts +1004 -38
  455. package/src/runtime/control-plane/facade/repository-work-admission.ts +19 -1
  456. package/src/runtime/control-plane/facade/requirement-authority.ts +218 -0
  457. package/src/runtime/control-plane/facade/requirement-board.ts +6 -1
  458. package/src/runtime/control-plane/facade/rh-work-operation-contract.ts +48 -0
  459. package/src/runtime/control-plane/facade/semantic-admission.ts +8 -16
  460. package/src/runtime/control-plane/facade/suggested-actions.ts +4 -1
  461. package/src/runtime/control-plane/facade/types.ts +189 -532
  462. package/src/runtime/control-plane/facade/work-admission-policy.ts +84 -35
  463. package/src/runtime/control-plane/facade/work-contract-store.ts +2 -1043
  464. package/src/runtime/control-plane/facade/work-implementation-review.ts +2 -0
  465. package/src/runtime/control-plane/facade/work-state-machine.ts +2 -250
  466. package/src/runtime/control-plane/generated-cache-retention.ts +239 -18
  467. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +12 -1
  468. package/src/runtime/control-plane/global-scheduler/maintenance.ts +76 -13
  469. package/src/runtime/control-plane/global-scheduler/periodic-cleanup-entry.ts +55 -0
  470. package/src/runtime/control-plane/global-scheduler/periodic-cleanup-process.ts +98 -0
  471. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +1 -1
  472. package/src/runtime/control-plane/global-scheduler/scheduler-worker-entry.ts +10 -0
  473. package/src/runtime/control-plane/global-scheduler/scheduler.ts +173 -81
  474. package/src/runtime/control-plane/global-scheduler/worker-launch.ts +18 -6
  475. package/src/runtime/control-plane/launcher/chatgpt-round-continuation.ts +397 -0
  476. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +2 -177
  477. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +301 -560
  478. package/src/runtime/control-plane/launcher/provider-mcp-bootstrap.ts +20 -4
  479. package/src/runtime/control-plane/launcher/thin-launcher.ts +50 -4
  480. package/src/runtime/control-plane/lifecycle-retention-metrics.ts +60 -0
  481. package/src/runtime/control-plane/persistence/experience-store.ts +169 -0
  482. package/src/runtime/control-plane/persistence/operational-prior-store.ts +348 -0
  483. package/src/runtime/control-plane/persistence/requirement-store.ts +30 -22
  484. package/src/runtime/control-plane/persistence/sqlite-store.ts +545 -76
  485. package/src/runtime/control-plane/persistence/workflow-content-store.ts +98 -0
  486. package/src/runtime/control-plane/persistence/workflow-registry-store.ts +186 -0
  487. package/src/runtime/control-plane/persistence/workflow-run-store.ts +123 -0
  488. package/src/runtime/control-plane/release-retention.ts +56 -16
  489. package/src/runtime/control-plane/repository-namespace-retention.ts +208 -0
  490. package/src/runtime/control-plane/routing/route-policy.ts +19 -0
  491. package/src/runtime/control-plane/runtime-cleanup.ts +574 -37
  492. package/src/runtime/control-plane/runtime-generation.ts +6 -0
  493. package/src/runtime/control-plane/workspace/semantic-sync-service.ts +465 -0
  494. package/src/runtime/control-plane/workspace/workspace-store.ts +80 -0
  495. package/src/runtime/diagnostics/incident-repair.ts +406 -0
  496. package/src/runtime/diagnostics/mcp-timing.ts +125 -6
  497. package/src/runtime/diagnostics/performance.ts +6 -14
  498. package/src/runtime/diagnostics/read-only-tool.ts +1 -1
  499. package/src/runtime/evidence/artifact-store.ts +65 -2
  500. package/src/runtime/evidence/operational-shadow.ts +38 -0
  501. package/src/runtime/evidence/process-check-receipt.ts +5 -43
  502. package/src/runtime/evidence/sensitive-output.ts +4 -4
  503. package/src/runtime/execution/jobs/receipt-recovery.ts +1 -1
  504. package/src/runtime/execution/jobs/store.ts +121 -2
  505. package/src/runtime/execution/managed-workspace.ts +55 -5
  506. package/src/runtime/execution/process-runtime/canary.ts +19 -5
  507. package/src/runtime/execution/process-runtime/check-classification.ts +48 -0
  508. package/src/runtime/execution/process-runtime/check-facade.ts +23 -9
  509. package/src/runtime/execution/process-runtime/check-receipt.ts +1 -1
  510. package/src/runtime/execution/process-runtime/check-result-retention.ts +132 -0
  511. package/src/runtime/execution/process-runtime/check-result.ts +73 -2
  512. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +42 -3
  513. package/src/runtime/execution/process-runtime/check-storage.ts +187 -0
  514. package/src/runtime/execution/process-runtime/command-facade.ts +38 -87
  515. package/src/runtime/execution/process-runtime/index.ts +1 -0
  516. package/src/runtime/execution/process-runtime/interactive-admission.ts +2 -1
  517. package/src/runtime/execution/process-runtime/lightweight-managed.ts +32 -1
  518. package/src/runtime/execution/process-runtime/persisted-check.ts +128 -21
  519. package/src/runtime/execution/process-runtime/resource-claims.ts +60 -3
  520. package/src/runtime/execution/process-runtime/runtime.ts +132 -15
  521. package/src/runtime/execution/process-runtime/types.ts +22 -0
  522. package/src/runtime/execution/workers/executor.ts +16 -13
  523. package/src/runtime/execution/workers/worker-entry.ts +1 -1
  524. package/src/runtime/gateway/mcp/execution-tools.ts +2 -207
  525. package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +2 -61
  526. package/src/runtime/gateway/mcp/persisted-check-process.ts +2 -3
  527. package/src/runtime/gateway/mcp/process-tools.ts +2 -289
  528. package/src/runtime/gateway/mcp/router.ts +2 -1125
  529. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +2 -565
  530. package/src/runtime/gateway/mcp/runtime-tools.ts +2 -6651
  531. package/src/runtime/gateway/mcp/work-validation-reconciler.ts +2 -1
  532. package/src/runtime/maintenance/cleanup.ts +38 -24
  533. package/src/runtime/platform/browser-product-discovery.ts +174 -0
  534. package/src/runtime/platform/computer-platform.ts +14 -0
  535. package/src/runtime/platform/executable-discovery.ts +54 -0
  536. package/src/runtime/platform/fetch-http-server.ts +90 -0
  537. package/src/runtime/platform/service-manager.ts +138 -0
  538. package/src/runtime/platform/windows-host-discovery.ts +118 -0
  539. package/src/runtime/platform/windows-recovery-deployment.ts +67 -0
  540. package/src/runtime/plugins/action-application.ts +135 -0
  541. package/src/runtime/plugins/app-store-connect-adapter.ts +9 -21
  542. package/src/runtime/plugins/browser-adapter.ts +140 -100
  543. package/src/runtime/plugins/browser-automation-service.ts +15 -36
  544. package/src/runtime/plugins/browser-macos-bridge.ts +69 -21
  545. package/src/runtime/plugins/browser-manifest-surface.ts +30 -6
  546. package/src/runtime/plugins/browser-native-session-service.ts +1 -1
  547. package/src/runtime/plugins/browser-provider-registry.ts +2 -109
  548. package/src/runtime/plugins/browser-registration.ts +16 -0
  549. package/src/runtime/plugins/browser-runtime-contract.ts +2 -154
  550. package/src/runtime/plugins/browser-runtime.ts +41 -9
  551. package/src/runtime/plugins/browser-session-authority.ts +101 -291
  552. package/src/runtime/plugins/browser-session-legacy-migration.ts +203 -0
  553. package/src/runtime/plugins/browser-session-store.ts +229 -36
  554. package/src/runtime/plugins/browser-session-types.ts +2 -98
  555. package/src/runtime/plugins/capability-authorization-grants.ts +17 -0
  556. package/src/runtime/plugins/catalog-trust.ts +82 -0
  557. package/src/runtime/plugins/computer-registration.ts +839 -0
  558. package/src/runtime/plugins/config-store.ts +119 -0
  559. package/src/runtime/plugins/desktop-operator-external-policy.ts +932 -0
  560. package/src/runtime/plugins/desktop-operator-registration.ts +111 -8
  561. package/src/runtime/plugins/errors.ts +8 -1
  562. package/src/runtime/plugins/external-adapter.ts +45 -322
  563. package/src/runtime/plugins/external-provider-policy.ts +48 -0
  564. package/src/runtime/plugins/external-registration.ts +9 -1
  565. package/src/runtime/plugins/external-unix-socket-probe.cjs +9 -3
  566. package/src/runtime/plugins/external-unix-socket.ts +64 -193
  567. package/src/runtime/plugins/first-party-external-registration.ts +163 -0
  568. package/src/runtime/plugins/first-party-registry.ts +3 -1
  569. package/src/runtime/plugins/github-adapter.ts +1 -2
  570. package/src/runtime/plugins/gmail-adapter.ts +6 -6
  571. package/src/runtime/plugins/google-calendar-adapter.ts +6 -6
  572. package/src/runtime/plugins/google-shared.ts +31 -46
  573. package/src/runtime/plugins/google-tasks-adapter.ts +6 -6
  574. package/src/runtime/plugins/ios-adapter.ts +1 -2
  575. package/src/runtime/plugins/local-system-adapter.ts +180 -0
  576. package/src/runtime/plugins/macos-capability-broker.ts +15 -105
  577. package/src/runtime/plugins/resend-adapter.ts +15 -24
  578. package/src/runtime/plugins/store.ts +493 -51
  579. package/src/runtime/plugins/types.ts +8 -1
  580. package/src/runtime/plugins/uu-remote-rescue-registration.ts +155 -0
  581. package/src/runtime/plugins/windows-host-recovery-install.ts +68 -0
  582. package/src/runtime/plugins/windows-host-recovery-registration.ts +85 -0
  583. package/src/runtime/plugins/xiaohongshu-publish.ts +86 -430
  584. package/src/runtime/projections/controller-context.ts +12 -6
  585. package/src/runtime/projections/git-status-sampler.ts +73 -22
  586. package/src/runtime/projections/materialized-view.ts +14 -8
  587. package/src/runtime/recovery/capability-action-application.ts +228 -0
  588. package/src/runtime/recovery/index.ts +3 -0
  589. package/src/runtime/recovery/lifecycle-inventory.ts +338 -0
  590. package/src/runtime/recovery/local-jobs-repair.ts +14 -14
  591. package/src/runtime/recovery/maintenance-executor.ts +358 -76
  592. package/src/runtime/recovery/quarantine-retention.ts +256 -0
  593. package/src/runtime/release/identity.ts +6 -0
  594. package/src/runtime/resources/leases/store.ts +1 -1
  595. package/src/runtime/root/active-execution-power-assertion.ts +139 -0
  596. package/src/runtime/root/assistant-learning-loop.ts +45 -0
  597. package/src/runtime/root/browser-session-composition.ts +59 -0
  598. package/src/runtime/root/computer-composition.ts +191 -0
  599. package/src/runtime/root/computer-target-composition.ts +16 -0
  600. package/src/runtime/root/computer-target-persistence.ts +39 -0
  601. package/src/runtime/root/controller-round-composition.ts +107 -0
  602. package/src/runtime/root/controller-services.ts +2 -0
  603. package/src/runtime/root/entry.ts +4 -3
  604. package/src/runtime/root/gateway-adapter.ts +3 -3
  605. package/src/runtime/root/local-bridge.ts +5 -2
  606. package/src/runtime/root/mcp-transport.ts +5 -5
  607. package/src/runtime/root/package-connector-service.ts +108 -56
  608. package/src/runtime/root/package-runtime-release.ts +86 -18
  609. package/src/runtime/root/package-runtime-service.ts +63 -86
  610. package/src/runtime/root/release-execution-canary.ts +71 -0
  611. package/src/runtime/root/release-loader.ts +68 -0
  612. package/src/runtime/root/release-manifest.ts +106 -2
  613. package/src/runtime/root/release-materialize.ts +103 -4
  614. package/src/runtime/root/release-store.ts +31 -2
  615. package/src/runtime/root/runtime.ts +240 -25
  616. package/src/runtime/root/scheduled-controller-composition.ts +51 -0
  617. package/src/runtime/root/scheduler.ts +12 -4
  618. package/src/runtime/root/service-runner.ts +1 -1
  619. package/src/runtime/root/service.ts +41 -16
  620. package/src/runtime/root/status.ts +1 -0
  621. package/src/runtime/root/types.ts +24 -1
  622. package/src/runtime/shared/local-bridge-surface.ts +1 -1
  623. package/src/runtime/shared/process-environment.ts +19 -4
  624. package/src/runtime/shared/storage-capacity.ts +68 -0
  625. package/src/runtime/standalone-recovery/controller-home-migration.ts +1116 -0
  626. package/src/runtime/standalone-recovery/core.ts +984 -230
  627. package/src/runtime/standalone-recovery/entry.ts +182 -51
  628. package/src/runtime/standalone-recovery/independent-host-rescue.ts +172 -0
  629. package/src/runtime/standalone-recovery/installer.ts +212 -104
  630. package/src/runtime/standalone-recovery/mcp-server.ts +243 -0
  631. package/src/runtime/standalone-recovery/mutation-identity-contract.ts +21 -0
  632. package/src/runtime/standalone-recovery/operation-lock.ts +160 -0
  633. package/src/runtime/standalone-recovery/performance.ts +135 -0
  634. package/src/runtime/standalone-recovery/release.ts +5 -0
  635. package/src/runtime/watchdog/workflow-watchdog.ts +1 -1
  636. package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +1 -1
  637. package/src/runtime/workflow/schedules/engine.ts +191 -343
  638. package/src/runtime/workflow/schedules/pending-activation.ts +1 -1
  639. package/src/runtime/workflow/schedules/settlement.ts +2 -191
  640. package/src/runtime/workflow/schedules/store.ts +2 -607
  641. package/src/runtime/workflow/schedules/types.ts +2 -127
  642. package/src/runtime/workflow/schedules/work-continuation.ts +180 -15
  643. package/src/runtime/workflows/first-party/xiaohongshu.ts +122 -0
  644. package/src/runtime/workflows/runtime.ts +486 -0
  645. package/src/testing/test-governance.ts +90 -29
  646. package/assets/templates/helpers/archive-architecture-request.sh +0 -244
  647. package/docs/architecture/history/README.md +0 -7
  648. package/docs/architecture/history/chatgpt-handoff-facade.md +0 -397
  649. package/docs/architecture/history/global-hook-runtime.md +0 -166
  650. package/docs/architecture/history/ios-semantic-automation-provider-v2.md +0 -170
  651. package/docs/architecture/requests/archive/2026/20260528-154740-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  652. package/docs/architecture/requests/archive/2026/20260528-154816-assets-hooks-assets-hooks-hook-input-sh.md +0 -59
  653. package/docs/architecture/requests/archive/2026/20260528-161851-ai-harness-workflow-contract-json-ai-harness-workflow-contract-json.md +0 -59
  654. package/docs/architecture/requests/archive/2026/20260528-161853-scripts-check-task-workflow-sh-scripts-check-task-workflow-sh.md +0 -59
  655. package/docs/architecture/requests/archive/2026/20260528-161911-assets-workflow-contract-v1-json-assets-workflow-contract-v1-json.md +0 -59
  656. package/docs/architecture/requests/archive/2026/20260528-222416-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  657. package/docs/architecture/requests/archive/2026/20260528-222444-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  658. package/docs/architecture/requests/archive/2026/20260528-222457-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  659. package/docs/architecture/requests/archive/2026/20260528-222648-ai-hooks-ai-hooks-pre-edit-guard-sh.md +0 -59
  660. package/docs/architecture/requests/archive/2026/20260528-222705-ai-hooks-ai-hooks-worktree-guard-sh.md +0 -59
  661. package/docs/architecture/requests/archive/2026/20260528-222726-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  662. package/docs/architecture/requests/archive/2026/20260528-222727-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  663. package/docs/architecture/requests/archive/2026/20260528-224736-ai-hooks-ai-hooks-hook-input-sh.md +0 -59
  664. package/docs/architecture/requests/archive/2026/20260528-233259-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  665. package/docs/architecture/requests/archive/2026/20260528-233335-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  666. package/docs/architecture/requests/archive/2026/20260528-233456-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  667. package/docs/architecture/requests/archive/2026/20260528-233457-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  668. package/docs/architecture/requests/archive/2026/20260528-233637-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -59
  669. package/docs/architecture/requests/archive/2026/20260528-233638-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -59
  670. package/docs/architecture/requests/archive/2026/20260529-000322-root-package-json.md +0 -59
  671. package/docs/architecture/requests/archive/2026/20260529-004238-ai-hooks-ai-hooks-lib-workflow-state-sh.md +0 -59
  672. package/docs/architecture/requests/archive/2026/20260529-020654-ai-harness-policy-json-ai-harness-policy-json.md +0 -63
  673. package/docs/architecture/requests/archive/2026/20260529-094236-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -60
  674. package/docs/architecture/requests/archive/2026/20260529-094323-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -60
  675. package/docs/architecture/requests/archive/2026/20260529-094331-ai-hooks-ai-hooks-prompt-guard-sh.md +0 -60
  676. package/docs/architecture/requests/archive/2026/20260529-094339-assets-hooks-assets-hooks-prompt-guard-sh.md +0 -60
  677. package/docs/architecture/requests/archive/2026/20260529-094430-assets-hooks-assets-hooks-session-start-context-sh.md +0 -60
  678. package/docs/architecture/requests/archive/2026/20260529-094446-ai-hooks-ai-hooks-session-start-context-sh.md +0 -60
  679. package/docs/architecture/requests/archive/2026/20260613-002040-runtime-harness-hook-adapters.md +0 -68
  680. package/docs/architecture/requests/archive/2026/root.md +0 -68
  681. package/docs/architecture/requests/archive/2026/runtime-harness-hook-adapters.md +0 -76
  682. package/docs/architecture/requests/archive/2026/verification-evals-checks.md +0 -68
  683. package/docs/architecture/requests/archive/2026/workflow-engine-contract-assets.md +0 -69
  684. package/scripts/archive-architecture-request.sh +0 -4
  685. package/scripts/run-skill-evals.ts +0 -1022
@@ -1,10 +1,35 @@
1
- import type { ProcessCheckReceiptEvidence } from '../../evidence/process-check-receipt';
2
- import type { CompletionReceipt as RepositoryCompletionReceipt } from '../../../cli/controller/types';
3
- import type { AccessMode } from '../governance/access-policy';
4
- import { decideRoute, type ExplicitTaskMode, type RouteDecision, type RoutePolicyInput } from '../routing/route-policy';
1
+ import type {
2
+ WorkContract,
3
+ VerificationOutcome,
4
+ ExecutionMode,
5
+ FacadeDetailLevel,
6
+ EvidenceRef,
7
+ SuggestedNextAction,
8
+ PolicyDecision,
9
+ } from '../../../../packages/kernel/work/domain/types';
10
+ export type {
11
+ ExecutionMode,
12
+ FacadeDetailLevel,
13
+ EvidenceRef,
14
+ SuggestedNextAction,
15
+ PolicyDecision,
16
+ } from '../../../../packages/kernel/work/domain/types';
17
+ import { applyRouteContextHints, decideRoute, type ExplicitTaskMode, type RouteContextHints, type RouteDecision, type RoutePolicyInput } from '../routing/route-policy';
18
+ import {
19
+ TERMINAL_PLAN_CONTRACT_STATUSES,
20
+ type PlanContractStatus,
21
+ type PlanStepStatus,
22
+ } from '../../../../packages/kernel/goal/api/index';
23
+ export {
24
+ PLAN_CONTRACT_STATUSES,
25
+ TERMINAL_PLAN_CONTRACT_STATUSES,
26
+ PLAN_STEP_STATUSES,
27
+ type PlanContractStatus,
28
+ type PlanStepStatus,
29
+ } from '../../../../packages/kernel/goal/api/index';
5
30
 
6
31
  export const EXECUTION_MODES = ['direct_control', 'goal_workloop', 'handoff_only'] as const;
7
- export type ExecutionMode = (typeof EXECUTION_MODES)[number];
32
+ const _executionModesTypeCheck: readonly ExecutionMode[] = EXECUTION_MODES;
8
33
 
9
34
  export const FACADE_TOOLS = ['rh_access', 'rh_status', 'rh_inbox', 'rh_context', 'rh_work'] as const;
10
35
  export type FacadeTool = (typeof FACADE_TOOLS)[number];
@@ -13,7 +38,6 @@ export type CapabilityExecutionSurface = FacadeTool | 'plugin_action_execute';
13
38
  export const FACADE_STATUSES = ['ok', 'blocked', 'failed', 'approval_required', 'not_found'] as const;
14
39
  export type FacadeStatus = (typeof FACADE_STATUSES)[number];
15
40
 
16
- export type FacadeDetailLevel = 'summary' | 'detail' | 'raw';
17
41
 
18
42
  export const CAPABILITY_DOMAINS = ['repository', 'plugin', 'controller', 'evidence', 'maintenance'] as const;
19
43
  export type CapabilityDomain = (typeof CAPABILITY_DOMAINS)[number];
@@ -55,236 +79,62 @@ export type PolicyDecisionKind = (typeof POLICY_DECISIONS)[number];
55
79
  export const HANDOFF_SEVERITIES = ['info', 'needs_review', 'blocked', 'failed', 'ready_to_continue'] as const;
56
80
  export type HandoffSeverity = (typeof HANDOFF_SEVERITIES)[number];
57
81
 
58
- export const HANDOFF_STATUSES = [
59
- 'pending',
60
- 'acknowledged',
61
- 'in_progress',
62
- 'resolved',
63
- 'dismissed',
64
- 'superseded',
65
- 'expired',
66
- ] as const;
67
- export type HandoffStatus = (typeof HANDOFF_STATUSES)[number];
68
-
69
- export const TERMINAL_HANDOFF_STATUSES: readonly HandoffStatus[] = [
70
- 'resolved',
71
- 'dismissed',
72
- 'superseded',
73
- 'expired',
74
- ] as const;
75
-
76
- export const WORK_CONTRACT_STATUSES = [
77
- 'open',
78
- 'running',
79
- 'blocked',
80
- 'ready',
81
- 'completed',
82
- 'failed',
83
- 'cancelled',
84
- ] as const;
85
- export type WorkContractStatus = (typeof WORK_CONTRACT_STATUSES)[number];
86
-
87
- /**
88
- * Work execution phases are intentionally small and technical. User-facing
89
- * Requirement lifecycle belongs to Requirement, not this projection.
90
- */
91
- export const WORK_PHASES = ['implementation', 'verification', 'delivery', 'cleanup'] as const;
92
- export type WorkPhase = (typeof WORK_PHASES)[number];
93
-
94
- export const WORK_PHASE_EVIDENCE_STATES = ['pending', 'active', 'satisfied', 'blocked', 'failed', 'skipped'] as const;
95
- export type WorkPhaseEvidenceState = (typeof WORK_PHASE_EVIDENCE_STATES)[number];
96
-
97
- /** Durable evidence checkpoint for one technical Work phase. */
98
- export interface WorkPhaseEvidence {
99
- state: WorkPhaseEvidenceState;
100
- source?: 'recorded' | 'legacy_inferred';
101
- summary: string;
102
- evidenceRefs: EvidenceRef[];
103
- recordedAt: string;
104
- receiptId?: string;
105
- }
106
-
107
- export type WorkPhaseEvidenceMap = Record<WorkPhase, WorkPhaseEvidence>;
108
-
109
- /** Risk is part of the Work contract, never of a mutable Task projection. */
110
- export const WORK_RISKS = ['readonly', 'low', 'medium', 'high', 'destructive'] as const;
111
- export type WorkRisk = (typeof WORK_RISKS)[number];
112
-
113
- export const TERMINAL_WORK_CONTRACT_STATUSES: readonly WorkContractStatus[] = [
114
- 'completed',
115
- 'failed',
116
- 'cancelled',
117
- ] as const;
118
-
119
- /** Independent semantic axes; `status` remains a compatibility projection. */
120
- export const WORK_KINDS = [
121
- 'repository_change',
122
- 'completed_no_change',
123
- 'read_only_review',
124
- 'investigation',
125
- 'local_effect',
126
- 'remote_effect',
127
- 'reconciliation',
128
- 'superseded',
129
- ] as const;
130
- export type WorkKind = (typeof WORK_KINDS)[number];
131
-
132
- export const DISPATCH_STATES = ['not_dispatched', 'claimed', 'launching', 'running', 'blocked', 'terminal'] as const;
133
- export type DispatchState = (typeof DISPATCH_STATES)[number];
134
-
135
- export const EVIDENCE_STATES = ['none', 'partial', 'valid', 'stale', 'contradictory', 'failed'] as const;
136
- export type EvidenceState = (typeof EVIDENCE_STATES)[number];
137
-
138
- export const COMPLETION_OUTCOMES = ['completed_changed', 'completed_no_change', 'completed_local', 'completed_remote', 'superseded'] as const;
139
- export type CompletionOutcome = (typeof COMPLETION_OUTCOMES)[number];
140
-
141
- /** Source-bound semantic evidence accumulated by a recoverable read-only review. */
142
- export interface ReadOnlyReviewEvidence {
143
- sourceRevision: string;
144
- workspaceFingerprint?: string;
145
- inspectedPaths: string[];
146
- findings: string[];
147
- recordedAt: string;
148
- }
149
-
150
- /** Controller-reviewed binding from one exact Work acceptance criterion to durable evidence. */
151
- export interface WorkSemanticAcceptanceEvidence {
152
- criterion: string;
153
- evidenceIds: string[];
154
- rationale: string;
155
- recordedAt: string;
156
- }
157
-
158
- /**
159
- * Terminal authority for a clean read-only review. This deliberately does not
160
- * impersonate repository delivery: it proves the reviewed source stayed at the
161
- * frozen base revision with no workspace delta and records the bounded review
162
- * scope that justified completed_no_change.
163
- */
164
- export interface ReadOnlyReviewCompletionReceipt {
165
- schemaVersion: 1;
166
- receiptId: string;
167
- source: 'read_only_review';
168
- workId: string;
169
- baseRevision: string;
170
- sourceRevision: string;
171
- workspaceFingerprint?: string;
172
- /** Explicit unchanged-workspace proof captured by the trusted finalizer. Must be empty. */
173
- workspaceChangedPaths: string[];
174
- inspectedPaths: string[];
175
- findingCount: 0;
176
- recordedAt: string;
177
- }
178
-
179
- /**
180
- * Terminal receipt for a bounded Controller-local side effect that is not a
181
- * repository delivery. Repository Task/Issue completion keeps using the
182
- * historical Git-oriented CompletionReceipt unchanged.
183
- */
184
- export interface LocalEffectCompletionReceipt {
185
- schemaVersion: 1;
186
- receiptId: string;
187
- source: 'local_effect';
188
- workId: string;
189
- operation: string;
190
- target: {
191
- kind: 'workspace_target' | 'controller_local';
192
- id: string;
193
- identityFingerprint?: string;
194
- };
195
- changed: boolean;
196
- recordedAt: string;
197
- }
198
-
199
- /** Durable completion authority for one typed remote effect. */
200
- export interface RemoteEffectCompletionReceipt {
201
- schemaVersion: 1;
202
- /** Plugin receipts retain their PLG-* id; repository Process effects use their canonical Process id. */
203
- receiptId: string;
204
- source: 'remote_effect';
205
- workId: string;
206
- /** Historical receipts omit this field and are interpreted as plugin_action. */
207
- authority?: 'plugin_action' | 'repository_process';
208
- pluginId?: string;
209
- actionId: string;
210
- requestId: string;
211
- semanticKey: string;
212
- resultDigest: string;
213
- processId?: string;
214
- recordedAt: string;
215
- }
216
-
217
- /**
218
- * Completion authority for a standalone Direct Edit that is not bound to the
219
- * retired Issue/Task completion model. Normal completion proves one finalized
220
- * edit session at an exact reachable Git revision. Historical completion may
221
- * instead reference one explicit reviewed reconciliation after exact revision,
222
- * path-scope, verification, reachability, and cleanup proof checks.
223
- */
224
- export interface DirectEditWorkCompletionReceipt {
225
- schemaVersion: 1;
226
- receiptId: string;
227
- source: 'direct_edit_work';
228
- workId: string;
229
- editSessionId?: string;
230
- reconciliationId?: string;
231
- targetBranch: string;
232
- targetRevision: string;
233
- sourceRevision?: string;
234
- baseRevision?: string;
235
- changedPaths: string[];
236
- delivery: RepositoryCompletionReceipt['delivery'];
237
- cleanup: RepositoryCompletionReceipt['cleanup'];
238
- verifiedAt: string;
239
- recordedAt: string;
240
- }
241
-
242
- export type WorkCompletionReceipt = RepositoryCompletionReceipt | DirectEditWorkCompletionReceipt | ReadOnlyReviewCompletionReceipt | LocalEffectCompletionReceipt | RemoteEffectCompletionReceipt;
243
-
244
- export function isRepositoryCompletionReceipt(
245
- receipt: WorkCompletionReceipt,
246
- ): receipt is RepositoryCompletionReceipt {
247
- return receipt.source !== 'local_effect'
248
- && receipt.source !== 'remote_effect'
249
- && receipt.source !== 'direct_edit_work'
250
- && receipt.source !== 'read_only_review';
251
- }
252
-
253
- export function isReadOnlyReviewCompletionReceipt(
254
- receipt: WorkCompletionReceipt,
255
- ): receipt is ReadOnlyReviewCompletionReceipt {
256
- return receipt.source === 'read_only_review';
257
- }
258
-
259
- export function isRemoteEffectCompletionReceipt(
260
- receipt: WorkCompletionReceipt,
261
- ): receipt is RemoteEffectCompletionReceipt {
262
- return receipt.source === 'remote_effect';
263
- }
264
-
265
- export function isDirectEditWorkCompletionReceipt(
266
- receipt: WorkCompletionReceipt,
267
- ): receipt is DirectEditWorkCompletionReceipt {
268
- return receipt.source === 'direct_edit_work';
269
- }
270
-
271
- /** A reviewed exception for historical/manual integration; never inferred automatically. */
272
- export const WORK_RECONCILIATION_METHODS = ['exact_commit', 'owned_path_tree', 'reviewed_patch_identity'] as const;
273
- export type WorkReconciliationMethod = (typeof WORK_RECONCILIATION_METHODS)[number];
274
-
275
- export const WORK_RECONCILIATION_OUTCOMES = ['accepted_equivalence', 'rejected_equivalence', 'superseded'] as const;
276
- export type WorkReconciliationOutcome = (typeof WORK_RECONCILIATION_OUTCOMES)[number];
277
-
278
- export const VERIFICATION_OUTCOMES = [
279
- 'valid_pass',
280
- 'valid_fail',
281
- 'invalid_check_id',
282
- 'infrastructure_failure',
283
- 'skipped',
284
- 'superseded',
285
- ] as const;
286
- export type VerificationOutcome = (typeof VERIFICATION_OUTCOMES)[number];
287
-
82
+ export { HANDOFF_STATUSES, TERMINAL_HANDOFF_STATUSES, isTerminalHandoffStatus, type HandoffStatus } from '../../../../packages/protocols/handoff/index';
83
+ import type { HandoffStatus } from '../../../../packages/protocols/handoff/index';
84
+
85
+ // Kernel V2: Work domain contracts are owned by packages/kernel/work/domain.
86
+ export {
87
+ WORK_CONTRACT_STATUSES,
88
+ WORK_PHASES,
89
+ WORK_PHASE_EVIDENCE_STATES,
90
+ WORK_RISKS,
91
+ TERMINAL_WORK_CONTRACT_STATUSES,
92
+ WORK_KINDS,
93
+ DISPATCH_STATES,
94
+ EVIDENCE_STATES,
95
+ COMPLETION_OUTCOMES,
96
+ WORK_RECONCILIATION_METHODS,
97
+ WORK_RECONCILIATION_OUTCOMES,
98
+ VERIFICATION_OUTCOMES,
99
+ isRepositoryCompletionReceipt,
100
+ isReadOnlyReviewCompletionReceipt,
101
+ isRemoteEffectCompletionReceipt,
102
+ isDirectEditWorkCompletionReceipt,
103
+ isTerminalWorkContractStatus,
104
+ } from '../../../../packages/kernel/work/domain/types';
105
+ export type {
106
+ WorkContractStatus,
107
+ WorkPhase,
108
+ WorkPhaseEvidenceState,
109
+ WorkPhaseEvidence,
110
+ WorkPhaseEvidenceMap,
111
+ WorkRisk,
112
+ WorkKind,
113
+ DispatchState,
114
+ EvidenceState,
115
+ CompletionOutcome,
116
+ ReadOnlyReviewEvidence,
117
+ WorkSemanticAcceptanceEvidence,
118
+ ReadOnlyReviewCompletionReceipt,
119
+ LocalEffectCompletionReceipt,
120
+ RemoteEffectCompletionReceipt,
121
+ DirectEditWorkCompletionReceipt,
122
+ WorkCompletionReceipt,
123
+ WorkReconciliationMethod,
124
+ WorkReconciliationOutcome,
125
+ VerificationOutcome,
126
+ WorkContractConstraints,
127
+ WorkContractDriverPolicy,
128
+ WorktreePolicy,
129
+ EvidencePolicy,
130
+ ApprovalPolicy,
131
+ RecoveryPolicy,
132
+ VerificationRecord,
133
+ WorkReconciliationRecord,
134
+ WorkContract,
135
+ SubmittedWorkOperation,
136
+ WorkContractStore,
137
+ } from '../../../../packages/kernel/work/domain/types';
288
138
  export const HANDOFF_CREATION_REASONS = [
289
139
  'policy_approval_required',
290
140
  'ambiguous_outcome',
@@ -296,25 +146,6 @@ export const HANDOFF_CREATION_REASONS = [
296
146
  ] as const;
297
147
  export type HandoffCreationReason = (typeof HANDOFF_CREATION_REASONS)[number];
298
148
 
299
- export interface EvidenceRef {
300
- evidenceId?: string;
301
- artifactId?: string;
302
- title: string;
303
- summary?: string;
304
- detailLevel?: FacadeDetailLevel;
305
- }
306
-
307
- export interface SuggestedNextAction {
308
- label: string;
309
- tool: FacadeTool;
310
- operation: string;
311
- payload?: Record<string, unknown>;
312
- risk: CapabilityRisk;
313
- confidence?: 'low' | 'medium' | 'high';
314
- reason?: string;
315
- fallback?: string;
316
- }
317
-
318
149
  export interface FacadeResult<TData = Record<string, unknown>> {
319
150
  schemaVersion: 1;
320
151
  status: FacadeStatus;
@@ -386,263 +217,15 @@ export interface HandoffInboxStore {
386
217
  items: HandoffItem[];
387
218
  }
388
219
 
389
- export interface WorkContractConstraints {
390
- maxChangedFiles?: number;
391
- maxChangedLines?: number;
392
- allowCommit?: boolean;
393
- allowMerge?: boolean;
394
- allowCleanup?: boolean;
395
- allowDestructive?: boolean;
396
- requireHandoffOnAmbiguity?: boolean;
397
- /** Immutable execution-policy snapshot captured when work starts. */
398
- accessMode?: AccessMode;
399
- /** current is the stability-first default; isolated is opt-in or used for explicit parallelism. */
400
- workspaceMode?: 'current' | 'isolated' | 'auto';
401
- requireWorktree?: boolean;
402
- /** Admission fence: repository mutation must not use the Direct Control/current-main lane. */
403
- directMainProhibited?: boolean;
404
- /** True when a change alters the agreed architecture direction rather than only implementation details. */
405
- architectureStrategyChange?: boolean;
406
- /** True when the proposed change weakens the thin-harness / high-performance execution policy. */
407
- conflictsWithThinHarnessPolicy?: boolean;
408
- /** True when the change alters the default routing or execution mode visible to users. */
409
- changesDefaultExecutionStrategy?: boolean;
410
- /** Repository-change delivery must publish the exact integrated revision before Work terminalization. */
411
- remoteDeliveryRequired?: boolean;
412
- }
413
-
414
- export interface WorkContractDriverPolicy {
415
- preferred: 'direct_edit' | 'isolated_worktree' | 'external_controller' | 'handoff_only';
416
- allowWorker: boolean;
417
- allowDirectEdit: boolean;
418
- }
419
-
420
- export interface WorktreePolicy {
421
- required: boolean;
422
- reason?: string;
423
- ref?: string;
424
- }
425
-
426
- export interface EvidencePolicy {
427
- defaultDetailLevel: FacadeDetailLevel;
428
- allowRawOptIn: boolean;
429
- maxEvidenceRefs: number;
430
- }
431
-
432
- export interface ApprovalPolicy {
433
- required: boolean;
434
- reasons: string[];
435
- confirmed: boolean;
436
- }
437
-
438
- export interface RecoveryPolicy {
439
- allowSelfHealing: boolean;
440
- maxInfrastructureRetries: number;
441
- handoffOnAmbiguity: boolean;
442
- }
443
-
444
- export interface VerificationRecord {
445
- checkId: string;
446
- outcome: VerificationOutcome;
447
- summary: string;
448
- recordedAt: string;
449
- /** Exact checked revision. Absence denotes legacy/non-authoritative evidence. */
450
- sourceRevision?: string;
451
- /** Exact dirty-workspace content identity observed by the check. */
452
- workspaceFingerprint?: string;
453
- /** Hash of the check inputs that must match before this result can be reused. */
454
- verificationInputFingerprint?: string;
455
- /** Bounded identity of the command/configuration that produced the result. */
456
- commandFingerprint?: string;
457
- resultArtifactId?: string;
458
- startedAt?: string;
459
- completedAt?: string;
460
- supersedes?: string;
461
- staleReason?: string;
462
- evidenceRef?: EvidenceRef;
463
- receipt?: ProcessCheckReceiptEvidence;
464
- }
465
-
466
- /**
467
- * Durable human-reviewed reconciliation for a Work whose original finalization
468
- * facts cannot be recovered. It records an exception; it is not completion
469
- * evidence by itself.
470
- */
471
- export interface WorkReconciliationRecord {
472
- schemaVersion: 1;
473
- reconciliationId: string;
474
- originalExpectedRevision: string;
475
- observedTargetRevision: string;
476
- baseRevision: string;
477
- targetBranch: string;
478
- reachable: boolean;
479
- method: WorkReconciliationMethod;
480
- comparedPaths: string[];
481
- reviewer: string;
482
- reviewedAt: string;
483
- unrecoverableStages: string[];
484
- cleanupOwnershipProof: string;
485
- rationale: string;
486
- outcome: WorkReconciliationOutcome;
487
- }
488
-
489
- export interface WorkContract {
490
- schemaVersion: 1 | 2;
491
- workId: string;
492
- repoId: string;
493
- /** Execution identity snapshot. Optional only for legacy records. */
494
- checkoutId?: string;
495
- principalId?: string;
496
- controllerInstanceId?: string;
497
- baseRevision?: string;
498
- workspaceFingerprint?: string;
499
- routeDecisionFingerprint?: string;
500
- routeDecision?: RouteDecision;
501
- mode: ExecutionMode;
502
- objective: string;
503
- acceptanceCriteria: string[];
504
- constraints: WorkContractConstraints;
505
- /** Risk is immutable contract input and is projected to legacy Task reads. */
506
- risk: WorkRisk;
507
- /** Technical phase; Requirement owns the user lifecycle. */
508
- phase: WorkPhase;
509
- /** Work-owned phase checkpoints. Task/Run/Process records may contribute evidence but cannot write this map directly. */
510
- phaseEvidence: WorkPhaseEvidenceMap;
511
- /** Explicit v2 execution semantics. `status` is retained for compatibility. */
512
- workKind: WorkKind;
513
- /** Primary is an objective-level business execution lane; execution_child is a resumable low-level operation handle owned by a primary Work or standalone caller. */
514
- lifecycleRole?: 'primary' | 'execution_child';
515
- /** Optional objective-level parent when this Work is only an execution child. */
516
- parentWorkId?: string;
517
- dispatchState: DispatchState;
518
- evidenceState: EvidenceState;
519
- completionOutcome?: CompletionOutcome;
520
- status: WorkContractStatus;
521
- createdAt: string;
522
- updatedAt: string;
523
- /** @deprecated Prefer Requirement/Plan/Work links; kept for compatibility reads only. */
524
- issueId?: string;
525
- taskId?: string;
526
- /** Stable Requirement authority that this Work may complete. */
527
- requirementId?: string;
528
- /** Work-owned completion receipt. Legacy Task receipts are projections only. */
529
- completionReceipt?: WorkCompletionReceipt;
530
- /** Provenance for complex work dispatched from a durable PlanContract step. */
531
- planId?: string;
532
- planStepId?: string;
533
- planSourceRevision?: string;
534
- scopeSummary?: string;
535
- /**
536
- * Discovery evidence, never an authorization boundary. Initial guesses,
537
- * inspected paths, and observed changes remain distinct so early retrieval
538
- * cannot masquerade as complete implementation scope.
539
- */
540
- scopeEvidence?: {
541
- initialLikelyPaths: string[];
542
- inspectedPaths: string[];
543
- actualChangedPaths: string[];
544
- recordedAt: string;
545
- };
546
- /** Source-bound semantic findings/scope for first-class recoverable read-only review Work. */
547
- readOnlyReviewEvidence?: ReadOnlyReviewEvidence;
548
- /** Explicit Controller-reviewed acceptance bindings. Mechanical evidence attribution alone never writes this field. */
549
- semanticAcceptanceEvidence?: WorkSemanticAcceptanceEvidence[];
550
- /** Explicit policy fence. This is not semantic completeness evidence. */
551
- allowedPaths: string[];
552
- forbiddenPaths: string[];
553
- checks: string[];
554
- driver: WorkContractDriverPolicy;
555
- worktreePolicy: WorktreePolicy;
556
- evidencePolicy: EvidencePolicy;
557
- approvalPolicy: ApprovalPolicy;
558
- recoveryPolicy: RecoveryPolicy;
559
- requestedBy: 'chatgpt' | 'user' | 'system' | 'scheduler';
560
- evidenceRefs: EvidenceRef[];
561
- handoffRefs: string[];
562
- suggestedNextActions: SuggestedNextAction[];
563
- policyDecisions: PolicyDecision[];
564
- checkRefs: VerificationRecord[];
565
- /** Reviewed historical/manual integration exceptions, retained for audit. */
566
- reconciliations: WorkReconciliationRecord[];
567
- continuationPrompt?: string;
568
- worktreeRef?: string;
569
- workerRef?: string;
570
- requestId?: string;
571
- /** Typed execution metadata; it does not imply ExecutionJob creation. */
572
- submittedOperation?: SubmittedWorkOperation;
573
- }
574
-
575
- /** Typed execution metadata retained on execution-child WorkContracts. */
576
- export interface SubmittedWorkOperation {
577
- name: string;
578
- semanticKey: string;
579
- argumentHash: string;
580
- mode: 'readonly' | 'mutating' | 'remote_write' | 'destructive';
581
- idempotent: boolean;
582
- replayable: boolean;
583
- resourceClaims: Array<{
584
- resourceKey: string;
585
- mode: string;
586
- quantity?: number;
587
- }>;
588
- }
589
-
590
- export interface WorkContractStore {
591
- schemaVersion: 1 | 2;
592
- updatedAt: string;
593
- contracts: WorkContract[];
594
- }
595
-
596
- export type ControllerType = 'chatgpt' | 'codex' | 'grok' | 'claude' | 'human';
597
-
598
- export interface ControllerSession {
599
- schemaVersion: 1;
600
- workId: string;
601
- controllerId: string;
602
- controllerType: ControllerType;
603
- sessionId: string;
604
- /** Authenticated authority that owned the claim; legacy records may omit it. */
605
- principalId?: string;
606
- /** Controller process/epoch that admitted the transport session. */
607
- controllerInstanceId?: string;
608
- /** Monotonic ownership fence. It changes only when ownership moves. */
609
- claimGeneration?: number;
610
- claimedAt: string;
611
- leaseExpiresAt: string;
612
- }
613
-
614
- export interface ControllerSessionStore {
615
- schemaVersion: 1;
616
- updatedAt: string;
617
- sessions: ControllerSession[];
618
- }
619
-
620
- export const PLAN_CONTRACT_STATUSES = [
621
- 'draft',
622
- 'inspecting',
623
- 'reviewing',
624
- 'approved',
625
- 'executing',
626
- 'replanning',
627
- 'verifying',
628
- 'ready_to_finalize',
629
- 'finalized',
630
- 'superseded',
631
- 'cancelled',
632
- 'invalidated_by_drift',
633
- ] as const;
634
- export type PlanContractStatus = (typeof PLAN_CONTRACT_STATUSES)[number];
635
-
636
- export const TERMINAL_PLAN_CONTRACT_STATUSES: readonly PlanContractStatus[] = [
637
- 'finalized',
638
- 'superseded',
639
- 'cancelled',
640
- 'invalidated_by_drift',
641
- ];
642
-
643
- export const PLAN_STEP_STATUSES = ['pending', 'ready', 'executing', 'validating', 'completed'] as const;
644
- export type PlanStepStatus = (typeof PLAN_STEP_STATUSES)[number];
645
-
220
+ // Kernel V2: Controller session contracts are owned by packages/kernel/controller/domain.
221
+ export type {
222
+ ControllerType,
223
+ ControllerSession,
224
+ ControllerSessionStore,
225
+ ControllerBinding,
226
+ ControllerLease,
227
+ ControllerRoundContext,
228
+ } from '../../../../packages/kernel/controller/domain/types';
646
229
  export interface PlanStep {
647
230
  id: string;
648
231
  objective: string;
@@ -662,9 +245,86 @@ export interface PlanStep {
662
245
  * A durable pre-execution decision record. WorkContract remains the unit that
663
246
  * owns dispatch, workspace, worker, and verification lifecycle.
664
247
  */
248
+ export const PLAN_OBLIGATION_DISPOSITIONS = ['keep', 'change', 'defer', 'drop'] as const;
249
+ export type PlanObligationDispositionKind = (typeof PLAN_OBLIGATION_DISPOSITIONS)[number];
250
+
251
+ export interface PlanObligationDisposition {
252
+ predecessorPlanId: string;
253
+ obligationId: string;
254
+ disposition: PlanObligationDispositionKind;
255
+ /** Successor locations such as step:<id>, acceptance:<id>:<index>, resolved_decision:<index>. */
256
+ successorRefs: string[];
257
+ /** Required for CHANGE/DEFER/DROP. KEEP may omit it. */
258
+ rationale?: string;
259
+ }
260
+
261
+ /**
262
+ * Immutable provenance for one predecessor delivery that may be reused by a
263
+ * successor Plan after approval. The Work itself remains historical and bound
264
+ * to the predecessor Plan; this record never transfers execution authority.
265
+ */
266
+ export interface PlanStepDeliveryCarry {
267
+ predecessorPlanId: string;
268
+ predecessorStepId: string;
269
+ successorStepId: string;
270
+ workId: string;
271
+ completionReceiptId: string;
272
+ deliveredSourceRevision: string;
273
+ recordedAt: string;
274
+ }
275
+
276
+ /** Mutable only until approval. A stable Plan may stage at most one next revision;
277
+ * the currently committed Plan fields remain authoritative until this draft is approved. */
278
+ export interface PlanRevisionDraft {
279
+ revision: number;
280
+ requestedRevisionLabel?: string;
281
+ sourceRevision: string;
282
+ goal: string;
283
+ nonGoals: string[];
284
+ assumptions: string[];
285
+ resolvedDecisions: string[];
286
+ stopConditions: string[];
287
+ replanConditions: string[];
288
+ integrationStrategy?: string;
289
+ steps: PlanStep[];
290
+ obligationDispositions?: PlanObligationDisposition[];
291
+ deliveryCarries?: PlanStepDeliveryCarry[];
292
+ createdAt: string;
293
+ updatedAt: string;
294
+ }
295
+
296
+ /** Immutable audit snapshot of one committed Plan revision. Historical revisions
297
+ * never own active scope, Work, scheduling, or admission authority. */
298
+ export interface PlanRevisionRecord {
299
+ schemaVersion: 1;
300
+ repoId: string;
301
+ planId: string;
302
+ revision: number;
303
+ requirementId?: string;
304
+ scopeKey: string;
305
+ sourceRevision: string;
306
+ goal: string;
307
+ nonGoals: string[];
308
+ assumptions: string[];
309
+ resolvedDecisions: string[];
310
+ stopConditions: string[];
311
+ replanConditions: string[];
312
+ integrationStrategy?: string;
313
+ status: PlanContractStatus;
314
+ steps: PlanStep[];
315
+ evidenceRefs: EvidenceRef[];
316
+ obligationDispositions?: PlanObligationDisposition[];
317
+ recordedAt: string;
318
+ reason?: string;
319
+ /** Compatibility label supplied by older successor-Plan clients. It is not a Plan identity. */
320
+ requestedRevisionLabel?: string;
321
+ }
322
+
665
323
  export interface PlanContract {
666
324
  schemaVersion: 1;
667
325
  planId: string;
326
+ /** Current committed semantic revision. Legacy rows without this field normalize to revision 1. */
327
+ revision?: number;
668
328
  repoId: string;
669
329
  /** Stable Requirement owner. Legacy plans may omit this until portfolio migration. */
670
330
  requirementId?: string;
@@ -680,7 +340,17 @@ export interface PlanContract {
680
340
  status: PlanContractStatus;
681
341
  steps: PlanStep[];
682
342
  evidenceRefs: EvidenceRef[];
343
+ /** Historical predecessor Plans explicitly replaced by this Plan. */
344
+ supersedes?: string[];
683
345
  supersededBy?: string;
346
+ /** Bounded durable reason for the supersession edge. */
347
+ supersessionReason?: string;
348
+ /** Explicit reconciliation of unresolved predecessor obligations. */
349
+ obligationDispositions?: PlanObligationDisposition[];
350
+ /** Trusted, bounded delivery provenance derived only during canonical successor admission. */
351
+ deliveryCarries?: PlanStepDeliveryCarry[];
352
+ /** At most one staged next revision. It is not another active Plan authority. */
353
+ pendingRevision?: PlanRevisionDraft;
684
354
  createdAt: string;
685
355
  updatedAt: string;
686
356
  }
@@ -704,6 +374,8 @@ export interface CapabilityDescriptor {
704
374
  exposedVia: CapabilityExecutionSurface;
705
375
  schemaExposure: CapabilitySchemaExposure;
706
376
  summary: string;
377
+ /** Provider-declared semantic capabilities implemented by this executable action. */
378
+ semanticCapabilities?: string[];
707
379
  }
708
380
 
709
381
  export interface CapabilityGroupSummary {
@@ -717,16 +389,6 @@ export interface CapabilityGroupSummary {
717
389
  schemaExposures: CapabilitySchemaExposure[];
718
390
  }
719
391
 
720
- export interface PolicyDecision {
721
- decision: PolicyDecisionKind;
722
- reason: string;
723
- capabilityId?: string;
724
- approvalRequestId?: string;
725
- requiredConfirmationText?: string;
726
- warnings: string[];
727
- suggestedNextActions: SuggestedNextAction[];
728
- }
729
-
730
392
  export interface ExecutionModeSelectionInput {
731
393
  objective?: string;
732
394
  expectedFiles?: number;
@@ -757,6 +419,8 @@ export interface ExecutionModeSelectionInput {
757
419
  secretAccess?: boolean;
758
420
  mutation?: boolean;
759
421
  risk?: CapabilityRisk;
422
+ /** Advisory Context Plane routing hints. Explicit request fields still win. */
423
+ contextRouteHints?: RouteContextHints;
760
424
  /** Migration/testing escape hatch: adapters must return this exact policy decision. */
761
425
  routePolicyInput?: RoutePolicyInput;
762
426
  }
@@ -771,20 +435,12 @@ export interface ExecutionModeSelection {
771
435
  routeDecision: RouteDecision;
772
436
  }
773
437
 
774
- export function isTerminalHandoffStatus(status: HandoffStatus): boolean {
775
- return TERMINAL_HANDOFF_STATUSES.includes(status);
776
- }
777
-
778
- export function isTerminalWorkContractStatus(status: WorkContractStatus): boolean {
779
- return TERMINAL_WORK_CONTRACT_STATUSES.includes(status);
780
- }
781
-
782
438
  /** @deprecated Compatibility adapter. Route Policy is the sole routing authority. */
783
439
  export function selectExecutionMode(input: ExecutionModeSelectionInput): ExecutionModeSelection {
784
440
  const missingContractFields: string[] = [];
785
441
  if (!input.scopeClear) missingContractFields.push('scopeSummary', 'acceptanceCriteria', 'allowedPaths');
786
442
  if (input.objective !== undefined && input.objective.trim().length === 0) missingContractFields.push('objective');
787
- const routeDecision = decideRoute(input.routePolicyInput ?? {
443
+ const baseRoutePolicyInput: RoutePolicyInput = input.routePolicyInput ?? {
788
444
  intent: {
789
445
  objective: input.objective ?? (input.scopeClear ? 'bounded repository work' : ''),
790
446
  scopeClear: input.scopeClear,
@@ -822,7 +478,8 @@ export function selectExecutionMode(input: ExecutionModeSelectionInput): Executi
822
478
  recovery: {
823
479
  required: input.requiresRecovery,
824
480
  },
825
- });
481
+ };
482
+ const routeDecision = decideRoute(applyRouteContextHints(baseRoutePolicyInput, input.contextRouteHints));
826
483
  return {
827
484
  mode: routeDecision.executionMode,
828
485
  reason: routeDecision.reasons.map((reason) => reason.message).join(' '),