@moretea-labs/forge 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +26 -0
  3. package/CLAUDE.md +2 -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/03-orchestration.partial.md +1 -1
  17. package/assets/plugin-registry.v1.json +1 -1
  18. package/assets/reference-configs/document-generation.md +1 -1
  19. package/assets/reference-configs/harness-overview.md +1 -1
  20. package/assets/reference-configs/sprint-contracts.md +3 -3
  21. package/assets/skill-version.json +2 -2
  22. package/assets/templates/contract.template.md +2 -7
  23. package/assets/templates/helpers/capture-plan.sh +2 -2
  24. package/assets/templates/helpers/check-task-workflow.sh +4 -4
  25. package/assets/templates/helpers/contract-worktree.sh +1 -21
  26. package/assets/templates/helpers/ensure-task-workflow.sh +11 -36
  27. package/assets/templates/helpers/migrate-project-template.sh +22 -45
  28. package/assets/templates/helpers/new-plan.sh +1 -1
  29. package/assets/templates/helpers/plan-to-todo.sh +12 -37
  30. package/assets/templates/helpers/ship-worktrees.sh +2 -29
  31. package/assets/templates/helpers/verify-contract.sh +1 -111
  32. package/assets/templates/helpers/verify-sprint.sh +3 -180
  33. package/assets/templates/plan.template.md +1 -1
  34. package/assets/templates/review.template.md +9 -34
  35. package/assets/workflow-contract.v1.json +10 -19
  36. package/docs/README.md +10 -10
  37. package/docs/architecture/CURRENT.md +170 -0
  38. package/docs/architecture/EVOLUTION.md +42 -0
  39. package/docs/architecture/current/README.md +4 -156
  40. package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
  41. package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
  42. package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
  43. package/docs/architecture/history/README.md +7 -0
  44. package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
  45. package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
  46. package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
  47. package/docs/architecture/history.md +3 -34
  48. package/docs/architecture/index.md +15 -98
  49. package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
  50. package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
  51. package/docs/architecture/versions/1.6.md +38 -0
  52. package/docs/architecture/versions/1.7.md +41 -0
  53. package/docs/forge-chatgpt-browser-engine.md +2 -2
  54. package/docs/forge-chatgpt-mcp-setup.md +4 -28
  55. package/docs/forge-chatgpt-supervised-automation.md +3 -3
  56. package/docs/forge-github-issue-launcher.md +1 -1
  57. package/docs/forge-runtime-self-healing-loop.md +1 -1
  58. package/docs/operations/controller-browser-plugin.md +26 -6
  59. package/docs/operations/controller-performance-and-502.md +124 -0
  60. package/docs/operations/controller-reliability-runbook.md +1 -1
  61. package/docs/operations/features.md +2 -2
  62. package/docs/operations/github-repository.md +1 -1
  63. package/docs/operations/homebrew.md +2 -2
  64. package/docs/operations/mcp-tool-exposure.md +5 -3
  65. package/docs/wiki/Architecture.md +6 -6
  66. package/docs/wiki/Implementation.md +2 -2
  67. package/docs/wiki/Integrations.md +2 -2
  68. package/docs/wiki/Work-Lifecycle.md +1 -1
  69. package/package.json +29 -10
  70. package/scripts/activate-source-baseline.ts +17 -13
  71. package/scripts/benchmark-background-check-overlap.ts +228 -0
  72. package/scripts/benchmark-mcp-host.sh +117 -0
  73. package/scripts/benchmark-mcp-transport.ts +170 -0
  74. package/scripts/benchmark-quality-harness.ts +146 -0
  75. package/scripts/benchmark-route-session-concurrency.ts +207 -6
  76. package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
  77. package/scripts/benchmark-typescript-navigation.ts +186 -0
  78. package/scripts/benchmark-work-efficiency.ts +334 -0
  79. package/scripts/capture-plan.sh +3 -3
  80. package/scripts/check-agent-tooling.sh +8 -35
  81. package/scripts/check-architecture-sync.sh +17 -86
  82. package/scripts/check-mcp-compatibility.ts +14 -0
  83. package/scripts/check-runtime-architecture.mjs +107 -64
  84. package/scripts/check-stable-baseline.ts +92 -0
  85. package/scripts/check-task-workflow.sh +4 -4
  86. package/scripts/contract-worktree.sh +1 -21
  87. package/scripts/ensure-task-workflow.sh +22 -55
  88. package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
  89. package/scripts/install-standalone-recovery.ts +24 -0
  90. package/scripts/lib/project-init-lib.sh +15 -44
  91. package/scripts/migrate-project-template.sh +23 -1179
  92. package/scripts/new-plan.sh +1 -1
  93. package/scripts/plan-to-todo.sh +11 -36
  94. package/scripts/run-governed-gate.ts +2 -1
  95. package/scripts/ship-worktrees.sh +2 -29
  96. package/scripts/smoke-ios-physical-device.ts +4 -2
  97. package/scripts/smoke-runtime-recovery.ts +1 -35
  98. package/scripts/smoke-schedule-engine.ts +1 -20
  99. package/scripts/verify-contract.sh +1 -111
  100. package/scripts/verify-forge-runtime.sh +0 -1
  101. package/scripts/verify-sprint.sh +3 -180
  102. package/scripts/workflow-contract.ts +1 -5
  103. package/src/cli/commands/init-hook.ts +3 -3
  104. package/src/cli/commands/mcp.ts +9 -5
  105. package/src/cli/commands/plugin.ts +1 -1
  106. package/src/cli/commands/recovery.ts +25 -3
  107. package/src/cli/commands/runtime.ts +55 -3
  108. package/src/cli/commands/security.ts +12 -1
  109. package/src/cli/commands/setup-profile.ts +31 -21
  110. package/src/cli/controller/check-runner.ts +106 -3
  111. package/src/cli/controller/composite-result.ts +1 -1
  112. package/src/cli/controller/context/focus.ts +51 -0
  113. package/src/cli/controller/context/instruction-context.ts +114 -0
  114. package/src/cli/controller/context/known-paths.ts +76 -0
  115. package/src/cli/controller/context/query-planning.ts +110 -0
  116. package/src/cli/controller/context/rule-resolution.ts +532 -0
  117. package/src/cli/controller/context/source-materializer.ts +278 -0
  118. package/src/cli/controller/context/structural.ts +16 -0
  119. package/src/cli/controller/context/types.ts +286 -0
  120. package/src/cli/controller/context-pack.ts +785 -469
  121. package/src/cli/controller/launch-agents.ts +77 -2
  122. package/src/cli/controller/operational-plan.ts +2 -2
  123. package/src/cli/controller/work-mode.ts +6 -4
  124. package/src/cli/editing/edit-session.ts +60 -7
  125. package/src/cli/github/github.ts +133 -0
  126. package/src/cli/installer/managed-entries.ts +15 -1
  127. package/src/cli/local-bridge/console-automations.ts +54 -78
  128. package/src/cli/local-bridge/console-view-models.ts +1 -35
  129. package/src/cli/local-bridge/facade-api.ts +0 -217
  130. package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
  131. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +23 -13
  132. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
  133. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +6 -4
  134. package/src/cli/local-bridge/frontend/src/lib/api.ts +1 -6
  135. package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
  136. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +2 -2
  137. package/src/cli/local-bridge/frontend/src/styles.css +1 -1
  138. package/src/cli/local-bridge/frontend/src/types.ts +5 -8
  139. package/src/cli/local-bridge/job-store.ts +1 -490
  140. package/src/cli/local-bridge/server.ts +0 -513
  141. package/src/cli/local-bridge/ui-dist/app.css +1 -1
  142. package/src/cli/local-bridge/ui-dist/app.js +3703 -3757
  143. package/src/cli/mcp/auth.ts +5 -5
  144. package/src/cli/mcp/instructions.ts +3 -2
  145. package/src/cli/mcp/legacy-tool-service.ts +0 -189
  146. package/src/cli/mcp/multi-repository.ts +16 -5
  147. package/src/cli/mcp/oauth.ts +175 -26
  148. package/src/cli/mcp/repository-tools.ts +247 -107
  149. package/src/cli/mcp/server.ts +537 -111
  150. package/src/cli/mcp/tool-capability-cache.ts +1 -1
  151. package/src/cli/mcp/toolset-selection.ts +1 -1
  152. package/src/cli/mcp/toolset.ts +42 -5
  153. package/src/cli/mcp/transports/http.ts +101 -14
  154. package/src/cli/mcp/transports/session-registry.ts +43 -5
  155. package/src/cli/mcp/types.ts +3 -3
  156. package/src/cli/repositories/command-classifier.ts +101 -19
  157. package/src/cli/repositories/command-executor.ts +55 -521
  158. package/src/cli/repositories/command-process.ts +108 -0
  159. package/src/cli/repositories/command-scope.ts +99 -41
  160. package/src/cli/repositories/controller-home.ts +7 -8
  161. package/src/cli/repositories/git-command-executor.ts +2 -0
  162. package/src/cli/repositories/locks.ts +53 -16
  163. package/src/cli/repositories/repository-snapshot.ts +121 -0
  164. package/src/cli/repositories/selected-path-actions.ts +17 -9
  165. package/src/cli/repositories/structured-git.ts +61 -3
  166. package/src/cli/repository/inspector.ts +553 -63
  167. package/src/cli/repository/session-cache.ts +58 -17
  168. package/src/cli/v81-entry.ts +1 -4
  169. package/src/effects/fs-transaction.ts +85 -17
  170. package/src/runtime/context/codegraph-read-provider.ts +233 -2
  171. package/src/runtime/context/codegraph-sidecar.cjs +74 -40
  172. package/src/runtime/context/generic-lsp-provider.ts +355 -0
  173. package/src/runtime/context/lsp-client.ts +283 -0
  174. package/src/runtime/context/semantic-navigation.ts +275 -0
  175. package/src/runtime/context/swift-navigation.ts +565 -0
  176. package/src/runtime/context/typescript-navigation.ts +226 -0
  177. package/src/runtime/control-plane/dispatch-priority.ts +28 -0
  178. package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +47 -8
  179. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
  180. package/src/runtime/control-plane/execution/session-store.ts +18 -0
  181. package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
  182. package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
  183. package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
  184. package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
  185. package/src/runtime/control-plane/execution/work-task-receipt.ts +54 -11
  186. package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +143 -8
  187. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +22 -14
  188. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +85 -8
  189. package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
  190. package/src/runtime/control-plane/facade/controller-round-relay.ts +991 -0
  191. package/src/runtime/control-plane/facade/controller-session-store.ts +132 -1
  192. package/src/runtime/control-plane/facade/goal-workloop-access.ts +2 -0
  193. package/src/runtime/control-plane/facade/goal-workloop.ts +686 -129
  194. package/src/runtime/control-plane/facade/index.ts +1 -0
  195. package/src/runtime/control-plane/facade/plan-contract-store.ts +185 -20
  196. package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
  197. package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
  198. package/src/runtime/control-plane/facade/types.ts +22 -5
  199. package/src/runtime/control-plane/facade/work-contract-store.ts +175 -73
  200. package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
  201. package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
  202. package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
  203. package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
  204. package/src/runtime/control-plane/global-scheduler/maintenance.ts +145 -0
  205. package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
  206. package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
  207. package/src/runtime/control-plane/global-scheduler/scheduler.ts +273 -542
  208. package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
  209. package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
  210. package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
  211. package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
  212. package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
  213. package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
  214. package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
  215. package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
  216. package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
  217. package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
  218. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +50 -0
  219. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +355 -116
  220. package/src/runtime/control-plane/launcher/launch-reservation-store.ts +40 -0
  221. package/src/runtime/control-plane/launcher/thin-launcher.ts +194 -10
  222. package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
  223. package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
  224. package/src/runtime/control-plane/release-retention.ts +62 -2
  225. package/src/runtime/control-plane/routing/route-policy.ts +7 -16
  226. package/src/runtime/control-plane/runtime-status-client.ts +0 -2
  227. package/src/runtime/diagnostics/mcp-timing.ts +13 -0
  228. package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
  229. package/src/runtime/diagnostics/performance.ts +24 -1
  230. package/src/runtime/evidence/event-ledger.ts +1 -1
  231. package/src/runtime/execution/jobs/store.ts +58 -4
  232. package/src/runtime/execution/jobs/types.ts +1 -1
  233. package/src/runtime/execution/managed-workspace.ts +203 -1
  234. package/src/runtime/execution/process-runtime/check-facade.ts +51 -4
  235. package/src/runtime/execution/process-runtime/check-result.ts +53 -0
  236. package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
  237. package/src/runtime/execution/process-runtime/command-facade.ts +345 -40
  238. package/src/runtime/execution/process-runtime/gc.ts +38 -6
  239. package/src/runtime/execution/process-runtime/lightweight-managed.ts +1184 -0
  240. package/src/runtime/execution/process-runtime/persisted-check.ts +47 -4
  241. package/src/runtime/execution/process-runtime/resource-claims.ts +10 -6
  242. package/src/runtime/execution/process-runtime/runtime.ts +43 -3
  243. package/src/runtime/execution/process-runtime/store.ts +1 -0
  244. package/src/runtime/execution/process-runtime/types.ts +2 -0
  245. package/src/runtime/execution/thin-harness/async-process.ts +12 -2
  246. package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
  247. package/src/runtime/execution/workers/executor.ts +0 -48
  248. package/src/runtime/gateway/mcp/execution-tools.ts +1192 -114
  249. package/src/runtime/gateway/mcp/process-tools.ts +83 -37
  250. package/src/runtime/gateway/mcp/router.ts +184 -82
  251. package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +546 -0
  252. package/src/runtime/gateway/mcp/runtime-tools.ts +2224 -1589
  253. package/src/runtime/plugins/app-store-connect-adapter.ts +123 -19
  254. package/src/runtime/plugins/browser-adapter.ts +2901 -241
  255. package/src/runtime/plugins/browser-automation-service.ts +10 -0
  256. package/src/runtime/plugins/browser-handoff.ts +92 -2
  257. package/src/runtime/plugins/browser-macos-bridge.ts +582 -49
  258. package/src/runtime/plugins/browser-node-bridge.ts +6 -34
  259. package/src/runtime/plugins/browser-provider-registry.ts +109 -0
  260. package/src/runtime/plugins/browser-runtime-contract.ts +152 -0
  261. package/src/runtime/plugins/browser-runtime.ts +183 -0
  262. package/src/runtime/plugins/browser-session-authority.ts +332 -0
  263. package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
  264. package/src/runtime/plugins/desktop-operator-registration.ts +8 -2
  265. package/src/runtime/plugins/external-adapter.ts +324 -3
  266. package/src/runtime/plugins/external-unix-socket.ts +7 -1
  267. package/src/runtime/plugins/first-party-registry.ts +2 -0
  268. package/src/runtime/plugins/github-adapter.ts +125 -0
  269. package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
  270. package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
  271. package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
  272. package/src/runtime/plugins/ios-adapter.ts +106 -16
  273. package/src/runtime/plugins/ios-agent-device.ts +234 -64
  274. package/src/runtime/plugins/ios-physical-device.ts +1143 -392
  275. package/src/runtime/plugins/lightweight-action.ts +153 -0
  276. package/src/runtime/plugins/local-system-adapter.ts +123 -6
  277. package/src/runtime/plugins/macos-capability-broker.ts +55 -9
  278. package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
  279. package/src/runtime/plugins/plugin-management-adapter.ts +49 -8
  280. package/src/runtime/plugins/resend-adapter.ts +1 -1
  281. package/src/runtime/plugins/store.ts +269 -29
  282. package/src/runtime/plugins/types.ts +35 -2
  283. package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
  284. package/src/runtime/projections/git-status-sampler.ts +16 -16
  285. package/src/runtime/projections/materialized-view.ts +28 -10
  286. package/src/runtime/recovery/maintenance-executor.ts +393 -28
  287. package/src/runtime/root/mcp-transport.ts +180 -10
  288. package/src/runtime/root/package-connector-service.ts +186 -8
  289. package/src/runtime/root/package-runtime-release.ts +143 -17
  290. package/src/runtime/root/package-runtime-service.ts +430 -22
  291. package/src/runtime/root/release-manifest.ts +7 -2
  292. package/src/runtime/root/release-materialize.ts +19 -0
  293. package/src/runtime/root/release-store.ts +48 -11
  294. package/src/runtime/root/runtime.ts +23 -5
  295. package/src/runtime/root/service.ts +100 -29
  296. package/src/runtime/root/types.ts +2 -0
  297. package/src/runtime/safe-tooling/ios-development.ts +321 -63
  298. package/src/runtime/shared/trusted-executable.ts +62 -0
  299. package/src/runtime/shared/trusted-node-executable.ts +48 -0
  300. package/src/runtime/standalone-recovery/core.ts +700 -92
  301. package/src/runtime/standalone-recovery/entry.ts +99 -23
  302. package/src/runtime/standalone-recovery/installer.ts +19 -3
  303. package/src/runtime/standalone-recovery/service-labels.ts +2 -0
  304. package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
  305. package/src/runtime/workflow/schedules/browser-probe.ts +81 -3
  306. package/src/runtime/workflow/schedules/engine.ts +287 -151
  307. package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
  308. package/src/runtime/workflow/schedules/settlement.ts +48 -4
  309. package/src/runtime/workflow/schedules/store.ts +131 -10
  310. package/src/runtime/workflow/schedules/types.ts +2 -4
  311. package/src/runtime/workflow/schedules/work-continuation.ts +26 -13
  312. package/src/testing/test-governance.ts +8 -40
  313. package/assets/reference-configs/heartbeat-triage.md +0 -57
  314. package/assets/templates/helpers/harness-trace-grade.sh +0 -150
  315. package/assets/templates/helpers/heartbeat-triage.sh +0 -361
  316. package/assets/templates/helpers/maintenance-triage.sh +0 -167
  317. package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
  318. package/docs/architecture/current/architecture-invariants.md +0 -331
  319. package/docs/architecture/current/automation-and-schedule-engine.md +0 -459
  320. package/docs/architecture/current/codegraph-context-provider.md +0 -238
  321. package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
  322. package/docs/architecture/current/controller-repository-decoupling.md +0 -148
  323. package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -373
  324. package/docs/architecture/current/entity-model.md +0 -612
  325. package/docs/architecture/current/external-plugin-governance.md +0 -396
  326. package/docs/architecture/current/failure-recovery.md +0 -447
  327. package/docs/architecture/current/governance.md +0 -213
  328. package/docs/architecture/current/human-interaction-plane.md +0 -87
  329. package/docs/architecture/current/implementation-status.md +0 -128
  330. package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
  331. package/docs/architecture/current/legacy-governance.md +0 -58
  332. package/docs/architecture/current/local-workspace-target-grants.md +0 -70
  333. package/docs/architecture/current/migration-roadmap.md +0 -105
  334. package/docs/architecture/current/multi-repository-execution.md +0 -371
  335. package/docs/architecture/current/operations-runbook.md +0 -45
  336. package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
  337. package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
  338. package/docs/architecture/current/repository-access-modes.md +0 -102
  339. package/docs/architecture/current/route-policy.md +0 -15
  340. package/docs/architecture/current/route-session-concurrency.md +0 -85
  341. package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
  342. package/docs/architecture/current/runtime-directory-map.md +0 -49
  343. package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
  344. package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
  345. package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
  346. package/docs/architecture/current/system-overview.md +0 -169
  347. package/docs/architecture/current/target-requirements-traceability.md +0 -202
  348. package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
  349. package/docs/architecture/current/thin-harness-v1.md +0 -321
  350. package/docs/architecture/current/verification-and-release-gates.md +0 -391
  351. package/docs/forge-autonomous-goal-loop.md +0 -9
  352. package/docs/forge-provider-configuration.md +0 -7
  353. package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -93
  354. package/docs/operations/gmail-assistant-routines.md +0 -186
  355. package/docs/operations/personal-assistant-operator-guide.md +0 -61
  356. package/docs/operations/provider-configuration.md +0 -31
  357. package/scripts/harness-trace-grade.sh +0 -150
  358. package/scripts/heartbeat-triage.sh +0 -361
  359. package/scripts/maintenance-triage.sh +0 -167
  360. package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
  361. package/src/cli/repositories/goal-registry.ts +0 -239
  362. package/src/runtime/assistant/action-proposals.ts +0 -279
  363. package/src/runtime/assistant/intent.ts +0 -395
  364. package/src/runtime/assistant/model-provider.ts +0 -460
  365. package/src/runtime/assistant/openapi.ts +0 -223
  366. package/src/runtime/assistant/policy.ts +0 -89
  367. package/src/runtime/assistant/readiness.ts +0 -258
  368. package/src/runtime/assistant/routine-runtime.ts +0 -477
  369. package/src/runtime/assistant/schedule-binding.ts +0 -171
  370. package/src/runtime/assistant/standing-grants.ts +0 -375
  371. package/src/runtime/assistant/store.ts +0 -243
  372. package/src/runtime/assistant/types.ts +0 -135
  373. package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
  374. package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
  375. package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
  376. package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
  377. package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
  378. package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
  379. package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
  380. package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
  381. package/src/runtime/control-plane/goal-loop/index.ts +0 -13
  382. package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
  383. package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
  384. package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
  385. package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
  386. package/src/runtime/control-plane/goal-loop/types.ts +0 -378
  387. package/src/runtime/control-plane/startup-recovery.ts +0 -198
  388. package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
  389. package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
  390. package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
  391. package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
  392. package/src/runtime/workflow/findings/store.ts +0 -204
  393. package/src/runtime/workflow/findings/types.ts +0 -58
  394. package/src/runtime/workflow/portfolio/engine.ts +0 -20
  395. package/src/runtime/workflow/portfolio/store.ts +0 -185
  396. 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
