@moretea-labs/forge 1.5.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -0
- package/CHANGELOG.md +46 -0
- package/CLAUDE.md +2 -0
- package/DESIGN.md +7 -2
- package/README.md +4 -4
- package/README.zh-CN.md +2 -2
- package/SKILL.md +2 -2
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/agents/openai.yaml +1 -1
- package/assets/hooks/hook-input.sh +11 -8
- package/assets/hooks/lib/session-state.sh +10 -7
- package/assets/hooks/lib/workflow-state.sh +13 -177
- package/assets/hooks/post-tool-observer.sh +8 -2
- package/assets/hooks/pre-edit-guard.sh +8 -39
- package/assets/hooks/prompt-guard.sh +7 -83
- package/assets/hooks/session-start-context.sh +56 -1
- package/assets/partials/05-workflow.partial.md +1 -1
- package/assets/partials-agents/03-orchestration.partial.md +1 -1
- package/assets/plugin-registry.v1.json +54 -3
- package/assets/reference-configs/document-generation.md +1 -1
- package/assets/reference-configs/harness-overview.md +1 -1
- package/assets/reference-configs/hook-operations.md +1 -1
- package/assets/reference-configs/sprint-contracts.md +3 -3
- package/assets/skill-version.json +2 -2
- package/assets/templates/contract.template.md +2 -7
- package/assets/templates/helpers/capture-plan.sh +2 -2
- package/assets/templates/helpers/check-task-workflow.sh +4 -4
- package/assets/templates/helpers/contract-worktree.sh +1 -21
- package/assets/templates/helpers/ensure-task-workflow.sh +13 -38
- package/assets/templates/helpers/migrate-project-template.sh +22 -45
- package/assets/templates/helpers/new-plan.sh +1 -1
- package/assets/templates/helpers/plan-to-todo.sh +12 -37
- package/assets/templates/helpers/ship-worktrees.sh +2 -29
- package/assets/templates/helpers/sprint-backlog.sh +6 -6
- package/assets/templates/helpers/verify-contract.sh +1 -111
- package/assets/templates/helpers/verify-sprint.sh +3 -180
- package/assets/templates/plan.template.md +1 -1
- package/assets/templates/review.template.md +9 -34
- package/assets/workflow-contract.v1.json +10 -19
- package/docs/README.md +10 -10
- package/docs/architecture/CURRENT.md +170 -0
- package/docs/architecture/EVOLUTION.md +42 -0
- package/docs/architecture/current/README.md +4 -156
- package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
- package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
- package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
- package/docs/architecture/history/README.md +7 -0
- package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
- package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
- package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
- package/docs/architecture/history.md +3 -34
- package/docs/architecture/index.md +15 -98
- package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
- package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
- package/docs/architecture/versions/1.6.md +38 -0
- package/docs/architecture/versions/1.7.md +41 -0
- package/docs/forge-chatgpt-browser-engine.md +2 -2
- package/docs/forge-chatgpt-mcp-setup.md +4 -28
- package/docs/forge-chatgpt-supervised-automation.md +3 -3
- package/docs/forge-github-issue-launcher.md +1 -1
- package/docs/forge-runtime-self-healing-loop.md +1 -1
- package/docs/operations/controller-browser-plugin.md +38 -22
- package/docs/operations/controller-performance-and-502.md +124 -0
- package/docs/operations/controller-reliability-runbook.md +1 -1
- package/docs/operations/features.md +3 -3
- package/docs/operations/github-repository.md +1 -1
- package/docs/operations/homebrew.md +2 -2
- package/docs/operations/mcp-tool-exposure.md +5 -3
- package/docs/tutorials/01-install-and-start.md +1 -1
- package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
- package/docs/wiki/Architecture.md +6 -6
- package/docs/wiki/Implementation.md +2 -2
- package/docs/wiki/Installation.md +1 -1
- package/docs/wiki/Integrations.md +2 -2
- package/docs/wiki/Quick-Start.md +1 -1
- package/docs/wiki/Work-Lifecycle.md +1 -1
- package/package.json +29 -10
- package/scripts/activate-source-baseline.ts +17 -13
- package/scripts/benchmark-background-check-overlap.ts +228 -0
- package/scripts/benchmark-mcp-host.sh +117 -0
- package/scripts/benchmark-mcp-transport.ts +170 -0
- package/scripts/benchmark-quality-harness.ts +146 -0
- package/scripts/benchmark-route-session-concurrency.ts +207 -6
- package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
- package/scripts/benchmark-typescript-navigation.ts +186 -0
- package/scripts/benchmark-work-efficiency.ts +334 -0
- package/scripts/capture-plan.sh +3 -3
- package/scripts/check-agent-tooling.sh +8 -35
- package/scripts/check-architecture-sync.sh +17 -86
- package/scripts/check-mcp-compatibility.ts +14 -0
- package/scripts/check-public-docs.sh +14 -1
- package/scripts/check-runtime-architecture.mjs +107 -64
- package/scripts/check-stable-baseline.ts +92 -0
- package/scripts/check-task-workflow.sh +4 -4
- package/scripts/contract-worktree.sh +1 -21
- package/scripts/ensure-task-workflow.sh +22 -55
- package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
- package/scripts/install-standalone-recovery.ts +24 -0
- package/scripts/lib/project-init-lib.sh +15 -44
- package/scripts/migrate-chatgpt-automation-schedules.ts +64 -0
- package/scripts/migrate-project-template.sh +23 -1179
- package/scripts/new-plan.sh +1 -1
- package/scripts/plan-to-todo.sh +11 -36
- package/scripts/run-governed-gate.ts +2 -1
- package/scripts/ship-worktrees.sh +2 -29
- package/scripts/smoke-ios-physical-device.ts +4 -2
- package/scripts/smoke-runtime-recovery.ts +1 -35
- package/scripts/smoke-schedule-engine.ts +1 -20
- package/scripts/sprint-backlog.sh +1 -1
- package/scripts/verify-contract.sh +1 -111
- package/scripts/verify-forge-runtime.sh +0 -1
- package/scripts/verify-sprint.sh +3 -180
- package/scripts/workflow-contract.ts +1 -5
- package/src/cli/commands/chatgpt.ts +31 -2
- package/src/cli/commands/init-hook.ts +3 -3
- package/src/cli/commands/mcp.ts +9 -5
- package/src/cli/commands/plugin.ts +37 -10
- package/src/cli/commands/recovery.ts +25 -3
- package/src/cli/commands/runtime.ts +55 -3
- package/src/cli/commands/security.ts +12 -1
- package/src/cli/commands/setup-profile.ts +31 -21
- package/src/cli/controller/check-runner.ts +106 -3
- package/src/cli/controller/composite-result.ts +1 -1
- package/src/cli/controller/context/focus.ts +51 -0
- package/src/cli/controller/context/instruction-context.ts +114 -0
- package/src/cli/controller/context/known-paths.ts +76 -0
- package/src/cli/controller/context/query-planning.ts +110 -0
- package/src/cli/controller/context/rule-resolution.ts +532 -0
- package/src/cli/controller/context/source-materializer.ts +278 -0
- package/src/cli/controller/context/structural.ts +16 -0
- package/src/cli/controller/context/types.ts +286 -0
- package/src/cli/controller/context-pack.ts +898 -430
- package/src/cli/controller/launch-agents.ts +77 -2
- package/src/cli/controller/operational-plan.ts +2 -2
- package/src/cli/controller/work-mode.ts +6 -4
- package/src/cli/editing/edit-session.ts +60 -7
- package/src/cli/github/github.ts +133 -0
- package/src/cli/hook/prompt-guard-decision.ts +17 -18
- package/src/cli/hook/prompt-intents.ts +1 -1
- package/src/cli/installer/managed-entries.ts +15 -1
- package/src/cli/local-bridge/console-automations.ts +225 -67
- package/src/cli/local-bridge/console-view-models.ts +3 -35
- package/src/cli/local-bridge/facade-api.ts +2 -217
- package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
- package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +153 -3
- package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
- package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +183 -3
- package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +1 -1
- package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +4 -3
- package/src/cli/local-bridge/frontend/src/lib/api.ts +18 -11
- package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
- package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +1 -1
- package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +4 -3
- package/src/cli/local-bridge/frontend/src/styles.css +27 -11
- package/src/cli/local-bridge/frontend/src/types.ts +8 -7
- package/src/cli/local-bridge/job-store.ts +1 -490
- package/src/cli/local-bridge/server.ts +29 -532
- package/src/cli/local-bridge/ui-dist/app.css +1 -1
- package/src/cli/local-bridge/ui-dist/app.js +5101 -4967
- package/src/cli/mcp/auth.ts +5 -5
- package/src/cli/mcp/instructions.ts +3 -2
- package/src/cli/mcp/legacy-tool-service.ts +0 -189
- package/src/cli/mcp/multi-repository.ts +16 -5
- package/src/cli/mcp/oauth.ts +175 -26
- package/src/cli/mcp/paths.ts +8 -2
- package/src/cli/mcp/repository-tools.ts +356 -101
- package/src/cli/mcp/server.ts +625 -54
- package/src/cli/mcp/tool-capability-cache.ts +1 -1
- package/src/cli/mcp/toolset-selection.ts +1 -1
- package/src/cli/mcp/toolset.ts +42 -5
- package/src/cli/mcp/transports/http.ts +125 -15
- package/src/cli/mcp/transports/session-registry.ts +67 -5
- package/src/cli/mcp/types.ts +3 -3
- package/src/cli/repositories/command-classifier.ts +209 -14
- package/src/cli/repositories/command-executor.ts +55 -521
- package/src/cli/repositories/command-process.ts +108 -0
- package/src/cli/repositories/command-scope.ts +99 -41
- package/src/cli/repositories/controller-home.ts +7 -8
- package/src/cli/repositories/git-command-executor.ts +2 -0
- package/src/cli/repositories/locks.ts +53 -16
- package/src/cli/repositories/repository-snapshot.ts +121 -0
- package/src/cli/repositories/safe-patch.ts +6 -4
- package/src/cli/repositories/selected-path-actions.ts +17 -9
- package/src/cli/repositories/structured-git.ts +110 -10
- package/src/cli/repository/inspector.ts +565 -62
- package/src/cli/repository/session-cache.ts +58 -17
- package/src/cli/v81-entry.ts +1 -4
- package/src/effects/fs-transaction.ts +85 -17
- package/src/runtime/context/codegraph-read-provider.ts +233 -2
- package/src/runtime/context/codegraph-sidecar.cjs +74 -40
- package/src/runtime/context/generic-lsp-provider.ts +355 -0
- package/src/runtime/context/lsp-client.ts +283 -0
- package/src/runtime/context/semantic-navigation.ts +275 -0
- package/src/runtime/context/swift-navigation.ts +565 -0
- package/src/runtime/context/typescript-navigation.ts +226 -0
- package/src/runtime/control-plane/dispatch-priority.ts +28 -0
- package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +196 -2
- package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
- package/src/runtime/control-plane/execution/execution-identity.ts +65 -14
- package/src/runtime/control-plane/execution/session-store.ts +18 -0
- package/src/runtime/control-plane/execution/validation.ts +15 -2
- package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
- package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
- package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
- package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
- package/src/runtime/control-plane/execution/work-task-receipt.ts +54 -11
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +175 -8
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +28 -21
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +87 -9
- package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
- package/src/runtime/control-plane/facade/controller-round-relay.ts +991 -0
- package/src/runtime/control-plane/facade/controller-session-store.ts +144 -14
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +9 -2
- package/src/runtime/control-plane/facade/goal-workloop.ts +885 -105
- package/src/runtime/control-plane/facade/index.ts +1 -0
- package/src/runtime/control-plane/facade/plan-contract-store.ts +211 -26
- package/src/runtime/control-plane/facade/requirement-board.ts +24 -8
- package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
- package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
- package/src/runtime/control-plane/facade/types.ts +55 -11
- package/src/runtime/control-plane/facade/work-contract-store.ts +204 -73
- package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
- package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
- package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
- package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
- package/src/runtime/control-plane/global-scheduler/maintenance.ts +145 -0
- package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
- package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
- package/src/runtime/control-plane/global-scheduler/scheduler.ts +273 -542
- package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
- package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
- package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
- package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
- package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
- package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
- package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
- package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
- package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
- package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +50 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +642 -51
- package/src/runtime/control-plane/launcher/launch-reservation-store.ts +40 -0
- package/src/runtime/control-plane/launcher/thin-launcher.ts +194 -10
- package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
- package/src/runtime/control-plane/persistence/requirement-store.ts +15 -11
- package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
- package/src/runtime/control-plane/release-retention.ts +62 -2
- package/src/runtime/control-plane/routing/route-policy.ts +7 -16
- package/src/runtime/control-plane/runtime-status-client.ts +0 -2
- package/src/runtime/diagnostics/mcp-timing.ts +19 -0
- package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
- package/src/runtime/diagnostics/performance.ts +24 -1
- package/src/runtime/evidence/event-ledger.ts +1 -1
- package/src/runtime/execution/jobs/store.ts +58 -4
- package/src/runtime/execution/jobs/types.ts +1 -1
- package/src/runtime/execution/managed-workspace.ts +203 -1
- package/src/runtime/execution/process-runtime/check-facade.ts +52 -14
- package/src/runtime/execution/process-runtime/check-result.ts +63 -2
- package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
- package/src/runtime/execution/process-runtime/command-facade.ts +346 -40
- package/src/runtime/execution/process-runtime/gc.ts +98 -12
- package/src/runtime/execution/process-runtime/lightweight-managed.ts +1184 -0
- package/src/runtime/execution/process-runtime/persisted-check.ts +57 -6
- package/src/runtime/execution/process-runtime/resource-claims.ts +97 -8
- package/src/runtime/execution/process-runtime/runtime.ts +59 -4
- package/src/runtime/execution/process-runtime/store.ts +7 -0
- package/src/runtime/execution/process-runtime/types.ts +2 -0
- package/src/runtime/execution/thin-harness/async-process.ts +12 -2
- package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
- package/src/runtime/execution/workers/executor.ts +0 -48
- package/src/runtime/gateway/mcp/execution-tools.ts +1219 -126
- package/src/runtime/gateway/mcp/process-tools.ts +83 -37
- package/src/runtime/gateway/mcp/router.ts +185 -83
- package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +546 -0
- package/src/runtime/gateway/mcp/runtime-tools.ts +2555 -1616
- package/src/runtime/model-clients/deepseek-adapter.ts +0 -32
- package/src/runtime/plugins/app-store-connect-adapter.ts +123 -19
- package/src/runtime/plugins/browser-adapter.ts +2925 -318
- package/src/runtime/plugins/browser-automation-service.ts +10 -0
- package/src/runtime/plugins/browser-handoff-host.ts +6 -31
- package/src/runtime/plugins/browser-handoff.ts +92 -5
- package/src/runtime/plugins/browser-macos-bridge.ts +586 -45
- package/src/runtime/plugins/browser-node-bridge.ts +6 -34
- package/src/runtime/plugins/browser-provider-registry.ts +109 -0
- package/src/runtime/plugins/browser-runtime-contract.ts +152 -0
- package/src/runtime/plugins/browser-runtime.ts +183 -0
- package/src/runtime/plugins/browser-session-authority.ts +332 -0
- package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
- package/src/runtime/plugins/desktop-operator-registration.ts +15 -12
- package/src/runtime/plugins/external-adapter.ts +324 -3
- package/src/runtime/plugins/external-registration.ts +84 -5
- package/src/runtime/plugins/external-unix-socket.ts +7 -1
- package/src/runtime/plugins/first-party-registry.ts +4 -2
- package/src/runtime/plugins/github-adapter.ts +125 -0
- package/src/runtime/plugins/gmail-adapter.ts +28 -2
- package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
- package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
- package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
- package/src/runtime/plugins/ios-adapter.ts +106 -16
- package/src/runtime/plugins/ios-agent-device.ts +234 -64
- package/src/runtime/plugins/ios-physical-device.ts +1143 -392
- package/src/runtime/plugins/lightweight-action.ts +153 -0
- package/src/runtime/plugins/local-system-adapter.ts +125 -8
- package/src/runtime/plugins/macos-capability-broker.ts +55 -9
- package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
- package/src/runtime/plugins/plugin-management-adapter.ts +181 -0
- package/src/runtime/plugins/resend-adapter.ts +1 -1
- package/src/runtime/plugins/store.ts +366 -24
- package/src/runtime/plugins/types.ts +39 -2
- package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
- package/src/runtime/projections/git-status-sampler.ts +16 -16
- package/src/runtime/projections/materialized-view.ts +28 -10
- package/src/runtime/recovery/actions.ts +0 -10
- package/src/runtime/recovery/classifier.ts +0 -9
- package/src/runtime/recovery/maintenance-executor.ts +415 -18
- package/src/runtime/recovery/probe.ts +0 -1
- package/src/runtime/recovery/types.ts +0 -1
- package/src/runtime/root/mcp-transport.ts +180 -10
- package/src/runtime/root/package-connector-service.ts +186 -8
- package/src/runtime/root/package-runtime-release.ts +143 -17
- package/src/runtime/root/package-runtime-service.ts +430 -22
- package/src/runtime/root/release-manifest.ts +7 -2
- package/src/runtime/root/release-materialize.ts +162 -19
- package/src/runtime/root/release-store.ts +48 -11
- package/src/runtime/root/runtime.ts +23 -5
- package/src/runtime/root/service.ts +100 -27
- package/src/runtime/root/types.ts +2 -0
- package/src/runtime/safe-tooling/index.ts +0 -1
- package/src/runtime/safe-tooling/ios-development.ts +321 -63
- package/src/runtime/safe-tooling/types.ts +0 -30
- package/src/runtime/shared/trusted-executable.ts +62 -0
- package/src/runtime/shared/trusted-node-executable.ts +48 -0
- package/src/runtime/standalone-recovery/core.ts +702 -94
- package/src/runtime/standalone-recovery/entry.ts +99 -23
- package/src/runtime/standalone-recovery/installer.ts +19 -3
- package/src/runtime/standalone-recovery/service-labels.ts +2 -0
- package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
- package/src/runtime/workflow/schedules/browser-probe.ts +258 -0
- package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +40 -0
- package/src/runtime/workflow/schedules/engine.ts +509 -80
- package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
- package/src/runtime/workflow/schedules/settlement.ts +48 -4
- package/src/runtime/workflow/schedules/store.ts +131 -10
- package/src/runtime/workflow/schedules/types.ts +6 -3
- package/src/runtime/workflow/schedules/work-continuation.ts +120 -34
- package/src/testing/test-governance.ts +8 -40
- package/assets/reference-configs/heartbeat-triage.md +0 -57
- package/assets/templates/helpers/harness-trace-grade.sh +0 -150
- package/assets/templates/helpers/heartbeat-triage.sh +0 -361
- package/assets/templates/helpers/maintenance-triage.sh +0 -167
- package/bin/forge-desktop-helper.mjs +0 -204
- package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
- package/docs/architecture/current/architecture-invariants.md +0 -331
- package/docs/architecture/current/automation-and-schedule-engine.md +0 -453
- package/docs/architecture/current/codegraph-context-provider.md +0 -226
- package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
- package/docs/architecture/current/controller-repository-decoupling.md +0 -148
- package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -354
- package/docs/architecture/current/entity-model.md +0 -592
- package/docs/architecture/current/external-plugin-governance.md +0 -396
- package/docs/architecture/current/failure-recovery.md +0 -447
- package/docs/architecture/current/governance.md +0 -213
- package/docs/architecture/current/human-interaction-plane.md +0 -87
- package/docs/architecture/current/implementation-status.md +0 -128
- package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
- package/docs/architecture/current/legacy-governance.md +0 -58
- package/docs/architecture/current/local-workspace-target-grants.md +0 -70
- package/docs/architecture/current/migration-roadmap.md +0 -105
- package/docs/architecture/current/multi-repository-execution.md +0 -371
- package/docs/architecture/current/operations-runbook.md +0 -45
- package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
- package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
- package/docs/architecture/current/repository-access-modes.md +0 -102
- package/docs/architecture/current/route-policy.md +0 -15
- package/docs/architecture/current/route-session-concurrency.md +0 -85
- package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
- package/docs/architecture/current/runtime-directory-map.md +0 -49
- package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
- package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
- package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
- package/docs/architecture/current/system-overview.md +0 -144
- package/docs/architecture/current/target-requirements-traceability.md +0 -202
- package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
- package/docs/architecture/current/thin-harness-v1.md +0 -311
- package/docs/architecture/current/verification-and-release-gates.md +0 -391
- package/docs/forge-autonomous-goal-loop.md +0 -9
- package/docs/forge-provider-configuration.md +0 -7
- package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -83
- package/docs/operations/controller-desktop-plugin.md +0 -112
- package/docs/operations/gmail-assistant-routines.md +0 -186
- package/docs/operations/personal-assistant-operator-guide.md +0 -61
- package/docs/operations/provider-configuration.md +0 -31
- package/scripts/harness-trace-grade.sh +0 -150
- package/scripts/heartbeat-triage.sh +0 -361
- package/scripts/maintenance-triage.sh +0 -167
- package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
- package/src/cli/repositories/goal-registry.ts +0 -239
- package/src/runtime/assistant/action-proposals.ts +0 -279
- package/src/runtime/assistant/intent.ts +0 -395
- package/src/runtime/assistant/model-provider.ts +0 -460
- package/src/runtime/assistant/openapi.ts +0 -223
- package/src/runtime/assistant/policy.ts +0 -89
- package/src/runtime/assistant/readiness.ts +0 -258
- package/src/runtime/assistant/routine-runtime.ts +0 -477
- package/src/runtime/assistant/schedule-binding.ts +0 -171
- package/src/runtime/assistant/standing-grants.ts +0 -375
- package/src/runtime/assistant/store.ts +0 -243
- package/src/runtime/assistant/types.ts +0 -135
- package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
- package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
- package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
- package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
- package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
- package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
- package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
- package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
- package/src/runtime/control-plane/goal-loop/index.ts +0 -13
- package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
- package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
- package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
- package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
- package/src/runtime/control-plane/goal-loop/types.ts +0 -378
- package/src/runtime/control-plane/startup-recovery.ts +0 -198
- package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
- package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
- package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
- package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
- package/src/runtime/plugins/desktop-adapter.ts +0 -374
- package/src/runtime/safe-tooling/browser-safe.ts +0 -133
- package/src/runtime/workflow/findings/store.ts +0 -204
- package/src/runtime/workflow/findings/types.ts +0 -58
- package/src/runtime/workflow/portfolio/engine.ts +0 -20
- package/src/runtime/workflow/portfolio/store.ts +0 -185
- package/src/runtime/workflow/portfolio/types.ts +0 -29
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
# Thin Harness V1
|
|
2
|
-
|
|
3
|
-
> Status: **Runtime Authority (additive)**
|
|
4
|
-
> Baseline revision: feature branch `grok/thin-harness-v1`
|
|
5
|
-
> Review remediation: round-3 P0.1a/b — ephemeral lease, no write-time repo lock, ownership abort, expanded claim overlap
|
|
6
|
-
|
|
7
|
-
## Purpose
|
|
8
|
-
|
|
9
|
-
Reduce fixed middleware latency for everyday repository operations without weakening safety boundaries.
|
|
10
|
-
|
|
11
|
-
Core principle:
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
Default to direct Fast Path execution.
|
|
15
|
-
Escalate to Durable Work only when recovery, background, isolation,
|
|
16
|
-
concurrent writes, or high-risk control is required.
|
|
17
|
-
Use durable Goal Workloop plus PlanContract/Work only when multiple independent, long-lived deliverables need resumable coordination.
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Current Implementation
|
|
21
|
-
|
|
22
|
-
### Components
|
|
23
|
-
|
|
24
|
-
| Component | Path | Responsibility |
|
|
25
|
-
| --- | --- | --- |
|
|
26
|
-
| Execution Router | `src/runtime/execution/thin-harness/execution-router.ts` | Decide `fast` / `durable` / `reject` |
|
|
27
|
-
| Latency Trace | `src/runtime/execution/thin-harness/latency-trace.ts` | Mutually exclusive Fast Path segments |
|
|
28
|
-
| Async Process | `src/runtime/execution/thin-harness/async-process.ts` | Bounded async spawn + process-tree kill + AbortSignal |
|
|
29
|
-
| Mutation Ownership | `src/runtime/execution/thin-harness/mutation-gate.ts` | Fast/Durable shared ownership via Execution Lease arbiter (`workspace:<checkoutId>`) |
|
|
30
|
-
| Request Ledger | `src/runtime/execution/thin-harness/request-ledger.ts` | Atomic create-if-absent idempotency before mutation |
|
|
31
|
-
| Fast Executor | `src/runtime/execution/thin-harness/fast-executor.ts` | Async Fast Path execution |
|
|
32
|
-
| Fast Receipt | `src/runtime/execution/thin-harness/fast-receipt.ts` | Bounded receipt; failures do not mask mutation success |
|
|
33
|
-
| Batch Executor | `src/runtime/execution/thin-harness/batch-executor.ts` | Typed multi-step batch (≤20); one parent receipt; whole-batch write ownership |
|
|
34
|
-
| Lightweight Lanes | `src/runtime/execution/thin-harness/lightweight-lanes.ts` | Read lanes (strict readonly effects) + patch_proposal_validate |
|
|
35
|
-
| MCP integration | `src/cli/mcp/repository-tools.ts` | Fast path for eligible `repository_command_execute`; optional batch/lanes tools |
|
|
36
|
-
| Command executor | `src/cli/repositories/command-executor.ts` | `repositorySnapshotAsync`, bounded non-persistent readonly execution, AbortSignal, process-group kill on async path |
|
|
37
|
-
|
|
38
|
-
### Execution modes
|
|
39
|
-
|
|
40
|
-
```ts
|
|
41
|
-
interface ExecutionDecision {
|
|
42
|
-
mode: "fast" | "durable" | "reject";
|
|
43
|
-
reasons: string[];
|
|
44
|
-
risk: string;
|
|
45
|
-
estimatedClass: "short" | "long" | "unknown";
|
|
46
|
-
requiresIsolation: boolean;
|
|
47
|
-
requiresRecovery: boolean;
|
|
48
|
-
suggestedOperation?: string;
|
|
49
|
-
}
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Deterministic task tiers
|
|
53
|
-
|
|
54
|
-
The sole Route Policy exposes three task-shape tiers. These are routing labels over existing execution primitives, not separate engines:
|
|
55
|
-
|
|
56
|
-
1. **Direct** — `direct_edit` + `direct_control` + `fast`. Use for small, scope-clear, low-risk work. Readonly work creates no Work; small mutations may retain lightweight Work lineage without Issue, Plan, or isolated worktree by default.
|
|
57
|
-
2. **Bounded Work** — `bounded_work` + `goal_workloop` + `durable`. Use for one-owner work that needs investigation, recovery, isolation, protected-path handling, or broader bounded scope. It uses the existing WorkContract / `rh_work` lifecycle and does **not** require an Issue or Plan.
|
|
58
|
-
3. **Coordinated durable Work** — `bounded_work` + `goal_workloop` + `durable`. Use when multiple independent deliverables need resumable coordination; decompose them with PlanContract/Work instead of a separate project-level lifecycle.
|
|
59
|
-
|
|
60
|
-
`quick_agent` and `issue_task` remain executor/delegation-oriented modes when an Agent is explicitly requested. Provider choice never promotes a small task into a heavier lifecycle by itself. An explicit approved Plan may bind dependent Work steps, but Plan is optional for ordinary Bounded Work.
|
|
61
|
-
|
|
62
|
-
### Fast Path eligibility (default)
|
|
63
|
-
|
|
64
|
-
- repository file read (size-capped)
|
|
65
|
-
- bounded search (async `rg` preferred; inspector fallback after yield)
|
|
66
|
-
- Git status / bounded Git diff (async spawn)
|
|
67
|
-
- small path-scoped patch (pre-apply path validation + rollback)
|
|
68
|
-
- path-scoped stage / commit under Checkout Mutation Gate
|
|
69
|
-
- allowlisted typed argv **readonly** commands
|
|
70
|
-
- **strict** focused checks only (typed argv + explicit file/filter; bare `bun test` / `npm test` / `pytest` → durable)
|
|
71
|
-
- continuous local edits on one checkout
|
|
72
|
-
|
|
73
|
-
### Repository-free Target execution
|
|
74
|
-
|
|
75
|
-
An authorized `local_system` Target Grant is a first-class bounded workspace target and does **not** require Repository Registry enrollment. It uses the existing `controllerHome/system/local-system/targets.json` authority and carries a stable `workspaceId`, owner scope, access mode, canonical root, and identity fingerprint.
|
|
76
|
-
|
|
77
|
-
- file reads/writes remain symlink-safe and root-bounded;
|
|
78
|
-
- `execute_command` accepts typed argv only, reuses the repository command classifier/scope policy and bounded process runner, and caps execution at 30 seconds;
|
|
79
|
-
- readonly Target commands create no WorkContract;
|
|
80
|
-
- Target mutations create one lightweight `direct_control` WorkContract and terminalize it in the same request with a `local_effect` completion receipt;
|
|
81
|
-
- physical Target mutations are serialized by canonical filesystem root through existing Controller global resource locks; different roots remain concurrent, and multi-target copy/move acquires roots in deterministic order to avoid deadlock;
|
|
82
|
-
- lock identity is the canonical root, not `targetKey`, owner, or `workspaceId`, so two grants pointing at the same physical directory cannot bypass write serialization;
|
|
83
|
-
- readonly Target file/command actions remain outside the mutation lock path;
|
|
84
|
-
- remote/destructive commands are rejected on Target execution;
|
|
85
|
-
- `workspace_write` commands are fail-closed unless they are replay-safe local validation or part of the narrow path-governed filesystem mutation allowlist; unknown/system side effects require Repository promotion;
|
|
86
|
-
- Git mutations are rejected until the target is promoted to a registered Repository/Checkout, because Git refs and worktree ownership require repository-scoped fencing;
|
|
87
|
-
- long-running, recoverable, release, multi-checkout, or cross-session cache-heavy workflows should promote the target to a registered Repository instead of extending Target execution into a second scheduler/work model.
|
|
88
|
-
|
|
89
|
-
This preserves repository-free local operation without inventing a fake RepositoryRecord, WorkspaceJob, or parallel route policy.
|
|
90
|
-
|
|
91
|
-
### Check semantic single-flight and evidence reuse
|
|
92
|
-
|
|
93
|
-
`run_check` distinguishes **consumer identity** from **physical execution identity**. `requestId`, Session, Work, EditSession, and checkout coordinates remain consumer/audit bindings; they no longer define whether the same Check must run twice.
|
|
94
|
-
|
|
95
|
-
The authoritative semantic Check identity reuses the existing Controller Check cache vocabulary and binds:
|
|
96
|
-
|
|
97
|
-
- repository content revision (including dirty/untracked workspace content, excluding harness runtime artifacts);
|
|
98
|
-
- immutable Check definition digest (`command`, `cwd`, declared effects, configured timeout/source);
|
|
99
|
-
- bounded requested timeout contract;
|
|
100
|
-
- non-secret child execution environment/toolchain fingerprint;
|
|
101
|
-
- an explicit Check execution identity schema version.
|
|
102
|
-
|
|
103
|
-
Process Runtime keeps one repo-scoped semantic binding from that identity to the existing persisted Process record. A matching active execution is single-flighted across request/session consumers. A matching successful terminal Process may be reused as completed evidence; failed, timed-out, cancelled, missing-stale, or identity-mismatched Processes are never treated as successful cache hits.
|
|
104
|
-
|
|
105
|
-
Terminal Process lease cleanup remains a single retryable phase on the Process record. A failed exact-set, scope, or fencing check leaves `leaseReleaseState=pending` and records one redacted structured `leaseReleaseFailure` (code, message, attempt time, and count). Startup recovery retries the same canonical cleanup owner; success clears the diagnostic and moves the existing phase to `released`. The diagnostic does not authorize release, weaken fencing, or create another recovery state machine.
|
|
106
|
-
|
|
107
|
-
Cross-checkout/worktree reuse is deliberately narrower than same-checkout reuse. It is allowed only when the consumer checkout is clean, the Check declares bounded effects with no workspace writes/network/shared temp, and its toolchain is explicitly fingerprintable. Otherwise the identity is checkout-scoped and a different checkout must execute independently. Dirty workspaces therefore never borrow evidence from another checkout merely because their Git HEAD matches.
|
|
108
|
-
|
|
109
|
-
Verification receipts preserve the physical `processId` and source checkout while rebinding Session/Work/EditSession/request fields to the current consumer only after recomputing and exactly matching the current semantic Check identity. This prevents the first caller's identity from being attributed to later consumers.
|
|
110
|
-
|
|
111
|
-
Successful semantic Check Process evidence is retained beyond the ordinary age cutoff so completed reuse survives across sessions, but it remains subject to the existing per-repository terminal Process budget. This is an index over the existing Process/check evidence authority, **not** a second Check cache, scheduler, Job store, or execution engine.
|
|
112
|
-
|
|
113
|
-
### Must use Durable Path
|
|
114
|
-
|
|
115
|
-
- background / cross-session recovery
|
|
116
|
-
- unfocused or full test suites
|
|
117
|
-
- timeouts above Fast Path cap (**15s**)
|
|
118
|
-
- remote writes (`git push`, PR merge/delete, publish)
|
|
119
|
-
- deploy / release / supervisor switch
|
|
120
|
-
- destructive operations
|
|
121
|
-
- worker isolation / worktree / durable retry
|
|
122
|
-
- Agent Run
|
|
123
|
-
- untrusted / unclassified / shell commands
|
|
124
|
-
- device / browser long interaction sessions
|
|
125
|
-
- human handoff flows
|
|
126
|
-
- checkout mutation busy (durable writer or competing fast writer)
|
|
127
|
-
|
|
128
|
-
### Must reject (or strong confirmation path)
|
|
129
|
-
|
|
130
|
-
- out-of-scope repository writes
|
|
131
|
-
- secret reads
|
|
132
|
-
- shell injection / policy bypass
|
|
133
|
-
- implicit remote writes
|
|
134
|
-
- unsupported system-level mutation
|
|
135
|
-
|
|
136
|
-
## What Fast Path does **not** create
|
|
137
|
-
|
|
138
|
-
For short **typed-argv** readonly repository commands, the bounded direct reader additionally creates **no Process record, execution Lease, or Controller audit write**. It performs full repository identity/scope validation and before/after read-only Git observation, but never needs Runtime writer authority. Shell-form reads, mutating commands, and managed/long checks continue to use Process Runtime + Lease fencing.
|
|
139
|
-
|
|
140
|
-
- ExecutionJob
|
|
141
|
-
- Local Job
|
|
142
|
-
- Scheduler record
|
|
143
|
-
- Worker process
|
|
144
|
-
- Issue Task
|
|
145
|
-
- Project Board records
|
|
146
|
-
- full projection rebuild per step
|
|
147
|
-
- per-step Evidence files
|
|
148
|
-
|
|
149
|
-
## What Fast Path retains
|
|
150
|
-
|
|
151
|
-
- repository binding + checkout identity
|
|
152
|
-
- path validation + command policy
|
|
153
|
-
- permission snapshot / authorization for mutating commands
|
|
154
|
-
- typed argv, timeout, **AbortSignal** cancellation, output caps (streamed, not unbounded buffer), secret redaction
|
|
155
|
-
- before/after Git snapshot for commands
|
|
156
|
-
- **Checkout Mutation Gate** shared with durable write leases (plus controller lock for serialization)
|
|
157
|
-
- one final Fast Receipt (`receiptMode: standalone`); batch/lanes use parent receipt only (`receiptMode: none` on children)
|
|
158
|
-
- optional `requestId` + `inputHash` idempotent replay for mutations
|
|
159
|
-
|
|
160
|
-
## Async execution model (P0)
|
|
161
|
-
|
|
162
|
-
```text
|
|
163
|
-
Gateway
|
|
164
|
-
↓
|
|
165
|
-
Fast Router
|
|
166
|
-
↓
|
|
167
|
-
async Fast Executor
|
|
168
|
-
↓
|
|
169
|
-
bounded child process (process group) / yielded search
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
- `repository_command_execute` Fast Path uses `executeRepositoryCommandAsync`.
|
|
173
|
-
- Git status/diff/stage use `runBoundedGit` (async spawn).
|
|
174
|
-
- Timeout/cancel: SIGTERM process group → grace → SIGKILL via `terminateProcessTree`.
|
|
175
|
-
- stdout/stderr collectors cap while streaming.
|
|
176
|
-
|
|
177
|
-
## Process output confidentiality
|
|
178
|
-
|
|
179
|
-
Process Runtime applies one shared bounded redaction policy before stdout/stderr
|
|
180
|
-
is written to durable log files. The same policy is applied defensively to
|
|
181
|
-
Process records, MCP responses, large `resultRef` payloads, searches, and error
|
|
182
|
-
messages. Command descriptors are mode `0600` and are removed by the independent
|
|
183
|
-
Runner immediately after parsing and child spawn.
|
|
184
|
-
|
|
185
|
-
Terminal historical logs and result payloads are sanitized in place on bounded
|
|
186
|
-
read/recovery/maintenance paths. Maintenance reports contain counts and entity
|
|
187
|
-
ids only, never the removed contents. Redaction or artifact replacement is not
|
|
188
|
-
credential revocation: when a real credential may have appeared in any output,
|
|
189
|
-
the credential owner must rotate it at the provider and review downstream use.
|
|
190
|
-
|
|
191
|
-
## Checkout Mutation Ownership (round-3)
|
|
192
|
-
|
|
193
|
-
Fast and Durable share the **same** Execution Lease arbiter:
|
|
194
|
-
|
|
195
|
-
```text
|
|
196
|
-
resourceKey = workspace:<checkoutId>
|
|
197
|
-
mode = write
|
|
198
|
-
visibility = ephemeral (Fast) | durable (Jobs)
|
|
199
|
-
ownerJobId = fast:<session>:<op>:<requestId> | JOB-<durable>
|
|
200
|
-
fencingToken = per-resource monotonic counter (lease store)
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
Lock model (critical):
|
|
204
|
-
|
|
205
|
-
```text
|
|
206
|
-
repository controller lock → ONLY acquire / renew / release lease metadata
|
|
207
|
-
mutation lease → covers the full real write lifecycle
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
- Fast uses `visibility: ephemeral` — active lease set + fencing only; **no** Runtime Event, **no** Projection dirty, **no** Scheduler wake.
|
|
211
|
-
- Durable path remains default (events + projection + wake).
|
|
212
|
-
- `workspace:<checkoutId>` overlaps `path:` (same/unscoped checkout), `git-index:<checkoutId>`, `git-head:<checkoutId>`, and `git-ref*` claims.
|
|
213
|
-
- Snapshot is taken **after** lease acquire (never before).
|
|
214
|
-
- Heartbeat renew every TTL/3; renew failure aborts a dedicated ownership `AbortSignal` (combined with caller signal) and fails closed.
|
|
215
|
-
- Write path does **not** hold repository controller lock during `runBody` (so renew cannot `LOCK_HELD`).
|
|
216
|
-
- Batch passes real `externalGate` + `externalHelpers` (assert/renew/signal) into each step.
|
|
217
|
-
- Request Ledger: O_EXCL begin, CAS complete (never throws over mutation success), stale `in_progress` → `unknown` (reconcile).
|
|
218
|
-
|
|
219
|
-
## Batch API (typed)
|
|
220
|
-
|
|
221
|
-
```ts
|
|
222
|
-
interface RepositoryBatchRequest {
|
|
223
|
-
repoId: string;
|
|
224
|
-
checkoutId?: string;
|
|
225
|
-
mode?: "auto" | "fast" | "durable";
|
|
226
|
-
steps: RepositoryBatchStep[]; // max 20
|
|
227
|
-
stopOnError?: boolean; // default true
|
|
228
|
-
requestId?: string;
|
|
229
|
-
signal?: AbortSignal;
|
|
230
|
-
}
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
Allowed step kinds:
|
|
234
|
-
|
|
235
|
-
```text
|
|
236
|
-
read_file | search | git_status | git_diff | apply_patch
|
|
237
|
-
run_short_command | run_focused_check | stage_paths | commit_paths
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
Rules:
|
|
241
|
-
|
|
242
|
-
- one repository binding and one pre-execution route decision for the whole batch
|
|
243
|
-
- never silently upgrade mid-batch; durable steps fail closed before any step runs
|
|
244
|
-
- one primary Fast Receipt for the batch (no per-step receipts)
|
|
245
|
-
- write batches: single mutation gate for all mutating steps
|
|
246
|
-
- commit-containing batches are marked `nonAtomic=true` (no pseudo-transaction rollback)
|
|
247
|
-
- large payloads may use existing result references
|
|
248
|
-
|
|
249
|
-
## Lightweight Lanes
|
|
250
|
-
|
|
251
|
-
### Read-only Analysis Lane
|
|
252
|
-
|
|
253
|
-
- max concurrency 4
|
|
254
|
-
- shared checkout, no branch / worktree / Issue
|
|
255
|
-
- parent receipt only; child lanes use `receiptMode: none`
|
|
256
|
-
- real overlap via async primitives; `concurrent` flag reports start/finish overlap
|
|
257
|
-
- fail-fast optional (default continue)
|
|
258
|
-
|
|
259
|
-
### Patch Proposal Validate (not Agent analysis)
|
|
260
|
-
|
|
261
|
-
- validates caller-supplied proposals for path conflicts only
|
|
262
|
-
- returns `proposalId`, `baseRevision`, digests, writePaths
|
|
263
|
-
- never writes the main checkout
|
|
264
|
-
- Integrator rechecks revision, conflicts, writePaths subset, digests before apply
|
|
265
|
-
|
|
266
|
-
## Durable coordination boundary
|
|
267
|
-
|
|
268
|
-
- Fast Path never depends on a project-level orchestration lifecycle.
|
|
269
|
-
- Independent deliverables use Goal Workloop plus PlanContract/Work only when durable coordination is needed.
|
|
270
|
-
- ordinary Direct Edit must not auto-upgrade merely because parallel analysis is possible.
|
|
271
|
-
|
|
272
|
-
## Latency measurement
|
|
273
|
-
|
|
274
|
-
Fast Path local segments (mutually exclusive; not full Gateway fiction):
|
|
275
|
-
|
|
276
|
-
```text
|
|
277
|
-
routingMs policyMs snapshotMs executionMs receiptMs totalMs
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
Compatibility aliases may map:
|
|
281
|
-
|
|
282
|
-
```text
|
|
283
|
-
gatewayValidationMs ← routingMs
|
|
284
|
-
authorizationMs ← policyMs
|
|
285
|
-
repositorySnapshotMs ← snapshotMs
|
|
286
|
-
operationExecutionMs ← executionMs
|
|
287
|
-
evidencePersistenceMs ← receiptMs
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
Unmeasured durable pipeline stages stay 0 (not claimed as measured zero cost).
|
|
291
|
-
|
|
292
|
-
Defaults return only `totalMs`. Full breakdown under `includeLatencyBreakdown`.
|
|
293
|
-
|
|
294
|
-
Benchmark entrypoint (library path; A/B via real Gateway still recommended before merge claims):
|
|
295
|
-
|
|
296
|
-
```bash
|
|
297
|
-
bun scripts/benchmark-thin-harness.ts
|
|
298
|
-
bun scripts/benchmark-thin-harness.ts --json
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
## Public surface note
|
|
302
|
-
|
|
303
|
-
Thin Harness is primarily a **library execution path** used by eligible repository operations (for example short readonly `repository_command_execute`). Optional batch/lanes/receipt tools exist on the repository tool definition set for `full` toolset / programmatic use. They are intentionally **not** bulk-added to the 128-cap stable ChatGPT schema in this slice.
|
|
304
|
-
|
|
305
|
-
## Migration Rule
|
|
306
|
-
|
|
307
|
-
1. Prefer Fast Path for short local work.
|
|
308
|
-
2. Escalate explicitly — never silent mid-flight upgrades.
|
|
309
|
-
3. Keep Durable Work / Scheduler / Worker unchanged for long and high-risk work.
|
|
310
|
-
4. Do not trade safety for speed.
|
|
311
|
-
5. Receipt persistence failure never rewrites a successful mutation outcome.
|
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
# Verification and Release Gates
|
|
2
|
-
|
|
3
|
-
> Status: **Runtime Authority**
|
|
4
|
-
|
|
5
|
-
## 1. Objective
|
|
6
|
-
|
|
7
|
-
Verification determines whether evidence satisfies a declared contract for an exact repository state. Release gating determines whether the repository is ready for an externally visible delivery action.
|
|
8
|
-
|
|
9
|
-
The system distinguishes:
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
execution success
|
|
13
|
-
integration success
|
|
14
|
-
verification success
|
|
15
|
-
Task acceptance
|
|
16
|
-
Issue completion
|
|
17
|
-
release readiness
|
|
18
|
-
release execution
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
No step implies the next without its required evidence.
|
|
22
|
-
|
|
23
|
-
## 2. Evidence Principles
|
|
24
|
-
|
|
25
|
-
Evidence must be:
|
|
26
|
-
|
|
27
|
-
- generated by the Controller or a trusted repository system;
|
|
28
|
-
- bound to stable repository and checkout identity;
|
|
29
|
-
- bound to an exact Revision or artifact hash;
|
|
30
|
-
- addressable through a durable artifact reference;
|
|
31
|
-
- bounded when returned to clients;
|
|
32
|
-
- honest about failure, timeout, truncation, or missing data;
|
|
33
|
-
- reusable only while its cache/precondition contract remains valid.
|
|
34
|
-
|
|
35
|
-
Worker or Agent prose is supplementary evidence, not authoritative pass/fail proof.
|
|
36
|
-
|
|
37
|
-
## 3. Verification Record
|
|
38
|
-
|
|
39
|
-
A Verification Record contains:
|
|
40
|
-
|
|
41
|
-
```text
|
|
42
|
-
repoId
|
|
43
|
-
checkoutId
|
|
44
|
-
revision
|
|
45
|
-
issueId / taskId
|
|
46
|
-
runId / editSessionId / integrationId
|
|
47
|
-
reviewedDiffHash
|
|
48
|
-
checkResults
|
|
49
|
-
commandEvidence
|
|
50
|
-
acceptanceResults
|
|
51
|
-
reviewer
|
|
52
|
-
verifiedAt
|
|
53
|
-
environmentFingerprint
|
|
54
|
-
artifact references
|
|
55
|
-
staleAt / staleReason when invalidated
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
A caller cannot satisfy required named checks by reporting `ok: true`. The Controller executes the check or verifies a trusted external artifact.
|
|
59
|
-
|
|
60
|
-
## 4. Exact Revision
|
|
61
|
-
|
|
62
|
-
Verification applies to one Revision definition, normally derived from:
|
|
63
|
-
|
|
64
|
-
```text
|
|
65
|
-
HEAD
|
|
66
|
-
tracked working-tree diff
|
|
67
|
-
relevant untracked files
|
|
68
|
-
check configuration
|
|
69
|
-
environment fingerprint
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
The Revision contract excludes known runtime-only evidence directories.
|
|
73
|
-
|
|
74
|
-
If relevant files change after verification:
|
|
75
|
-
|
|
76
|
-
- the previous record remains historical;
|
|
77
|
-
- completion logic treats it as stale;
|
|
78
|
-
- required verification runs again for the new Revision.
|
|
79
|
-
|
|
80
|
-
## 5. Verification Layers
|
|
81
|
-
|
|
82
|
-
### Layer 1 — Patch Integrity
|
|
83
|
-
|
|
84
|
-
For Direct Edit or integration:
|
|
85
|
-
|
|
86
|
-
- allowed paths respected;
|
|
87
|
-
- before/after hashes recorded;
|
|
88
|
-
- diff is available;
|
|
89
|
-
- change budget respected;
|
|
90
|
-
- no unsupported binary/rename behavior hidden;
|
|
91
|
-
- user changes outside scope preserved.
|
|
92
|
-
|
|
93
|
-
### Layer 2 — Focused Checks
|
|
94
|
-
|
|
95
|
-
Run the smallest deterministic checks that directly cover the change.
|
|
96
|
-
|
|
97
|
-
Examples:
|
|
98
|
-
|
|
99
|
-
- one test file;
|
|
100
|
-
- one package type check;
|
|
101
|
-
- one domain test suite;
|
|
102
|
-
- one architecture or documentation gate.
|
|
103
|
-
|
|
104
|
-
### Layer 3 — Task Contract
|
|
105
|
-
|
|
106
|
-
Evaluate all Task-declared checks and acceptance criteria.
|
|
107
|
-
|
|
108
|
-
Acceptance criteria must be observable and must not merely repeat “implementation complete.”
|
|
109
|
-
|
|
110
|
-
### Layer 4 — Integration Verification
|
|
111
|
-
|
|
112
|
-
After an isolated Run is integrated:
|
|
113
|
-
|
|
114
|
-
- verify target Revision, not only Worktree Revision;
|
|
115
|
-
- verify integration record and reviewed diff hash;
|
|
116
|
-
- rerun affected checks when target state changed;
|
|
117
|
-
- retain Worktree until durable integration outcome exists.
|
|
118
|
-
|
|
119
|
-
### Layer 5 — Issue or System Integration
|
|
120
|
-
|
|
121
|
-
Run broader checks required by the Issue, architecture boundary, or affected runtime subsystem.
|
|
122
|
-
|
|
123
|
-
### Layer 6 — Release Gate
|
|
124
|
-
|
|
125
|
-
Run release-specific checks against a frozen candidate Revision.
|
|
126
|
-
|
|
127
|
-
## 6. Risk-Adaptive Verification
|
|
128
|
-
|
|
129
|
-
### Read-only
|
|
130
|
-
|
|
131
|
-
Requires evidence of the requested observation. No diff gate.
|
|
132
|
-
|
|
133
|
-
### Low-risk change
|
|
134
|
-
|
|
135
|
-
Focused checks when declared; may auto-complete after successful applicable evidence.
|
|
136
|
-
|
|
137
|
-
### Medium-risk change
|
|
138
|
-
|
|
139
|
-
Declared checks and acceptance evidence apply. Auto-completion is allowed only when policy says no human decision is required.
|
|
140
|
-
|
|
141
|
-
### High-risk change
|
|
142
|
-
|
|
143
|
-
Requires:
|
|
144
|
-
|
|
145
|
-
- reviewed diff or integrated Revision;
|
|
146
|
-
- required verification evidence;
|
|
147
|
-
- acceptance criteria results;
|
|
148
|
-
- explicit human acceptance.
|
|
149
|
-
|
|
150
|
-
### Destructive change
|
|
151
|
-
|
|
152
|
-
Requires all high-risk evidence plus explicit same-request destructive authorization and operation-specific safety/rollback plan.
|
|
153
|
-
|
|
154
|
-
## 7. Task Acceptance
|
|
155
|
-
|
|
156
|
-
Task acceptance occurs after verification policy passes.
|
|
157
|
-
|
|
158
|
-
Acceptance action records:
|
|
159
|
-
|
|
160
|
-
```text
|
|
161
|
-
acceptedBy
|
|
162
|
-
acceptedAt
|
|
163
|
-
verificationId
|
|
164
|
-
revision
|
|
165
|
-
note
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Dependent Tasks unlock only from accepted terminal semantics, not from a successful Run alone.
|
|
169
|
-
|
|
170
|
-
For eligible low/medium-risk work, Controller policy may auto-accept and records that automation explicitly.
|
|
171
|
-
|
|
172
|
-
## 8. Failed Verification
|
|
173
|
-
|
|
174
|
-
A real failed check or acceptance criterion moves work to `changes_requested` or a similarly explicit corrective state.
|
|
175
|
-
|
|
176
|
-
Failure handling:
|
|
177
|
-
|
|
178
|
-
1. preserve check output and artifact;
|
|
179
|
-
2. classify failure as introduced, pre-existing, environmental, flaky, stale, or contract-related;
|
|
180
|
-
3. avoid claiming unrelated pre-existing failure was caused or fixed;
|
|
181
|
-
4. create a focused correction or blocker;
|
|
182
|
-
5. rerun only the necessary evidence after the Revision changes.
|
|
183
|
-
|
|
184
|
-
A flaky check requires explicit flake evidence and retry policy. Repeating until green without recording attempts is forbidden.
|
|
185
|
-
|
|
186
|
-
## 9. Shared Check Evidence
|
|
187
|
-
|
|
188
|
-
Identical check requests may share one execution when these match:
|
|
189
|
-
|
|
190
|
-
```text
|
|
191
|
-
repoId
|
|
192
|
-
checkoutId
|
|
193
|
-
checkId
|
|
194
|
-
revision
|
|
195
|
-
timeout contract
|
|
196
|
-
environment fingerprint
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Every subscriber links to the same immutable evidence. One subscriber cancellation must not terminate execution required by others.
|
|
200
|
-
|
|
201
|
-
## 10. Release Readiness
|
|
202
|
-
|
|
203
|
-
A repository is `release_ready` only when all required conditions are true for the candidate Revision.
|
|
204
|
-
|
|
205
|
-
Baseline gate:
|
|
206
|
-
|
|
207
|
-
```text
|
|
208
|
-
repository identity valid
|
|
209
|
-
remote/GitHub mapping diagnosed
|
|
210
|
-
candidate Revision fixed
|
|
211
|
-
Workspace ownership known
|
|
212
|
-
no active write Job
|
|
213
|
-
no active Agent Run
|
|
214
|
-
no pending integration
|
|
215
|
-
no unresolved integration conflict
|
|
216
|
-
no dirty Edit Session
|
|
217
|
-
no orphan/unknown execution affecting candidate
|
|
218
|
-
required Tasks accepted
|
|
219
|
-
required checks pass for candidate Revision
|
|
220
|
-
architecture/document gates pass
|
|
221
|
-
package/public metadata valid
|
|
222
|
-
release manifest generated
|
|
223
|
-
rollback or recovery plan recorded when required
|
|
224
|
-
human authorization boundary identified
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
A project may add stricter repository-specific gates.
|
|
228
|
-
|
|
229
|
-
## 11. Release Freeze
|
|
230
|
-
|
|
231
|
-
Before final release verification, the Repo Actor acquires an exclusive release Claim and enters Release Freeze.
|
|
232
|
-
|
|
233
|
-
During freeze:
|
|
234
|
-
|
|
235
|
-
- new mutation Jobs wait;
|
|
236
|
-
- active writers finish or are explicitly resolved;
|
|
237
|
-
- Integration Queue drains;
|
|
238
|
-
- read-only inspection continues;
|
|
239
|
-
- release checks run against the fixed candidate;
|
|
240
|
-
- Schedule mutation work pauses;
|
|
241
|
-
- any relevant file change invalidates the candidate and requires a new gate.
|
|
242
|
-
|
|
243
|
-
Release Freeze is released after:
|
|
244
|
-
|
|
245
|
-
- release execution completes;
|
|
246
|
-
- release is cancelled;
|
|
247
|
-
- verification fails and the candidate returns to development;
|
|
248
|
-
- Lease expires and recovery reconciles state.
|
|
249
|
-
|
|
250
|
-
## 12. Release Manifest
|
|
251
|
-
|
|
252
|
-
The release gate produces a durable manifest:
|
|
253
|
-
|
|
254
|
-
```text
|
|
255
|
-
repoId
|
|
256
|
-
checkoutId
|
|
257
|
-
candidateRevision
|
|
258
|
-
branch
|
|
259
|
-
target version or release identifier
|
|
260
|
-
included Issues and Tasks
|
|
261
|
-
verification records
|
|
262
|
-
check artifact hashes
|
|
263
|
-
known warnings
|
|
264
|
-
known non-blocking pre-existing failures
|
|
265
|
-
remote target
|
|
266
|
-
release actions requiring authorization
|
|
267
|
-
rollback/recovery instructions
|
|
268
|
-
createdAt
|
|
269
|
-
approvedBy / approvedAt when applicable
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
The manifest is an execution input and audit record. It does not execute release actions by itself.
|
|
273
|
-
|
|
274
|
-
## 13. External Actions
|
|
275
|
-
|
|
276
|
-
The following remain explicit external boundaries:
|
|
277
|
-
|
|
278
|
-
- commit when user policy requires review;
|
|
279
|
-
- push;
|
|
280
|
-
- create/update remote PR when not already authorized by the Task;
|
|
281
|
-
- merge;
|
|
282
|
-
- tag;
|
|
283
|
-
- package publication;
|
|
284
|
-
- production deployment;
|
|
285
|
-
- remote Issue closure;
|
|
286
|
-
- destructive migration or data mutation.
|
|
287
|
-
|
|
288
|
-
The Controller may prepare exact commands and evidence. It may execute only with explicit authorization appropriate to the operation.
|
|
289
|
-
|
|
290
|
-
## 14. Release Job
|
|
291
|
-
|
|
292
|
-
Release execution, when authorized, is a durable Job.
|
|
293
|
-
|
|
294
|
-
It records:
|
|
295
|
-
|
|
296
|
-
```text
|
|
297
|
-
releaseManifestId
|
|
298
|
-
requestId
|
|
299
|
-
remote target
|
|
300
|
-
operation sequence
|
|
301
|
-
current step
|
|
302
|
-
external identifiers
|
|
303
|
-
stdout/stderr/artifacts
|
|
304
|
-
partial outcome
|
|
305
|
-
compensation or resume instructions
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
A disconnected client does not make external outcome unknown if provider or command evidence can prove it. Otherwise the Release Job becomes orphaned/unknown and requires reconciliation before retry.
|
|
309
|
-
|
|
310
|
-
## 15. Partial Release
|
|
311
|
-
|
|
312
|
-
Multi-step or multi-repository release may end partially complete.
|
|
313
|
-
|
|
314
|
-
Partial outcome records:
|
|
315
|
-
|
|
316
|
-
- completed external actions;
|
|
317
|
-
- failed or unstarted actions;
|
|
318
|
-
- current deployed/published versions;
|
|
319
|
-
- safe compensation options;
|
|
320
|
-
- actions that require human decision.
|
|
321
|
-
|
|
322
|
-
The system must not collapse partial release into success or rerun all actions blindly.
|
|
323
|
-
|
|
324
|
-
## 16. Rollback and Recovery
|
|
325
|
-
|
|
326
|
-
Rollback is not assumed universally safe.
|
|
327
|
-
|
|
328
|
-
A release plan declares one of:
|
|
329
|
-
|
|
330
|
-
```text
|
|
331
|
-
reversible with deterministic rollback
|
|
332
|
-
forward-fix preferred
|
|
333
|
-
feature-flag disable
|
|
334
|
-
provider-native rollback
|
|
335
|
-
manual recovery only
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
Rollback itself is externally visible/destructive work and requires appropriate authorization and evidence.
|
|
339
|
-
|
|
340
|
-
## 17. Architecture Gate
|
|
341
|
-
|
|
342
|
-
Architecture-sensitive releases must pass:
|
|
343
|
-
|
|
344
|
-
- current architecture document presence;
|
|
345
|
-
- Runtime Authority marker;
|
|
346
|
-
- historical document marker policy;
|
|
347
|
-
- architecture drift check;
|
|
348
|
-
- relevant ADR linkage;
|
|
349
|
-
- migration roadmap update when target gaps change.
|
|
350
|
-
|
|
351
|
-
Architecture documentation is part of the release contract, not an optional afterthought.
|
|
352
|
-
|
|
353
|
-
## 18. Verification Performance
|
|
354
|
-
|
|
355
|
-
Verification must remain proportional:
|
|
356
|
-
|
|
357
|
-
- focused checks during iteration;
|
|
358
|
-
- Task checks before acceptance;
|
|
359
|
-
- broader Issue/system checks at integration boundaries;
|
|
360
|
-
- full release gate once the candidate is frozen.
|
|
361
|
-
|
|
362
|
-
Running the full release suite after every small patch wastes resources and increases queue contention. Running only focused checks before release is insufficient.
|
|
363
|
-
|
|
364
|
-
Check results and revision-aware caches prevent unnecessary duplication without hiding stale evidence.
|
|
365
|
-
|
|
366
|
-
## 19. Current Implementation
|
|
367
|
-
|
|
368
|
-
Verification evidence is bound to Job, repository and exact Git revision with an environment fingerprint. Revision changes invalidate reusable evidence. Oversized result bodies are stored as Artifacts and only bounded previews are returned through Job status.
|
|
369
|
-
|
|
370
|
-
Release readiness is implemented as a durable `release-gate` Job holding an exclusive `release:<repoId>` Lease. The Gate checks Workspace cleanliness, active Execution Jobs, Agent Runs, Local compatibility Jobs, pending Worktree integration, unfinished Edit Sessions, other Leases, active-Issue Tasks, exact-revision verification, repository remote identity, GitHub mapping, Canonical Forge Runtime readiness and package metadata.
|
|
371
|
-
|
|
372
|
-
A successful Gate returns a release manifest for the exact current revision. Push, merge, publish, deploy and destructive external operations still require a separate explicit user authorization.
|
|
373
|
-
|
|
374
|
-
## 20. Required Release Tests
|
|
375
|
-
|
|
376
|
-
Runtime and release checks cover:
|
|
377
|
-
|
|
378
|
-
- candidate revision changes invalidate evidence;
|
|
379
|
-
- active writers block release;
|
|
380
|
-
- pending Worktree integration blocks release;
|
|
381
|
-
- dirty Edit Sessions block release;
|
|
382
|
-
- remote and GitHub mapping drift block release;
|
|
383
|
-
- release Lease blocks new writes;
|
|
384
|
-
- a successful Gate does not execute an external side effect;
|
|
385
|
-
- partial external outcomes never become global success.
|
|
386
|
-
|
|
387
|
-
## 21. Immutable Check Definition Snapshot
|
|
388
|
-
|
|
389
|
-
A scheduled check stores the normalized command, cwd, timeout, source, registry revision, and definition digest at admission time. Execution validates the digest and repository-relative cwd, then uses that snapshot even if another checkout or a later commit changes the check registry.
|
|
390
|
-
|
|
391
|
-
The snapshot stabilizes check identity; the produced evidence is still bound to the revision observed when execution starts and becomes stale if repository content changes while the command runs. This prevents both `check not found` after checkout switching and accidental reuse of evidence from a different repository revision.
|