@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
@@ -397,16 +397,71 @@ current_status_field() {
397
397
  ' "$file" | xargs
398
398
  }
399
399
 
400
+ current_status_stale_after() {
401
+ local file="$1"
402
+ local value
403
+ value="$(current_status_field "$file" "Stale After" 2>/dev/null || true)"
404
+ if [[ -z "$value" ]]; then
405
+ value="$(sed -nE 's/^<!--[[:space:]]*stale_after:[[:space:]]*([^[:space:]]+)[[:space:]]*-->$/\1/p' "$file" 2>/dev/null | head -1)"
406
+ fi
407
+ printf '%s' "$value"
408
+ }
409
+
410
+ current_status_updated_epoch() {
411
+ local value="$1"
412
+ if date -d "$value" '+%s' >/dev/null 2>&1; then
413
+ date -d "$value" '+%s'
414
+ return 0
415
+ fi
416
+ date -j -f '%Y-%m-%dT%H:%M:%S%z' "$value" '+%s' 2>/dev/null
417
+ }
418
+
419
+ # Returns success when the declared freshness contract says the snapshot is
420
+ # expired. A malformed timestamp/duration fails closed once stale_after exists.
421
+ current_status_snapshot_is_stale() {
422
+ local updated="$1"
423
+ local stale_after="$2"
424
+ local amount unit multiplier updated_epoch now_epoch
425
+ [[ -n "$stale_after" ]] || return 1
426
+ if [[ ! "$stale_after" =~ ^([0-9]+)([smhd])$ ]]; then
427
+ return 0
428
+ fi
429
+ amount="${BASH_REMATCH[1]}"
430
+ unit="${BASH_REMATCH[2]}"
431
+ case "$unit" in
432
+ s) multiplier=1 ;;
433
+ m) multiplier=60 ;;
434
+ h) multiplier=3600 ;;
435
+ d) multiplier=86400 ;;
436
+ esac
437
+ updated_epoch="$(current_status_updated_epoch "$updated" || true)"
438
+ [[ "$updated_epoch" =~ ^[0-9]+$ ]] || return 0
439
+ now_epoch="${FORGE_CURRENT_STATUS_NOW_EPOCH:-$(date '+%s')}"
440
+ [[ "$now_epoch" =~ ^[0-9]+$ ]] || return 0
441
+ (( now_epoch - updated_epoch >= amount * multiplier ))
442
+ }
443
+
400
444
  current_status_snapshot_context() {
401
445
  local current_file="tasks/current.md"
402
- local target branch status updated source_commit target_status target_updated
446
+ local target branch status updated stale_after source_commit target_status target_updated
403
447
 
404
448
  target="$(workflow_target_branch)"
405
449
  branch="$(workflow_current_branch)"
406
450
  status="$(current_status_field "$current_file" "Status" 2>/dev/null || true)"
407
451
  updated="$(current_status_field "$current_file" "Updated At" 2>/dev/null || true)"
452
+ stale_after="$(current_status_stale_after "$current_file" 2>/dev/null || true)"
408
453
  source_commit="$(current_status_field "$current_file" "Source Commit" 2>/dev/null || true)"
409
454
 
455
+ if current_status_snapshot_is_stale "$updated" "$stale_after"; then
456
+ cat <<EOF_CONTEXT
457
+ # Stale Current Status Snapshot
458
+
459
+ - Ignored snapshot: `${current_file}` exceeded its declared freshness contract.
460
+ - Rule: do not use its status, source commit, or focus as current truth; rebuild from active plans, workstreams, handoff, checks, and the target branch.
461
+ EOF_CONTEXT
462
+ return 0
463
+ fi
464
+
410
465
  if [[ -z "$status" ]]; then
411
466
  if [[ "$branch" != "$target" ]] && git rev-parse --verify --quiet "$target" >/dev/null 2>&1 \
412
467
  && git show "${target}:tasks/current.md" >/dev/null 2>&1; then
@@ -28,7 +28,7 @@ PLAN_LOOP:
28
28
  LESSONS_FILE: tasks/lessons.md
29
29
  CONTEXT_MAP: .ai/context/context-map.json
30
30
  ANNOTATION_GUARD: do not implement until plan Status is "Approved"
31
- CONTRACT_GUARD: do not mark done until contract exit criteria pass and review recommends pass
31
+ CONTRACT_GUARD: do not mark done until contract exit criteria pass; then perform a fresh semantic impact review
32
32
  EXECUTION_CONTEXT: contract-level work starts in a linked codex/<slug> worktree when policy enables it; primary worktree warning by default; enforce via .claude/.require-worktree
33
33
  CONTRACT_WORKTREE_FINISH: run Forge /review, fill the review artifact from that verdict, then .ai/harness/scripts/contract-worktree.sh finish
34
34
  COMMIT_POLICY: explicit commits after green checks; no automatic checkpoint hook
@@ -8,6 +8,8 @@
8
8
  - Claude runtime expectation: `{{CLAUDE_POLICY}}`.
9
9
  - Codex runtime expectation: `{{CODEX_POLICY}}`.
10
10
  - Do not implement until the user explicitly asks to implement.
11
+ - Once the user asks to execute, minimize avoidable human intervention: continue reversible, policy-allowed implementation, verification, cleanup, and delivery autonomously, stopping only at a genuinely user-only identity/legal/financial/strong-confirmation/irreversible boundary.
12
+ - For authenticated browser work, reuse the user's already-running signed-in Google Chrome with attach-preferred, native-auto, Chrome-only, fail-closed routing. Preserve cookies, tokens, sessions, and settings; never silently switch to a managed, isolated, Vivaldi, or otherwise unauthenticated profile unless the task explicitly requests that mode.
11
13
  - Stable product truth: `docs/spec.md`.
12
14
  - Research reports: `docs/researches/`.
13
15
  - Deferred-goal ledger: `tasks/todos.md` (active execution stays in the plan's `## Task Breakdown`).
@@ -34,7 +34,7 @@
34
34
  ### 6b. Contract Verification
35
35
  - Use task contracts in `tasks/contracts/` as completion gates.
36
36
  - Use implementation notes in `tasks/notes/` for task-local decisions that should not automatically become memory.
37
- - Validate exit criteria and the Forge `/review` review recommendation before any done/completed response.
37
+ - Validate direct exit criteria, then use Forge `/review` to reassess intent, downstream impact, and missing state transitions before any done/completed response.
38
38
 
39
39
  ### 7. Balanced Elegance
40
40
  - Redesign hacky non-trivial fixes before shipping.
@@ -4,12 +4,12 @@
4
4
  {
5
5
  "id": "desktop_operator",
6
6
  "name": "Forge Desktop Operator",
7
- "version": "0.2.1",
7
+ "version": "0.2.3",
8
8
  "description": "Native macOS desktop automation provider for Forge.",
9
9
  "repository": "https://github.com/moretea-labs/forge-desktop-operator.git",
10
- "ref": "v0.2.1",
10
+ "ref": "v0.2.3",
11
11
  "installer": "forge-plugin-install.mjs",
12
- "providerVersion": "0.2.0",
12
+ "providerVersion": "0.2.3",
13
13
  "protocolVersion": "1.0",
14
14
  "platforms": [
15
15
  "darwin"
@@ -31,7 +31,7 @@ Create these only when the agent has concrete repo evidence or the user asks:
31
31
  - Prefer short docs that name sources, owners, and verification commands.
32
32
  - Let capability `CLAUDE.md` and `AGENTS.md` carry local contract projections; root docs stay concise.
33
33
  - Keep complete workstream TODOs in `tasks/workstreams/<domain>/<capability>/`; contract blocks should link to them instead of becoming task logs.
34
- - Keep onboarding docs split by reader: agents read active source artifacts first; humans review the Human Review Card, diff, latest trace, and rollback first.
34
+ - Keep onboarding docs split by reader: agents read active source artifacts first; humans review the semantic-impact evidence, diff, latest checks, and recovery options first.
35
35
  - Hooks may create `docs/architecture/requests/*.md`; agents own semantic snapshots, embedded Mermaid, and optional `mermaid` HTML output.
36
36
  - Archive handled architecture requests with `.ai/harness/scripts/archive-architecture-request.sh`; keep `docs/architecture/requests/` pending-only and preserve handled requests under `docs/architecture/requests/archive/YYYY/`.
37
37
  - When both Mermaid and HTML exist, keep the Mermaid in Markdown as the semantic source and make the HTML link back to that Markdown source.
@@ -92,7 +92,7 @@ Required v1 fields:
92
92
  - `commands`, `guards`, `handoffs`, `files_changed`, and `allowed_paths_check`
93
93
  - `external_acceptance`, `failure_class`, and `next_step`
94
94
 
95
- `scripts/check-task-workflow.sh --strict` validates the latest trace shape when a non-empty latest checks file exists. `scripts/harness-trace-grade.sh --run <trace> --strict` applies the local graders used for workflow regression checks: active plan resolves, contract profile is valid, Human Review Card passes, command evidence exists, and changed files stay inside allowed paths.
95
+ `scripts/check-task-workflow.sh --strict` validates the latest trace shape when a non-empty latest checks file exists. Behavioral evidence comes from the selected checks and fresh controller review, not a score of plan or review metadata.
96
96
 
97
97
  ## Capability Context
98
98
 
@@ -78,12 +78,12 @@ Existing contracts without this block remain valid. `.ai/harness/scripts/verify-
78
78
 
79
79
  ## Review Coupling
80
80
 
81
- - A contract is not truly done until the matching review file records a passing recommendation.
82
- - `tasks/reviews/<plan-stem>.review.md` should be filled from Forge `/review` after verification and cite the contract, implementation notes, checks file, run snapshot, `## External Acceptance Advice`, and any manual observations.
81
+ - After direct verification, use Forge `/review` for a fresh semantic impact review: user intent, affected domains, downstream consumers, missing state transitions, scenario evidence, and residual risks. The review is controller context, not a parser-owned completion gate.
82
+ - `tasks/reviews/<plan-stem>.review.md` may cite the contract, implementation notes, checks file, run snapshot, and manual observations when they clarify the impact review.
83
83
  - `tasks/notes/<plan-stem>.notes.md` captures task-local decisions and should be archived or promoted deliberately, not left as hidden long-term memory.
84
84
 
85
85
  ## Worktree Lifecycle
86
86
 
87
87
  - When `.ai/harness/policy.json` has `worktree_strategy.auto_for_contract_tasks: true`, `.ai/harness/scripts/plan-to-todo.sh --plan <approved-plan>` starts a linked `codex/<slug>` worktree instead of mutating the primary tree.
88
88
  - Execute the sprint in that linked worktree. The primary worktree remains a merge target and must stay clean before merge-back.
89
- - After implementation, run Forge `/review` so the review file recommends pass, record passing `## External Acceptance Advice` from the peer reviewer or a concrete manual override, then run `.ai/harness/scripts/contract-worktree.sh finish`. The finish command gates on external acceptance before `verify-sprint.sh`, commits the branch, and fast-forwards the target branch only when the target worktree is clean.
89
+ - After implementation, run Forge `/review` to reassess behavior beyond the changed files, then run `.ai/harness/scripts/contract-worktree.sh finish`. Completion uses direct contract checks and declared scope; the finish command commits the branch and fast-forwards the target only when that target worktree is clean.
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "1.6.0",
3
- "templateVersion": "1.6.0",
2
+ "version": "1.7.1",
3
+ "templateVersion": "1.7.1",
4
4
  "skillName": "forge",
5
5
  "contractId": "tasks-first-harness-v1",
6
6
  "compatibility": {
@@ -27,7 +27,7 @@ Describe the exact outcome this task must deliver.
27
27
  - Checks file: `.ai/harness/checks/latest.json`
28
28
  - Run snapshots: `.ai/harness/runs/`
29
29
  - Scope gate: edit only paths listed under `allowed_paths`; update this contract before widening scope.
30
- - Completion gate: `scripts/verify-sprint.sh` must see this contract pass, the review recommend pass, and `## External Acceptance Advice` pass or record a manual override.
30
+ - Completion evidence: `scripts/verify-sprint.sh` reports this contract's direct checks and declared scope. Then perform a fresh semantic impact review.
31
31
 
32
32
  ## Allowed Paths
33
33
 
@@ -84,12 +84,7 @@ exit_criteria:
84
84
  tests_pass:
85
85
  - path: tests/unit/{{TASK_SLUG}}.test.ts
86
86
  commands_succeed:
87
- - bun run typecheck
88
- qa_scores:
89
- - dimension: functionality
90
- min: 7
91
- manual_checks:
92
- - "Evaluator review file recommends pass"
87
+ - bun run check:type
93
88
  ```
94
89
 
95
90
  ## Acceptance Notes (Human Review)
@@ -302,8 +302,8 @@ See captured planning output.
302
302
 
303
303
  - **State/progress path**: \`${plan_file}\` task breakdown, \`tasks/todos.md\` deferred-goal ledger, \`tasks/contracts/${artifact_stem}.contract.md\`, \`tasks/reviews/${artifact_stem}.review.md\`, and \`tasks/notes/${artifact_stem}.notes.md\`
304
304
  - **Verification evidence**: \`.ai/harness/checks/latest.json\`, \`.ai/harness/runs/\`, and the commands named in the captured planning output
305
- - **Evaluator rubric**: \`tasks/reviews/${artifact_stem}.review.md\` must record a passing Forge /review style recommendation
306
- - **Stop condition**: all task breakdown items are complete, sprint verification passes, and the review recommends pass
305
+ - **Impact review**: after direct checks, reassess user intent, affected domains, downstream consumers, state transitions, and residual risks
306
+ - **Stop condition**: all task breakdown items are complete and sprint verification reports direct checks plus declared scope passing
307
307
  - **Rollback surface**: before execution remove \`${plan_file}\`; after execution revert branch \`codex/${slug}\` or the generated task artifacts
308
308
 
309
309
  ## Captured Planning Output
@@ -212,6 +212,23 @@ if ! bash scripts/architecture-queue.sh reindex --check >/dev/null; then
212
212
  exit 1
213
213
  fi
214
214
 
215
+ if [[ -f "docs/architecture/current/README.md" ]]; then
216
+ if [[ ! -f "docs/architecture/CURRENT.md" ]]; then
217
+ echo "[ArchitectureSync] architecture baseline failed: missing required file docs/architecture/CURRENT.md" >&2
218
+ exit 1
219
+ fi
220
+
221
+ if ! grep -Fq "Runtime Authority" "docs/architecture/CURRENT.md"; then
222
+ echo "[ArchitectureSync] architecture baseline failed: docs/architecture/CURRENT.md must contain: Runtime Authority" >&2
223
+ exit 1
224
+ fi
225
+
226
+ if ! grep -Fq "Not Runtime Authority" "docs/architecture/current/README.md"; then
227
+ echo "[ArchitectureSync] architecture baseline failed: docs/architecture/current/README.md must contain: Not Runtime Authority" >&2
228
+ exit 1
229
+ fi
230
+ fi
231
+
215
232
  if [[ "$mode" == "off" ]]; then
216
233
  case "$format" in
217
234
  json) printf '{"mode":"off","changed_capabilities":0,"blocking":0}\n' ;;
@@ -161,7 +161,7 @@ plan_evidence_contract_error() {
161
161
  fi
162
162
 
163
163
  local label line value
164
- for label in "State/progress path" "Verification evidence" "Evaluator rubric" "Stop condition" "Rollback surface"; do
164
+ for label in "State/progress path" "Verification evidence" "Impact review|Evaluator rubric" "Stop condition" "Rollback surface"; do
165
165
  line="$(printf '%s\n' "$section" | grep -Ei "^[[:space:]]*-[[:space:]]*(\\*\\*)?${label}(\\*\\*)?[[:space:]]*:" | head -1 || true)"
166
166
  if [[ -z "$line" ]]; then
167
167
  echo "missing field: ${label}"
@@ -189,7 +189,7 @@ check_plan_template_evidence_contract() {
189
189
  return
190
190
  }
191
191
 
192
- for label in "State/progress path" "Verification evidence" "Evaluator rubric" "Stop condition" "Rollback surface"; do
192
+ for label in "State/progress path" "Verification evidence" "Impact review" "Stop condition" "Rollback surface"; do
193
193
  if ! grep -Eiq "^[[:space:]]*-[[:space:]]*(\\*\\*)?${label}(\\*\\*)?[[:space:]]*:" "$file"; then
194
194
  report_issue "Plan template Evidence Contract is missing field '${label}': $file"
195
195
  fi
@@ -668,11 +668,11 @@ check_helper_runtime_files() {
668
668
  new-spec.sh new-sprint.sh new-plan.sh capture-plan.sh plan-to-todo.sh
669
669
  contract-run.ts contract-worktree.sh ship-worktrees.sh archive-workflow.sh
670
670
  refresh-current-status.sh prepare-handoff.sh verify-contract.sh summarize-failures.sh
671
- verify-sprint.sh harness-trace-grade.sh sprint-backlog.sh check-task-sync.sh check-deploy-sql-order.sh
671
+ verify-sprint.sh sprint-backlog.sh check-task-sync.sh check-deploy-sql-order.sh
672
672
  check-architecture-sync.sh check-agent-tooling.sh check-context-files.sh
673
673
  check-brain-manifest.sh sync-brain-docs.sh check-skill-version.ts
674
674
  select-agent-context-blocks.sh ensure-task-workflow.sh check-task-workflow.sh
675
- maintenance-triage.sh heartbeat-triage.sh switch-plan.sh workflow-contract.ts
675
+ switch-plan.sh workflow-contract.ts
676
676
  inspect-project-state.ts migrate-workflow-docs.ts migrate-project-template.sh
677
677
  capability-resolver.ts architecture-event.ts capability-config.ts architecture-queue.sh
678
678
  archive-architecture-request.sh context-contract-sync.sh workstream-sync.sh
@@ -456,8 +456,7 @@ finish_worktree() {
456
456
  exit 1
457
457
  fi
458
458
 
459
- local current_branch slug active_plan contract_file review_file target_worktree artifact_stem
460
- local external_status external_state external_reviewer external_source external_message
459
+ local current_branch slug active_plan contract_file target_worktree artifact_stem
461
460
  current_branch="$(git branch --show-current)"
462
461
  [[ -n "$current_branch" ]] || { echo "contract-worktree: detached HEAD is not supported" >&2; exit 1; }
463
462
  [[ "$current_branch" != "$target_branch" ]] || { echo "contract-worktree: already on target branch $target_branch" >&2; exit 1; }
@@ -470,7 +469,6 @@ finish_worktree() {
470
469
  active_plan="$(get_active_plan || true)"
471
470
  if [[ -n "$active_plan" ]]; then
472
471
  contract_file="$(workflow_active_contract || true)"
473
- review_file="$(workflow_active_review || true)"
474
472
  fi
475
473
  fi
476
474
 
@@ -483,27 +481,9 @@ finish_worktree() {
483
481
  contract_file="tasks/contracts/${artifact_stem}.contract.md"
484
482
  fi
485
483
  fi
486
- if [[ -n "${active_plan:-}" && -z "${review_file:-}" ]]; then
487
- artifact_stem="${artifact_stem:-$(derive_artifact_stem_from_plan "$active_plan")}"
488
- if [[ -f "tasks/reviews/${artifact_stem}.review.md" ]] || [[ ! -f "tasks/reviews/${slug}.review.md" ]]; then
489
- review_file="tasks/reviews/${artifact_stem}.review.md"
490
- fi
491
- fi
492
484
  contract_file="${contract_file:-tasks/contracts/${slug}.contract.md}"
493
- review_file="${review_file:-tasks/reviews/${slug}.review.md}"
494
485
 
495
486
  [[ -n "$contract_file" && -f "$contract_file" ]] || { echo "contract-worktree: no active sprint contract found" >&2; exit 1; }
496
- [[ -n "$review_file" && -f "$review_file" ]] || { echo "contract-worktree: no active sprint review found" >&2; exit 1; }
497
-
498
- if declare -F workflow_external_acceptance_status >/dev/null 2>&1; then
499
- external_status="$(workflow_external_acceptance_status "$review_file")"
500
- IFS=$'\t' read -r external_state external_reviewer external_source external_message <<< "$external_status"
501
- if [[ "$external_state" != "pass" && "$external_state" != "manual_override" ]]; then
502
- echo "contract-worktree: external acceptance gate failed: ${external_message:-missing external acceptance}" >&2
503
- echo "contract-worktree: record ## External Acceptance Advice in $review_file via $(workflow_external_acceptance_expected_source) before finish" >&2
504
- exit 1
505
- fi
506
- fi
507
487
 
508
488
  check_architecture_freshness "$target_branch"
509
489
  bash "scripts/verify-sprint.sh"
@@ -348,7 +348,7 @@ Complete this inventory before implementation. If any line is unknown, keep the
348
348
 
349
349
  - **State/progress path**:
350
350
  - **Verification evidence**:
351
- - **Evaluator rubric**:
351
+ - **Impact review**:
352
352
  - **Stop condition**:
353
353
  - **Rollback surface**:
354
354
 
@@ -391,7 +391,7 @@ Describe the exact outcome this task must deliver.
391
391
  - Checks file: `.ai/harness/checks/latest.json`
392
392
  - Run snapshots: `.ai/harness/runs/`
393
393
  - Scope gate: edit only paths listed under `allowed_paths`; update this contract before widening scope.
394
- - Completion gate: `scripts/verify-sprint.sh` must see this contract pass, the review recommend pass, and `## External Acceptance Advice` pass or record a manual override.
394
+ - Completion evidence: `scripts/verify-sprint.sh` reports this contract's direct checks and declared scope. Then perform a fresh semantic impact review.
395
395
 
396
396
  ## Allowed Paths
397
397
 
@@ -444,7 +444,7 @@ exit_criteria:
444
444
  tests_pass:
445
445
  - path: tests/unit/{{TASK_SLUG}}.test.ts
446
446
  commands_succeed:
447
- - bun run typecheck
447
+ - bun run check:type
448
448
  files_contain:
449
449
  - path: src/modules/{{TASK_SLUG}}/index.ts
450
450
  pattern: "export"
@@ -473,48 +473,23 @@ CONTRACT_TEMPLATE_EOF
473
473
  > **Notes File**: {{NOTES_FILE}}
474
474
  > **Checks File**: {{CHECKS_FILE}}
475
475
  > **Last Updated**: {{TIMESTAMP}}
476
- > **Recommendation**: fail
476
+ > **Summary**:
477
477
 
478
- ## Human Review Card
478
+ ## Semantic Impact Review
479
479
 
480
- - Verdict: pending
481
- - Change type: code-change | docs-only | ledger-closeout | migration | eval-only | delegated-run
482
- - Intended files changed:
483
- - Actual files changed:
484
- - Commands passed:
485
- - External acceptance: unavailable
486
- - Residual risks:
487
- - Reviewer action required: inspect diff and card
488
- - Rollback:
480
+ - User intent:
481
+ - Affected domains and downstream consumers:
482
+ - State transitions and persistence/restart impact:
483
+ - Missing impact areas or uncertainty:
484
+ - Residual risks and recovery:
489
485
 
490
486
  ## Verification Evidence
491
487
 
492
- - Forge /review run:
488
+ - Focused/full checks:
493
489
  - Commands run:
494
490
  - Manual checks:
495
491
  - Supporting artifacts:
496
492
 
497
- ## External Acceptance Advice
498
-
499
- > **External Acceptance**: unavailable
500
- > **External Reviewer**:
501
- > **External Source**:
502
- > **External Started**:
503
- > **External Completed**:
504
-
505
- - P1 blockers:
506
- - P2 advisories:
507
- - Acceptance checklist:
508
-
509
- ## Scorecard
510
-
511
- | Dimension | Score | Notes |
512
- |-----------|-------|-------|
513
- | Functionality | 0/10 | |
514
- | Product depth | 0/10 | |
515
- | Design quality | 0/10 | |
516
- | Code quality | 0/10 | |
517
-
518
493
  ## Failing Items
519
494
 
520
495
  - ...
@@ -270,11 +270,13 @@ function renderText(result: InspectionResult): string {
270
270
  return lines.join("\n");
271
271
  }
272
272
 
273
- const { repo, format } = parseArgs(process.argv.slice(2));
274
- const result = inspectRepo(repo);
273
+ if (import.meta.main) {
274
+ const { repo, format } = parseArgs(process.argv.slice(2));
275
+ const result = inspectRepo(repo);
275
276
 
276
- if (format === "text") {
277
- console.log(renderText(result));
278
- } else {
279
- console.log(JSON.stringify(result, null, 2));
277
+ if (format === "text") {
278
+ console.log(renderText(result));
279
+ } else {
280
+ console.log(JSON.stringify(result, null, 2));
281
+ }
280
282
  }
@@ -1,54 +1,31 @@
1
1
  #!/bin/bash
2
- # Delegate workflow migrations to the canonical upstream forge.
3
- #
4
- # Generated projects keep installed workflow runtime state under .ai/. The
5
- # template source lives in AGENTIC_DEV_ROOT, AGENTIC_DEV_SKILL_ROOT, or
6
- # ~/Projects/forge. Retired legacy install paths are not
7
- # searched.
2
+ # Run the canonical Forge adoption path without guessing a developer checkout.
8
3
 
9
4
  set -euo pipefail
10
5
 
11
- resolve_agentic_dev_root() {
12
- if [[ -n "${AGENTIC_DEV_ROOT:-}" ]]; then
13
- printf '%s\n' "$AGENTIC_DEV_ROOT"
14
- return 0
15
- fi
16
-
17
- if [[ -n "${AGENTIC_DEV_SKILL_ROOT:-}" ]]; then
18
- printf '%s\n' "$AGENTIC_DEV_SKILL_ROOT"
19
- return 0
20
- fi
21
-
22
- if [[ -n "${HOME:-}" ]]; then
23
- local roots=(
24
- "$HOME/Projects/forge"
25
- "$HOME/.codex/skills/forge"
26
- "$HOME/.claude/skills/forge"
27
- "$HOME/.agents/skills/forge"
28
- )
29
-
30
- local root
31
- for root in "${roots[@]}"; do
32
- if [[ -d "$root" ]]; then
33
- printf '%s\n' "$root"
34
- return 0
35
- fi
36
- done
37
-
38
- printf '%s\n' "${roots[0]}"
39
- return 0
40
- fi
41
-
42
- printf '%s\n' ".forge/skills/forge"
6
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ SELF_SOURCE_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
8
+ SOURCE_ROOT="${FORGE_SOURCE_ROOT:-${AGENTIC_DEV_ROOT:-${AGENTIC_DEV_SKILL_ROOT:-}}}"
9
+
10
+ run_source_root() {
11
+ local root="$1"
12
+ shift
13
+ [[ -f "$root/src/cli/index.ts" ]] || return 1
14
+ command -v bun >/dev/null 2>&1 || {
15
+ echo "[migrate] bun is required to run Forge from source: $root" >&2
16
+ exit 1
17
+ }
18
+ exec bun "$root/src/cli/index.ts" adopt "$@" --no-codegraph --no-verify
43
19
  }
44
20
 
45
- UPSTREAM_ROOT="$(resolve_agentic_dev_root)"
46
- UPSTREAM_SCRIPT="$UPSTREAM_ROOT/scripts/migrate-project-template.sh"
21
+ run_source_root "$SELF_SOURCE_ROOT" "$@"
22
+ if [[ -n "$SOURCE_ROOT" ]]; then
23
+ run_source_root "$SOURCE_ROOT" "$@"
24
+ fi
47
25
 
48
- if [[ ! -f "$UPSTREAM_SCRIPT" ]]; then
49
- echo "[migrate] Upstream forge migration script not found: $UPSTREAM_SCRIPT" >&2
50
- echo "[migrate] Set AGENTIC_DEV_ROOT or AGENTIC_DEV_SKILL_ROOT to the skill root." >&2
51
- exit 1
26
+ if command -v forge >/dev/null 2>&1; then
27
+ exec forge adopt "$@" --no-codegraph --no-verify
52
28
  fi
53
29
 
54
- exec bash "$UPSTREAM_SCRIPT" "$@"
30
+ echo "[migrate] Missing Forge CLI; set FORGE_SOURCE_ROOT to a Forge source checkout." >&2
31
+ exit 1
@@ -403,11 +403,13 @@ function renderText(summary: MigrationSummary): string {
403
403
  return lines.join("\n");
404
404
  }
405
405
 
406
- const { repo, mode, format } = parseArgs(process.argv.slice(2));
407
- const summary = migrate(repo, mode);
408
-
409
- if (format === "json") {
410
- console.log(JSON.stringify(summary, null, 2));
411
- } else {
412
- console.log(renderText(summary));
406
+ if (import.meta.main) {
407
+ const { repo, mode, format } = parseArgs(process.argv.slice(2));
408
+ const summary = migrate(repo, mode);
409
+
410
+ if (format === "json") {
411
+ console.log(JSON.stringify(summary, null, 2));
412
+ } else {
413
+ console.log(renderText(summary));
414
+ }
413
415
  }
@@ -141,7 +141,7 @@ Complete this inventory before implementation. If any line is unknown, keep the
141
141
 
142
142
  - **State/progress path**:
143
143
  - **Verification evidence**:
144
- - **Evaluator rubric**:
144
+ - **Impact review**:
145
145
  - **Stop condition**:
146
146
  - **Rollback surface**:
147
147
 
@@ -63,7 +63,7 @@ plan_evidence_contract_error() {
63
63
  fi
64
64
 
65
65
  local label line value
66
- for label in "State/progress path" "Verification evidence" "Evaluator rubric" "Stop condition" "Rollback surface"; do
66
+ for label in "State/progress path" "Verification evidence" "Impact review|Evaluator rubric" "Stop condition" "Rollback surface"; do
67
67
  line="$(printf '%s\n' "$section" | grep -Ei "^[[:space:]]*-[[:space:]]*(\\*\\*)?${label}(\\*\\*)?[[:space:]]*:" | head -1 || true)"
68
68
  if [[ -z "$line" ]]; then
69
69
  echo "missing field: ${label}"
@@ -323,7 +323,7 @@ Describe the exact outcome this task must deliver.
323
323
  - Checks file: `.ai/harness/checks/latest.json`
324
324
  - Run snapshots: `.ai/harness/runs/`
325
325
  - Scope gate: edit only paths listed under `allowed_paths`; update this contract before widening scope.
326
- - Completion gate: `scripts/verify-sprint.sh` must see this contract pass, the review recommend pass, and `## External Acceptance Advice` pass or record a manual override.
326
+ - Completion evidence: `scripts/verify-sprint.sh` reports this contract's direct checks and declared scope. Then perform a fresh semantic impact review.
327
327
 
328
328
  ## Allowed Paths
329
329
 
@@ -377,7 +377,7 @@ exit_criteria:
377
377
  tests_pass:
378
378
  - path: tests/unit/{{TASK_SLUG}}.test.ts
379
379
  commands_succeed:
380
- - bun run typecheck
380
+ - bun run check:type
381
381
  files_contain:
382
382
  - path: src/modules/{{TASK_SLUG}}/index.ts
383
383
  pattern: "export"
@@ -691,19 +691,15 @@ else
691
691
  > **Notes File**: {{NOTES_FILE}}
692
692
  > **Checks File**: {{CHECKS_FILE}}
693
693
  > **Last Updated**: {{TIMESTAMP}}
694
- > **Recommendation**: fail
694
+ > **Summary**:
695
695
 
696
- ## Human Review Card
696
+ ## Semantic Impact Review
697
697
 
698
- - Verdict: pending
699
- - Change type: code-change | docs-only | ledger-closeout | migration | eval-only | delegated-run
700
- - Intended files changed:
701
- - Actual files changed:
702
- - Commands passed:
703
- - External acceptance: unavailable
704
- - Residual risks:
705
- - Reviewer action required: inspect diff and card
706
- - Rollback:
698
+ - User intent:
699
+ - Affected domains and downstream consumers:
700
+ - State transitions and persistence/restart impact:
701
+ - Missing impact areas or uncertainty:
702
+ - Residual risks and recovery:
707
703
 
708
704
  ## Mode Evidence
709
705
 
@@ -713,26 +709,14 @@ else
713
709
 
714
710
  ## Verification Evidence
715
711
 
716
- - Forge /review run:
712
+ - Focused/full checks:
717
713
  - Commands run:
718
714
  - Manual checks:
719
715
  - Supporting artifacts:
720
716
  - Implementation notes reviewed:
721
717
  - Run snapshot:
722
718
 
723
- ## External Acceptance Advice
724
-
725
- > **External Acceptance**: unavailable
726
- > **External Reviewer**:
727
- > **External Source**:
728
- > **External Started**:
729
- > **External Completed**:
730
-
731
- - P1 blockers:
732
- - P2 advisories:
733
- - Acceptance checklist:
734
-
735
- ## Behavior Diff Notes
719
+ ## Scenario Evidence
736
720
 
737
721
  - ...
738
722
 
@@ -740,15 +724,6 @@ else
740
724
 
741
725
  - ...
742
726
 
743
- ## Scorecard
744
-
745
- | Dimension | Score | Notes |
746
- |-----------|-------|-------|
747
- | Functionality | 0/10 | |
748
- | Product depth | 0/10 | |
749
- | Design quality | 0/10 | |
750
- | Code quality | 0/10 | |
751
-
752
727
  ## Failing Items
753
728
 
754
729
  - ...