@moretea-labs/forge 1.6.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/AGENTS.md +4 -0
  2. package/CHANGELOG.md +39 -0
  3. package/CLAUDE.md +4 -0
  4. package/README.md +2 -2
  5. package/README.zh-CN.md +1 -1
  6. package/SKILL.md +2 -2
  7. package/THIRD_PARTY_NOTICES.md +1 -1
  8. package/agents/openai.yaml +1 -1
  9. package/assets/hooks/hook-input.sh +11 -8
  10. package/assets/hooks/lib/session-state.sh +10 -7
  11. package/assets/hooks/lib/workflow-state.sh +13 -177
  12. package/assets/hooks/post-tool-observer.sh +8 -2
  13. package/assets/hooks/prompt-guard.sh +5 -81
  14. package/assets/hooks/session-start-context.sh +56 -1
  15. package/assets/partials/05-workflow.partial.md +1 -1
  16. package/assets/partials-agents/02-operating-mode.partial.md +2 -0
  17. package/assets/partials-agents/03-orchestration.partial.md +1 -1
  18. package/assets/plugin-registry.v1.json +3 -3
  19. package/assets/reference-configs/document-generation.md +1 -1
  20. package/assets/reference-configs/harness-overview.md +1 -1
  21. package/assets/reference-configs/sprint-contracts.md +3 -3
  22. package/assets/skill-version.json +2 -2
  23. package/assets/templates/contract.template.md +2 -7
  24. package/assets/templates/helpers/capture-plan.sh +2 -2
  25. package/assets/templates/helpers/check-architecture-sync.sh +17 -0
  26. package/assets/templates/helpers/check-task-workflow.sh +4 -4
  27. package/assets/templates/helpers/contract-worktree.sh +1 -21
  28. package/assets/templates/helpers/ensure-task-workflow.sh +11 -36
  29. package/assets/templates/helpers/inspect-project-state.ts +8 -6
  30. package/assets/templates/helpers/migrate-project-template.sh +22 -45
  31. package/assets/templates/helpers/migrate-workflow-docs.ts +9 -7
  32. package/assets/templates/helpers/new-plan.sh +1 -1
  33. package/assets/templates/helpers/plan-to-todo.sh +12 -37
  34. package/assets/templates/helpers/ship-worktrees.sh +2 -29
  35. package/assets/templates/helpers/verify-contract.sh +1 -111
  36. package/assets/templates/helpers/verify-sprint.sh +3 -180
  37. package/assets/templates/helpers/workflow-contract.ts +5 -1
  38. package/assets/templates/plan.template.md +1 -1
  39. package/assets/templates/review.template.md +9 -34
  40. package/assets/workflow-contract.v1.json +10 -19
  41. package/docs/README.md +10 -10
  42. package/docs/architecture/CURRENT.md +178 -0
  43. package/docs/architecture/EVOLUTION.md +42 -0
  44. package/docs/architecture/current/README.md +4 -156
  45. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
  46. package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
  47. package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
  48. package/docs/architecture/history/README.md +7 -0
  49. package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
  50. package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
  51. package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
  52. package/docs/architecture/history.md +3 -34
  53. package/docs/architecture/index.md +15 -98
  54. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
  55. package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
  56. package/docs/architecture/versions/1.6.md +38 -0
  57. package/docs/architecture/versions/1.7.md +41 -0
  58. package/docs/forge-chatgpt-browser-engine.md +2 -2
  59. package/docs/forge-chatgpt-mcp-setup.md +4 -28
  60. package/docs/forge-chatgpt-supervised-automation.md +3 -3
  61. package/docs/forge-github-issue-launcher.md +1 -1
  62. package/docs/forge-plugin-management.md +1 -1
  63. package/docs/forge-runtime-self-healing-loop.md +1 -1
  64. package/docs/operations/controller-browser-plugin.md +26 -6
  65. package/docs/operations/controller-performance-and-502.md +143 -0
  66. package/docs/operations/controller-reliability-runbook.md +1 -1
  67. package/docs/operations/features.md +2 -2
  68. package/docs/operations/github-repository.md +1 -1
  69. package/docs/operations/homebrew.md +2 -2
  70. package/docs/operations/mcp-tool-exposure.md +5 -3
  71. package/docs/wiki/Architecture.md +6 -6
  72. package/docs/wiki/Implementation.md +2 -2
  73. package/docs/wiki/Integrations.md +2 -2
  74. package/docs/wiki/Work-Lifecycle.md +1 -1
  75. package/package.json +33 -11
  76. package/scripts/activate-source-baseline.ts +17 -13
  77. package/scripts/architecture-event.ts +2 -820
  78. package/scripts/architecture-queue.sh +2 -645
  79. package/scripts/archive-architecture-request.sh +2 -242
  80. package/scripts/archive-workflow.sh +1 -291
  81. package/scripts/benchmark-background-check-overlap.ts +228 -0
  82. package/scripts/benchmark-mcp-host.sh +117 -0
  83. package/scripts/benchmark-mcp-transport.ts +170 -0
  84. package/scripts/benchmark-quality-harness.ts +146 -0
  85. package/scripts/benchmark-route-session-concurrency.ts +207 -6
  86. package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
  87. package/scripts/benchmark-typescript-navigation.ts +186 -0
  88. package/scripts/benchmark-work-efficiency.ts +334 -0
  89. package/scripts/capability-config.ts +2 -392
  90. package/scripts/capability-resolver.ts +2 -503
  91. package/scripts/capture-plan.sh +1 -332
  92. package/scripts/check-agent-tooling.sh +2 -1558
  93. package/scripts/check-architecture-sync.sh +2 -371
  94. package/scripts/check-brain-manifest.sh +2 -253
  95. package/scripts/check-context-files.sh +2 -47
  96. package/scripts/check-deploy-sql-order.sh +2 -115
  97. package/scripts/check-mcp-compatibility.ts +14 -0
  98. package/scripts/check-runtime-architecture.mjs +349 -79
  99. package/scripts/check-skill-version.ts +3 -191
  100. package/scripts/check-source-duplication.mjs +61 -0
  101. package/scripts/check-stable-baseline.ts +92 -0
  102. package/scripts/check-task-sync.sh +2 -63
  103. package/scripts/check-task-workflow.sh +2 -1000
  104. package/scripts/codex-handoff-resume.sh +2 -267
  105. package/scripts/context-contract-sync.sh +2 -514
  106. package/scripts/contract-run.ts +2 -463
  107. package/scripts/contract-worktree.sh +1 -722
  108. package/scripts/ensure-task-workflow.sh +1 -1225
  109. package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
  110. package/scripts/inspect-project-state.ts +4 -279
  111. package/scripts/install-standalone-recovery.ts +24 -0
  112. package/scripts/lib/project-init-lib.sh +22 -46
  113. package/scripts/lib/run-forge-helper.sh +19 -0
  114. package/scripts/lib/run-forge-helper.ts +26 -0
  115. package/scripts/migrate-project-template.sh +1 -1189
  116. package/scripts/migrate-workflow-docs.ts +4 -412
  117. package/scripts/new-plan.sh +1 -180
  118. package/scripts/new-spec.sh +1 -47
  119. package/scripts/new-sprint.sh +1 -46
  120. package/scripts/plan-to-todo.sh +1 -796
  121. package/scripts/prepare-codex-handoff.sh +2 -201
  122. package/scripts/prepare-handoff.sh +1 -78
  123. package/scripts/refresh-current-status.sh +2 -467
  124. package/scripts/run-governed-gate.ts +5 -1
  125. package/scripts/select-agent-context-blocks.sh +2 -64
  126. package/scripts/ship-worktrees.sh +1 -558
  127. package/scripts/smoke-ios-physical-device.ts +4 -2
  128. package/scripts/smoke-runtime-recovery.ts +1 -35
  129. package/scripts/smoke-schedule-engine.ts +1 -20
  130. package/scripts/sprint-backlog.sh +1 -834
  131. package/scripts/stage-runtime-release.ts +2 -1
  132. package/scripts/summarize-failures.sh +2 -123
  133. package/scripts/switch-plan.sh +1 -150
  134. package/scripts/sync-brain-docs.sh +2 -379
  135. package/scripts/sync-generated-authority.mjs +175 -0
  136. package/scripts/verify-contract.sh +2 -703
  137. package/scripts/verify-forge-runtime.sh +0 -1
  138. package/scripts/verify-sprint.sh +1 -677
  139. package/scripts/workflow-contract.ts +4 -205
  140. package/scripts/workstream-sync.sh +2 -261
  141. package/src/cli/agent-jobs/executor-health.ts +1 -1
  142. package/src/cli/commands/init-hook.ts +3 -3
  143. package/src/cli/commands/mcp.ts +9 -5
  144. package/src/cli/commands/plugin.ts +12 -3
  145. package/src/cli/commands/recovery.ts +25 -3
  146. package/src/cli/commands/runtime.ts +55 -3
  147. package/src/cli/commands/security.ts +12 -1
  148. package/src/cli/commands/setup-profile.ts +31 -21
  149. package/src/cli/controller/check-runner.ts +113 -5
  150. package/src/cli/controller/composite-result.ts +1 -1
  151. package/src/cli/controller/context/focus.ts +51 -0
  152. package/src/cli/controller/context/instruction-context.ts +114 -0
  153. package/src/cli/controller/context/known-paths.ts +76 -0
  154. package/src/cli/controller/context/query-planning.ts +110 -0
  155. package/src/cli/controller/context/rule-resolution.ts +532 -0
  156. package/src/cli/controller/context/source-materializer.ts +278 -0
  157. package/src/cli/controller/context/structural.ts +16 -0
  158. package/src/cli/controller/context/types.ts +286 -0
  159. package/src/cli/controller/context-pack.ts +828 -487
  160. package/src/cli/controller/launch-agents.ts +77 -2
  161. package/src/cli/controller/operational-plan.ts +2 -2
  162. package/src/cli/controller/work-mode.ts +6 -4
  163. package/src/cli/editing/edit-session.ts +60 -7
  164. package/src/cli/github/contracts.ts +16 -0
  165. package/src/cli/github/github.ts +135 -16
  166. package/src/cli/github/session.ts +2 -1
  167. package/src/cli/installer/managed-entries.ts +15 -1
  168. package/src/cli/local-bridge/console-automations.ts +54 -78
  169. package/src/cli/local-bridge/console-view-models.ts +1 -35
  170. package/src/cli/local-bridge/facade-api.ts +37 -264
  171. package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
  172. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +23 -13
  173. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
  174. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +6 -4
  175. package/src/cli/local-bridge/frontend/src/lib/api.ts +1 -6
  176. package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
  177. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +2 -2
  178. package/src/cli/local-bridge/frontend/src/styles.css +1 -1
  179. package/src/cli/local-bridge/frontend/src/types.ts +5 -8
  180. package/src/cli/local-bridge/job-store.ts +1 -490
  181. package/src/cli/local-bridge/server.ts +2 -515
  182. package/src/cli/local-bridge/ui-dist/app.css +1 -1
  183. package/src/cli/local-bridge/ui-dist/app.js +3703 -3757
  184. package/src/cli/mcp/auth.ts +5 -5
  185. package/src/cli/mcp/instructions.ts +3 -2
  186. package/src/cli/mcp/legacy-tool-service.ts +10 -222
  187. package/src/cli/mcp/multi-repository.ts +16 -5
  188. package/src/cli/mcp/oauth.ts +175 -26
  189. package/src/cli/mcp/post-finalize-work-attribution.ts +150 -0
  190. package/src/cli/mcp/repository-tools.ts +282 -146
  191. package/src/cli/mcp/server.ts +586 -116
  192. package/src/cli/mcp/tool-capability-cache.ts +1 -1
  193. package/src/cli/mcp/tool-contract.ts +14 -0
  194. package/src/cli/mcp/toolset-selection.ts +1 -1
  195. package/src/cli/mcp/toolset.ts +44 -7
  196. package/src/cli/mcp/transports/http.ts +124 -14
  197. package/src/cli/mcp/transports/session-registry.ts +43 -5
  198. package/src/cli/mcp/types.ts +3 -3
  199. package/src/cli/repositories/command-classifier.ts +103 -21
  200. package/src/cli/repositories/command-executor.ts +78 -526
  201. package/src/cli/repositories/command-process.ts +108 -0
  202. package/src/cli/repositories/command-scope.ts +99 -41
  203. package/src/cli/repositories/controller-home.ts +7 -8
  204. package/src/cli/repositories/git-command-executor.ts +2 -0
  205. package/src/cli/repositories/locks.ts +53 -16
  206. package/src/cli/repositories/repository-snapshot.ts +124 -0
  207. package/src/cli/repositories/selected-path-actions.ts +17 -9
  208. package/src/cli/repositories/structured-git.ts +118 -6
  209. package/src/cli/repository/inspector.ts +563 -65
  210. package/src/cli/repository/session-cache.ts +58 -17
  211. package/src/cli/v81-entry.ts +1 -4
  212. package/src/effects/fs-transaction.ts +85 -17
  213. package/src/runtime/context/codegraph-read-provider.ts +233 -2
  214. package/src/runtime/context/codegraph-sidecar.cjs +74 -40
  215. package/src/runtime/context/generic-lsp-provider.ts +355 -0
  216. package/src/runtime/context/lsp-client.ts +283 -0
  217. package/src/runtime/context/semantic-navigation-contract.ts +61 -0
  218. package/src/runtime/context/semantic-navigation.ts +223 -0
  219. package/src/runtime/context/swift-navigation.ts +565 -0
  220. package/src/runtime/context/typescript-navigation.ts +226 -0
  221. package/src/runtime/control-plane/dispatch-priority.ts +28 -0
  222. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +48 -16
  223. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
  224. package/src/runtime/control-plane/execution/repository-work-attribution.ts +106 -0
  225. package/src/runtime/control-plane/execution/retained-work-resume.ts +203 -0
  226. package/src/runtime/control-plane/execution/session-store.ts +18 -0
  227. package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
  228. package/src/runtime/control-plane/execution/work-completion-authority.ts +58 -0
  229. package/src/runtime/control-plane/execution/work-evidence-policy.ts +200 -0
  230. package/src/runtime/control-plane/execution/work-execution-support.ts +386 -0
  231. package/src/runtime/control-plane/execution/work-finalization-service.ts +1913 -0
  232. package/src/runtime/control-plane/execution/work-handle-authority.ts +96 -0
  233. package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
  234. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
  235. package/src/runtime/control-plane/execution/work-operation-service.ts +468 -0
  236. package/src/runtime/control-plane/execution/work-path-scope.ts +37 -0
  237. package/src/runtime/control-plane/execution/work-preparation-service.ts +479 -0
  238. package/src/runtime/control-plane/execution/work-process-evidence.ts +129 -0
  239. package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
  240. package/src/runtime/control-plane/execution/work-task-receipt.ts +22 -18
  241. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +156 -11
  242. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +22 -14
  243. package/src/runtime/control-plane/execution/work-verification-context.ts +56 -0
  244. package/src/runtime/control-plane/execution/work-verification-service.ts +388 -0
  245. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +90 -9
  246. package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
  247. package/src/runtime/control-plane/facade/controller-round-relay.ts +1118 -0
  248. package/src/runtime/control-plane/facade/controller-session-store.ts +302 -12
  249. package/src/runtime/control-plane/facade/goal-workloop-access.ts +17 -1
  250. package/src/runtime/control-plane/facade/goal-workloop.ts +928 -190
  251. package/src/runtime/control-plane/facade/index.ts +3 -0
  252. package/src/runtime/control-plane/facade/plan-contract-store.ts +275 -42
  253. package/src/runtime/control-plane/facade/repository-work-admission.ts +147 -0
  254. package/src/runtime/control-plane/facade/requirement-authority.ts +83 -0
  255. package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
  256. package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
  257. package/src/runtime/control-plane/facade/types.ts +90 -10
  258. package/src/runtime/control-plane/facade/work-contract-store.ts +157 -261
  259. package/src/runtime/control-plane/facade/work-state-machine.ts +250 -0
  260. package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
  261. package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
  262. package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
  263. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
  264. package/src/runtime/control-plane/global-scheduler/maintenance.ts +152 -0
  265. package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
  266. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
  267. package/src/runtime/control-plane/global-scheduler/scheduler.ts +278 -543
  268. package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
  269. package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
  270. package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
  271. package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
  272. package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
  273. package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
  274. package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
  275. package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
  276. package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
  277. package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
  278. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +63 -0
  279. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +365 -117
  280. package/src/runtime/control-plane/launcher/launch-reservation-store.ts +89 -0
  281. package/src/runtime/control-plane/launcher/thin-launcher.ts +244 -11
  282. package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
  283. package/src/runtime/control-plane/persistence/requirement-store.ts +0 -12
  284. package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
  285. package/src/runtime/control-plane/release-retention.ts +62 -2
  286. package/src/runtime/control-plane/repo-actor/registry.ts +4 -2
  287. package/src/runtime/control-plane/routing/route-policy.ts +24 -21
  288. package/src/runtime/control-plane/routing/workspace-admission.ts +70 -0
  289. package/src/runtime/control-plane/runtime-status-client.ts +0 -2
  290. package/src/runtime/diagnostics/mcp-timing.ts +13 -0
  291. package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
  292. package/src/runtime/diagnostics/performance.ts +24 -1
  293. package/src/runtime/evidence/event-ledger.ts +1 -1
  294. package/src/runtime/evidence/process-check-execution.ts +18 -0
  295. package/src/runtime/execution/jobs/child-reference.ts +6 -2
  296. package/src/runtime/execution/jobs/store.ts +58 -4
  297. package/src/runtime/execution/jobs/types.ts +1 -1
  298. package/src/runtime/execution/managed-workspace.ts +203 -1
  299. package/src/runtime/execution/process-runtime/check-facade.ts +51 -4
  300. package/src/runtime/execution/process-runtime/check-result.ts +88 -0
  301. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +7 -1
  302. package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
  303. package/src/runtime/execution/process-runtime/command-facade.ts +367 -40
  304. package/src/runtime/execution/process-runtime/gc.ts +38 -6
  305. package/src/runtime/execution/process-runtime/lightweight-managed.ts +1201 -0
  306. package/src/runtime/execution/process-runtime/persisted-check.ts +51 -5
  307. package/src/runtime/execution/process-runtime/resource-claims.ts +10 -6
  308. package/src/runtime/execution/process-runtime/runtime.ts +53 -3
  309. package/src/runtime/execution/process-runtime/store.ts +1 -0
  310. package/src/runtime/execution/process-runtime/types.ts +4 -12
  311. package/src/runtime/execution/thin-harness/async-process.ts +12 -2
  312. package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
  313. package/src/runtime/execution/work-activity.ts +21 -0
  314. package/src/runtime/execution/workers/executor.ts +18 -61
  315. package/src/runtime/gateway/mcp/execution-tools.ts +35 -1852
  316. package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +61 -0
  317. package/src/runtime/gateway/mcp/process-tools.ts +83 -37
  318. package/src/runtime/gateway/mcp/router.ts +186 -84
  319. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +565 -0
  320. package/src/runtime/gateway/mcp/runtime-tools.ts +2378 -1947
  321. package/src/runtime/plugins/app-store-connect-adapter.ts +216 -47
  322. package/src/runtime/plugins/browser-adapter.ts +2662 -829
  323. package/src/runtime/plugins/browser-automation-service.ts +10 -0
  324. package/src/runtime/plugins/browser-handoff-host.ts +2 -25
  325. package/src/runtime/plugins/browser-handoff.ts +110 -5
  326. package/src/runtime/plugins/browser-macos-bridge.ts +701 -63
  327. package/src/runtime/plugins/browser-manifest-surface.ts +603 -0
  328. package/src/runtime/plugins/browser-native-session-service.ts +222 -0
  329. package/src/runtime/plugins/browser-node-bridge.ts +6 -34
  330. package/src/runtime/plugins/browser-provider-registry.ts +109 -0
  331. package/src/runtime/plugins/browser-runtime-contract.ts +154 -0
  332. package/src/runtime/plugins/browser-runtime.ts +193 -0
  333. package/src/runtime/plugins/browser-session-authority.ts +332 -0
  334. package/src/runtime/plugins/browser-session-store.ts +121 -0
  335. package/src/runtime/plugins/browser-session-types.ts +98 -0
  336. package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
  337. package/src/runtime/plugins/desktop-operator-registration.ts +10 -4
  338. package/src/runtime/plugins/external-adapter.ts +358 -3
  339. package/src/runtime/plugins/external-unix-socket.ts +7 -1
  340. package/src/runtime/plugins/first-party-registry.ts +2 -0
  341. package/src/runtime/plugins/github-adapter.ts +125 -0
  342. package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
  343. package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
  344. package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
  345. package/src/runtime/plugins/ios-adapter.ts +106 -16
  346. package/src/runtime/plugins/ios-agent-device.ts +234 -64
  347. package/src/runtime/plugins/ios-physical-device.ts +1143 -392
  348. package/src/runtime/plugins/lightweight-action.ts +153 -0
  349. package/src/runtime/plugins/local-system-adapter.ts +123 -6
  350. package/src/runtime/plugins/macos-capability-broker.ts +47 -9
  351. package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
  352. package/src/runtime/plugins/plugin-management-adapter.ts +49 -8
  353. package/src/runtime/plugins/resend-adapter.ts +1 -1
  354. package/src/runtime/plugins/store.ts +330 -33
  355. package/src/runtime/plugins/types.ts +38 -3
  356. package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
  357. package/src/runtime/projections/git-status-sampler.ts +16 -16
  358. package/src/runtime/projections/materialized-view.ts +28 -10
  359. package/src/runtime/recovery/maintenance-executor.ts +426 -25
  360. package/src/runtime/root/mcp-transport.ts +180 -10
  361. package/src/runtime/root/package-connector-service.ts +230 -10
  362. package/src/runtime/root/package-runtime-release.ts +143 -17
  363. package/src/runtime/root/package-runtime-service.ts +461 -22
  364. package/src/runtime/root/release-manifest.ts +144 -18
  365. package/src/runtime/root/release-materialize.ts +125 -32
  366. package/src/runtime/root/release-store.ts +48 -11
  367. package/src/runtime/root/runtime.ts +23 -5
  368. package/src/runtime/root/service.ts +100 -29
  369. package/src/runtime/root/types.ts +12 -0
  370. package/src/runtime/safe-tooling/ios-development.ts +321 -63
  371. package/src/runtime/shared/trusted-executable.ts +62 -0
  372. package/src/runtime/shared/trusted-node-executable.ts +48 -0
  373. package/src/runtime/standalone-recovery/core.ts +1079 -240
  374. package/src/runtime/standalone-recovery/entry.ts +100 -24
  375. package/src/runtime/standalone-recovery/installer.ts +20 -4
  376. package/src/runtime/standalone-recovery/service-labels.ts +2 -0
  377. package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
  378. package/src/runtime/workflow/schedules/browser-probe.ts +81 -3
  379. package/src/runtime/workflow/schedules/engine.ts +364 -202
  380. package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
  381. package/src/runtime/workflow/schedules/settlement.ts +64 -17
  382. package/src/runtime/workflow/schedules/store.ts +209 -19
  383. package/src/runtime/workflow/schedules/types.ts +2 -4
  384. package/src/runtime/workflow/schedules/work-continuation.ts +26 -13
  385. package/src/testing/test-governance.ts +8 -40
  386. package/assets/reference-configs/heartbeat-triage.md +0 -57
  387. package/assets/templates/helpers/harness-trace-grade.sh +0 -150
  388. package/assets/templates/helpers/heartbeat-triage.sh +0 -361
  389. package/assets/templates/helpers/maintenance-triage.sh +0 -167
  390. package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
  391. package/docs/architecture/current/architecture-invariants.md +0 -331
  392. package/docs/architecture/current/automation-and-schedule-engine.md +0 -459
  393. package/docs/architecture/current/codegraph-context-provider.md +0 -238
  394. package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
  395. package/docs/architecture/current/controller-repository-decoupling.md +0 -148
  396. package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -373
  397. package/docs/architecture/current/entity-model.md +0 -612
  398. package/docs/architecture/current/external-plugin-governance.md +0 -396
  399. package/docs/architecture/current/failure-recovery.md +0 -447
  400. package/docs/architecture/current/governance.md +0 -213
  401. package/docs/architecture/current/human-interaction-plane.md +0 -87
  402. package/docs/architecture/current/implementation-status.md +0 -128
  403. package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
  404. package/docs/architecture/current/legacy-governance.md +0 -58
  405. package/docs/architecture/current/local-workspace-target-grants.md +0 -70
  406. package/docs/architecture/current/migration-roadmap.md +0 -105
  407. package/docs/architecture/current/multi-repository-execution.md +0 -371
  408. package/docs/architecture/current/operations-runbook.md +0 -45
  409. package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
  410. package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
  411. package/docs/architecture/current/repository-access-modes.md +0 -102
  412. package/docs/architecture/current/route-policy.md +0 -15
  413. package/docs/architecture/current/route-session-concurrency.md +0 -85
  414. package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
  415. package/docs/architecture/current/runtime-directory-map.md +0 -49
  416. package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
  417. package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
  418. package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
  419. package/docs/architecture/current/system-overview.md +0 -169
  420. package/docs/architecture/current/target-requirements-traceability.md +0 -202
  421. package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
  422. package/docs/architecture/current/thin-harness-v1.md +0 -321
  423. package/docs/architecture/current/verification-and-release-gates.md +0 -391
  424. package/docs/forge-autonomous-goal-loop.md +0 -9
  425. package/docs/forge-provider-configuration.md +0 -7
  426. package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -93
  427. package/docs/operations/gmail-assistant-routines.md +0 -186
  428. package/docs/operations/personal-assistant-operator-guide.md +0 -61
  429. package/docs/operations/provider-configuration.md +0 -31
  430. package/scripts/harness-trace-grade.sh +0 -150
  431. package/scripts/heartbeat-triage.sh +0 -361
  432. package/scripts/maintenance-triage.sh +0 -167
  433. package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
  434. package/src/cli/repositories/goal-registry.ts +0 -239
  435. package/src/runtime/assistant/action-proposals.ts +0 -279
  436. package/src/runtime/assistant/intent.ts +0 -395
  437. package/src/runtime/assistant/model-provider.ts +0 -460
  438. package/src/runtime/assistant/openapi.ts +0 -223
  439. package/src/runtime/assistant/policy.ts +0 -89
  440. package/src/runtime/assistant/readiness.ts +0 -258
  441. package/src/runtime/assistant/routine-runtime.ts +0 -477
  442. package/src/runtime/assistant/schedule-binding.ts +0 -171
  443. package/src/runtime/assistant/standing-grants.ts +0 -375
  444. package/src/runtime/assistant/store.ts +0 -243
  445. package/src/runtime/assistant/types.ts +0 -135
  446. package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
  447. package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
  448. package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
  449. package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
  450. package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
  451. package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
  452. package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
  453. package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
  454. package/src/runtime/control-plane/goal-loop/index.ts +0 -13
  455. package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
  456. package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
  457. package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
  458. package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
  459. package/src/runtime/control-plane/goal-loop/types.ts +0 -378
  460. package/src/runtime/control-plane/startup-recovery.ts +0 -198
  461. package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
  462. package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
  463. package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
  464. package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
  465. package/src/runtime/workflow/findings/store.ts +0 -204
  466. package/src/runtime/workflow/findings/types.ts +0 -58
  467. package/src/runtime/workflow/portfolio/engine.ts +0 -20
  468. package/src/runtime/workflow/portfolio/store.ts +0 -185
  469. package/src/runtime/workflow/portfolio/types.ts +0 -29
