@moretea-labs/forge 1.5.0-rc.1 → 1.5.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 (259) hide show
  1. package/AGENTS.md +9 -11
  2. package/CHANGELOG.md +19 -0
  3. package/CLAUDE.md +8 -10
  4. package/DESIGN.md +278 -0
  5. package/README.md +70 -90
  6. package/README.zh-CN.md +50 -55
  7. package/SKILL.md +8 -11
  8. package/THIRD_PARTY_NOTICES.md +9 -3
  9. package/assets/branding/README.md +4 -2
  10. package/assets/hooks/lib/workflow-state.sh +19 -18
  11. package/assets/hooks/post-edit-guard.sh +6 -75
  12. package/assets/hooks/prompt-guard.sh +24 -12
  13. package/assets/hooks/session-start-context.sh +17 -17
  14. package/assets/hooks/stop-orchestrator.sh +2 -2
  15. package/assets/partials/04-project-structure.partial.md +6 -6
  16. package/assets/partials/05-workflow.partial.md +6 -6
  17. package/assets/partials/07-footer.partial.md +1 -1
  18. package/assets/partials/08-orchestration.partial.md +2 -2
  19. package/assets/partials-agents/02-operating-mode.partial.md +5 -5
  20. package/assets/partials-agents/03-orchestration.partial.md +3 -3
  21. package/assets/partials-agents/04-task-protocol.partial.md +3 -3
  22. package/assets/partials-agents/08-deep-docs.partial.md +1 -1
  23. package/assets/reference-configs/agentic-development-flow.md +49 -86
  24. package/assets/reference-configs/external-tooling.md +21 -61
  25. package/assets/reference-configs/handoff-protocol.md +25 -20
  26. package/assets/reference-configs/harness-overview.md +8 -8
  27. package/assets/templates/helpers/archive-workflow.sh +0 -1
  28. package/assets/templates/helpers/capture-plan.sh +3 -3
  29. package/assets/templates/helpers/check-task-workflow.sh +2 -2
  30. package/assets/templates/helpers/codex-handoff-resume.sh +5 -5
  31. package/assets/templates/helpers/ensure-task-workflow.sh +37 -35
  32. package/assets/templates/helpers/new-plan.sh +1 -1
  33. package/assets/templates/helpers/plan-to-todo.sh +2 -2
  34. package/assets/templates/helpers/prepare-codex-handoff.sh +2 -2
  35. package/assets/templates/helpers/prepare-handoff.sh +9 -9
  36. package/assets/templates/helpers/refresh-current-status.sh +2 -2
  37. package/assets/templates/helpers/ship-worktrees.sh +1 -1
  38. package/assets/templates/helpers/sprint-backlog.sh +1 -1
  39. package/assets/templates/helpers/verify-sprint.sh +7 -7
  40. package/assets/templates/helpers/workstream-sync.sh +1 -1
  41. package/assets/templates/plan.template.md +1 -1
  42. package/assets/workflow-contract.v1.json +6 -3
  43. package/docs/architecture/current/README.md +10 -9
  44. package/docs/architecture/current/approved-target-architecture.zh-CN.md +2 -2
  45. package/docs/architecture/current/architecture-invariants.md +2 -2
  46. package/docs/architecture/current/automation-and-schedule-engine.md +15 -15
  47. package/docs/architecture/current/codegraph-context-provider.md +2 -2
  48. package/docs/architecture/current/control-plane-authority-inventory.md +12 -0
  49. package/docs/architecture/current/dispatch-and-agent-strategy.md +11 -11
  50. package/docs/architecture/current/entity-model.md +0 -27
  51. package/docs/architecture/current/failure-recovery.md +0 -24
  52. package/docs/architecture/current/governance.md +1 -1
  53. package/docs/architecture/current/implementation-status.md +1 -1
  54. package/docs/architecture/current/legacy-governance.md +58 -0
  55. package/docs/architecture/current/multi-repository-execution.md +1 -1
  56. package/docs/architecture/current/peer-supercontroller-runtime.md +1 -1
  57. package/docs/architecture/current/personal-assistant-plugin-baseline.md +4 -5
  58. package/docs/architecture/current/scheduler-and-resource-claims.md +0 -10
  59. package/docs/architecture/current/target-requirements-traceability.md +2 -2
  60. package/docs/architecture/current/thin-harness-governance-policy.md +1 -1
  61. package/docs/architecture/current/thin-harness-v1.md +9 -11
  62. package/docs/architecture/domains/runtime-harness.md +1 -1
  63. package/docs/forge-autonomous-goal-loop.md +3 -1
  64. package/docs/forge-chatgpt-mcp-setup.md +51 -184
  65. package/docs/images/forge-banner-cn.svg +26 -1
  66. package/docs/images/forge-banner.svg +26 -1
  67. package/docs/operations/features.md +1 -1
  68. package/docs/operations/homebrew.md +3 -3
  69. package/docs/operations/mcp-tool-exposure.md +5 -5
  70. package/docs/operations/platform-support.md +45 -37
  71. package/docs/operations/platform-support.zh-CN.md +40 -38
  72. package/docs/operations/releasing.md +3 -3
  73. package/docs/operations/releasing.zh-CN.md +3 -3
  74. package/docs/operations/troubleshooting.md +11 -6
  75. package/docs/operations/troubleshooting.zh-CN.md +11 -6
  76. package/docs/public-usage-guide.md +28 -21
  77. package/docs/public-usage-guide.zh-CN.md +28 -21
  78. package/docs/tutorials/01-install-and-start.md +56 -35
  79. package/docs/tutorials/01-install-and-start.zh-CN.md +56 -35
  80. package/docs/tutorials/02-connect-chatgpt.md +112 -46
  81. package/docs/tutorials/02-connect-chatgpt.zh-CN.md +113 -45
  82. package/docs/wiki/Architecture.md +1 -1
  83. package/docs/wiki/Installation.md +2 -2
  84. package/docs/wiki/Quick-Start.md +1 -1
  85. package/docs/wiki/Work-Lifecycle.md +1 -1
  86. package/install.ps1 +4 -5
  87. package/install.sh +4 -6
  88. package/package.json +15 -5
  89. package/scripts/archive-workflow.sh +0 -1
  90. package/scripts/benchmark-thin-harness-mcp-e2e.ts +27 -14
  91. package/scripts/build-controller-ui.ts +28 -0
  92. package/scripts/capture-plan.sh +4 -4
  93. package/scripts/check-agent-tooling.sh +12 -1
  94. package/scripts/check-platform-support.mjs +2 -2
  95. package/scripts/check-public-docs.sh +16 -5
  96. package/scripts/check-release-readiness.sh +5 -11
  97. package/scripts/check-runtime-architecture.mjs +14 -22
  98. package/scripts/check-tarball-install-smoke.sh +3 -2
  99. package/scripts/check-task-workflow.sh +2 -2
  100. package/scripts/codex-handoff-resume.sh +5 -5
  101. package/scripts/create-project-dirs.sh +3 -3
  102. package/scripts/ensure-task-workflow.sh +45 -35
  103. package/scripts/init-project.sh +4 -4
  104. package/scripts/install-desktop-operator-registration.ts +2 -2
  105. package/scripts/lib/project-init-lib.sh +46 -44
  106. package/scripts/migrate-project-template.sh +7 -4
  107. package/scripts/new-plan.sh +1 -1
  108. package/scripts/plan-to-todo.sh +2 -2
  109. package/scripts/prepare-codex-handoff.sh +2 -2
  110. package/scripts/prepare-handoff.sh +9 -9
  111. package/scripts/refresh-current-status.sh +2 -2
  112. package/scripts/setup-plugins.sh +3 -3
  113. package/scripts/ship-worktrees.sh +1 -1
  114. package/scripts/sprint-backlog.sh +5 -5
  115. package/scripts/sync-codex-installed-copies.sh +2 -3
  116. package/scripts/verify-sprint.sh +7 -7
  117. package/scripts/workstream-sync.sh +1 -1
  118. package/src/cli/chatgpt-browser/bridge-extension.ts +1 -1
  119. package/src/cli/chatgpt-browser/bridge-provider.ts +29 -0
  120. package/src/cli/chatgpt-browser/file-policy.ts +3 -1
  121. package/src/cli/commands/chatgpt.ts +51 -0
  122. package/src/cli/commands/doctor.ts +1 -1
  123. package/src/cli/commands/init-hook.ts +211 -70
  124. package/src/cli/commands/init.ts +5 -6
  125. package/src/cli/commands/mcp.ts +29 -5
  126. package/src/cli/commands/runtime.ts +60 -8
  127. package/src/cli/commands/setup-profile.ts +441 -0
  128. package/src/cli/controller/check-runner.ts +20 -3
  129. package/src/cli/controller/codex-continuation.ts +4 -7
  130. package/src/cli/controller/context-pack.ts +118 -14
  131. package/src/cli/controller/operational-plan.ts +4 -4
  132. package/src/cli/controller/task-ledger.ts +10 -10
  133. package/src/cli/controller/work-mode.ts +6 -13
  134. package/src/cli/index.ts +14 -35
  135. package/src/cli/local-bridge/connector-freshness.ts +1 -1
  136. package/src/cli/local-bridge/console-automations.ts +160 -0
  137. package/src/cli/local-bridge/dashboard.ts +8 -1303
  138. package/src/cli/local-bridge/facade-api.ts +16 -7
  139. package/src/cli/local-bridge/frontend/src/App.tsx +10 -0
  140. package/src/cli/local-bridge/frontend/src/components/Button.tsx +1 -0
  141. package/src/cli/local-bridge/frontend/src/components/DetailPane.tsx +3 -0
  142. package/src/cli/local-bridge/frontend/src/components/SearchField.tsx +1 -0
  143. package/src/cli/local-bridge/frontend/src/components/SectionHeader.tsx +1 -0
  144. package/src/cli/local-bridge/frontend/src/components/Segmented.tsx +1 -0
  145. package/src/cli/local-bridge/frontend/src/components/StatusText.tsx +3 -0
  146. package/src/cli/local-bridge/frontend/src/design/icons.tsx +11 -0
  147. package/src/cli/local-bridge/frontend/src/design/tokens.css +8 -0
  148. package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +3 -0
  149. package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +4 -0
  150. package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +3 -0
  151. package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +2 -0
  152. package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +2 -0
  153. package/src/cli/local-bridge/frontend/src/features/system/SystemView.tsx +2 -0
  154. package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +3 -0
  155. package/src/cli/local-bridge/frontend/src/lib/api.ts +23 -0
  156. package/src/cli/local-bridge/frontend/src/lib/format.ts +4 -0
  157. package/src/cli/local-bridge/frontend/src/lib/routes.ts +7 -0
  158. package/src/cli/local-bridge/frontend/src/main.tsx +1 -0
  159. package/src/cli/local-bridge/frontend/src/shell/AppShell.tsx +1 -0
  160. package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +2 -0
  161. package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +3 -0
  162. package/src/cli/local-bridge/frontend/src/styles.css +12 -0
  163. package/src/cli/local-bridge/frontend/src/types.ts +14 -0
  164. package/src/cli/local-bridge/frontend/src/vite-env.d.ts +1 -0
  165. package/src/cli/local-bridge/frontend/vite.config.ts +27 -0
  166. package/src/cli/local-bridge/server.ts +44 -0
  167. package/src/cli/local-bridge/ui-dist/app.css +1 -0
  168. package/src/cli/local-bridge/ui-dist/app.js +11094 -0
  169. package/src/cli/mcp/instructions.ts +3 -3
  170. package/src/cli/mcp/legacy-tool-service.ts +27 -23
  171. package/src/cli/mcp/multi-repository.ts +2 -0
  172. package/src/cli/mcp/policy.ts +7 -5
  173. package/src/cli/mcp/repository-tools.ts +53 -14
  174. package/src/cli/mcp/server.ts +5 -10
  175. package/src/cli/mcp/setup.ts +211 -275
  176. package/src/cli/mcp/tool-capability-cache.ts +1 -1
  177. package/src/cli/mcp/toolset-names.ts +1 -1
  178. package/src/cli/mcp/toolset.ts +0 -1
  179. package/src/cli/mcp/transports/http.ts +24 -4
  180. package/src/cli/repositories/branch-name-policy.ts +0 -7
  181. package/src/cli/repositories/controller-home.ts +110 -3
  182. package/src/cli/repositories/safe-patch.ts +1 -1
  183. package/src/cli/repositories/selected-path-actions.ts +26 -24
  184. package/src/core/adoption/gitignore-plan.ts +2 -3
  185. package/src/core/adoption/plan.ts +4 -1
  186. package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +556 -0
  187. package/src/runtime/control-plane/execution/work-handle-store.ts +128 -1
  188. package/src/runtime/control-plane/execution/work-validation-reconciler.ts +277 -0
  189. package/src/runtime/control-plane/execution/work-verification-snapshot.ts +169 -0
  190. package/src/runtime/control-plane/facade/capability-registry.ts +0 -10
  191. package/src/runtime/control-plane/facade/handoff-inbox-store.ts +44 -25
  192. package/src/runtime/control-plane/facade/suggested-actions.ts +7 -1
  193. package/src/runtime/control-plane/facade/types.ts +0 -1
  194. package/src/runtime/control-plane/global-scheduler/scheduler.ts +30 -8
  195. package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +114 -0
  196. package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +175 -0
  197. package/src/runtime/control-plane/launcher/launch-reservation-store.ts +161 -0
  198. package/src/runtime/control-plane/launcher/provider-mcp-bootstrap.ts +64 -0
  199. package/src/runtime/control-plane/launcher/thin-launcher.ts +117 -24
  200. package/src/runtime/control-plane/routing/route-policy.ts +14 -14
  201. package/src/runtime/control-plane/runtime-cleanup.ts +0 -1
  202. package/src/runtime/evidence/event-ledger.ts +1 -1
  203. package/src/runtime/{workflow/campaigns/workspace.ts → execution/managed-workspace.ts} +41 -43
  204. package/src/runtime/execution/process-runtime/check-facade.ts +6 -0
  205. package/src/runtime/execution/process-runtime/check-result.ts +45 -0
  206. package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +42 -16
  207. package/src/runtime/execution/process-runtime/command-facade.ts +4 -2
  208. package/src/runtime/execution/process-runtime/gc.ts +1 -1
  209. package/src/runtime/execution/process-runtime/index.ts +3 -0
  210. package/src/runtime/execution/process-runtime/interactive-admission.ts +14 -5
  211. package/src/runtime/execution/process-runtime/persisted-check.ts +285 -0
  212. package/src/runtime/execution/process-runtime/resource-claims.ts +30 -0
  213. package/src/runtime/execution/process-runtime/runtime.ts +18 -1
  214. package/src/runtime/execution/process-runtime/store.ts +1 -19
  215. package/src/runtime/execution/process-runtime/types.ts +4 -0
  216. package/src/runtime/execution/thin-harness/execution-router.ts +0 -1
  217. package/src/runtime/execution/thin-harness/fast-executor.ts +1 -1
  218. package/src/runtime/execution/thin-harness/lightweight-lanes.ts +1 -2
  219. package/src/runtime/execution/thin-harness/types.ts +0 -1
  220. package/src/runtime/execution/workers/executor.ts +1 -1
  221. package/src/runtime/gateway/mcp/execution-tools.ts +1 -1
  222. package/src/runtime/gateway/mcp/persisted-check-process.ts +3 -255
  223. package/src/runtime/gateway/mcp/process-tools.ts +16 -3
  224. package/src/runtime/gateway/mcp/resource-policy.ts +0 -9
  225. package/src/runtime/gateway/mcp/router.ts +117 -182
  226. package/src/runtime/gateway/mcp/runtime-tools.ts +331 -409
  227. package/src/runtime/gateway/mcp/work-validation-reconciler.ts +1 -219
  228. package/src/runtime/plugins/browser-adapter.ts +5 -0
  229. package/src/runtime/plugins/desktop-operator-registration.ts +1 -1
  230. package/src/runtime/plugins/store.ts +14 -6
  231. package/src/runtime/plugins/types.ts +1 -1
  232. package/src/runtime/projections/materialized-view.ts +1 -23
  233. package/src/runtime/recovery/maintenance-executor.ts +9 -0
  234. package/src/runtime/resources/ownership.ts +0 -1
  235. package/src/runtime/root/gateway-adapter.ts +2 -0
  236. package/src/runtime/root/mcp-transport.ts +10 -2
  237. package/src/runtime/root/package-runtime-release.ts +161 -0
  238. package/src/runtime/root/package-runtime-service.ts +172 -0
  239. package/src/runtime/root/runtime.ts +2 -1
  240. package/src/runtime/root/scheduler.ts +5 -0
  241. package/src/runtime/root/service.ts +18 -5
  242. package/src/runtime/standalone-recovery/core.ts +65 -16
  243. package/src/runtime/workflow/findings/store.ts +145 -106
  244. package/src/runtime/workflow/findings/types.ts +22 -0
  245. package/src/runtime/workflow/schedules/engine.ts +132 -2
  246. package/src/runtime/workflow/schedules/pending-activation.ts +139 -0
  247. package/src/runtime/workflow/schedules/work-continuation.ts +218 -0
  248. package/docs/CHANGELOG.md +0 -978
  249. package/docs/README.zh-CN.md +0 -58
  250. package/scripts/smoke-chatgpt-supervised-automation.ts +0 -208
  251. package/src/cli/commands/controller.ts +0 -680
  252. package/src/runtime/workflow/campaigns/cleanup.ts +0 -263
  253. package/src/runtime/workflow/campaigns/engine.ts +0 -112
  254. package/src/runtime/workflow/campaigns/normalize.ts +0 -100
  255. package/src/runtime/workflow/campaigns/review.ts +0 -315
  256. package/src/runtime/workflow/campaigns/store.ts +0 -526
  257. package/src/runtime/workflow/campaigns/supervisor.ts +0 -112
  258. package/src/runtime/workflow/campaigns/types.ts +0 -290
  259. /package/src/runtime/{workflow/campaigns → execution}/workspace-agent.ts +0 -0
