@moretea-labs/forge 1.6.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -0
- package/CHANGELOG.md +39 -0
- package/CLAUDE.md +4 -0
- package/README.md +2 -2
- package/README.zh-CN.md +1 -1
- 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/prompt-guard.sh +5 -81
- package/assets/hooks/session-start-context.sh +56 -1
- package/assets/partials/05-workflow.partial.md +1 -1
- package/assets/partials-agents/02-operating-mode.partial.md +2 -0
- package/assets/partials-agents/03-orchestration.partial.md +1 -1
- package/assets/plugin-registry.v1.json +3 -3
- package/assets/reference-configs/document-generation.md +1 -1
- package/assets/reference-configs/harness-overview.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-architecture-sync.sh +17 -0
- 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 +11 -36
- package/assets/templates/helpers/inspect-project-state.ts +8 -6
- package/assets/templates/helpers/migrate-project-template.sh +22 -45
- package/assets/templates/helpers/migrate-workflow-docs.ts +9 -7
- 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/verify-contract.sh +1 -111
- package/assets/templates/helpers/verify-sprint.sh +3 -180
- package/assets/templates/helpers/workflow-contract.ts +5 -1
- 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 +178 -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-plugin-management.md +1 -1
- package/docs/forge-runtime-self-healing-loop.md +1 -1
- package/docs/operations/controller-browser-plugin.md +26 -6
- package/docs/operations/controller-performance-and-502.md +143 -0
- package/docs/operations/controller-reliability-runbook.md +1 -1
- package/docs/operations/features.md +2 -2
- 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/wiki/Architecture.md +6 -6
- package/docs/wiki/Implementation.md +2 -2
- package/docs/wiki/Integrations.md +2 -2
- package/docs/wiki/Work-Lifecycle.md +1 -1
- package/package.json +33 -11
- package/scripts/activate-source-baseline.ts +17 -13
- package/scripts/architecture-event.ts +2 -820
- package/scripts/architecture-queue.sh +2 -645
- package/scripts/archive-architecture-request.sh +2 -242
- package/scripts/archive-workflow.sh +1 -291
- 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/capability-config.ts +2 -392
- package/scripts/capability-resolver.ts +2 -503
- package/scripts/capture-plan.sh +1 -332
- package/scripts/check-agent-tooling.sh +2 -1558
- package/scripts/check-architecture-sync.sh +2 -371
- package/scripts/check-brain-manifest.sh +2 -253
- package/scripts/check-context-files.sh +2 -47
- package/scripts/check-deploy-sql-order.sh +2 -115
- package/scripts/check-mcp-compatibility.ts +14 -0
- package/scripts/check-runtime-architecture.mjs +349 -79
- package/scripts/check-skill-version.ts +3 -191
- package/scripts/check-source-duplication.mjs +61 -0
- package/scripts/check-stable-baseline.ts +92 -0
- package/scripts/check-task-sync.sh +2 -63
- package/scripts/check-task-workflow.sh +2 -1000
- package/scripts/codex-handoff-resume.sh +2 -267
- package/scripts/context-contract-sync.sh +2 -514
- package/scripts/contract-run.ts +2 -463
- package/scripts/contract-worktree.sh +1 -722
- package/scripts/ensure-task-workflow.sh +1 -1225
- package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
- package/scripts/inspect-project-state.ts +4 -279
- package/scripts/install-standalone-recovery.ts +24 -0
- package/scripts/lib/project-init-lib.sh +22 -46
- package/scripts/lib/run-forge-helper.sh +19 -0
- package/scripts/lib/run-forge-helper.ts +26 -0
- package/scripts/migrate-project-template.sh +1 -1189
- package/scripts/migrate-workflow-docs.ts +4 -412
- package/scripts/new-plan.sh +1 -180
- package/scripts/new-spec.sh +1 -47
- package/scripts/new-sprint.sh +1 -46
- package/scripts/plan-to-todo.sh +1 -796
- package/scripts/prepare-codex-handoff.sh +2 -201
- package/scripts/prepare-handoff.sh +1 -78
- package/scripts/refresh-current-status.sh +2 -467
- package/scripts/run-governed-gate.ts +5 -1
- package/scripts/select-agent-context-blocks.sh +2 -64
- package/scripts/ship-worktrees.sh +1 -558
- 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 -834
- package/scripts/stage-runtime-release.ts +2 -1
- package/scripts/summarize-failures.sh +2 -123
- package/scripts/switch-plan.sh +1 -150
- package/scripts/sync-brain-docs.sh +2 -379
- package/scripts/sync-generated-authority.mjs +175 -0
- package/scripts/verify-contract.sh +2 -703
- package/scripts/verify-forge-runtime.sh +0 -1
- package/scripts/verify-sprint.sh +1 -677
- package/scripts/workflow-contract.ts +4 -205
- package/scripts/workstream-sync.sh +2 -261
- package/src/cli/agent-jobs/executor-health.ts +1 -1
- package/src/cli/commands/init-hook.ts +3 -3
- package/src/cli/commands/mcp.ts +9 -5
- package/src/cli/commands/plugin.ts +12 -3
- 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 +113 -5
- 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 +828 -487
- 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/contracts.ts +16 -0
- package/src/cli/github/github.ts +135 -16
- package/src/cli/github/session.ts +2 -1
- package/src/cli/installer/managed-entries.ts +15 -1
- package/src/cli/local-bridge/console-automations.ts +54 -78
- package/src/cli/local-bridge/console-view-models.ts +1 -35
- package/src/cli/local-bridge/facade-api.ts +37 -264
- package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
- package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +23 -13
- package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
- package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +6 -4
- package/src/cli/local-bridge/frontend/src/lib/api.ts +1 -6
- package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
- package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +2 -2
- package/src/cli/local-bridge/frontend/src/styles.css +1 -1
- package/src/cli/local-bridge/frontend/src/types.ts +5 -8
- package/src/cli/local-bridge/job-store.ts +1 -490
- package/src/cli/local-bridge/server.ts +2 -515
- package/src/cli/local-bridge/ui-dist/app.css +1 -1
- package/src/cli/local-bridge/ui-dist/app.js +3703 -3757
- package/src/cli/mcp/auth.ts +5 -5
- package/src/cli/mcp/instructions.ts +3 -2
- package/src/cli/mcp/legacy-tool-service.ts +10 -222
- package/src/cli/mcp/multi-repository.ts +16 -5
- package/src/cli/mcp/oauth.ts +175 -26
- package/src/cli/mcp/post-finalize-work-attribution.ts +150 -0
- package/src/cli/mcp/repository-tools.ts +282 -146
- package/src/cli/mcp/server.ts +586 -116
- package/src/cli/mcp/tool-capability-cache.ts +1 -1
- package/src/cli/mcp/tool-contract.ts +14 -0
- package/src/cli/mcp/toolset-selection.ts +1 -1
- package/src/cli/mcp/toolset.ts +44 -7
- package/src/cli/mcp/transports/http.ts +124 -14
- package/src/cli/mcp/transports/session-registry.ts +43 -5
- package/src/cli/mcp/types.ts +3 -3
- package/src/cli/repositories/command-classifier.ts +103 -21
- package/src/cli/repositories/command-executor.ts +78 -526
- 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 +124 -0
- package/src/cli/repositories/selected-path-actions.ts +17 -9
- package/src/cli/repositories/structured-git.ts +118 -6
- package/src/cli/repository/inspector.ts +563 -65
- 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-contract.ts +61 -0
- package/src/runtime/context/semantic-navigation.ts +223 -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 +48 -16
- package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
- package/src/runtime/control-plane/execution/repository-work-attribution.ts +106 -0
- package/src/runtime/control-plane/execution/retained-work-resume.ts +203 -0
- package/src/runtime/control-plane/execution/session-store.ts +18 -0
- package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
- package/src/runtime/control-plane/execution/work-completion-authority.ts +58 -0
- package/src/runtime/control-plane/execution/work-evidence-policy.ts +200 -0
- package/src/runtime/control-plane/execution/work-execution-support.ts +386 -0
- package/src/runtime/control-plane/execution/work-finalization-service.ts +1913 -0
- package/src/runtime/control-plane/execution/work-handle-authority.ts +96 -0
- 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-operation-service.ts +468 -0
- package/src/runtime/control-plane/execution/work-path-scope.ts +37 -0
- package/src/runtime/control-plane/execution/work-preparation-service.ts +479 -0
- package/src/runtime/control-plane/execution/work-process-evidence.ts +129 -0
- package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
- package/src/runtime/control-plane/execution/work-task-receipt.ts +22 -18
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +156 -11
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +22 -14
- package/src/runtime/control-plane/execution/work-verification-context.ts +56 -0
- package/src/runtime/control-plane/execution/work-verification-service.ts +388 -0
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +90 -9
- package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
- package/src/runtime/control-plane/facade/controller-round-relay.ts +1118 -0
- package/src/runtime/control-plane/facade/controller-session-store.ts +302 -12
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +17 -1
- package/src/runtime/control-plane/facade/goal-workloop.ts +928 -190
- package/src/runtime/control-plane/facade/index.ts +3 -0
- package/src/runtime/control-plane/facade/plan-contract-store.ts +275 -42
- package/src/runtime/control-plane/facade/repository-work-admission.ts +147 -0
- package/src/runtime/control-plane/facade/requirement-authority.ts +83 -0
- 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 +90 -10
- package/src/runtime/control-plane/facade/work-contract-store.ts +157 -261
- package/src/runtime/control-plane/facade/work-state-machine.ts +250 -0
- 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 +152 -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 +278 -543
- 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 +63 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +365 -117
- package/src/runtime/control-plane/launcher/launch-reservation-store.ts +89 -0
- package/src/runtime/control-plane/launcher/thin-launcher.ts +244 -11
- package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
- package/src/runtime/control-plane/persistence/requirement-store.ts +0 -12
- 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/repo-actor/registry.ts +4 -2
- package/src/runtime/control-plane/routing/route-policy.ts +24 -21
- package/src/runtime/control-plane/routing/workspace-admission.ts +70 -0
- package/src/runtime/control-plane/runtime-status-client.ts +0 -2
- package/src/runtime/diagnostics/mcp-timing.ts +13 -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/evidence/process-check-execution.ts +18 -0
- package/src/runtime/execution/jobs/child-reference.ts +6 -2
- 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 +51 -4
- package/src/runtime/execution/process-runtime/check-result.ts +88 -0
- package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +7 -1
- package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
- package/src/runtime/execution/process-runtime/command-facade.ts +367 -40
- package/src/runtime/execution/process-runtime/gc.ts +38 -6
- package/src/runtime/execution/process-runtime/lightweight-managed.ts +1201 -0
- package/src/runtime/execution/process-runtime/persisted-check.ts +51 -5
- package/src/runtime/execution/process-runtime/resource-claims.ts +10 -6
- package/src/runtime/execution/process-runtime/runtime.ts +53 -3
- package/src/runtime/execution/process-runtime/store.ts +1 -0
- package/src/runtime/execution/process-runtime/types.ts +4 -12
- 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/work-activity.ts +21 -0
- package/src/runtime/execution/workers/executor.ts +18 -61
- package/src/runtime/gateway/mcp/execution-tools.ts +35 -1852
- package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +61 -0
- package/src/runtime/gateway/mcp/process-tools.ts +83 -37
- package/src/runtime/gateway/mcp/router.ts +186 -84
- package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +565 -0
- package/src/runtime/gateway/mcp/runtime-tools.ts +2378 -1947
- package/src/runtime/plugins/app-store-connect-adapter.ts +216 -47
- package/src/runtime/plugins/browser-adapter.ts +2662 -829
- package/src/runtime/plugins/browser-automation-service.ts +10 -0
- package/src/runtime/plugins/browser-handoff-host.ts +2 -25
- package/src/runtime/plugins/browser-handoff.ts +110 -5
- package/src/runtime/plugins/browser-macos-bridge.ts +701 -63
- package/src/runtime/plugins/browser-manifest-surface.ts +603 -0
- package/src/runtime/plugins/browser-native-session-service.ts +222 -0
- 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 +154 -0
- package/src/runtime/plugins/browser-runtime.ts +193 -0
- package/src/runtime/plugins/browser-session-authority.ts +332 -0
- package/src/runtime/plugins/browser-session-store.ts +121 -0
- package/src/runtime/plugins/browser-session-types.ts +98 -0
- package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
- package/src/runtime/plugins/desktop-operator-registration.ts +10 -4
- package/src/runtime/plugins/external-adapter.ts +358 -3
- package/src/runtime/plugins/external-unix-socket.ts +7 -1
- package/src/runtime/plugins/first-party-registry.ts +2 -0
- package/src/runtime/plugins/github-adapter.ts +125 -0
- 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 +123 -6
- package/src/runtime/plugins/macos-capability-broker.ts +47 -9
- package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
- package/src/runtime/plugins/plugin-management-adapter.ts +49 -8
- package/src/runtime/plugins/resend-adapter.ts +1 -1
- package/src/runtime/plugins/store.ts +330 -33
- package/src/runtime/plugins/types.ts +38 -3
- 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/maintenance-executor.ts +426 -25
- package/src/runtime/root/mcp-transport.ts +180 -10
- package/src/runtime/root/package-connector-service.ts +230 -10
- package/src/runtime/root/package-runtime-release.ts +143 -17
- package/src/runtime/root/package-runtime-service.ts +461 -22
- package/src/runtime/root/release-manifest.ts +144 -18
- package/src/runtime/root/release-materialize.ts +125 -32
- package/src/runtime/root/release-store.ts +48 -11
- package/src/runtime/root/runtime.ts +23 -5
- package/src/runtime/root/service.ts +100 -29
- package/src/runtime/root/types.ts +12 -0
- package/src/runtime/safe-tooling/ios-development.ts +321 -63
- 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 +1079 -240
- package/src/runtime/standalone-recovery/entry.ts +100 -24
- package/src/runtime/standalone-recovery/installer.ts +20 -4
- 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 +81 -3
- package/src/runtime/workflow/schedules/engine.ts +364 -202
- package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
- package/src/runtime/workflow/schedules/settlement.ts +64 -17
- package/src/runtime/workflow/schedules/store.ts +209 -19
- package/src/runtime/workflow/schedules/types.ts +2 -4
- package/src/runtime/workflow/schedules/work-continuation.ts +26 -13
- 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/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 -459
- package/docs/architecture/current/codegraph-context-provider.md +0 -238
- 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 -373
- package/docs/architecture/current/entity-model.md +0 -612
- 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 -169
- 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 -321
- 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 -93
- 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/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
|
@@ -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
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
- Claude runtime expectation: `{{CLAUDE_POLICY}}`.
|
|
9
9
|
- Codex runtime expectation: `{{CODEX_POLICY}}`.
|
|
10
10
|
- Do not implement until the user explicitly asks to implement.
|
|
11
|
+
- Once the user asks to execute, minimize avoidable human intervention: continue reversible, policy-allowed implementation, verification, cleanup, and delivery autonomously, stopping only at a genuinely user-only identity/legal/financial/strong-confirmation/irreversible boundary.
|
|
12
|
+
- For authenticated browser work, reuse the user's already-running signed-in Google Chrome with attach-preferred, native-auto, Chrome-only, fail-closed routing. Preserve cookies, tokens, sessions, and settings; never silently switch to a managed, isolated, Vivaldi, or otherwise unauthenticated profile unless the task explicitly requests that mode.
|
|
11
13
|
- Stable product truth: `docs/spec.md`.
|
|
12
14
|
- Research reports: `docs/researches/`.
|
|
13
15
|
- Deferred-goal ledger: `tasks/todos.md` (active execution stays in the plan's `## Task Breakdown`).
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
### 6b. Contract Verification
|
|
35
35
|
- Use task contracts in `tasks/contracts/` as completion gates.
|
|
36
36
|
- Use implementation notes in `tasks/notes/` for task-local decisions that should not automatically become memory.
|
|
37
|
-
- Validate exit criteria
|
|
37
|
+
- Validate direct exit criteria, then use Forge `/review` to reassess intent, downstream impact, and missing state transitions before any done/completed response.
|
|
38
38
|
|
|
39
39
|
### 7. Balanced Elegance
|
|
40
40
|
- Redesign hacky non-trivial fixes before shipping.
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
{
|
|
5
5
|
"id": "desktop_operator",
|
|
6
6
|
"name": "Forge Desktop Operator",
|
|
7
|
-
"version": "0.2.
|
|
7
|
+
"version": "0.2.3",
|
|
8
8
|
"description": "Native macOS desktop automation provider for Forge.",
|
|
9
9
|
"repository": "https://github.com/moretea-labs/forge-desktop-operator.git",
|
|
10
|
-
"ref": "v0.2.
|
|
10
|
+
"ref": "v0.2.3",
|
|
11
11
|
"installer": "forge-plugin-install.mjs",
|
|
12
|
-
"providerVersion": "0.2.
|
|
12
|
+
"providerVersion": "0.2.3",
|
|
13
13
|
"protocolVersion": "1.0",
|
|
14
14
|
"platforms": [
|
|
15
15
|
"darwin"
|
|
@@ -31,7 +31,7 @@ Create these only when the agent has concrete repo evidence or the user asks:
|
|
|
31
31
|
- Prefer short docs that name sources, owners, and verification commands.
|
|
32
32
|
- Let capability `CLAUDE.md` and `AGENTS.md` carry local contract projections; root docs stay concise.
|
|
33
33
|
- Keep complete workstream TODOs in `tasks/workstreams/<domain>/<capability>/`; contract blocks should link to them instead of becoming task logs.
|
|
34
|
-
- Keep onboarding docs split by reader: agents read active source artifacts first; humans review the
|
|
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
|
|
|
@@ -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 Forge `/review`
|
|
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
|
|
@@ -212,6 +212,23 @@ if ! bash scripts/architecture-queue.sh reindex --check >/dev/null; then
|
|
|
212
212
|
exit 1
|
|
213
213
|
fi
|
|
214
214
|
|
|
215
|
+
if [[ -f "docs/architecture/current/README.md" ]]; then
|
|
216
|
+
if [[ ! -f "docs/architecture/CURRENT.md" ]]; then
|
|
217
|
+
echo "[ArchitectureSync] architecture baseline failed: missing required file docs/architecture/CURRENT.md" >&2
|
|
218
|
+
exit 1
|
|
219
|
+
fi
|
|
220
|
+
|
|
221
|
+
if ! grep -Fq "Runtime Authority" "docs/architecture/CURRENT.md"; then
|
|
222
|
+
echo "[ArchitectureSync] architecture baseline failed: docs/architecture/CURRENT.md must contain: Runtime Authority" >&2
|
|
223
|
+
exit 1
|
|
224
|
+
fi
|
|
225
|
+
|
|
226
|
+
if ! grep -Fq "Not Runtime Authority" "docs/architecture/current/README.md"; then
|
|
227
|
+
echo "[ArchitectureSync] architecture baseline failed: docs/architecture/current/README.md must contain: Not Runtime Authority" >&2
|
|
228
|
+
exit 1
|
|
229
|
+
fi
|
|
230
|
+
fi
|
|
231
|
+
|
|
215
232
|
if [[ "$mode" == "off" ]]; then
|
|
216
233
|
case "$format" in
|
|
217
234
|
json) printf '{"mode":"off","changed_capabilities":0,"blocking":0}\n' ;;
|
|
@@ -161,7 +161,7 @@ plan_evidence_contract_error() {
|
|
|
161
161
|
fi
|
|
162
162
|
|
|
163
163
|
local label line value
|
|
164
|
-
for label in "State/progress path" "Verification evidence" "Evaluator rubric" "Stop condition" "Rollback surface"; do
|
|
164
|
+
for label in "State/progress path" "Verification evidence" "Impact review|Evaluator rubric" "Stop condition" "Rollback surface"; do
|
|
165
165
|
line="$(printf '%s\n' "$section" | grep -Ei "^[[:space:]]*-[[:space:]]*(\\*\\*)?${label}(\\*\\*)?[[:space:]]*:" | head -1 || true)"
|
|
166
166
|
if [[ -z "$line" ]]; then
|
|
167
167
|
echo "missing field: ${label}"
|
|
@@ -189,7 +189,7 @@ check_plan_template_evidence_contract() {
|
|
|
189
189
|
return
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
for label in "State/progress path" "Verification evidence" "
|
|
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
|
- ...
|
|
@@ -270,11 +270,13 @@ function renderText(result: InspectionResult): string {
|
|
|
270
270
|
return lines.join("\n");
|
|
271
271
|
}
|
|
272
272
|
|
|
273
|
-
|
|
274
|
-
const
|
|
273
|
+
if (import.meta.main) {
|
|
274
|
+
const { repo, format } = parseArgs(process.argv.slice(2));
|
|
275
|
+
const result = inspectRepo(repo);
|
|
275
276
|
|
|
276
|
-
if (format === "text") {
|
|
277
|
-
|
|
278
|
-
} else {
|
|
279
|
-
|
|
277
|
+
if (format === "text") {
|
|
278
|
+
console.log(renderText(result));
|
|
279
|
+
} else {
|
|
280
|
+
console.log(JSON.stringify(result, null, 2));
|
|
281
|
+
}
|
|
280
282
|
}
|
|
@@ -1,54 +1,31 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
# Generated projects keep installed workflow runtime state under .ai/. The
|
|
5
|
-
# template source lives in AGENTIC_DEV_ROOT, AGENTIC_DEV_SKILL_ROOT, or
|
|
6
|
-
# ~/Projects/forge. Retired legacy install paths are not
|
|
7
|
-
# searched.
|
|
2
|
+
# Run the canonical Forge adoption path without guessing a developer checkout.
|
|
8
3
|
|
|
9
4
|
set -euo pipefail
|
|
10
5
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"$HOME/Projects/forge"
|
|
25
|
-
"$HOME/.codex/skills/forge"
|
|
26
|
-
"$HOME/.claude/skills/forge"
|
|
27
|
-
"$HOME/.agents/skills/forge"
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
local root
|
|
31
|
-
for root in "${roots[@]}"; do
|
|
32
|
-
if [[ -d "$root" ]]; then
|
|
33
|
-
printf '%s\n' "$root"
|
|
34
|
-
return 0
|
|
35
|
-
fi
|
|
36
|
-
done
|
|
37
|
-
|
|
38
|
-
printf '%s\n' "${roots[0]}"
|
|
39
|
-
return 0
|
|
40
|
-
fi
|
|
41
|
-
|
|
42
|
-
printf '%s\n' ".forge/skills/forge"
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
SELF_SOURCE_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
8
|
+
SOURCE_ROOT="${FORGE_SOURCE_ROOT:-${AGENTIC_DEV_ROOT:-${AGENTIC_DEV_SKILL_ROOT:-}}}"
|
|
9
|
+
|
|
10
|
+
run_source_root() {
|
|
11
|
+
local root="$1"
|
|
12
|
+
shift
|
|
13
|
+
[[ -f "$root/src/cli/index.ts" ]] || return 1
|
|
14
|
+
command -v bun >/dev/null 2>&1 || {
|
|
15
|
+
echo "[migrate] bun is required to run Forge from source: $root" >&2
|
|
16
|
+
exit 1
|
|
17
|
+
}
|
|
18
|
+
exec bun "$root/src/cli/index.ts" adopt "$@" --no-codegraph --no-verify
|
|
43
19
|
}
|
|
44
20
|
|
|
45
|
-
|
|
46
|
-
|
|
21
|
+
run_source_root "$SELF_SOURCE_ROOT" "$@"
|
|
22
|
+
if [[ -n "$SOURCE_ROOT" ]]; then
|
|
23
|
+
run_source_root "$SOURCE_ROOT" "$@"
|
|
24
|
+
fi
|
|
47
25
|
|
|
48
|
-
if
|
|
49
|
-
|
|
50
|
-
echo "[migrate] Set AGENTIC_DEV_ROOT or AGENTIC_DEV_SKILL_ROOT to the skill root." >&2
|
|
51
|
-
exit 1
|
|
26
|
+
if command -v forge >/dev/null 2>&1; then
|
|
27
|
+
exec forge adopt "$@" --no-codegraph --no-verify
|
|
52
28
|
fi
|
|
53
29
|
|
|
54
|
-
|
|
30
|
+
echo "[migrate] Missing Forge CLI; set FORGE_SOURCE_ROOT to a Forge source checkout." >&2
|
|
31
|
+
exit 1
|
|
@@ -403,11 +403,13 @@ function renderText(summary: MigrationSummary): string {
|
|
|
403
403
|
return lines.join("\n");
|
|
404
404
|
}
|
|
405
405
|
|
|
406
|
-
|
|
407
|
-
const
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
406
|
+
if (import.meta.main) {
|
|
407
|
+
const { repo, mode, format } = parseArgs(process.argv.slice(2));
|
|
408
|
+
const summary = migrate(repo, mode);
|
|
409
|
+
|
|
410
|
+
if (format === "json") {
|
|
411
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
412
|
+
} else {
|
|
413
|
+
console.log(renderText(summary));
|
|
414
|
+
}
|
|
413
415
|
}
|
|
@@ -141,7 +141,7 @@ Complete this inventory before implementation. If any line is unknown, keep the
|
|
|
141
141
|
|
|
142
142
|
- **State/progress path**:
|
|
143
143
|
- **Verification evidence**:
|
|
144
|
-
- **
|
|
144
|
+
- **Impact review**:
|
|
145
145
|
- **Stop condition**:
|
|
146
146
|
- **Rollback surface**:
|
|
147
147
|
|
|
@@ -63,7 +63,7 @@ plan_evidence_contract_error() {
|
|
|
63
63
|
fi
|
|
64
64
|
|
|
65
65
|
local label line value
|
|
66
|
-
for label in "State/progress path" "Verification evidence" "Evaluator rubric" "Stop condition" "Rollback surface"; do
|
|
66
|
+
for label in "State/progress path" "Verification evidence" "Impact review|Evaluator rubric" "Stop condition" "Rollback surface"; do
|
|
67
67
|
line="$(printf '%s\n' "$section" | grep -Ei "^[[:space:]]*-[[:space:]]*(\\*\\*)?${label}(\\*\\*)?[[:space:]]*:" | head -1 || true)"
|
|
68
68
|
if [[ -z "$line" ]]; then
|
|
69
69
|
echo "missing field: ${label}"
|
|
@@ -323,7 +323,7 @@ Describe the exact outcome this task must deliver.
|
|
|
323
323
|
- Checks file: `.ai/harness/checks/latest.json`
|
|
324
324
|
- Run snapshots: `.ai/harness/runs/`
|
|
325
325
|
- Scope gate: edit only paths listed under `allowed_paths`; update this contract before widening scope.
|
|
326
|
-
- Completion
|
|
326
|
+
- Completion evidence: `scripts/verify-sprint.sh` reports this contract's direct checks and declared scope. Then perform a fresh semantic impact review.
|
|
327
327
|
|
|
328
328
|
## Allowed Paths
|
|
329
329
|
|
|
@@ -377,7 +377,7 @@ exit_criteria:
|
|
|
377
377
|
tests_pass:
|
|
378
378
|
- path: tests/unit/{{TASK_SLUG}}.test.ts
|
|
379
379
|
commands_succeed:
|
|
380
|
-
- bun run
|
|
380
|
+
- bun run check:type
|
|
381
381
|
files_contain:
|
|
382
382
|
- path: src/modules/{{TASK_SLUG}}/index.ts
|
|
383
383
|
pattern: "export"
|
|
@@ -691,19 +691,15 @@ else
|
|
|
691
691
|
> **Notes File**: {{NOTES_FILE}}
|
|
692
692
|
> **Checks File**: {{CHECKS_FILE}}
|
|
693
693
|
> **Last Updated**: {{TIMESTAMP}}
|
|
694
|
-
> **
|
|
694
|
+
> **Summary**:
|
|
695
695
|
|
|
696
|
-
##
|
|
696
|
+
## Semantic Impact Review
|
|
697
697
|
|
|
698
|
-
-
|
|
699
|
-
-
|
|
700
|
-
-
|
|
701
|
-
-
|
|
702
|
-
-
|
|
703
|
-
- External acceptance: unavailable
|
|
704
|
-
- Residual risks:
|
|
705
|
-
- Reviewer action required: inspect diff and card
|
|
706
|
-
- Rollback:
|
|
698
|
+
- User intent:
|
|
699
|
+
- Affected domains and downstream consumers:
|
|
700
|
+
- State transitions and persistence/restart impact:
|
|
701
|
+
- Missing impact areas or uncertainty:
|
|
702
|
+
- Residual risks and recovery:
|
|
707
703
|
|
|
708
704
|
## Mode Evidence
|
|
709
705
|
|
|
@@ -713,26 +709,14 @@ else
|
|
|
713
709
|
|
|
714
710
|
## Verification Evidence
|
|
715
711
|
|
|
716
|
-
-
|
|
712
|
+
- Focused/full checks:
|
|
717
713
|
- Commands run:
|
|
718
714
|
- Manual checks:
|
|
719
715
|
- Supporting artifacts:
|
|
720
716
|
- Implementation notes reviewed:
|
|
721
717
|
- Run snapshot:
|
|
722
718
|
|
|
723
|
-
##
|
|
724
|
-
|
|
725
|
-
> **External Acceptance**: unavailable
|
|
726
|
-
> **External Reviewer**:
|
|
727
|
-
> **External Source**:
|
|
728
|
-
> **External Started**:
|
|
729
|
-
> **External Completed**:
|
|
730
|
-
|
|
731
|
-
- P1 blockers:
|
|
732
|
-
- P2 advisories:
|
|
733
|
-
- Acceptance checklist:
|
|
734
|
-
|
|
735
|
-
## Behavior Diff Notes
|
|
719
|
+
## Scenario Evidence
|
|
736
720
|
|
|
737
721
|
- ...
|
|
738
722
|
|
|
@@ -740,15 +724,6 @@ else
|
|
|
740
724
|
|
|
741
725
|
- ...
|
|
742
726
|
|
|
743
|
-
## Scorecard
|
|
744
|
-
|
|
745
|
-
| Dimension | Score | Notes |
|
|
746
|
-
|-----------|-------|-------|
|
|
747
|
-
| Functionality | 0/10 | |
|
|
748
|
-
| Product depth | 0/10 | |
|
|
749
|
-
| Design quality | 0/10 | |
|
|
750
|
-
| Code quality | 0/10 | |
|
|
751
|
-
|
|
752
727
|
## Failing Items
|
|
753
728
|
|
|
754
729
|
- ...
|