@@ -1,612 +0,0 @@
1
- # Controller Runtime Entity Model
2
-
3
- > Status: **Runtime Authority**
4
-
5
- ## 1. Modeling Principle
6
-
7
- Forge separates four kinds of truth:
8
-
9
- 1. **intent** — what should be achieved;
10
- 2. **execution** — what the system attempted;
11
- 3. **evidence** — what actually happened;
12
- 4. **projection** — what is convenient to display or query.
13
-
14
- Entities from different categories must not be collapsed merely because they are currently stored in adjacent files or exposed by one tool.
15
-
16
- The current Controller model also separates semantic ownership from execution depth and placement. Requirement/Plan/Work describe intent and finite delivery lineage; Direct/Process/Agent describe execution mechanisms; Workspace/Worktree/provider resources describe placement. None of those dimensions substitutes for another.
17
-
18
- ### 1.1 Current intent hierarchy
19
-
20
- ```text
21
- Requirement? long-lived user outcome
22
- -> Plan? optional decomposition/replanning contract
23
- -> Work finite recoverable objective
24
- -> Edit Session / Process / Run / Verification evidence
25
-
26
- Schedule long-lived trigger/policy
27
- -> Occurrence one bounded terminal firing
28
- ```
29
-
30
- A Requirement may have more than one active Plan slice. Current Plan rows own the forward `requirementId` relation; `Requirement.activePlanId` is migration compatibility only and MUST NOT become a second lifecycle authority. A failed/cancelled Work moves its Plan to `replanning`; a reusable slice returns to `ready` rather than pretending to be in verification.
31
-
32
- A Durable repository Work has one execution `WorkHandle` with the same Work identity. The handle records the selected checkout/worktree, execution-session binding, permission snapshot and finalization stages; it is execution state, not another user objective. New `rh_work start` creation materializes this handle and claims the initiating authenticated Controller in the same facade flow. `managedWorktree=false` means the Work does not own the current checkout/branch as disposable resources, so terminal cleanup releases lifecycle/process ownership without deleting them.
33
-
34
- Conversation/session bindings are transport and presentation preferences. They may help resume a Controller, but Work/Schedule identity survives a changed or missing conversation.
35
-
36
- ## 2. Identity Hierarchy
37
-
38
- ```text
39
- Repository (repoId)
40
- -> Checkout (checkoutId)
41
- -> Issue
42
- -> Task
43
- -> Job [0..N]
44
- -> Run [0..N]
45
- -> Edit Session [0..N]
46
- -> Verification [0..N]
47
-
48
- Schedule
49
- -> Occurrence
50
- -> Job [0..N]
51
-
52
- Portfolio Workflow
53
- -> Repository Node
54
- -> Issue / Task / Job reference
55
- ```
56
-
57
- Resource control is orthogonal:
58
-
59
- ```text
60
- Job / Run / Edit Session
61
- -> Resource Claim [0..N]
62
- -> Lease [0..1 active owner]
63
- ```
64
-
65
- ## 3. Repository
66
-
67
- ### Meaning
68
-
69
- A Repository is the stable controller identity for one logical source repository.
70
-
71
- ### Identity
72
-
73
- ```text
74
- repoId
75
- ```
76
-
77
- `repoId` is not a branch name, filesystem path, remote URL, or GitHub repository string. Those values may change while existing durable entities retain their repository identity.
78
-
79
- ### Current Implementation
80
-
81
- `RepositoryRecord` already stores stable identity, canonical root, remote metadata, checkout collection, GitHub mapping, enabled state, and Controller Home storage strategy.
82
-
83
- ### Target Architecture
84
-
85
- A Repository owns exactly one logical Repo Actor and one repository-local scheduling domain.
86
-
87
- ### Migration Rule
88
-
89
- Remote or path changes must be diagnosed and explicitly reconciled. They must not create a second active repository record for the same canonical repository or silently rebind existing entities.
90
-
91
- ## 4. Checkout
92
-
93
- A Checkout identifies one local working copy or Worktree associated with a Repository.
94
-
95
- ```text
96
- checkoutId
97
- repoId
98
- canonicalRoot
99
- branch
100
- worktree
101
- ```
102
-
103
- A Repository may have multiple Checkouts. Workspace single-writer claims are scoped to a Checkout; repository ref, integration, and release claims may be scoped to the Repository.
104
-
105
- ## 5. Issue
106
-
107
- ### Meaning
108
-
109
- An Issue is a durable container for one coherent defect, feature, investigation, or governance objective.
110
-
111
- It owns:
112
-
113
- - title and summary;
114
- - goals and non-goals;
115
- - Issue-level acceptance criteria;
116
- - related artifacts;
117
- - ordered Tasks;
118
- - collaboration links;
119
- - lifecycle and archive state.
120
-
121
- ### Rules
122
-
123
- - An Issue is not an execution attempt.
124
- - An Issue may remain active while some Tasks are done, blocked, or superseded.
125
- - Current focus is a presentation hint, not exclusive execution ownership.
126
- - An Issue becomes done only when its required Task and acceptance semantics are satisfied.
127
-
128
- ## 6. Task
129
-
130
- ### Meaning
131
-
132
- A Task is the smallest durable work-intent unit that can be independently scoped, scheduled, verified, and accepted.
133
-
134
- It owns:
135
-
136
- ```text
137
- taskId
138
- dependsOn
139
- notes
140
- runIds
141
- verification
142
- workId
143
- ```
144
-
145
- When `workId` is present, the objective, scope, checks, acceptance criteria,
146
- risk, status, and completion evidence above are compatibility fields from the
147
- legacy Task ledger. Work is the only mutable execution contract; readers may
148
- derive these fields from the linked Work, but Task writers must not maintain a
149
- second lifecycle.
150
-
151
- ### Rules
152
-
153
- - A Task has one objective.
154
- - Dependencies are Task identities, not Run identities.
155
- - Agent selection occurs at dispatch time; a stored Agent is at most a recommendation.
156
- - A Task may have multiple Runs and Edit Sessions across its history.
157
- - A Task without Work remains a legacy planning record during migration.
158
- - A Work-backed Task exposes a derived compatibility status; Work owns the
159
- mutable execution status and technical phase.
160
- - Runs and Processes are evidence and execution facts. They cannot write a
161
- Requirement outcome or promote a Work-backed Task to completion.
162
-
163
- ### Compatibility Lifecycle
164
-
165
- ```text
166
- backlog
167
- -> analysis
168
- -> planned
169
- -> ready
170
- -> executing
171
- -> review
172
- -> integrated
173
- -> verifying
174
- -> verified
175
- -> done
176
- ```
177
-
178
- Alternative transitions include:
179
-
180
- ```text
181
- ready/executing/review/verifying
182
- -> blocked
183
- -> changes_requested
184
- -> ready or executing
185
-
186
- any non-terminal
187
- -> cancelled
188
- -> superseded
189
- ```
190
-
191
- ### Current Implementation
192
-
193
- Current status names include `running` instead of a distinct `executing` abstraction and include compatibility states such as `launch_blocked`. Effective status also incorporates the latest Run.
194
-
195
- ### Migration Rule
196
-
197
- Existing status values remain readable for migration and UI compatibility. The
198
- canonical Work phase vocabulary is deliberately smaller:
199
-
200
- ```text
201
- implementation -> verification -> delivery -> cleanup
202
- ```
203
-
204
- The phase is technical execution context, not a user-facing Requirement
205
- lifecycle. A Work completion receipt must identify the Work, exact target
206
- branch/revision, valid delivery reachability, and blocker-free cleanup before a
207
- terminal completed Work can be written.
208
-
209
- ## 7. Job
210
-
211
- ### Meaning
212
-
213
- A Job is one accepted asynchronous system operation.
214
-
215
- Examples:
216
-
217
- - dispatch an existing Task;
218
- - start a Quick Agent session;
219
- - run a named check;
220
- - verify an Edit Session;
221
- - execute a repository command;
222
- - integrate a reviewed Run;
223
- - execute a release gate;
224
- - reconcile stale state;
225
- - process one Schedule Occurrence.
226
-
227
- ### Required Identity
228
-
229
- ```text
230
- jobId
231
- repoId
232
- operationType
233
- requestId
234
- semanticKey
235
- ```
236
-
237
- ### Required Metadata
238
-
239
- ```text
240
- createdAt
241
- updatedAt
242
- status
243
- requestedBy
244
- payloadRef or bounded payload
245
- resultRef
246
- error
247
- attempt
248
- parentJobId
249
- correlationId
250
- causationId
251
- deadlineAt
252
- ```
253
-
254
- ### Ownership
255
-
256
- The Repo Actor owns Job admission and repository-local ordering. A Worker owns execution only while holding the Job's valid Lease.
257
-
258
- ### Rules
259
-
260
- - Job creation precedes execution.
261
- - A Job may create or link a Run, but is not a Run.
262
- - Terminal Job records are immutable except for append-only audit annotations.
263
- - Retry creates a new Job attempt linked to the prior Job unless the operation contract defines retry inside the same durable Job.
264
-
265
- ## 8. Run
266
-
267
- ### Meaning
268
-
269
- A Run is one Agent execution attempt for one Task.
270
-
271
- It owns:
272
-
273
- ```text
274
- runId
275
- issueId
276
- taskId
277
- agent
278
- provider
279
- executionMode
280
- repoRoot / executionRoot
281
- baseRevision
282
- process identity
283
- timeout / deadline
284
- heartbeat
285
- stdout / stderr / result / events
286
- terminal outcome
287
- integration metadata
288
- ```
289
-
290
- ### Rules
291
-
292
- - A Run never changes which Task objective it attempts.
293
- - A failed, cancelled, timed-out, or unknown Run remains historical evidence.
294
- - Retry creates a new Run.
295
- - A successful isolated Run is not accepted until its reviewed changes are integrated or explicitly represented by an approved external collaboration path.
296
- - A Run self-report cannot mark its Task done.
297
-
298
- ## 9. Direct Edit Session
299
-
300
- ### Meaning
301
-
302
- A Direct Edit Session is a transactional sequence of bounded deterministic file operations controlled by the Controller.
303
-
304
- It owns:
305
-
306
- ```text
307
- sessionId
308
- purpose
309
- allowedPaths
310
- baseRevision
311
- revisions
312
- operations
313
- savepoints
314
- backups
315
- aggregateDiff
316
- requestedChecks
317
- checkResults
318
- review metadata
319
- ```
320
-
321
- ### Current Lifecycle
322
-
323
- ```text
324
- open
325
- -> dirty
326
- -> checked
327
- -> finalized
328
-
329
- dirty/checked
330
- -> check_failed
331
- -> dirty
332
-
333
- open/dirty/checked/check_failed
334
- -> rolled_back
335
- ```
336
-
337
- ### Rules
338
-
339
- - Each patch batch creates a numbered Revision.
340
- - Every operation records before/after hashes where applicable.
341
- - Checks apply to the current Edit Session Revision.
342
- - A failed check does not require discarding the session; another correction Revision may follow.
343
- - Finalization closes the transaction but does not by itself prove Task-level acceptance.
344
-
345
- ## 10. Integration
346
-
347
- Integration is a deterministic operation that applies one reviewed change set to a target Checkout.
348
-
349
- Integration may be represented as a dedicated Job and produces an Integration Record containing:
350
-
351
- ```text
352
- sourceRunId or sourceEditSessionId
353
- sourceBaseRevision
354
- targetCheckoutId
355
- targetRevisionBefore
356
- targetRevisionAfter
357
- reviewedDiffHash
358
- appliedFiles
359
- conflicts
360
- cleanupOutcome
361
- ```
362
-
363
- Integration is not an Agent role. Conflicts are explicit outcomes, not instructions to silently rebase or overwrite.
364
-
365
- ## 11. Verification
366
-
367
- ### Meaning
368
-
369
- Verification is persisted evidence that declared checks and acceptance criteria were evaluated against a specific repository state.
370
-
371
- A Verification Record owns:
372
-
373
- ```text
374
- verificationId or embedded identity
375
- repoId
376
- checkoutId
377
- revision
378
- runId / editSessionId / integrationId
379
- reviewedDiffHash
380
- checkResults
381
- commandEvidence
382
- acceptanceResults
383
- reviewer
384
- verifiedAt
385
- autoCompleted
386
- ```
387
-
388
- ### Rules
389
-
390
- - Verification binds to an exact Revision.
391
- - Evidence from an older relevant Revision becomes stale.
392
- - Verification may fail and lead to `changes_requested`.
393
- - Required checks are executed by the Controller or trusted repository systems; caller-provided success flags are not authoritative.
394
-
395
- ## 12. Acceptance
396
-
397
- Acceptance is the workflow decision that evidence satisfies the Task or Issue contract.
398
-
399
- Acceptance is distinct from Verification:
400
-
401
- - Verification asks whether evidence passes the declared criteria.
402
- - Acceptance asks whether the work may enter its final workflow state.
403
-
404
- Low-risk work may auto-accept when policy and evidence allow. High-risk or destructive work requires human acceptance.
405
-
406
- ## 13. Check Execution
407
-
408
- A Check Execution is a Job running one named deterministic repository check.
409
-
410
- Its semantic identity includes:
411
-
412
- ```text
413
- repoId
414
- checkoutId
415
- checkId
416
- revision
417
- environmentFingerprint
418
- timeout contract
419
- ```
420
-
421
- Identical active semantic identities may share one physical execution with independent subscribers. Completed evidence may be reused only while the cache key remains valid.
422
-
423
- ## 14. Resource Claim
424
-
425
- A Resource Claim declares what an operation needs before it can run.
426
-
427
- ```text
428
- claimId
429
- repoId
430
- jobId
431
- resourceKey
432
- mode: shared | exclusive
433
- scope
434
- state: requested | granted | released | expired
435
- ```
436
-
437
- Examples:
438
-
439
- ```text
440
- workspace:<checkoutId>
441
- worktree-slot:<repoId>
442
- path:<repoId>:src/cli/mcp/**
443
- git-index:<checkoutId>
444
- git-refs:<repoId>
445
- heavy-check:<repoId>
446
- integration:<checkoutId>
447
- release:<repoId>
448
- remote-write:<repoId>
449
- ```
450
-
451
- A Claim expresses scheduling intent. A Lease expresses temporary execution ownership.
452
-
453
- ## 15. Lease
454
-
455
- A Lease grants temporary ownership of one resource to one Job.
456
-
457
- ```text
458
- leaseId
459
- resourceKey
460
- ownerJobId
461
- fencingToken
462
- acquiredAt
463
- expiresAt
464
- heartbeatAt
465
- releasedAt
466
- ```
467
-
468
- Rules:
469
-
470
- - Leases expire unless renewed.
471
- - A newer fencing token invalidates writes from older owners.
472
- - A Worker process identity is evidence, not Lease identity.
473
- - Process death allows reconciliation but does not itself define the final business outcome.
474
-
475
- ## 16. Schedule
476
-
477
- A Schedule defines a recurring or condition-driven automation policy.
478
-
479
- It owns:
480
-
481
- ```text
482
- scheduleId
483
- repository selector or portfolio selector
484
- trigger
485
- policy
486
- work template
487
- budget
488
- retry and backoff
489
- stop conditions
490
- enabled state
491
- ```
492
-
493
- A Schedule does not execute forever. It creates bounded Occurrences.
494
-
495
- ## 17. Occurrence
496
-
497
- An Occurrence is one trigger window of one Schedule.
498
-
499
- ```text
500
- occurrenceId
501
- scheduleId
502
- repoId
503
- windowKey
504
- requestId
505
- status
506
- decision
507
- jobIds
508
- budgetUsed
509
- outcome
510
- nextEligibleAt
511
- ```
512
-
513
- One Schedule and window key may have at most one Occurrence. Outcomes include:
514
-
515
- ```text
516
- nothing_to_do
517
- work_dispatched
518
- work_completed
519
- work_failed
520
- external_blocker
521
- human_attention_required
522
- release_ready
523
- budget_exhausted
524
- cancelled
525
- ```
526
-
527
- ## 18. Candidate Finding
528
-
529
- A Candidate Finding is a structured automation observation that is not yet a formal Issue or Task.
530
-
531
- It contains:
532
-
533
- ```text
534
- findingId
535
- semanticKey
536
- repoId
537
- sourceOccurrenceId
538
- evidence
539
- confidence
540
- firstSeenAt
541
- lastSeenAt
542
- occurrenceCount
543
- status
544
- ```
545
-
546
- Promotion requires configured evidence. Repeated speculative suggestions must deduplicate instead of generating unlimited Issues.
547
-
548
- ## 19. Portfolio Workflow
549
-
550
- A Portfolio Workflow coordinates dependency-aware work across multiple repositories.
551
-
552
- It owns repository nodes and cross-repository dependencies but delegates each repository-local operation to that repository's Actor.
553
-
554
- It uses Saga semantics rather than distributed atomic commit:
555
-
556
- ```text
557
- prepare -> execute node -> verify node -> checkpoint -> continue
558
- \-> stop or compensate
559
- ```
560
-
561
- ## 20. Event and Projection
562
-
563
- An Event is append-only history:
564
-
565
- ```text
566
- eventId
567
- eventType
568
- repoId
569
- entityType
570
- entityId
571
- requestId
572
- correlationId
573
- causationId
574
- revision
575
- occurredAt
576
- dataRef
577
- ```
578
-
579
- A Projection is a rebuildable read model. Projection corruption must not rewrite source lifecycle state; it is repaired from durable entities and events.
580
-
581
- ## 21. Relationship Rules
582
-
583
- - One Issue owns many Tasks.
584
- - One Task may own many Runs, Jobs, Edit Sessions, and Verification records.
585
- - One Job may link at most one primary Run but may depend on child Jobs.
586
- - One Run belongs to exactly one Task.
587
- - One Occurrence belongs to exactly one Schedule and may create many Jobs.
588
- - One active Lease has one owner Job and one fencing token.
589
- - One resource may have many compatible shared Claims or one exclusive owner.
590
- - One Verification applies to one exact repository Revision.
591
-
592
- ## 22. Deletion and Retention
593
-
594
- Durable workflow and evidence entities are normally archived, not deleted.
595
-
596
- Ephemeral Quick Agent Issue metadata may be cleaned after terminal completion, but Run and Job evidence remains durable according to retention policy.
597
-
598
- Runtime projections, expired Leases, caches, and disposable Worktrees may be removed after durable terminal evidence and cleanup records exist.
599
-
600
- ## 22. Structured Execution Outcome
601
-
602
- A Job result and a Job failure are separate concepts. Durable execution records may contain all of the following independently:
603
-
604
- ```text
605
- result bounded operation-specific value
606
- outcome.process exit code, timeout, stdout/stderr artifact paths
607
- outcome.policy allowed, approval-required, or rejected decision
608
- outcome.infrastructure storage, spawn, transport, or runtime failure
609
- error terminal workflow error when the Job did not succeed
610
- ```
611
-
612
- Successful stdout is never stored in `error`. Compatibility Local Jobs project the durable Execution Job status, result, and structured outcome without becoming a second source of lifecycle truth.