package/AGENTS.md CHANGED
@@ -10,7 +10,7 @@ Treat ChatGPT as the controller and Forge as its repository execution layer. Cha
10
10
  - Tasks describe objectives, scope, checks, and acceptance criteria. They do not permanently bind Codex, Claude, or GitHub Copilot. The executor is selected when each Run starts.
11
11
  - Agents are optional implementation tools for broad exploration, large refactors, or compile/test/fix loops. They receive a high-level implementation contract; ChatGPT still reviews the result and decides what happens next.
12
12
  - Ordinary local risk levels are metadata, not permission gates. There is no approval queue and no `approve_risk` handshake. Only an explicitly destructive or irreversible operation requires authorization in the same request.
13
- - The Controller UI is hierarchical: Overview, Work, Activity, and Settings. Work is organized as Issue -> Task -> Execution instead of exposing every technical record as a top-level destination.
13
+ - The Controller UI is an auxiliary configuration/state utility behind ChatGPT: Overview, Work, Automations, Capabilities, Repositories, Settings, and System. It presents durable user-facing state and hides Issue/Task/Run internals unless diagnostics require them.
14
14
  - Hard runtime boundaries remain for secrets, credentials, Git internals, concurrent write conflicts, out-of-scope writes when a scope is declared, and remote or irreversible side effects.