@@ -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.
@@ -9,7 +9,7 @@
9
9
  "repository": "https://github.com/moretea-labs/forge-desktop-operator.git",
10
10
  "ref": "v0.2.1",
11
11
  "installer": "forge-plugin-install.mjs",
12
- "providerVersion": "0.2.0",
12
+ "providerVersion": "0.2.1",
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.0",
3
+ "templateVersion": "1.7.0",
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
@@ -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
  - ...
@@ -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
@@ -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
  - ...
@@ -224,19 +224,8 @@ active_slug_or_empty() {
224
224
  plan_slug_from_path "$active_plan"
225
225
  }
226
226
 
227
- review_recommends_pass_fallback() {
228
- local review_file="$1"
229
- grep -Eq '^> \*\*Recommendation\*\*:[[:space:]]*pass([[:space:]]*)$' "$review_file"
230
- }
231
-
232
- external_acceptance_pass_fallback() {
233
- local review_file="$1"
234
- grep -Eq '^> \*\*External Acceptance\*\*:[[:space:]]*(pass|manual_override)([[:space:]]*)$' "$review_file" \
235
- && grep -Eq '^-?[[:space:]]*P1 blockers:[[:space:]]*none([[:space:]]*)$' "$review_file"
236
- }
237
-
238
227
  require_finish_ready() {
239
- local contract_file="" review_file="" checks_file=".ai/harness/checks/latest.json" checks_error=""
228
+ local contract_file="" checks_file=".ai/harness/checks/latest.json" checks_error=""
240
229
 
241
230
  [[ -x "scripts/contract-worktree.sh" ]] || fail "scripts/contract-worktree.sh is missing or not executable"
242
231
  [[ -x "scripts/verify-sprint.sh" ]] || fail "scripts/verify-sprint.sh is missing or not executable"
@@ -245,27 +234,11 @@ require_finish_ready() {
245
234
  if declare -F workflow_active_contract >/dev/null 2>&1; then
246
235
  contract_file="$(workflow_active_contract 2>/dev/null || true)"
247
236
  fi
248
- if declare -F workflow_active_review >/dev/null 2>&1; then
249
- review_file="$(workflow_active_review 2>/dev/null || true)"
250
- fi
251
237
  if declare -F workflow_checks_file >/dev/null 2>&1; then
252
238
  checks_file="$(workflow_checks_file)"
253
239
  fi
254
240
 
255
241
  [[ -n "$contract_file" && -f "$contract_file" ]] || fail "active sprint contract is missing"
256
- [[ -n "$review_file" && -f "$review_file" ]] || fail "active sprint review is missing"
257
-
258
- if declare -F workflow_review_recommends_pass >/dev/null 2>&1; then
259
- workflow_review_recommends_pass "$review_file" || fail "$review_file does not recommend pass"
260
- else
261
- review_recommends_pass_fallback "$review_file" || fail "$review_file does not recommend pass"
262
- fi
263
-
264
- if declare -F workflow_external_acceptance_pass >/dev/null 2>&1; then
265
- workflow_external_acceptance_pass "$review_file" || fail "$review_file has no passing external acceptance"
266
- else
267
- external_acceptance_pass_fallback "$review_file" || fail "$review_file has no passing external acceptance"
268
- fi
269
242
 
270
243
  run_cmd bash "scripts/verify-sprint.sh"
271
244
  if [[ "$DRY_RUN" -eq 1 ]]; then
@@ -273,7 +246,7 @@ require_finish_ready() {
273
246
  fi
274
247
 
275
248
  if declare -F workflow_checks_pass >/dev/null 2>&1; then
276
- if ! checks_error="$(workflow_checks_pass "$checks_file" "$contract_file" "$review_file")"; then
249
+ if ! checks_error="$(workflow_checks_pass "$checks_file" "$contract_file")"; then
277
250
  fail "$checks_error"
278
251
  fi
279
252
  elif ! grep -Eq '"status"[[:space:]]*:[[:space:]]*"pass"' "$checks_file"; then