@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
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# Runtime Directory Map
|
|
2
|
-
|
|
3
|
-
> Status: **Runtime Authority**
|
|
4
|
-
|
|
5
|
-
```text
|
|
6
|
-
src/runtime/
|
|
7
|
-
root/ Canonical Runtime root lifecycle, readiness and write fencing
|
|
8
|
-
release/ Whole-release identity, active/previous selection and rollback metadata
|
|
9
|
-
standalone-recovery/ Independent diagnostics, service repair and offline whole-Runtime rollback
|
|
10
|
-
gateway/mcp/ Thin command admission, policy and runtime tools
|
|
11
|
-
control-plane/
|
|
12
|
-
global-scheduler/ Global fairness, quotas, process dispatch and reconciliation
|
|
13
|
-
repo-actor/ Repository-local single-owner scheduling
|
|
14
|
-
governance/ External side-effect and requirement-growth policy
|
|
15
|
-
workflow/
|
|
16
|
-
schedules/ Trigger, bounded Occurrence, persisted Decision and backoff
|
|
17
|
-
portfolio/ Cross-repository DAG and Saga
|
|
18
|
-
findings/ Deduplicated Candidate Finding and explicit promotion
|
|
19
|
-
plugins/ Derived manifests, discovery registry, policy-typed actions and provider adapters
|
|
20
|
-
execution/
|
|
21
|
-
jobs/ Durable Job schema, indexes, Operation Receipts and compatibility projection
|
|
22
|
-
workers/ Isolated one-Job process execution
|
|
23
|
-
thin-harness/ Fast Path router, latency trace, receipts, typed batch, lightweight lanes
|
|
24
|
-
resources/
|
|
25
|
-
claims/ Conflict taxonomy and conservative unknown scope
|
|
26
|
-
leases/ Lease, renewal, release and fencing
|
|
27
|
-
evidence/ Unified events, exact-revision evidence and bounded Artifacts
|
|
28
|
-
projections/ Dirty-marker invalidated materialized read models
|
|
29
|
-
release/ Release freeze, gate and manifest
|
|
30
|
-
shared/ Atomic file and portable Node TypeScript-loader utilities
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
`src/cli/` contains the Forge CLI, MCP adapter surface and bounded internal operation implementations. It is not a second lifecycle owner. Gateway handlers admit and route work; the Runtime Root, Process Runtime and bounded Workers own execution.
|
|
34
|
-
|
|
35
|
-
When Controller Home explicitly enables the Local Bridge without selecting external `standalone` or `remote` mode, `src/runtime/root/local-bridge.ts` starts that HTTP UI/API as an in-process module of the Canonical Runtime and closes it before releasing Runtime ownership. Its compatibility projection may describe the endpoint, but it is not a separate process, launch service, readiness authority, or recovery owner.
|
|
36
|
-
|
|
37
|
-
New scheduling ownership must be added under `src/runtime/`, never inside MCP transport handlers.
|
|
38
|
-
|
|
39
|
-
## Runtime Storage Ownership and Quarantine
|
|
40
|
-
|
|
41
|
-
Each bound directory under Controller Home contains `.forge-owner.json` with `repoId`, binding name, and management identity. Repository-local `.ai/harness/<binding>` paths are links to these owned directories.
|
|
42
|
-
|
|
43
|
-
Migration tooling may quarantine pre-cutover state for offline inspection under:
|
|
44
|
-
|
|
45
|
-
```text
|
|
46
|
-
<controller-home>/repositories/<repoId>/quarantine/runtime-storage/<binding>/
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Execution readiness remains false for active/unreadable Run or Local Job state and for non-directory/path conflicts. A non-empty worktree directory by itself is not a reason to perform an unsafe move or to block forever.
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
# Runtime Health and Resource Lifecycle
|
|
2
|
-
|
|
3
|
-
Status: Current implementation note (2026-07-16)
|
|
4
|
-
|
|
5
|
-
This note records the additive runtime-health and cleanup semantics. It does not
|
|
6
|
-
create a new Controller boundary, health database, projection worker, or cleanup
|
|
7
|
-
scheduler.
|
|
8
|
-
|
|
9
|
-
## Observation versus evaluation
|
|
10
|
-
|
|
11
|
-
Runtime callers collect diagnostic observations from the Canonical Runtime,
|
|
12
|
-
Scheduler, Workers, materialized projections, Local Controller endpoint, and
|
|
13
|
-
runtime storage. `src/runtime/health/evaluator.ts` remains a side-effect-free
|
|
14
|
-
operational evaluator for blockers and warnings; it is not a lifecycle or
|
|
15
|
-
readiness authority. The Runtime Root publishes the only public Runtime
|
|
16
|
-
readiness decision as `ready: boolean`, with module observations retained only
|
|
17
|
-
as diagnostic evidence.
|
|
18
|
-
|
|
19
|
-
Projection age is not a health signal by itself. A readable idle projection is
|
|
20
|
-
usable even when old. A dirty/source-changed projection is warning-level during
|
|
21
|
-
the bounded refresh grace period and becomes a blocker only when the required
|
|
22
|
-
refresh is missed or the build fails.
|
|
23
|
-
|
|
24
|
-
Task Ledger status describes workflow progress and is not live process
|
|
25
|
-
ownership. A Task may remain `running` across sequential Runs while no Worker is
|
|
26
|
-
currently active. Differences between Task Ledger running counts and runtime
|
|
27
|
-
Worker counts are repository-scoped attention evidence; they never block the
|
|
28
|
-
global Gateway, Controller readiness, or release rollout. Execution readiness
|
|
29
|
-
continues to fail closed on durable Job, queue, Lease, current-attention, and
|
|
30
|
-
projection-build evidence.
|
|
31
|
-
|
|
32
|
-
## Projection content and producer health
|
|
33
|
-
|
|
34
|
-
`RepositoryRuntimeProjection.metadata` distinguishes content revision, source
|
|
35
|
-
revision, content fingerprint, build attempt/success times, build errors, and
|
|
36
|
-
producer generation. Dirty-marker invalidation remains the source-change signal;
|
|
37
|
-
hot reads may rebuild in memory but do not clear the marker or rewrite a
|
|
38
|
-
projection heartbeat.
|
|
39
|
-
|
|
40
|
-
## Local Controller capability
|
|
41
|
-
|
|
42
|
-
The expected health endpoint and its Local Controller surface are authoritative.
|
|
43
|
-
Embedded, standalone, remote, disabled, and unknown modes are represented in
|
|
44
|
-
runtime state and `/health`. A healthy expected endpoint can therefore report a
|
|
45
|
-
ready capability while persisted `running=false` or stale PID evidence is kept
|
|
46
|
-
as a warning. Wrong surfaces, missing endpoints, generation mismatches, and
|
|
47
|
-
inactive-slot evidence remain blockers when the capability is required.
|
|
48
|
-
|
|
49
|
-
## Current attention and history
|
|
50
|
-
|
|
51
|
-
`buildRuntimeOperationalView` provides one read model with three explicit
|
|
52
|
-
sections: current health blockers, pending attention, and recent history.
|
|
53
|
-
Pending handoffs include acknowledged/in-progress items until they are explicitly
|
|
54
|
-
resolved or dismissed. Terminal Jobs, resolved handoffs, and prior incidents
|
|
55
|
-
remain in history and never degrade readiness merely because they exist. The
|
|
56
|
-
underlying Job, event, and handoff records are not deleted by this view.
|
|
57
|
-
|
|
58
|
-
## Ownership-aware cleanup
|
|
59
|
-
|
|
60
|
-
Ownership is embedded in supported lifecycle records through `ManagedResource`.
|
|
61
|
-
Agent Run worktrees and Execution Jobs carry an owner, type, timestamps, state,
|
|
62
|
-
and optional retention/path data. Transitional runtime-slot records are not
|
|
63
|
-
cleanup authority. Missing legacy metadata remains unknown and is protected.
|
|
64
|
-
Existing cleanup authorities retain
|
|
65
|
-
their startup/periodic/manual entrypoints, now emit a bounded audited
|
|
66
|
-
`CleanupCycleSummary`, isolate failures, and default automatic removal to 50
|
|
67
|
-
items per cycle. Type-specific collectors continue to guard process identity,
|
|
68
|
-
TTL, worktree references, and known runtime roots.
|
|
69
|
-
|
|
70
|
-
The implementation intentionally does not broaden automatic deletion for legacy
|
|
71
|
-
artifacts, edit sessions, branches, or unproven temporary resources. Those
|
|
72
|
-
resources remain retained until their existing Git/reference/lease authority can
|
|
73
|
-
prove eligibility.
|
|
74
|
-
|
|
75
|
-
## Canonical lifecycle boundary
|
|
76
|
-
|
|
77
|
-
Runtime slot, candidate/standby, and Supervisor records are no longer source
|
|
78
|
-
contracts. Cleanup proves eligibility from current Runtime ownership, exact
|
|
79
|
-
release authority, process identity, Job attempt, Lease tokens, and explicit
|
|
80
|
-
whole-release rollback references; it never infers authority from historical
|
|
81
|
-
slot or component metadata.
|
|
82
|
-
|
|
83
|
-
Focused regression coverage protects idle projections, missed refreshes, endpoint
|
|
84
|
-
capability precedence, attention/history separation, bounded cleanup, and
|
|
85
|
-
identity-safe compatibility behavior.
|
|
@@ -1,422 +0,0 @@
|
|
|
1
|
-
# Scheduler and Resource Claims
|
|
2
|
-
|
|
3
|
-
> Status: **Runtime Authority**
|
|
4
|
-
|
|
5
|
-
## 1. Objective
|
|
6
|
-
|
|
7
|
-
The scheduler decides when accepted work may execute and where it may run. It protects repository state without turning every repository into a global serial bottleneck.
|
|
8
|
-
|
|
9
|
-
The core model is:
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
Global Scheduler
|
|
13
|
-
-> Repo Actor mailbox
|
|
14
|
-
-> Job readiness
|
|
15
|
-
-> Resource Claims
|
|
16
|
-
-> Placement
|
|
17
|
-
-> Lease
|
|
18
|
-
-> Worker
|
|
19
|
-
-> Integration Queue
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## 2. Per-Repository Actor
|
|
23
|
-
|
|
24
|
-
### Target Architecture
|
|
25
|
-
|
|
26
|
-
Each Repository has one logical Repo Actor that serializes repository-local scheduling decisions.
|
|
27
|
-
|
|
28
|
-
Its mailbox accepts commands such as:
|
|
29
|
-
|
|
30
|
-
```text
|
|
31
|
-
admit Job
|
|
32
|
-
cancel Job
|
|
33
|
-
retry Job
|
|
34
|
-
grant/release Claim
|
|
35
|
-
renew/revoke Lease
|
|
36
|
-
reconcile active state
|
|
37
|
-
enqueue integration
|
|
38
|
-
enter/leave release freeze
|
|
39
|
-
update Task after evidence
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
The mailbox may be implemented through a single daemon queue, durable file queue, or equivalent mechanism. The invariant is single logical ownership, not one operating-system thread per repository.
|
|
43
|
-
|
|
44
|
-
### Actor Responsibilities
|
|
45
|
-
|
|
46
|
-
The Repo Actor owns:
|
|
47
|
-
|
|
48
|
-
- idempotency admission;
|
|
49
|
-
- dependency readiness;
|
|
50
|
-
- active write conflict decisions;
|
|
51
|
-
- Workspace and Worktree placement;
|
|
52
|
-
- Heavy Check ordering;
|
|
53
|
-
- integration ordering;
|
|
54
|
-
- release barriers;
|
|
55
|
-
- repository-local priority aging;
|
|
56
|
-
- reconciliation after restart.
|
|
57
|
-
|
|
58
|
-
It does not run Agent processes or long commands.
|
|
59
|
-
|
|
60
|
-
## 3. Global Scheduler
|
|
61
|
-
|
|
62
|
-
The Global Scheduler owns scarce system capacity:
|
|
63
|
-
|
|
64
|
-
```text
|
|
65
|
-
Agent process slots
|
|
66
|
-
Worker slots
|
|
67
|
-
Heavy Check slots
|
|
68
|
-
provider quotas
|
|
69
|
-
memory / CPU budgets
|
|
70
|
-
cross-repository priority
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
It does not inspect path-level repository conflicts itself. It asks the relevant Repo Actor for repository-local eligibility.
|
|
74
|
-
|
|
75
|
-
## 4. Resource Taxonomy
|
|
76
|
-
|
|
77
|
-
Resources use stable keys.
|
|
78
|
-
|
|
79
|
-
### Repository and Checkout Resources
|
|
80
|
-
|
|
81
|
-
```text
|
|
82
|
-
repo-state:<repoId>
|
|
83
|
-
workspace:<checkoutId>
|
|
84
|
-
git-index:<checkoutId>
|
|
85
|
-
git-refs:<repoId>
|
|
86
|
-
integration:<checkoutId>
|
|
87
|
-
release:<repoId>
|
|
88
|
-
remote-write:<repoId>
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Execution Capacity Resources
|
|
92
|
-
|
|
93
|
-
```text
|
|
94
|
-
agent-slot:<provider>
|
|
95
|
-
worker-slot:<class>
|
|
96
|
-
heavy-check:<repoId>
|
|
97
|
-
light-check:<repoId>
|
|
98
|
-
worktree-slot:<repoId>
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Path Resources
|
|
102
|
-
|
|
103
|
-
```text
|
|
104
|
-
path:<repoId>:<normalized-scope>
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Path Claims are advisory scheduling precision layered on top of Workspace/Worktree isolation. They never weaken hard path-policy enforcement.
|
|
108
|
-
|
|
109
|
-
## 5. Claim Model
|
|
110
|
-
|
|
111
|
-
A Job declares required Claims before dispatch:
|
|
112
|
-
|
|
113
|
-
```text
|
|
114
|
-
resourceKey
|
|
115
|
-
mode: shared | exclusive
|
|
116
|
-
scope
|
|
117
|
-
reason
|
|
118
|
-
holdPhase
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
`holdPhase` identifies how long the resource is required:
|
|
122
|
-
|
|
123
|
-
- admission transaction;
|
|
124
|
-
- execution;
|
|
125
|
-
- integration;
|
|
126
|
-
- verification;
|
|
127
|
-
- release.
|
|
128
|
-
|
|
129
|
-
Claims are persisted so waiting state survives Controller restart.
|
|
130
|
-
|
|
131
|
-
## 6. Claim Compatibility
|
|
132
|
-
|
|
133
|
-
General compatibility:
|
|
134
|
-
|
|
135
|
-
| Existing | Requested | Compatible |
|
|
136
|
-
| --- | --- | ---: |
|
|
137
|
-
| shared | shared | yes, subject to quota |
|
|
138
|
-
| shared | exclusive | no |
|
|
139
|
-
| exclusive | shared | no |
|
|
140
|
-
| exclusive | exclusive | no |
|
|
141
|
-
|
|
142
|
-
Path compatibility adds scope comparison. Two explicit non-overlapping path scopes may execute concurrently only when placement and checkout resources also permit it.
|
|
143
|
-
|
|
144
|
-
Read-only work normally uses shared Claims and does not conflict with path writes unless it requires a repository mechanism that itself is exclusive.
|
|
145
|
-
|
|
146
|
-
## 7. Unknown Scope
|
|
147
|
-
|
|
148
|
-
A non-read-only Job with no trustworthy write scope claims:
|
|
149
|
-
|
|
150
|
-
```text
|
|
151
|
-
path:<repoId>:*
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
It conflicts with every other repository write scope.
|
|
155
|
-
|
|
156
|
-
This is intentionally stricter than treating missing scope as “no known conflict.” Unknown means uncertainty, not independence.
|
|
157
|
-
|
|
158
|
-
The Controller may reduce the Claim after bounded investigation identifies explicit paths.
|
|
159
|
-
|
|
160
|
-
## 8. Workspace Single Writer
|
|
161
|
-
|
|
162
|
-
A Checkout Workspace has one exclusive write Claim:
|
|
163
|
-
|
|
164
|
-
```text
|
|
165
|
-
workspace:<checkoutId>
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
The following all require it:
|
|
169
|
-
|
|
170
|
-
- Direct Edit;
|
|
171
|
-
- Workspace Agent execution;
|
|
172
|
-
- repository command classified as workspace write;
|
|
173
|
-
- integration into that Checkout;
|
|
174
|
-
- deterministic formatter or generator that writes files.
|
|
175
|
-
|
|
176
|
-
Read-only queries and processes may run concurrently if they do not require an exclusive Git/index resource.
|
|
177
|
-
|
|
178
|
-
## 9. Worktree Placement
|
|
179
|
-
|
|
180
|
-
Worktree execution requires:
|
|
181
|
-
|
|
182
|
-
```text
|
|
183
|
-
worktree-slot:<repoId>
|
|
184
|
-
git-refs:<repoId> during creation/cleanup
|
|
185
|
-
workspace:<worktreeCheckoutId> during execution
|
|
186
|
-
path claims for scheduling visibility
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
Worktrees allow implementation concurrency but do not bypass:
|
|
190
|
-
|
|
191
|
-
- Task dependencies;
|
|
192
|
-
- allowed/forbidden path enforcement;
|
|
193
|
-
- Agent/Worker quotas;
|
|
194
|
-
- integration serialization;
|
|
195
|
-
- release freeze policy.
|
|
196
|
-
|
|
197
|
-
## 10. Placement Algorithm
|
|
198
|
-
|
|
199
|
-
For one ready write Job:
|
|
200
|
-
|
|
201
|
-
```text
|
|
202
|
-
1. honor explicit workspace/worktree/provider request when safe
|
|
203
|
-
2. inspect current Workspace writer
|
|
204
|
-
3. inspect repository dirty state and ownership
|
|
205
|
-
4. inspect path scope and concurrent Jobs
|
|
206
|
-
5. prefer Workspace for one serial writer
|
|
207
|
-
6. choose Worktree when concurrency or isolation is required
|
|
208
|
-
7. wait when Worktree creation or later integration would be unsafe
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
A dirty Workspace is not automatically unavailable. The Actor distinguishes:
|
|
212
|
-
|
|
213
|
-
- changes owned by the same Edit Session/Job;
|
|
214
|
-
- unrelated user changes;
|
|
215
|
-
- staged/index changes;
|
|
216
|
-
- untracked generated artifacts;
|
|
217
|
-
- known runtime-only paths.
|
|
218
|
-
|
|
219
|
-
Unrelated user changes must be preserved. A new writer may be isolated or wait.
|
|
220
|
-
|
|
221
|
-
## 11. Conflict Matrix
|
|
222
|
-
|
|
223
|
-
| Work A | Work B | Default policy |
|
|
224
|
-
| --- | --- | --- |
|
|
225
|
-
| Read-only | Read-only | concurrent |
|
|
226
|
-
| Read-only | Workspace write | concurrent when read mechanism is safe |
|
|
227
|
-
| Direct Edit | Direct Edit, same Checkout | serialize |
|
|
228
|
-
| Direct Edit | Workspace Agent, same Checkout | serialize |
|
|
229
|
-
| Workspace Agent | Workspace Agent, same Checkout | serialize |
|
|
230
|
-
| Worktree Agent | Worktree Agent | concurrent subject to quotas |
|
|
231
|
-
| Worktree Agent, overlapping paths | Worktree Agent | may execute concurrently; integration serialized and conflict-checked |
|
|
232
|
-
| Workspace write | Worktree Agent | concurrent if Git ref operations are bounded and path policy allows |
|
|
233
|
-
| Light Check | Workspace write | configured by check purity; default shared read |
|
|
234
|
-
| Heavy Check | Heavy Check, same repo | serialize |
|
|
235
|
-
| Integration | Any Checkout writer | serialize on target Workspace |
|
|
236
|
-
| Git ref mutation | Another Git ref mutation | serialize per repository |
|
|
237
|
-
| Release Gate | New write admission | release freeze blocks new writes |
|
|
238
|
-
| Remote write | Remote write | serialize and require authorization |
|
|
239
|
-
|
|
240
|
-
## 12. Conflict Outcomes
|
|
241
|
-
|
|
242
|
-
Temporary resource contention produces waiting details, not failure:
|
|
243
|
-
|
|
244
|
-
```text
|
|
245
|
-
waiting_for_workspace
|
|
246
|
-
waiting_for_worktree_slot
|
|
247
|
-
waiting_for_agent_slot
|
|
248
|
-
waiting_for_heavy_check
|
|
249
|
-
waiting_for_git_refs
|
|
250
|
-
waiting_for_integration
|
|
251
|
-
waiting_for_release_barrier
|
|
252
|
-
waiting_for_dependency
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
Each waiting Job records:
|
|
256
|
-
|
|
257
|
-
```text
|
|
258
|
-
blockedResource
|
|
259
|
-
blockedByJobIds
|
|
260
|
-
queuedAt
|
|
261
|
-
priority
|
|
262
|
-
nextEvaluationAt
|
|
263
|
-
deadlineAt
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
Irrecoverable policy or scope violations fail before execution.
|
|
267
|
-
|
|
268
|
-
## 13. Short Locks and Long Leases
|
|
269
|
-
|
|
270
|
-
### Transaction Lock
|
|
271
|
-
|
|
272
|
-
Used for atomic operations such as:
|
|
273
|
-
|
|
274
|
-
- reserve request ID;
|
|
275
|
-
- create Job;
|
|
276
|
-
- transition Task;
|
|
277
|
-
- update active index;
|
|
278
|
-
- grant Claim;
|
|
279
|
-
- advance fencing token.
|
|
280
|
-
|
|
281
|
-
It should be held for milliseconds and released before Worker execution.
|
|
282
|
-
|
|
283
|
-
### Lease
|
|
284
|
-
|
|
285
|
-
Used for long ownership:
|
|
286
|
-
|
|
287
|
-
- Workspace writer;
|
|
288
|
-
- Worktree owner;
|
|
289
|
-
- Heavy Check execution;
|
|
290
|
-
- Integration;
|
|
291
|
-
- release freeze stewardship.
|
|
292
|
-
|
|
293
|
-
Leases are renewable, expiring, and fenced.
|
|
294
|
-
|
|
295
|
-
## 14. Fencing Tokens
|
|
296
|
-
|
|
297
|
-
Every exclusive resource maintains a monotonically increasing token.
|
|
298
|
-
|
|
299
|
-
When a new Lease is granted:
|
|
300
|
-
|
|
301
|
-
```text
|
|
302
|
-
fencingToken = previousToken + 1
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
A Worker includes the token on lifecycle and result writes. A write with an older token is rejected or recorded as stale evidence.
|
|
306
|
-
|
|
307
|
-
This prevents a paused or partitioned Worker from overwriting state after ownership moved.
|
|
308
|
-
|
|
309
|
-
## 15. Heavy and Light Checks
|
|
310
|
-
|
|
311
|
-
Checks declare a concurrency class.
|
|
312
|
-
|
|
313
|
-
### Heavy Check
|
|
314
|
-
|
|
315
|
-
Examples include full test, CI, release, public export, coverage, or controller-wide verification.
|
|
316
|
-
|
|
317
|
-
Default policy:
|
|
318
|
-
|
|
319
|
-
- one active per repository;
|
|
320
|
-
- global heavy-check quota;
|
|
321
|
-
- identical Revision/check requests share execution;
|
|
322
|
-
- Revision changes while queued make the old request stale;
|
|
323
|
-
- subscriber cancellation is independent.
|
|
324
|
-
|
|
325
|
-
### Light Check
|
|
326
|
-
|
|
327
|
-
Examples include type checks or focused tests when repository policy classifies them as light.
|
|
328
|
-
|
|
329
|
-
They may run concurrently up to a per-repository limit, but should not overload the same build cache or mutate generated files without explicit Claims.
|
|
330
|
-
|
|
331
|
-
## 16. Integration Queue
|
|
332
|
-
|
|
333
|
-
Every isolated change targeting the same Checkout enters one serialized queue.
|
|
334
|
-
|
|
335
|
-
Queue record:
|
|
336
|
-
|
|
337
|
-
```text
|
|
338
|
-
sourceRunId
|
|
339
|
-
reviewedDiffHash
|
|
340
|
-
baseRevision
|
|
341
|
-
targetCheckoutId
|
|
342
|
-
priority
|
|
343
|
-
enqueuedAt
|
|
344
|
-
requiredChecks
|
|
345
|
-
```
|
|
346
|
-
|
|
347
|
-
Integration flow:
|
|
348
|
-
|
|
349
|
-
```text
|
|
350
|
-
acquire integration + workspace Claims
|
|
351
|
-
-> verify source evidence
|
|
352
|
-
-> compare target Revision and dirty state
|
|
353
|
-
-> apply deterministic patch
|
|
354
|
-
-> persist Integration Record
|
|
355
|
-
-> run focused verification
|
|
356
|
-
-> release Claims
|
|
357
|
-
-> clean Worktree only after durable success
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
On conflict:
|
|
361
|
-
|
|
362
|
-
- preserve the Worktree;
|
|
363
|
-
- mark integration conflict;
|
|
364
|
-
- release target Claims;
|
|
365
|
-
- create a focused repair action;
|
|
366
|
-
- do not rebase, reset, or overwrite automatically.
|
|
367
|
-
|
|
368
|
-
## 17. Priority and Aging
|
|
369
|
-
|
|
370
|
-
Within a repository, Jobs are ordered by:
|
|
371
|
-
|
|
372
|
-
```text
|
|
373
|
-
explicit priority
|
|
374
|
-
user-initiated over scheduled work
|
|
375
|
-
critical dependency path
|
|
376
|
-
wait age
|
|
377
|
-
risk and review boundary
|
|
378
|
-
estimated resource cost
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
Aging prevents low-priority Jobs from starving. Scheduled maintenance cannot continuously outrank a new user request.
|
|
382
|
-
|
|
383
|
-
## 18. Preemption
|
|
384
|
-
|
|
385
|
-
Default local work is non-preemptive once a Worker is actively writing. New higher-priority work waits or uses a Worktree.
|
|
386
|
-
|
|
387
|
-
Preemption may cancel only when:
|
|
388
|
-
|
|
389
|
-
- the Job contract declares it safe;
|
|
390
|
-
- no external side effect is in an uncertain state;
|
|
391
|
-
- a durable checkpoint exists;
|
|
392
|
-
- cancellation evidence and cleanup are recorded.
|
|
393
|
-
|
|
394
|
-
## 19. Release Freeze
|
|
395
|
-
|
|
396
|
-
When a repository enters Release Freeze:
|
|
397
|
-
|
|
398
|
-
- no new write Job is admitted for execution;
|
|
399
|
-
- existing writers may finish or be explicitly cancelled;
|
|
400
|
-
- Integration Queue must drain;
|
|
401
|
-
- read-only inspection and release checks may continue;
|
|
402
|
-
- Schedule Occurrences may triage but cannot dispatch mutation Jobs;
|
|
403
|
-
- the release Lease is exclusive.
|
|
404
|
-
|
|
405
|
-
The full release contract is defined in `verification-and-release-gates.md`.
|
|
406
|
-
|
|
407
|
-
## 20. Implemented Runtime and Maintenance Rule
|
|
408
|
-
|
|
409
|
-
The runtime now implements:
|
|
410
|
-
|
|
411
|
-
- one repository-specific actor mailbox;
|
|
412
|
-
- persisted Claims on every Execution Job;
|
|
413
|
-
- renewable Leases with monotonically increasing fencing tokens;
|
|
414
|
-
- conservative `repo-content:*` scope for unknown writes;
|
|
415
|
-
- explicit waiting states for Workspace, Heavy Check, Integration, release and dependencies;
|
|
416
|
-
- Workspace single-writer semantics and automatic Worktree placement for eligible Agent work;
|
|
417
|
-
- exclusive Integration, Git-ref, remote and release resources;
|
|
418
|
-
- global/per-repository capacity, provider quotas, Heavy Check limits and host-pressure admission;
|
|
419
|
-
- persisted priority aging and repository fairness state;
|
|
420
|
-
- owner-bound Worker heartbeat, Lease renewal, release and terminal writes.
|
|
421
|
-
|
|
422
|
-
New concurrency features must express their resources through this model. Additional ad-hoc long-lived locks require an ADR and may not execute on the Gateway event loop.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Session-Aware Execution and Authorization
|
|
2
|
-
|
|
3
|
-
> Status: **Runtime Authority**
|
|
4
|
-
|
|
5
|
-
## Scope
|
|
6
|
-
|
|
7
|
-
Controller MCP execution is bound to a durable Session Context and Work Handle. A
|
|
8
|
-
Work Handle is the execution binding for an existing WorkContract; it is not a
|
|
9
|
-
second task lifecycle. The binding records repository, checkout/worktree, branch,
|
|
10
|
-
Goal, principal, controller instance, and the captured permission revision.
|
|
11
|
-
|
|
12
|
-
## Execution path
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
MCP transport
|
|
16
|
-
-> Session Context
|
|
17
|
-
-> Work Handle + WorkContract
|
|
18
|
-
-> cheap/full validation
|
|
19
|
-
-> unified authorization decision
|
|
20
|
-
-> repository command or structured Git operation
|
|
21
|
-
-> bounded result / resultRef + timing audit
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Ordinary read, test, build, lint, format, local edit, and repository Git
|
|
25
|
-
operations inside the active worktree are automatically allowed when Full Access
|
|
26
|
-
is active. Request mode uses a GoalDelegation captured by `work_prepare` for the
|
|
27
|
-
same session, repository, work, Goal, and permission revision. This removes
|
|
28
|
-
per-command interruptions without creating a parallel policy engine.
|
|
29
|
-
|
|
30
|
-
## Work preparation idempotency
|
|
31
|
-
|
|
32
|
-
Creating new Work requires a stable `request_id`. Before a WorkContract or
|
|
33
|
-
managed worktree is created, the Controller atomically persists a request record
|
|
34
|
-
scoped to repository, authenticated session, and principal. The record binds a
|
|
35
|
-
canonical preparation fingerprint to one Work id. Identical sequential,
|
|
36
|
-
concurrent, or post-restart retries reuse that Work id and workspace. Reusing the
|
|
37
|
-
same request id with different preparation parameters fails closed before any
|
|
38
|
-
additional WorkContract, branch, checkout, or worktree is created.
|
|
39
|
-
|
|
40
|
-
## Authorization boundary
|
|
41
|
-
|
|
42
|
-
The unified decision is one of:
|
|
43
|
-
|
|
44
|
-
- `allow`, with source `policy`, `full_access`, `goal_delegation`,
|
|
45
|
-
`gpt_risk_delegate`, or `user_confirmation`;
|
|
46
|
-
- `user_confirmation_required`, with a durable `approvalRequestId`, exact
|
|
47
|
-
consequences, and a continuation that can be retried from the conversation;
|
|
48
|
-
- `deny`, for example secret and credential access.
|
|
49
|
-
|
|
50
|
-
Full Access does not authorize repository escape, secret access, destructive
|
|
51
|
-
loss of existing user work, force push, remote publication, deployment, or
|
|
52
|
-
other external side effects. A Goal delegation has the same hard boundaries.
|
|
53
|
-
|
|
54
|
-
## Invalidation
|
|
55
|
-
|
|
56
|
-
Delegation and approval state are invalid when any of these change: repository,
|
|
57
|
-
work handle, Goal, principal/session, controlled worktree, command parameters,
|
|
58
|
-
risk class, or permission revision. Controller instance changes explicitly
|
|
59
|
-
invalidate persisted sessions so an old process cannot continue with stale
|
|
60
|
-
authority.
|
|
61
|
-
|
|
62
|
-
## Natural-language approval
|
|
63
|
-
|
|
64
|
-
The Controller persists approval requests under repository-scoped Controller
|
|
65
|
-
Home storage. `approval_resolve` records a confirmation from the current
|
|
66
|
-
conversation; GUI approval is an optional projection, not the only continuation
|
|
67
|
-
path. A resolved request may be retried only with the same identity, permission
|
|
68
|
-
revision, and command parameters. Any incomplete approval response is an
|
|
69
|
-
internal error: user-facing responses must contain a request id and continuation.
|
|
70
|
-
|
|
71
|
-
## Compatibility and evidence
|
|
72
|
-
|
|
73
|
-
Legacy stateless repository tools remain available. They use the same command
|
|
74
|
-
classifier and authorization result, while composite execution tools provide
|
|
75
|
-
session/work validation, idempotent finalization, bounded result references, and
|
|
76
|
-
MCP timing records. Result references are Controller Home scoped to session,
|
|
77
|
-
principal, repository, and optional work handle.
|