15
15
  ## Canonical Workflow Files
16
16
 
@@ -27,7 +27,7 @@ Treat ChatGPT as the controller and Forge as its repository execution layer. Cha
27
27
  - `.ai/harness/policy.json` for the machine-readable workflow contract
28
28
  - `.ai/context/context-map.json` for progressive context loading
29
29
  - `docs/architecture/index.md` for umbrella architecture status, drift requests, snapshots, and diagram links
30
- - `docs/reference-configs/agentic-development-flow.md` for gstack/Waza routing rules
30
+ - `docs/reference-configs/agentic-development-flow.md` for Forge task routing and optional host-skill enhancements
31
31
 
32
32
  ## Runtime Architecture Guardrails
33
33
 
@@ -51,19 +51,17 @@ Treat ChatGPT as the controller and Forge as its repository execution layer. Cha
51
51
  - Keep architecture drift handling split: `architecture-queue.sh` writes architecture requests/events, `workstream-sync.sh` maintains durable capability workstreams, and `context-contract-sync.sh` only updates controlled local `CLAUDE.md`/`AGENTS.md` architecture blocks.
52
52
  - Keep `assets/workflow-contract.v1.json` and `.ai/harness/workflow-contract.json` in sync.
53
53
  - Keep `CLAUDE.md` and `AGENTS.md` short; put detailed guidance in `docs/reference-configs/`.
