@moretea-labs/forge 1.5.1 → 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.
- package/AGENTS.md +2 -0
- package/CHANGELOG.md +46 -0
- package/CLAUDE.md +2 -0
- package/DESIGN.md +7 -2
- package/README.md +4 -4
- package/README.zh-CN.md +2 -2
- package/SKILL.md +2 -2
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/agents/openai.yaml +1 -1
- package/assets/hooks/hook-input.sh +11 -8
- package/assets/hooks/lib/session-state.sh +10 -7
- package/assets/hooks/lib/workflow-state.sh +13 -177
- package/assets/hooks/post-tool-observer.sh +8 -2
- package/assets/hooks/pre-edit-guard.sh +8 -39
- package/assets/hooks/prompt-guard.sh +7 -83
- package/assets/hooks/session-start-context.sh +56 -1
- package/assets/partials/05-workflow.partial.md +1 -1
- package/assets/partials-agents/03-orchestration.partial.md +1 -1
- package/assets/plugin-registry.v1.json +54 -3
- package/assets/reference-configs/document-generation.md +1 -1
- package/assets/reference-configs/harness-overview.md +1 -1
- package/assets/reference-configs/hook-operations.md +1 -1
- package/assets/reference-configs/sprint-contracts.md +3 -3
- package/assets/skill-version.json +2 -2
- package/assets/templates/contract.template.md +2 -7
- package/assets/templates/helpers/capture-plan.sh +2 -2
- package/assets/templates/helpers/check-task-workflow.sh +4 -4
- package/assets/templates/helpers/contract-worktree.sh +1 -21
- package/assets/templates/helpers/ensure-task-workflow.sh +13 -38
- package/assets/templates/helpers/migrate-project-template.sh +22 -45
- package/assets/templates/helpers/new-plan.sh +1 -1
- package/assets/templates/helpers/plan-to-todo.sh +12 -37
- package/assets/templates/helpers/ship-worktrees.sh +2 -29
- package/assets/templates/helpers/sprint-backlog.sh +6 -6
- package/assets/templates/helpers/verify-contract.sh +1 -111
- package/assets/templates/helpers/verify-sprint.sh +3 -180
- package/assets/templates/plan.template.md +1 -1
- package/assets/templates/review.template.md +9 -34
- package/assets/workflow-contract.v1.json +10 -19
- package/docs/README.md +10 -10
- package/docs/architecture/CURRENT.md +170 -0
- package/docs/architecture/EVOLUTION.md +42 -0
- package/docs/architecture/current/README.md +4 -156
- package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
- package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
- package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
- package/docs/architecture/history/README.md +7 -0
- package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
- package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
- package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
- package/docs/architecture/history.md +3 -34
- package/docs/architecture/index.md +15 -98
- package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
- package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
- package/docs/architecture/versions/1.6.md +38 -0
- package/docs/architecture/versions/1.7.md +41 -0
- package/docs/forge-chatgpt-browser-engine.md +2 -2
- package/docs/forge-chatgpt-mcp-setup.md +4 -28
- package/docs/forge-chatgpt-supervised-automation.md +3 -3
- package/docs/forge-github-issue-launcher.md +1 -1
- package/docs/forge-runtime-self-healing-loop.md +1 -1
- package/docs/operations/controller-browser-plugin.md +38 -22
- package/docs/operations/controller-performance-and-502.md +124 -0
- package/docs/operations/controller-reliability-runbook.md +1 -1
- package/docs/operations/features.md +3 -3
- package/docs/operations/github-repository.md +1 -1
- package/docs/operations/homebrew.md +2 -2
- package/docs/operations/mcp-tool-exposure.md +5 -3
- package/docs/tutorials/01-install-and-start.md +1 -1
- package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
- package/docs/wiki/Architecture.md +6 -6
- package/docs/wiki/Implementation.md +2 -2
- package/docs/wiki/Installation.md +1 -1
- package/docs/wiki/Integrations.md +2 -2
- package/docs/wiki/Quick-Start.md +1 -1
- package/docs/wiki/Work-Lifecycle.md +1 -1
- package/package.json +29 -10
- package/scripts/activate-source-baseline.ts +17 -13
- package/scripts/benchmark-background-check-overlap.ts +228 -0
- package/scripts/benchmark-mcp-host.sh +117 -0
- package/scripts/benchmark-mcp-transport.ts +170 -0
- package/scripts/benchmark-quality-harness.ts +146 -0
- package/scripts/benchmark-route-session-concurrency.ts +207 -6
- package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
- package/scripts/benchmark-typescript-navigation.ts +186 -0
- package/scripts/benchmark-work-efficiency.ts +334 -0
- package/scripts/capture-plan.sh +3 -3
- package/scripts/check-agent-tooling.sh +8 -35
- package/scripts/check-architecture-sync.sh +17 -86
- package/scripts/check-mcp-compatibility.ts +14 -0
- package/scripts/check-public-docs.sh +14 -1
- package/scripts/check-runtime-architecture.mjs +107 -64
- package/scripts/check-stable-baseline.ts +92 -0
- package/scripts/check-task-workflow.sh +4 -4
- package/scripts/contract-worktree.sh +1 -21
- package/scripts/ensure-task-workflow.sh +22 -55
- package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
- package/scripts/install-standalone-recovery.ts +24 -0
- package/scripts/lib/project-init-lib.sh +15 -44
- package/scripts/migrate-chatgpt-automation-schedules.ts +64 -0
- package/scripts/migrate-project-template.sh +23 -1179
- package/scripts/new-plan.sh +1 -1
- package/scripts/plan-to-todo.sh +11 -36
- package/scripts/run-governed-gate.ts +2 -1
- package/scripts/ship-worktrees.sh +2 -29
- package/scripts/smoke-ios-physical-device.ts +4 -2
- package/scripts/smoke-runtime-recovery.ts +1 -35
- package/scripts/smoke-schedule-engine.ts +1 -20
- package/scripts/sprint-backlog.sh +1 -1
- package/scripts/verify-contract.sh +1 -111
- package/scripts/verify-forge-runtime.sh +0 -1
- package/scripts/verify-sprint.sh +3 -180
- package/scripts/workflow-contract.ts +1 -5
- package/src/cli/commands/chatgpt.ts +31 -2
- package/src/cli/commands/init-hook.ts +3 -3
- package/src/cli/commands/mcp.ts +9 -5
- package/src/cli/commands/plugin.ts +37 -10
- package/src/cli/commands/recovery.ts +25 -3
- package/src/cli/commands/runtime.ts +55 -3
- package/src/cli/commands/security.ts +12 -1
- package/src/cli/commands/setup-profile.ts +31 -21
- package/src/cli/controller/check-runner.ts +106 -3
- package/src/cli/controller/composite-result.ts +1 -1
- package/src/cli/controller/context/focus.ts +51 -0
- package/src/cli/controller/context/instruction-context.ts +114 -0
- package/src/cli/controller/context/known-paths.ts +76 -0
- package/src/cli/controller/context/query-planning.ts +110 -0
- package/src/cli/controller/context/rule-resolution.ts +532 -0
- package/src/cli/controller/context/source-materializer.ts +278 -0
- package/src/cli/controller/context/structural.ts +16 -0
- package/src/cli/controller/context/types.ts +286 -0
- package/src/cli/controller/context-pack.ts +898 -430
- package/src/cli/controller/launch-agents.ts +77 -2
- package/src/cli/controller/operational-plan.ts +2 -2
- package/src/cli/controller/work-mode.ts +6 -4
- package/src/cli/editing/edit-session.ts +60 -7
- package/src/cli/github/github.ts +133 -0
- package/src/cli/hook/prompt-guard-decision.ts +17 -18
- package/src/cli/hook/prompt-intents.ts +1 -1
- package/src/cli/installer/managed-entries.ts +15 -1
- package/src/cli/local-bridge/console-automations.ts +225 -67
- package/src/cli/local-bridge/console-view-models.ts +3 -35
- package/src/cli/local-bridge/facade-api.ts +2 -217
- package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
- package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +153 -3
- package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
- package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +183 -3
- package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +1 -1
- package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +4 -3
- package/src/cli/local-bridge/frontend/src/lib/api.ts +18 -11
- package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
- package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +1 -1
- package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +4 -3
- package/src/cli/local-bridge/frontend/src/styles.css +27 -11
- package/src/cli/local-bridge/frontend/src/types.ts +8 -7
- package/src/cli/local-bridge/job-store.ts +1 -490
- package/src/cli/local-bridge/server.ts +29 -532
- package/src/cli/local-bridge/ui-dist/app.css +1 -1
- package/src/cli/local-bridge/ui-dist/app.js +5101 -4967
- package/src/cli/mcp/auth.ts +5 -5
- package/src/cli/mcp/instructions.ts +3 -2
- package/src/cli/mcp/legacy-tool-service.ts +0 -189
- package/src/cli/mcp/multi-repository.ts +16 -5
- package/src/cli/mcp/oauth.ts +175 -26
- package/src/cli/mcp/paths.ts +8 -2
- package/src/cli/mcp/repository-tools.ts +356 -101
- package/src/cli/mcp/server.ts +625 -54
- package/src/cli/mcp/tool-capability-cache.ts +1 -1
- package/src/cli/mcp/toolset-selection.ts +1 -1
- package/src/cli/mcp/toolset.ts +42 -5
- package/src/cli/mcp/transports/http.ts +125 -15
- package/src/cli/mcp/transports/session-registry.ts +67 -5
- package/src/cli/mcp/types.ts +3 -3
- package/src/cli/repositories/command-classifier.ts +209 -14
- package/src/cli/repositories/command-executor.ts +55 -521
- package/src/cli/repositories/command-process.ts +108 -0
- package/src/cli/repositories/command-scope.ts +99 -41
- package/src/cli/repositories/controller-home.ts +7 -8
- package/src/cli/repositories/git-command-executor.ts +2 -0
- package/src/cli/repositories/locks.ts +53 -16
- package/src/cli/repositories/repository-snapshot.ts +121 -0
- package/src/cli/repositories/safe-patch.ts +6 -4
- package/src/cli/repositories/selected-path-actions.ts +17 -9
- package/src/cli/repositories/structured-git.ts +110 -10
- package/src/cli/repository/inspector.ts +565 -62
- package/src/cli/repository/session-cache.ts +58 -17
- package/src/cli/v81-entry.ts +1 -4
- package/src/effects/fs-transaction.ts +85 -17
- package/src/runtime/context/codegraph-read-provider.ts +233 -2
- package/src/runtime/context/codegraph-sidecar.cjs +74 -40
- package/src/runtime/context/generic-lsp-provider.ts +355 -0
- package/src/runtime/context/lsp-client.ts +283 -0
- package/src/runtime/context/semantic-navigation.ts +275 -0
- package/src/runtime/context/swift-navigation.ts +565 -0
- package/src/runtime/context/typescript-navigation.ts +226 -0
- package/src/runtime/control-plane/dispatch-priority.ts +28 -0
- package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +196 -2
- package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
- package/src/runtime/control-plane/execution/execution-identity.ts +65 -14
- package/src/runtime/control-plane/execution/session-store.ts +18 -0
- package/src/runtime/control-plane/execution/validation.ts +15 -2
- package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
- package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
- package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
- package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
- package/src/runtime/control-plane/execution/work-task-receipt.ts +54 -11
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +175 -8
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +28 -21
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +87 -9
- package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
- package/src/runtime/control-plane/facade/controller-round-relay.ts +991 -0
- package/src/runtime/control-plane/facade/controller-session-store.ts +144 -14
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +9 -2
- package/src/runtime/control-plane/facade/goal-workloop.ts +885 -105
- package/src/runtime/control-plane/facade/index.ts +1 -0
- package/src/runtime/control-plane/facade/plan-contract-store.ts +211 -26
- package/src/runtime/control-plane/facade/requirement-board.ts +24 -8
- package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
- package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
- package/src/runtime/control-plane/facade/types.ts +55 -11
- package/src/runtime/control-plane/facade/work-contract-store.ts +204 -73
- package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
- package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
- package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
- package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
- package/src/runtime/control-plane/global-scheduler/maintenance.ts +145 -0
- package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
- package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
- package/src/runtime/control-plane/global-scheduler/scheduler.ts +273 -542
- package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
- package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
- package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
- package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
- package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
- package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
- package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
- package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
- package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
- package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +50 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +642 -51
- package/src/runtime/control-plane/launcher/launch-reservation-store.ts +40 -0
- package/src/runtime/control-plane/launcher/thin-launcher.ts +194 -10
- package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
- package/src/runtime/control-plane/persistence/requirement-store.ts +15 -11
- package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
- package/src/runtime/control-plane/release-retention.ts +62 -2
- package/src/runtime/control-plane/routing/route-policy.ts +7 -16
- package/src/runtime/control-plane/runtime-status-client.ts +0 -2
- package/src/runtime/diagnostics/mcp-timing.ts +19 -0
- package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
- package/src/runtime/diagnostics/performance.ts +24 -1
- package/src/runtime/evidence/event-ledger.ts +1 -1
- package/src/runtime/execution/jobs/store.ts +58 -4
- package/src/runtime/execution/jobs/types.ts +1 -1
- package/src/runtime/execution/managed-workspace.ts +203 -1
- package/src/runtime/execution/process-runtime/check-facade.ts +52 -14
- package/src/runtime/execution/process-runtime/check-result.ts +63 -2
- package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
- package/src/runtime/execution/process-runtime/command-facade.ts +346 -40
- package/src/runtime/execution/process-runtime/gc.ts +98 -12
- package/src/runtime/execution/process-runtime/lightweight-managed.ts +1184 -0
- package/src/runtime/execution/process-runtime/persisted-check.ts +57 -6
- package/src/runtime/execution/process-runtime/resource-claims.ts +97 -8
- package/src/runtime/execution/process-runtime/runtime.ts +59 -4
- package/src/runtime/execution/process-runtime/store.ts +7 -0
- package/src/runtime/execution/process-runtime/types.ts +2 -0
- package/src/runtime/execution/thin-harness/async-process.ts +12 -2
- package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
- package/src/runtime/execution/workers/executor.ts +0 -48
- package/src/runtime/gateway/mcp/execution-tools.ts +1219 -126
- package/src/runtime/gateway/mcp/process-tools.ts +83 -37
- package/src/runtime/gateway/mcp/router.ts +185 -83
- package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +546 -0
- package/src/runtime/gateway/mcp/runtime-tools.ts +2555 -1616
- package/src/runtime/model-clients/deepseek-adapter.ts +0 -32
- package/src/runtime/plugins/app-store-connect-adapter.ts +123 -19
- package/src/runtime/plugins/browser-adapter.ts +2925 -318
- package/src/runtime/plugins/browser-automation-service.ts +10 -0
- package/src/runtime/plugins/browser-handoff-host.ts +6 -31
- package/src/runtime/plugins/browser-handoff.ts +92 -5
- package/src/runtime/plugins/browser-macos-bridge.ts +586 -45
- package/src/runtime/plugins/browser-node-bridge.ts +6 -34
- package/src/runtime/plugins/browser-provider-registry.ts +109 -0
- package/src/runtime/plugins/browser-runtime-contract.ts +152 -0
- package/src/runtime/plugins/browser-runtime.ts +183 -0
- package/src/runtime/plugins/browser-session-authority.ts +332 -0
- package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
- package/src/runtime/plugins/desktop-operator-registration.ts +15 -12
- package/src/runtime/plugins/external-adapter.ts +324 -3
- package/src/runtime/plugins/external-registration.ts +84 -5
- package/src/runtime/plugins/external-unix-socket.ts +7 -1
- package/src/runtime/plugins/first-party-registry.ts +4 -2
- package/src/runtime/plugins/github-adapter.ts +125 -0
- package/src/runtime/plugins/gmail-adapter.ts +28 -2
- package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
- package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
- package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
- package/src/runtime/plugins/ios-adapter.ts +106 -16
- package/src/runtime/plugins/ios-agent-device.ts +234 -64
- package/src/runtime/plugins/ios-physical-device.ts +1143 -392
- package/src/runtime/plugins/lightweight-action.ts +153 -0
- package/src/runtime/plugins/local-system-adapter.ts +125 -8
- package/src/runtime/plugins/macos-capability-broker.ts +55 -9
- package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
- package/src/runtime/plugins/plugin-management-adapter.ts +181 -0
- package/src/runtime/plugins/resend-adapter.ts +1 -1
- package/src/runtime/plugins/store.ts +366 -24
- package/src/runtime/plugins/types.ts +39 -2
- package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
- package/src/runtime/projections/git-status-sampler.ts +16 -16
- package/src/runtime/projections/materialized-view.ts +28 -10
- package/src/runtime/recovery/actions.ts +0 -10
- package/src/runtime/recovery/classifier.ts +0 -9
- package/src/runtime/recovery/maintenance-executor.ts +415 -18
- package/src/runtime/recovery/probe.ts +0 -1
- package/src/runtime/recovery/types.ts +0 -1
- package/src/runtime/root/mcp-transport.ts +180 -10
- package/src/runtime/root/package-connector-service.ts +186 -8
- package/src/runtime/root/package-runtime-release.ts +143 -17
- package/src/runtime/root/package-runtime-service.ts +430 -22
- package/src/runtime/root/release-manifest.ts +7 -2
- package/src/runtime/root/release-materialize.ts +162 -19
- package/src/runtime/root/release-store.ts +48 -11
- package/src/runtime/root/runtime.ts +23 -5
- package/src/runtime/root/service.ts +100 -27
- package/src/runtime/root/types.ts +2 -0
- package/src/runtime/safe-tooling/index.ts +0 -1
- package/src/runtime/safe-tooling/ios-development.ts +321 -63
- package/src/runtime/safe-tooling/types.ts +0 -30
- package/src/runtime/shared/trusted-executable.ts +62 -0
- package/src/runtime/shared/trusted-node-executable.ts +48 -0
- package/src/runtime/standalone-recovery/core.ts +702 -94
- package/src/runtime/standalone-recovery/entry.ts +99 -23
- package/src/runtime/standalone-recovery/installer.ts +19 -3
- package/src/runtime/standalone-recovery/service-labels.ts +2 -0
- package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
- package/src/runtime/workflow/schedules/browser-probe.ts +258 -0
- package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +40 -0
- package/src/runtime/workflow/schedules/engine.ts +509 -80
- package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
- package/src/runtime/workflow/schedules/settlement.ts +48 -4
- package/src/runtime/workflow/schedules/store.ts +131 -10
- package/src/runtime/workflow/schedules/types.ts +6 -3
- package/src/runtime/workflow/schedules/work-continuation.ts +120 -34
- package/src/testing/test-governance.ts +8 -40
- package/assets/reference-configs/heartbeat-triage.md +0 -57
- package/assets/templates/helpers/harness-trace-grade.sh +0 -150
- package/assets/templates/helpers/heartbeat-triage.sh +0 -361
- package/assets/templates/helpers/maintenance-triage.sh +0 -167
- package/bin/forge-desktop-helper.mjs +0 -204
- package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
- package/docs/architecture/current/architecture-invariants.md +0 -331
- package/docs/architecture/current/automation-and-schedule-engine.md +0 -453
- package/docs/architecture/current/codegraph-context-provider.md +0 -226
- package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
- package/docs/architecture/current/controller-repository-decoupling.md +0 -148
- package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -354
- package/docs/architecture/current/entity-model.md +0 -592
- package/docs/architecture/current/external-plugin-governance.md +0 -396
- package/docs/architecture/current/failure-recovery.md +0 -447
- package/docs/architecture/current/governance.md +0 -213
- package/docs/architecture/current/human-interaction-plane.md +0 -87
- package/docs/architecture/current/implementation-status.md +0 -128
- package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
- package/docs/architecture/current/legacy-governance.md +0 -58
- package/docs/architecture/current/local-workspace-target-grants.md +0 -70
- package/docs/architecture/current/migration-roadmap.md +0 -105
- package/docs/architecture/current/multi-repository-execution.md +0 -371
- package/docs/architecture/current/operations-runbook.md +0 -45
- package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
- package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
- package/docs/architecture/current/repository-access-modes.md +0 -102
- package/docs/architecture/current/route-policy.md +0 -15
- package/docs/architecture/current/route-session-concurrency.md +0 -85
- package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
- package/docs/architecture/current/runtime-directory-map.md +0 -49
- package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
- package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
- package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
- package/docs/architecture/current/system-overview.md +0 -144
- package/docs/architecture/current/target-requirements-traceability.md +0 -202
- package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
- package/docs/architecture/current/thin-harness-v1.md +0 -311
- package/docs/architecture/current/verification-and-release-gates.md +0 -391
- package/docs/forge-autonomous-goal-loop.md +0 -9
- package/docs/forge-provider-configuration.md +0 -7
- package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -83
- package/docs/operations/controller-desktop-plugin.md +0 -112
- package/docs/operations/gmail-assistant-routines.md +0 -186
- package/docs/operations/personal-assistant-operator-guide.md +0 -61
- package/docs/operations/provider-configuration.md +0 -31
- package/scripts/harness-trace-grade.sh +0 -150
- package/scripts/heartbeat-triage.sh +0 -361
- package/scripts/maintenance-triage.sh +0 -167
- package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
- package/src/cli/repositories/goal-registry.ts +0 -239
- package/src/runtime/assistant/action-proposals.ts +0 -279
- package/src/runtime/assistant/intent.ts +0 -395
- package/src/runtime/assistant/model-provider.ts +0 -460
- package/src/runtime/assistant/openapi.ts +0 -223
- package/src/runtime/assistant/policy.ts +0 -89
- package/src/runtime/assistant/readiness.ts +0 -258
- package/src/runtime/assistant/routine-runtime.ts +0 -477
- package/src/runtime/assistant/schedule-binding.ts +0 -171
- package/src/runtime/assistant/standing-grants.ts +0 -375
- package/src/runtime/assistant/store.ts +0 -243
- package/src/runtime/assistant/types.ts +0 -135
- package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
- package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
- package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
- package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
- package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
- package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
- package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
- package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
- package/src/runtime/control-plane/goal-loop/index.ts +0 -13
- package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
- package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
- package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
- package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
- package/src/runtime/control-plane/goal-loop/types.ts +0 -378
- package/src/runtime/control-plane/startup-recovery.ts +0 -198
- package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
- package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
- package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
- package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
- package/src/runtime/plugins/desktop-adapter.ts +0 -374
- package/src/runtime/safe-tooling/browser-safe.ts +0 -133
- package/src/runtime/workflow/findings/store.ts +0 -204
- package/src/runtime/workflow/findings/types.ts +0 -58
- package/src/runtime/workflow/portfolio/engine.ts +0 -20
- package/src/runtime/workflow/portfolio/store.ts +0 -185
- package/src/runtime/workflow/portfolio/types.ts +0 -29
|
@@ -139,7 +139,7 @@ plan_evidence_contract_error() {
|
|
|
139
139
|
fi
|
|
140
140
|
|
|
141
141
|
local label line value
|
|
142
|
-
for label in "State/progress path" "Verification evidence" "Evaluator rubric" "Stop condition" "Rollback surface"; do
|
|
142
|
+
for label in "State/progress path" "Verification evidence" "Impact review|Evaluator rubric" "Stop condition" "Rollback surface"; do
|
|
143
143
|
line="$(printf '%s\n' "$section" | grep -Ei "^[[:space:]]*-[[:space:]]*(\\*\\*)?${label}(\\*\\*)?[[:space:]]*:" | head -1 || true)"
|
|
144
144
|
if [[ -z "$line" ]]; then
|
|
145
145
|
echo "missing field: ${label}"
|
|
@@ -656,7 +656,6 @@ emit_forge_route_hint() {
|
|
|
656
656
|
|
|
657
657
|
if pg_fact REVIEW_RELEASE; then
|
|
658
658
|
echo "[ForgeRoute] Review/release intent detected. Use /review first; use /release only after review evidence is clear."
|
|
659
|
-
emit_external_acceptance_prompt review
|
|
660
659
|
emit_cross_review_hint merge
|
|
661
660
|
fi
|
|
662
661
|
}
|
|
@@ -684,50 +683,6 @@ emit_cross_review_hint() {
|
|
|
684
683
|
esac
|
|
685
684
|
}
|
|
686
685
|
|
|
687
|
-
emit_external_acceptance_prompt() {
|
|
688
|
-
local mode="${1:-review}"
|
|
689
|
-
local expected_reviewer expected_source command active_plan_local contract_file_local review_file checks_file
|
|
690
|
-
|
|
691
|
-
expected_reviewer="$(workflow_external_acceptance_expected_reviewer)"
|
|
692
|
-
expected_source="$(workflow_external_acceptance_expected_source "$expected_reviewer")"
|
|
693
|
-
if [ "$expected_source" = "claude-review" ]; then
|
|
694
|
-
command="/claude-review"
|
|
695
|
-
else
|
|
696
|
-
command="codex-review"
|
|
697
|
-
fi
|
|
698
|
-
|
|
699
|
-
active_plan_local="$(get_active_plan || true)"
|
|
700
|
-
contract_file_local="$(workflow_active_contract || true)"
|
|
701
|
-
review_file="$(workflow_active_review || true)"
|
|
702
|
-
checks_file="$(workflow_checks_file)"
|
|
703
|
-
|
|
704
|
-
echo "[ExternalAcceptance] Review/release intent detected. Start peer acceptance in parallel with local /review and focused checks."
|
|
705
|
-
echo "[ExternalAcceptance] Mode: $mode"
|
|
706
|
-
echo "[ExternalAcceptance] Current active plan: ${active_plan_local:-"(none)"}"
|
|
707
|
-
echo "[ExternalAcceptance] Current contract: ${contract_file_local:-"(none)"}"
|
|
708
|
-
echo "[ExternalAcceptance] Current review: ${review_file:-tasks/reviews/<slug>.review.md}"
|
|
709
|
-
echo "[ExternalAcceptance] Current checks: $checks_file"
|
|
710
|
-
echo "[ExternalAcceptance] Peer reviewer: $expected_reviewer via $command"
|
|
711
|
-
echo "[ExternalAcceptance] Diff scope for peer: branch diff against target, staged diff, unstaged diff, and untracked files."
|
|
712
|
-
cat <<EOF_EXTERNAL_ACCEPTANCE
|
|
713
|
-
[ExternalAcceptance] Prompt to send with $command:
|
|
714
|
-
Review the current sprint for acceptance only. Do not run Forge /review or local checks. Do not edit files. Do not write files. Inspect the diff scope, contract, review evidence, and checks evidence, then return only a Markdown block that can be pasted into ${review_file:-tasks/reviews/<slug>.review.md}.
|
|
715
|
-
|
|
716
|
-
## External Acceptance Advice
|
|
717
|
-
> **External Acceptance**: pass
|
|
718
|
-
> **External Reviewer**: $expected_reviewer
|
|
719
|
-
> **External Source**: $expected_source
|
|
720
|
-
> **External Started**: YYYY-MM-DDTHH:MM:SS+0800
|
|
721
|
-
> **External Completed**: YYYY-MM-DDTHH:MM:SS+0800
|
|
722
|
-
|
|
723
|
-
- P1 blockers: none
|
|
724
|
-
- P2 advisories:
|
|
725
|
-
- Acceptance checklist: pass
|
|
726
|
-
|
|
727
|
-
If the peer CLI is unavailable, record **External Acceptance**: unavailable and include the failure reason. That does not satisfy the completion gate unless a Manual Override: line with a concrete reason is also recorded.
|
|
728
|
-
EOF_EXTERNAL_ACCEPTANCE
|
|
729
|
-
}
|
|
730
|
-
|
|
731
686
|
# --- Action rendering ---
|
|
732
687
|
# Plan/spec/contract prompt gates are advisory (exit 0): pre-edit-guard.sh
|
|
733
688
|
# enforces the same state deterministically at the edit boundary. Done-claim
|
|
@@ -768,7 +723,7 @@ render_prompt_guard_action() {
|
|
|
768
723
|
exit 0
|
|
769
724
|
;;
|
|
770
725
|
plan_status_no_active_block)
|
|
771
|
-
echo "[PlanStatusGuard]
|
|
726
|
+
echo "[PlanStatusGuard] Legacy advisory: no active Plan found. Ordinary implementation is not gated by Plan presence."
|
|
772
727
|
echo "[PlanStatusGuard] Capture the approved planning output with: bash scripts/capture-plan.sh --slug <slug> --title <title> --status Approved --execute"
|
|
773
728
|
echo "[PlanStatusGuard] If there is no captured planning output yet, run: bash scripts/ensure-task-workflow.sh --slug <slug> --title <title>"
|
|
774
729
|
exit 0
|
|
@@ -780,13 +735,13 @@ render_prompt_guard_action() {
|
|
|
780
735
|
exit 0
|
|
781
736
|
;;
|
|
782
737
|
plan_status_not_approved_block)
|
|
783
|
-
echo "[PlanStatusGuard]
|
|
738
|
+
echo "[PlanStatusGuard] Legacy advisory: plan status is '$plan_status' in $active_plan. This does not authorize or block ordinary implementation."
|
|
784
739
|
exit 0
|
|
785
740
|
;;
|
|
786
741
|
evidence_contract_block)
|
|
787
742
|
echo "[EvidenceContractGuard] Advisory: plan Evidence Contract is incomplete in $active_plan:"
|
|
788
743
|
printf '%s\n' "$evidence_error"
|
|
789
|
-
echo "[EvidenceContractGuard] Fill ## Evidence Contract with state/progress path, verification evidence,
|
|
744
|
+
echo "[EvidenceContractGuard] Fill ## Evidence Contract with state/progress path, verification evidence, impact review, stop condition, and rollback surface before implementation."
|
|
790
745
|
exit 0
|
|
791
746
|
;;
|
|
792
747
|
plan_execution_scaffold_advice)
|
|
@@ -833,7 +788,7 @@ render_prompt_guard_action() {
|
|
|
833
788
|
hook_structured_error \
|
|
834
789
|
"EvidenceContractGuard" \
|
|
835
790
|
"Done intent detected without a complete plan Evidence Contract." \
|
|
836
|
-
"Fill ## Evidence Contract with state/progress path, verification evidence,
|
|
791
|
+
"Fill ## Evidence Contract with state/progress path, verification evidence, impact review, stop condition, and rollback surface before marking work done." \
|
|
837
792
|
"quality_gate"
|
|
838
793
|
exit 2
|
|
839
794
|
;;
|
|
@@ -962,38 +917,7 @@ if [ "$done_intent" -eq 1 ]; then
|
|
|
962
917
|
echo "[ContractGuard] verify-contract.sh not found at scripts/verify-contract.sh (degraded mode: skipping strict verification)."
|
|
963
918
|
fi
|
|
964
919
|
|
|
965
|
-
|
|
966
|
-
if [ -z "$review_file" ] || [ ! -f "$review_file" ]; then
|
|
967
|
-
echo "[ReviewGuard] Missing sprint review: ${review_file:-tasks/reviews/<slug>.review.md}"
|
|
968
|
-
hook_structured_error \
|
|
969
|
-
"ReviewGuard" \
|
|
970
|
-
"Done intent detected without a sprint review artifact." \
|
|
971
|
-
"Run Forge /review after verification and record the evaluator recommendation in tasks/reviews/<slug>.review.md before marking work done." \
|
|
972
|
-
"quality_gate"
|
|
973
|
-
exit 2
|
|
974
|
-
fi
|
|
975
|
-
|
|
976
|
-
if ! workflow_review_recommends_pass "$review_file"; then
|
|
977
|
-
echo "[ReviewGuard] Sprint review does not recommend pass: $review_file"
|
|
978
|
-
hook_structured_error \
|
|
979
|
-
"ReviewGuard" \
|
|
980
|
-
"Sprint review is missing a passing recommendation." \
|
|
981
|
-
"Run Forge /review with fresh verification evidence and record a pass recommendation before marking work done." \
|
|
982
|
-
"quality_gate"
|
|
983
|
-
exit 2
|
|
984
|
-
fi
|
|
985
|
-
|
|
986
|
-
external_status="$(workflow_external_acceptance_status "$review_file")"
|
|
987
|
-
IFS=$'\t' read -r external_state external_reviewer external_source external_message <<< "$external_status"
|
|
988
|
-
if [ "$external_state" != "pass" ] && [ "$external_state" != "manual_override" ]; then
|
|
989
|
-
echo "[ExternalAcceptanceGuard] ${external_message:-External acceptance is missing.}"
|
|
990
|
-
hook_structured_error \
|
|
991
|
-
"ExternalAcceptanceGuard" \
|
|
992
|
-
"${external_message:-External acceptance is missing from $review_file.}" \
|
|
993
|
-
"Run peer acceptance via $(workflow_external_acceptance_expected_source) and record ## External Acceptance Advice in $review_file before marking work done." \
|
|
994
|
-
"quality_gate"
|
|
995
|
-
exit 2
|
|
996
|
-
fi
|
|
920
|
+
echo "[Review] Before declaring completion, freshly re-evaluate user intent, affected domains, downstream consumers, and missing state transitions."
|
|
997
921
|
|
|
998
922
|
checks_file="$(workflow_checks_file)"
|
|
999
923
|
if [ ! -f "$checks_file" ]; then
|
|
@@ -1006,7 +930,7 @@ if [ "$done_intent" -eq 1 ]; then
|
|
|
1006
930
|
exit 2
|
|
1007
931
|
fi
|
|
1008
932
|
|
|
1009
|
-
if ! checks_error="$(workflow_checks_pass "$checks_file" "$contract_file"
|
|
933
|
+
if ! checks_error="$(workflow_checks_pass "$checks_file" "$contract_file")"; then
|
|
1010
934
|
echo "[EvidenceGuard] $checks_error"
|
|
1011
935
|
hook_structured_error \
|
|
1012
936
|
"EvidenceGuard" \
|
|
@@ -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
|
|
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
|
|
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.
|
|
@@ -1,8 +1,59 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"plugins": [
|
|
4
|
-
{
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
{
|
|
5
|
+
"id": "desktop_operator",
|
|
6
|
+
"name": "Forge Desktop Operator",
|
|
7
|
+
"version": "0.2.1",
|
|
8
|
+
"description": "Native macOS desktop automation provider for Forge.",
|
|
9
|
+
"repository": "https://github.com/moretea-labs/forge-desktop-operator.git",
|
|
10
|
+
"ref": "v0.2.1",
|
|
11
|
+
"installer": "forge-plugin-install.mjs",
|
|
12
|
+
"providerVersion": "0.2.1",
|
|
13
|
+
"protocolVersion": "1.0",
|
|
14
|
+
"platforms": [
|
|
15
|
+
"darwin"
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "design",
|
|
20
|
+
"name": "Forge Design",
|
|
21
|
+
"version": "0.3.0",
|
|
22
|
+
"description": "Repository-native deterministic design workspace and design.md provider.",
|
|
23
|
+
"repository": "https://github.com/moretea-labs/forge-design.git",
|
|
24
|
+
"ref": "v0.3.0",
|
|
25
|
+
"installer": "forge-plugin-install.mjs",
|
|
26
|
+
"platforms": [
|
|
27
|
+
"darwin",
|
|
28
|
+
"linux",
|
|
29
|
+
"win32"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "personal_knowledge",
|
|
34
|
+
"name": "Personal Knowledge Assistant",
|
|
35
|
+
"version": "0.2.1",
|
|
36
|
+
"description": "Local-first personal knowledge retrieval, memory, safe-write and analysis provider.",
|
|
37
|
+
"repository": "https://github.com/moretea-labs/personal-knowledge-assistant.git",
|
|
38
|
+
"ref": "v0.2.1",
|
|
39
|
+
"installer": "forge-plugin-install.mjs",
|
|
40
|
+
"platforms": [
|
|
41
|
+
"darwin",
|
|
42
|
+
"linux",
|
|
43
|
+
"win32"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "figma",
|
|
48
|
+
"name": "Forge Figma Bridge",
|
|
49
|
+
"version": "0.3.0",
|
|
50
|
+
"description": "Direct Figma Plugin API bridge for typed canvas inspection, editing and native review capture.",
|
|
51
|
+
"repository": "https://github.com/moretea-labs/forge-figma-bridge.git",
|
|
52
|
+
"ref": "v0.3.0",
|
|
53
|
+
"installer": "forge-plugin-install.mjs",
|
|
54
|
+
"platforms": [
|
|
55
|
+
"darwin"
|
|
56
|
+
]
|
|
57
|
+
}
|
|
7
58
|
]
|
|
8
59
|
}
|
|
@@ -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
|
|
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.
|
|
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
|
|
|
@@ -18,7 +18,7 @@ Generated host adapter commands carry a 30 second timeout; long-running work bel
|
|
|
18
18
|
|
|
19
19
|
`UserPromptSubmit.default` dispatches to the active `prompt-guard.sh` resolved by the central-first hook source decision. For ordinary repos that means the packaged/user-level runtime; `.ai/hooks/prompt-guard.sh` is active only when the repo pins `"hook_source": "repo"`. The shell layer parses host prompt JSON, reads workflow files, performs capture side effects, and renders host-safe output; it pipes `{"prompt": ...}` into `forge-hook prompt-guard-decide`, which owns every prompt-text intent classifier (Unicode-aware, in `src/cli/hook/prompt-intents.ts`) plus the intent x state decision table and returns one verdict JSON line (action, intent facts, derived strings). If the engine is unreachable or predates the protocol, the prompt layer degrades to a one-shot advisory instead of guessing; there is no shell fallback decision table.
|
|
20
20
|
|
|
21
|
-
Prompt-layer plan/spec/contract
|
|
21
|
+
Prompt-layer plan/spec/contract signals are advisory context only. `PreToolUse.edit` keeps real path/scope and private-surface safety checks authoritative; Plan/spec lifecycle is never a write-authorization gate. Legacy `.guards.edit_plan_gate=enforce` or `FORGE_EDIT_PLAN_GATE=enforce` is accepted as advisory compatibility, while `off` suppresses the guidance. Done-claim compatibility gates remain separate until goal-acceptance/evidence convergence removes workflow ceremony from completion.
|
|
22
22
|
|
|
23
23
|
If you are asking "which hook file should I edit?", default to `assets/hooks/` for product changes and mirror into `.ai/hooks/` only for this self-host repo or another repo that pins `"hook_source": "repo"`; runtime pickup outside repo-pinned development happens on the next `install`/CLI upgrade because hooks resolve central-first.
|
|
24
24
|
After installing or refreshing `~/.codex/hooks.json`, open Codex Settings and mark the user-level hook config as trusted; otherwise Codex will not execute it.
|
|
@@ -78,12 +78,12 @@ Existing contracts without this block remain valid. `.ai/harness/scripts/verify-
|
|
|
78
78
|
|
|
79
79
|
## Review Coupling
|
|
80
80
|
|
|
81
|
-
-
|
|
82
|
-
- `tasks/reviews/<plan-stem>.review.md`
|
|
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
|
|
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.
|
|
@@ -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
|
|
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
|
|
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
|
-
- **
|
|
306
|
-
- **Stop condition**: all task breakdown items are complete
|
|
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" "
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
- **
|
|
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
|
|
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
|
|
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
|
-
> **
|
|
476
|
+
> **Summary**:
|
|
477
477
|
|
|
478
|
-
##
|
|
478
|
+
## Semantic Impact Review
|
|
479
479
|
|
|
480
|
-
-
|
|
481
|
-
-
|
|
482
|
-
-
|
|
483
|
-
-
|
|
484
|
-
-
|
|
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
|
-
-
|
|
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
|
- ...
|
|
@@ -916,8 +891,8 @@ ARCHITECTURE_INDEX_EOF
|
|
|
916
891
|
},
|
|
917
892
|
"guards": {
|
|
918
893
|
"edit_plan_gate": "advice",
|
|
919
|
-
"edit_plan_gate_modes": ["
|
|
920
|
-
"rule": "pre-edit-guard
|
|
894
|
+
"edit_plan_gate_modes": ["advice", "off"],
|
|
895
|
+
"rule": "pre-edit-guard may expose Plan/spec context, but Plan lifecycle never authorizes implementation; only real safety/resource boundaries block execution"
|
|
921
896
|
},
|
|
922
897
|
"sidecar_research": {
|
|
923
898
|
"default": true,
|