54
- - Treat Codex auto-compact as a fallback only; use `.ai/harness/handoff/current.md` and `.ai/harness/handoff/resume.md` for long-task rollover.
54
+ - Treat Codex auto-compact as a fallback only; use `.ai/harness/session/continuation.md` and `.ai/harness/session/resume.md` for long-task rollover.
55
55
  - Treat `_ref/` as an occasional ignored external reference checkout cache, not a commit surface or daily workflow. Agents may read or refresh it for comparison; when it influences a decision, cite the source repo plus commit/tag and path in `tasks/notes/` or `docs/researches/`.
56
56
  - Treat `deploy/` as the trackable deployment and operations surface for runbooks, submission materials, release checklists, helper scripts, ordered SQL files under `deploy/sql/`, and env examples.
57
57
  - Treat `_ops/` as ignored local operations state for secrets, real env files, provider state, artifacts, logs, and scratch files; do not commit or agent-edit `_ops/*`.
58
- - Treat contract-level task execution as worktree-first: `scripts/plan-to-todo.sh --plan <approved-plan>` starts `scripts/contract-worktree.sh start --plan <approved-plan>` when policy enables it, and completed blocks finish through Waza `/check` plus `scripts/contract-worktree.sh finish`.
59
- - After Codex Plan mode, Waza `/think`, or `forge-plan` produces a decision-complete plan, capture it with `scripts/capture-plan.sh --slug <slug> --title <title>` so `plans/` becomes the file-backed source of truth; if the user has already approved implementation, capture with `--status Approved --execute` or run `scripts/plan-to-todo.sh --plan <active-plan>`.
60
- - If current repo state conflicts with the task, open an isolated `codex/<task-slug>` worktree, finish there, run Waza `/check`-style validation, then merge back to `main` without absorbing unrelated dirty changes.
61
- - Route product discovery to gstack `office-hours`, complex engineering plans to gstack `plan-eng-review`, design plans to gstack `plan-design-review`, and daily small/medium planning, bug hunts, and checks to Waza `/think`, `/hunt`, and `/check`.
62
- - Codex automation profile is runtime-referenced, not vendored: required skills are `health`, `check`, and `diagram-design` from `~/.codex/skills`.
63
- - Route knowledge sync and handoff retrieval to `gbrain`.
58
+ - Treat contract-level task execution as worktree-first when policy requires isolation: `scripts/plan-to-todo.sh --plan <approved-plan>` may start `scripts/contract-worktree.sh start --plan <approved-plan>`; finish through Forge `/review`, focused checks, and `scripts/contract-worktree.sh finish`.
59
+ - Forge task directives are the stable user-facing routing surface: `/direct`, `/plan`, `/debug`, `/review`, `/release`, and `/scale`. Do not require users or automation to remember third-party skill commands.
60
+ - After Forge `/plan`, Codex Plan mode, or an optional external planning skill produces a decision-complete plan, capture it with `scripts/capture-plan.sh --slug <slug> --title <title>` so `plans/` becomes the file-backed source of truth; if implementation is already approved, capture with `--status Approved --execute` or run `scripts/plan-to-todo.sh --plan <active-plan>`.
61
+ - If current repo state conflicts with the task, isolate the work, finish there, run Forge `/review`-style validation plus focused checks, then merge back without absorbing unrelated dirty changes.
62
+ - Waza, gstack, Mermaid, gbrain, and cross-review skills are optional host enhancements. Use them only when already installed or explicitly requested; their absence must never block Forge planning, debugging, review, or execution.
64
63
  - Register valuable repo-authored docs in `.ai/harness/brain-manifest.json` with `sync.direction=repo-to-brain`; `scripts/sync-brain-docs.sh` and the PostEdit hook mirror only those explicit entries into the default brain vault.
65
- - Treat Waza as Codex-first: `~/.codex/skills` is the Codex runtime source; `~/.agents/skills` is skills CLI staging/cache only. Update by staging upstream Waza, copying the eight managed `SKILL.md` files into Codex, and verifying with `cmp`.
66
- - Use `docs/reference-configs/external-tooling.md` and `bash scripts/check-agent-tooling.sh --host both --check-updates` for environment checks; this self-host repo vendors CodeGraph as a dev dependency while generated downstream repos keep the global MCP default unless local policy opts in.
64
+ - Use `docs/reference-configs/external-tooling.md` and `bash scripts/check-agent-tooling.sh --host both --check-updates` for optional host-tool diagnostics. Forge structural retrieval uses its bundled CodeGraph read backend; a global CodeGraph CLI/MCP is an optional developer integration, not Runtime readiness.
67
65
  - When changing `scripts/migrate-project-template.sh` or `scripts/lib/project-init-lib.sh`, verify self-migration of this repo still works.
68
66
  - Treat repo-local `.claude/settings.json` and `.codex/hooks.json` hook adapters as retired legacy config; migration may back them up locally, but they are not product deliverables.
69
67
 
package/CHANGELOG.md CHANGED
@@ -6,6 +6,25 @@ All notable public Forge changes are recorded here. Release entries are tied to
6
6
 
7
7
  No unreleased public changes are currently recorded.
8
8
 
9
+ ## 1.5.0 - 2026-08-13
10
+
11
+ ### Stable Runtime and recovery
12
+
13
+ - Graduated the single Canonical Runtime plus independent Recovery architecture to the first stable Forge release.
14
+ - Hardened whole-Runtime restart, rollback, source coherence, launcher resolution, process storage lifecycle, and recovery activation behavior.
15
+ - Isolated Work verification snapshots from unrelated concurrent files and fixed persisted check semantic identity under compiled Runtime releases.
16
+
17
+ ### ChatGPT continuity and execution performance
18
+
19
+ - Added bound ChatGPT work continuation across natural restarts with authenticated controller ownership and safer continuation activation.
20
+ - Reduced avoidable MCP/reasoning round trips, composed direct edit validation, and kept short Process Runtime commands synchronous long enough to avoid unnecessary follow-up waits.
21
+ - Removed redundant Runtime schema discovery round trips from the MCP hot path while retaining session schema fencing.
22
+
23
+ ### Product surface
24
+
25
+ - Added the React-based local Forge utility workstation and continued consolidating retired controller/campaign compatibility surfaces.
26
+ - Kept the stable ChatGPT MCP surface at 19 tools while preserving the official provider/plugin model introduced in the release candidate.
27
+
9
28
  ## 1.5.0-rc.1 - 2026-08-11
10
29
 
11
30
  ### Official plugin distribution
package/CLAUDE.md CHANGED
@@ -27,7 +27,7 @@ Treat ChatGPT as the controller and Forge as its repository execution layer. Cha
27
27
  - `.ai/harness/policy.json` for the machine-readable workflow contract
28
28
  - `.ai/context/context-map.json` for progressive context loading
29
29
  - `docs/architecture/index.md` for umbrella architecture status, drift requests, snapshots, and diagram links
30
- - `docs/reference-configs/agentic-development-flow.md` for gstack/Waza routing rules
30
+ - `docs/reference-configs/agentic-development-flow.md` for Forge task routing and optional host-skill enhancements
31
31
 
32
32
  ## Runtime Architecture Guardrails
33
33
 
@@ -51,19 +51,17 @@ Treat ChatGPT as the controller and Forge as its repository execution layer. Cha
51
51
  - Keep architecture drift handling split: `architecture-queue.sh` writes architecture requests/events, `workstream-sync.sh` maintains durable capability workstreams, and `context-contract-sync.sh` only updates controlled local `CLAUDE.md`/`AGENTS.md` architecture blocks.
52
52
  - Keep `assets/workflow-contract.v1.json` and `.ai/harness/workflow-contract.json` in sync.
53
53
  - Keep `CLAUDE.md` and `AGENTS.md` short; put detailed guidance in `docs/reference-configs/`.
54
- - Treat Codex auto-compact as a fallback only; use `.ai/harness/handoff/current.md` and `.ai/harness/handoff/resume.md` for long-task rollover.
54
+ - Treat Codex auto-compact as a fallback only; use `.ai/harness/session/continuation.md` and `.ai/harness/session/resume.md` for long-task rollover.
55
55
  - Treat `_ref/` as an occasional ignored external reference checkout cache, not a commit surface or daily workflow. Agents may read or refresh it for comparison; when it influences a decision, cite the source repo plus commit/tag and path in `tasks/notes/` or `docs/researches/`.
56
56
  - Treat `deploy/` as the trackable deployment and operations surface for runbooks, submission materials, release checklists, helper scripts, ordered SQL files under `deploy/sql/`, and env examples.
57
57
  - Treat `_ops/` as ignored local operations state for secrets, real env files, provider state, artifacts, logs, and scratch files; do not commit or agent-edit `_ops/*`.
58
- - Treat contract-level task execution as worktree-first: `scripts/plan-to-todo.sh --plan <approved-plan>` starts `scripts/contract-worktree.sh start --plan <approved-plan>` when policy enables it, and completed blocks finish through Waza `/check` plus `scripts/contract-worktree.sh finish`.
59
- - After Codex Plan mode, Waza `/think`, or `forge-plan` produces a decision-complete plan, capture it with `scripts/capture-plan.sh --slug <slug> --title <title>` so `plans/` becomes the file-backed source of truth; if the user has already approved implementation, capture with `--status Approved --execute` or run `scripts/plan-to-todo.sh --plan <active-plan>`.
60
- - If current repo state conflicts with the task, open an isolated `codex/<task-slug>` worktree, finish there, run Waza `/check`-style validation, then merge back to `main` without absorbing unrelated dirty changes.
61
- - Route product discovery to gstack `office-hours`, complex engineering plans to gstack `plan-eng-review`, design plans to gstack `plan-design-review`, and daily small/medium planning, bug hunts, and checks to Waza `/think`, `/hunt`, and `/check`.
62
- - Codex automation profile is runtime-referenced, not vendored: required skills are `health`, `check`, and `diagram-design` from `~/.codex/skills`.
63
- - Route knowledge sync and handoff retrieval to `gbrain`.
58
+ - Treat contract-level task execution as worktree-first when policy requires isolation: `scripts/plan-to-todo.sh --plan <approved-plan>` may start `scripts/contract-worktree.sh start --plan <approved-plan>`; finish through Forge `/review`, focused checks, and `scripts/contract-worktree.sh finish`.
59
+ - Forge task directives are the stable user-facing routing surface: `/direct`, `/plan`, `/debug`, `/review`, `/release`, and `/scale`. Do not require users or automation to remember third-party skill commands.
60
+ - After Forge `/plan`, Codex Plan mode, or an optional external planning skill produces a decision-complete plan, capture it with `scripts/capture-plan.sh --slug <slug> --title <title>` so `plans/` becomes the file-backed source of truth; if implementation is already approved, capture with `--status Approved --execute` or run `scripts/plan-to-todo.sh --plan <active-plan>`.
61
+ - If current repo state conflicts with the task, isolate the work, finish there, run Forge `/review`-style validation plus focused checks, then merge back without absorbing unrelated dirty changes.
62
+ - Waza, gstack, Mermaid, gbrain, and cross-review skills are optional host enhancements. Use them only when already installed or explicitly requested; their absence must never block Forge planning, debugging, review, or execution.
64
63
  - Register valuable repo-authored docs in `.ai/harness/brain-manifest.json` with `sync.direction=repo-to-brain`; `scripts/sync-brain-docs.sh` and the PostEdit hook mirror only those explicit entries into the default brain vault.
65
- - Treat Waza as Codex-first: `~/.codex/skills` is the Codex runtime source; `~/.agents/skills` is skills CLI staging/cache only. Update by staging upstream Waza, copying the eight managed `SKILL.md` files into Codex, and verifying with `cmp`.
66
- - Use `docs/reference-configs/external-tooling.md` and `bash scripts/check-agent-tooling.sh --host both --check-updates` for environment checks; this self-host repo vendors CodeGraph as a dev dependency while generated downstream repos keep the global MCP default unless local policy opts in.
64
+ - Use `docs/reference-configs/external-tooling.md` and `bash scripts/check-agent-tooling.sh --host both --check-updates` for optional host-tool diagnostics. Forge structural retrieval uses its bundled CodeGraph read backend; a global CodeGraph CLI/MCP is an optional developer integration, not Runtime readiness.
67
65
  - When changing `scripts/migrate-project-template.sh` or `scripts/lib/project-init-lib.sh`, verify self-migration of this repo still works.
68
66
  - Treat repo-local `.claude/settings.json` and `.codex/hooks.json` hook adapters as retired legacy config; migration may back them up locally, but they are not product deliverables.
69
67
 
package/DESIGN.md ADDED
@@ -0,0 +1,278 @@
1
+ ---
2
+ version: "2.0"
3
+ name: Forge Utility Workstation
4
+ description: A precise light-first desktop utility for configuring and inspecting Forge behind ChatGPT, combining Carbon structure with Linear restraint.
5
+ colors:
6
+ canvas: "#F5F5F3"
7
+ surface: "#FFFFFF"
8
+ surface-subtle: "#F0F0EE"
9
+ surface-strong: "#E8E8E5"
10
+ rail: "#19191B"
11
+ rail-hover: "#242427"
12
+ rail-selected: "#303037"
13
+ text: "#1D1D20"
14
+ text-secondary: "#646469"
15
+ text-tertiary: "#909096"
16
+ text-inverse: "#F7F7F8"
17
+ border: "#E1E1DE"
18
+ border-strong: "#CECECA"
19
+ primary: "#584EE3"
20
+ accent: "#5E54E8"
21
+ accent-hover: "#5046D9"
22
+ accent-subtle: "#EFEEFF"
23
+ success: "#237A57"
24
+ success-subtle: "#EAF5EF"
25
+ warning: "#946200"
26
+ warning-subtle: "#FFF4D8"
27
+ danger: "#B44444"
28
+ danger-subtle: "#FBECEC"
29
+ info: "#3567B7"
30
+ focus: "#786FF7"
31
+ typography:
32
+ page-title:
33
+ fontFamily: "Inter, -apple-system, BlinkMacSystemFont, SF Pro Display, PingFang SC, sans-serif"
34
+ fontSize: 24px
35
+ fontWeight: 650
36
+ lineHeight: 1.2
37
+ letterSpacing: -0.02em
38
+ section-title:
39
+ fontFamily: "Inter, -apple-system, BlinkMacSystemFont, SF Pro Text, PingFang SC, sans-serif"
40
+ fontSize: 15px
41
+ fontWeight: 620
42
+ lineHeight: 1.35
43
+ body:
44
+ fontFamily: "Inter, -apple-system, BlinkMacSystemFont, SF Pro Text, PingFang SC, sans-serif"
45
+ fontSize: 13px
46
+ fontWeight: 400
47
+ lineHeight: 1.5
48
+ body-strong:
49
+ fontFamily: "Inter, -apple-system, BlinkMacSystemFont, SF Pro Text, PingFang SC, sans-serif"
50
+ fontSize: 13px
51
+ fontWeight: 600
52
+ lineHeight: 1.45
53
+ meta:
54
+ fontFamily: "Inter, -apple-system, BlinkMacSystemFont, SF Pro Text, PingFang SC, sans-serif"
55
+ fontSize: 11px
56
+ fontWeight: 500
57
+ lineHeight: 1.35
58
+ rounded:
59
+ xs: 4px
60
+ sm: 6px
61
+ md: 8px
62
+ lg: 10px
63
+ full: 999px
64
+ spacing:
65
+ 1: 4px
66
+ 2: 8px
67
+ 3: 12px
68
+ 4: 16px
69
+ 5: 20px
70
+ 6: 24px
71
+ 8: 32px
72
+ 10: 40px
73
+ 12: 48px
74
+ rail: 224px
75
+ content-max: 1280px
76
+ components:
77
+ app-canvas:
78
+ backgroundColor: "{colors.canvas}"
79
+ textColor: "{colors.text}"
80
+ sidebar:
81
+ backgroundColor: "{colors.rail}"
82
+ textColor: "{colors.text-inverse}"
83
+ sidebar-hover:
84
+ backgroundColor: "{colors.rail-hover}"
85
+ textColor: "{colors.text-inverse}"
86
+ sidebar-selected:
87
+ backgroundColor: "{colors.rail-selected}"
88
+ textColor: "{colors.text-inverse}"
89
+ secondary-surface:
90
+ backgroundColor: "{colors.surface-subtle}"
91
+ textColor: "{colors.text-secondary}"
92
+ segmented-track:
93
+ backgroundColor: "{colors.surface-strong}"
94
+ textColor: "{colors.text-secondary}"
95
+ strong-divider:
96
+ backgroundColor: "{colors.border-strong}"
97
+ height: "1px"
98
+ accent-selection:
99
+ backgroundColor: "{colors.accent}"
100
+ textColor: "#FFFFFF"
101
+ rounded: "{rounded.sm}"
102
+ accent-subtle-surface:
103
+ backgroundColor: "{colors.accent-subtle}"
104
+ textColor: "{colors.text}"
105
+ rounded: "{rounded.sm}"
106
+ accent-hover-state:
107
+ backgroundColor: "{colors.accent-hover}"
108
+ textColor: "#FFFFFF"
109
+ tertiary-text:
110
+ textColor: "{colors.text-tertiary}"
111
+ success-notice:
112
+ backgroundColor: "{colors.success-subtle}"
113
+ textColor: "{colors.success}"
114
+ primary-button:
115
+ backgroundColor: "{colors.primary}"
116
+ textColor: "#FFFFFF"
117
+ rounded: "{rounded.sm}"
118
+ padding: "{spacing.2}"
119
+ secondary-button:
120
+ backgroundColor: "{colors.surface}"
121
+ textColor: "{colors.text}"
122
+ rounded: "{rounded.sm}"
123
+ padding: "{spacing.2}"
124
+ panel:
125
+ backgroundColor: "{colors.surface}"
126
+ textColor: "{colors.text}"
127
+ rounded: "{rounded.md}"
128
+ padding: "{spacing.4}"
129
+ selected-row:
130
+ backgroundColor: "{colors.accent-subtle}"
131
+ textColor: "{colors.text}"
132
+ rounded: "{rounded.sm}"
133
+ padding: "{spacing.3}"
134
+ divider:
135
+ backgroundColor: "{colors.border}"
136
+ height: "1px"
137
+ status-success:
138
+ backgroundColor: "{colors.success}"
139
+ rounded: "{rounded.full}"
140
+ size: "7px"
141
+ status-warning:
142
+ backgroundColor: "{colors.warning}"
143
+ rounded: "{rounded.full}"
144
+ size: "7px"
145
+ status-danger:
146
+ backgroundColor: "{colors.danger}"
147
+ rounded: "{rounded.full}"
148
+ size: "7px"
149
+ status-info:
150
+ backgroundColor: "{colors.info}"
151
+ rounded: "{rounded.full}"
152
+ size: "7px"
153
+ notice-warning:
154
+ backgroundColor: "{colors.warning-subtle}"
155
+ textColor: "{colors.text}"
156
+ rounded: "{rounded.md}"
157
+ padding: "{spacing.3}"
158
+ notice-danger:
159
+ backgroundColor: "{colors.danger-subtle}"
160
+ textColor: "{colors.text}"
161
+ rounded: "{rounded.md}"
162
+ padding: "{spacing.3}"
163
+ focus-ring:
164
+ backgroundColor: "{colors.focus}"
165
+ rounded: "{rounded.sm}"
166
+ size: "2px"
167
+ ---
168
+
169
+ # Forge Utility Workstation
170
+
171
+ ## Overview
172
+ Forge is operated primarily through ChatGPT. The web UI is the durable **configuration and inspection surface behind ChatGPT**: not a second chat interface, not Jira, and not an agent execution wall. It answers what is configured, what Forge can do, which automations exist, which repositories are registered, and what genuinely needs human attention.
173
+
174
+ The visual direction is **Carbon × Linear Utility Workstation**. Carbon contributes structural rigor, explicit status semantics and dense information grammar. Linear contributes restrained surfaces, hairline hierarchy, sparse accent usage and quiet technical polish. The Investment Decision System is a proven local reference for dark-rail/light-canvas separation, semantic tokens and page grammar, but Forge keeps its own identity.
175
+
176
+ ## Product principles
177
+ ### Configuration before telemetry
178
+ The console primarily shows what Forge **is configured to do**. Execution details, verbose results, logs and conversations remain in ChatGPT or System diagnostics.
179
+
180
+ ### Density without card spam
181
+ Use aligned rows, tables, split panes and whitespace. A card must answer one coherent question; never create one rounded rectangle per fact. Avoid panel-inside-panel nesting.
182
+
183
+ ### Truthful state only
184
+ Never render guessed percentage progress. States are categorical and backed by controller facts: enabled, paused, ready, attention, active, waiting, completed, unavailable.
185
+
186
+ ### Progressive technical depth
187
+ Daily pages use product language. Runtime ids, raw actions, schemas, leases and diagnostics belong in detail panes or System.
188
+
189
+ ### Backend remains authoritative
190
+ React formats and filters facts from Local Bridge APIs. It does not reimplement scheduling, plugin readiness, repository identity or execution policy.
191
+
192
+ ## Token architecture
193
+ Primitive values live in `frontend/src/design/tokens.css`. Components consume semantic variables such as canvas, surface, text, border, accent and semantic status. Page components must not introduce ad-hoc hex colors, radii or shadows.
194
+
195
+ ## Color system
196
+ The application is light-first: warm-neutral `{colors.canvas}`, white `{colors.surface}`, near-black `{colors.rail}` navigation and near-black `{colors.text}` ink. `{colors.accent}` is the single Forge interaction accent and is used for selection, focus and primary action—not decoration.
197
+
198
+ Status color is local and compact. Critical state is always paired with text. Large red/green background blocks are prohibited.
199
+
200
+ ## Typography
201
+ Use `{typography.page-title}` for page titles, `{typography.section-title}` for section headings, `{typography.body}` for dense product text and `{typography.meta}` for timestamps and identifiers. Long objectives truncate in scan lists and expand in the detail pane.
202
+
203
+ ## Layout
204
+ Desktop uses a persistent `{spacing.rail}` dark rail and an open workspace capped near `{spacing.content-max}`. The main canvas is not wrapped in one giant card. Top-level sections are separated by rhythm and hairline dividers.
205
+
206
+ Below 980px, split panes collapse into list then detail blocks. Below 760px the rail becomes compact horizontal navigation while preserving hierarchy.
207
+
208
+ ## Elevation
209
+ Ordinary content uses flat surfaces and 1px hairlines. Shadows are reserved for floating overlays. Use surface ladder and spacing to communicate depth.
210
+
211
+ ## Shapes
212
+ Normal controls use `{rounded.sm}`; panels use `{rounded.md}` only when an enclosure is semantically useful. Pills are reserved for segmented filters and compact categories. Avoid oversized 16–24px rounding.
213
+
214
+ ## Application shell
215
+ ### Sidebar
216
+ Dark, persistent and quiet. It contains Forge identity, grouped navigation, and a small footer communicating that ChatGPT is the primary work surface. Selection uses a restrained accent indicator and darker surface, not a bright full-width pill.
217
+
218
+ ### Command bar
219
+ Each route owns a compact command bar: eyebrow, title, one-line purpose, refreshed time and route actions. `Open ChatGPT` remains globally available but visually secondary.
220
+
221
+ ## Core component grammar
222
+ ### Metric strip
223
+ Overview may show at most four coarse operational facts in one horizontal strip. Metrics share one surface and divider rhythm; they are not separate cards.
224
+
225
+ ### Data list
226
+ Primary scanning surface for Work, Capabilities and Repositories. Rows use hairline separators and bounded one-line context.
227
+
228
+ ### Data table
229
+ Primary surface for Automations. Columns align schedule, source, status, last and next facts. Selection drives a detail pane.
230
+
231
+ ### Detail pane
232
+ A single contextual pane explains the selected object and owns actions/configuration. It replaces nested cards and repeated full descriptions.
233
+
234
+ ### Status text
235
+ Use a 7px dot plus short text. Filled badges are exceptional.
236
+
237
+ ## Page grammar
238
+ ### Overview
239
+ Command bar, one four-column metric strip, a deduplicated attention list capped to actionable groups, and a compact persistent-goals summary. No prompt composer, run timeline or grid of equal cards.
240
+
241
+ ### Automations
242
+ Use a configuration-first table with Name, Schedule, Scope, Delivery, Status, Last and Next; filters Enabled / Paused / Attention / All; selected detail pane with exact source and Run/Pause/Resume. Never duplicate report body.
243
+
244
+ ### Work
245
+ Use Active / Waiting / Completed / All filters, a dense goal list and selected detail pane. No percentage, PlanStep or Run timeline.
246
+
247
+ ### Capabilities
248
+ Use category filters Extensions / Services / Execution / Models / All, compact catalog rows and a detail pane with provider, health, lifecycle, capabilities and warnings. Raw MCP actions are Advanced only.
249
+
250
+ ### Repositories
251
+ Use a searchable compact registry list/table and selected detail pane. Adding a repository is an inline form, not another dashboard card.
252
+
253
+ ### Settings
254
+ Use a narrow grouped settings column. Rows own their controls. Credentials and routing protocol details live under Advanced.
255
+
256
+ ### System
257
+ Maintenance only: posture summary, compact definition tables, and progressively disclosed diagnostics. Visually separate it from daily work.
258
+
259
+ ## Interaction & motion
260
+ Transitions are 120–160ms and limited to background, border, opacity and pane movement. No bounce, scale-on-hover or decorative animation. Focus-visible states are mandatory. Destructive actions retain backend authorization.
261
+
262
+ ## Do / Don't
263
+ ### Do
264
+ - prefer one strong hierarchy per page;
265
+ - use open canvas and hairlines before adding a container;
266
+ - truncate scan-list copy and reveal depth contextually;
267
+ - keep status next to the fact it qualifies;
268
+ - keep ChatGPT as primary work and notification surface;
269
+ - use shared tokens and components for every route.
270
+
271
+ ### Don't
272
+ - render a dashboard of equal rounded cards;
273
+ - expose internal execution ids as primary labels;
274
+ - fabricate progress or infer completion percentage;
275
+ - repeat full objectives in every row;
276
+ - use gradients, glows or “AI futuristic” decoration;
277
+ - use more than one primary accent family;
278
+ - duplicate ChatGPT result feeds inside the utility console.