@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,612 +0,0 @@
|
|
|
1
|
-
# Controller Runtime Entity Model
|
|
2
|
-
|
|
3
|
-
> Status: **Runtime Authority**
|
|
4
|
-
|
|
5
|
-
## 1. Modeling Principle
|
|
6
|
-
|
|
7
|
-
Forge separates four kinds of truth:
|
|
8
|
-
|
|
9
|
-
1. **intent** — what should be achieved;
|
|
10
|
-
2. **execution** — what the system attempted;
|
|
11
|
-
3. **evidence** — what actually happened;
|
|
12
|
-
4. **projection** — what is convenient to display or query.
|
|
13
|
-
|
|
14
|
-
Entities from different categories must not be collapsed merely because they are currently stored in adjacent files or exposed by one tool.
|
|
15
|
-
|
|
16
|
-
The current Controller model also separates semantic ownership from execution depth and placement. Requirement/Plan/Work describe intent and finite delivery lineage; Direct/Process/Agent describe execution mechanisms; Workspace/Worktree/provider resources describe placement. None of those dimensions substitutes for another.
|
|
17
|
-
|
|
18
|
-
### 1.1 Current intent hierarchy
|
|
19
|
-
|
|
20
|
-
```text
|
|
21
|
-
Requirement? long-lived user outcome
|
|
22
|
-
-> Plan? optional decomposition/replanning contract
|
|
23
|
-
-> Work finite recoverable objective
|
|
24
|
-
-> Edit Session / Process / Run / Verification evidence
|
|
25
|
-
|
|
26
|
-
Schedule long-lived trigger/policy
|
|
27
|
-
-> Occurrence one bounded terminal firing
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
A Requirement may have more than one active Plan slice. Current Plan rows own the forward `requirementId` relation; `Requirement.activePlanId` is migration compatibility only and MUST NOT become a second lifecycle authority. A failed/cancelled Work moves its Plan to `replanning`; a reusable slice returns to `ready` rather than pretending to be in verification.
|
|
31
|
-
|
|
32
|
-
A Durable repository Work has one execution `WorkHandle` with the same Work identity. The handle records the selected checkout/worktree, execution-session binding, permission snapshot and finalization stages; it is execution state, not another user objective. New `rh_work start` creation materializes this handle and claims the initiating authenticated Controller in the same facade flow. `managedWorktree=false` means the Work does not own the current checkout/branch as disposable resources, so terminal cleanup releases lifecycle/process ownership without deleting them.
|
|
33
|
-
|
|
34
|
-
Conversation/session bindings are transport and presentation preferences. They may help resume a Controller, but Work/Schedule identity survives a changed or missing conversation.
|
|
35
|
-
|
|
36
|
-
## 2. Identity Hierarchy
|
|
37
|
-
|
|
38
|
-
```text
|
|
39
|
-
Repository (repoId)
|
|
40
|
-
-> Checkout (checkoutId)
|
|
41
|
-
-> Issue
|
|
42
|
-
-> Task
|
|
43
|
-
-> Job [0..N]
|
|
44
|
-
-> Run [0..N]
|
|
45
|
-
-> Edit Session [0..N]
|
|
46
|
-
-> Verification [0..N]
|
|
47
|
-
|
|
48
|
-
Schedule
|
|
49
|
-
-> Occurrence
|
|
50
|
-
-> Job [0..N]
|
|
51
|
-
|
|
52
|
-
Portfolio Workflow
|
|
53
|
-
-> Repository Node
|
|
54
|
-
-> Issue / Task / Job reference
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Resource control is orthogonal:
|
|
58
|
-
|
|
59
|
-
```text
|
|
60
|
-
Job / Run / Edit Session
|
|
61
|
-
-> Resource Claim [0..N]
|
|
62
|
-
-> Lease [0..1 active owner]
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## 3. Repository
|
|
66
|
-
|
|
67
|
-
### Meaning
|
|
68
|
-
|
|
69
|
-
A Repository is the stable controller identity for one logical source repository.
|
|
70
|
-
|
|
71
|
-
### Identity
|
|
72
|
-
|
|
73
|
-
```text
|
|
74
|
-
repoId
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
`repoId` is not a branch name, filesystem path, remote URL, or GitHub repository string. Those values may change while existing durable entities retain their repository identity.
|
|
78
|
-
|
|
79
|
-
### Current Implementation
|
|
80
|
-
|
|
81
|
-
`RepositoryRecord` already stores stable identity, canonical root, remote metadata, checkout collection, GitHub mapping, enabled state, and Controller Home storage strategy.
|
|
82
|
-
|
|
83
|
-
### Target Architecture
|
|
84
|
-
|
|
85
|
-
A Repository owns exactly one logical Repo Actor and one repository-local scheduling domain.
|
|
86
|
-
|
|
87
|
-
### Migration Rule
|
|
88
|
-
|
|
89
|
-
Remote or path changes must be diagnosed and explicitly reconciled. They must not create a second active repository record for the same canonical repository or silently rebind existing entities.
|
|
90
|
-
|
|
91
|
-
## 4. Checkout
|
|
92
|
-
|
|
93
|
-
A Checkout identifies one local working copy or Worktree associated with a Repository.
|
|
94
|
-
|
|
95
|
-
```text
|
|
96
|
-
checkoutId
|
|
97
|
-
repoId
|
|
98
|
-
canonicalRoot
|
|
99
|
-
branch
|
|
100
|
-
worktree
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
A Repository may have multiple Checkouts. Workspace single-writer claims are scoped to a Checkout; repository ref, integration, and release claims may be scoped to the Repository.
|
|
104
|
-
|
|
105
|
-
## 5. Issue
|
|
106
|
-
|
|
107
|
-
### Meaning
|
|
108
|
-
|
|
109
|
-
An Issue is a durable container for one coherent defect, feature, investigation, or governance objective.
|
|
110
|
-
|
|
111
|
-
It owns:
|
|
112
|
-
|
|
113
|
-
- title and summary;
|
|
114
|
-
- goals and non-goals;
|
|
115
|
-
- Issue-level acceptance criteria;
|
|
116
|
-
- related artifacts;
|
|
117
|
-
- ordered Tasks;
|
|
118
|
-
- collaboration links;
|
|
119
|
-
- lifecycle and archive state.
|
|
120
|
-
|
|
121
|
-
### Rules
|
|
122
|
-
|
|
123
|
-
- An Issue is not an execution attempt.
|
|
124
|
-
- An Issue may remain active while some Tasks are done, blocked, or superseded.
|
|
125
|
-
- Current focus is a presentation hint, not exclusive execution ownership.
|
|
126
|
-
- An Issue becomes done only when its required Task and acceptance semantics are satisfied.
|
|
127
|
-
|
|
128
|
-
## 6. Task
|
|
129
|
-
|
|
130
|
-
### Meaning
|
|
131
|
-
|
|
132
|
-
A Task is the smallest durable work-intent unit that can be independently scoped, scheduled, verified, and accepted.
|
|
133
|
-
|
|
134
|
-
It owns:
|
|
135
|
-
|
|
136
|
-
```text
|
|
137
|
-
taskId
|
|
138
|
-
dependsOn
|
|
139
|
-
notes
|
|
140
|
-
runIds
|
|
141
|
-
verification
|
|
142
|
-
workId
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
When `workId` is present, the objective, scope, checks, acceptance criteria,
|
|
146
|
-
risk, status, and completion evidence above are compatibility fields from the
|
|
147
|
-
legacy Task ledger. Work is the only mutable execution contract; readers may
|
|
148
|
-
derive these fields from the linked Work, but Task writers must not maintain a
|
|
149
|
-
second lifecycle.
|
|
150
|
-
|
|
151
|
-
### Rules
|
|
152
|
-
|
|
153
|
-
- A Task has one objective.
|
|
154
|
-
- Dependencies are Task identities, not Run identities.
|
|
155
|
-
- Agent selection occurs at dispatch time; a stored Agent is at most a recommendation.
|
|
156
|
-
- A Task may have multiple Runs and Edit Sessions across its history.
|
|
157
|
-
- A Task without Work remains a legacy planning record during migration.
|
|
158
|
-
- A Work-backed Task exposes a derived compatibility status; Work owns the
|
|
159
|
-
mutable execution status and technical phase.
|
|
160
|
-
- Runs and Processes are evidence and execution facts. They cannot write a
|
|
161
|
-
Requirement outcome or promote a Work-backed Task to completion.
|
|
162
|
-
|
|
163
|
-
### Compatibility Lifecycle
|
|
164
|
-
|
|
165
|
-
```text
|
|
166
|
-
backlog
|
|
167
|
-
-> analysis
|
|
168
|
-
-> planned
|
|
169
|
-
-> ready
|
|
170
|
-
-> executing
|
|
171
|
-
-> review
|
|
172
|
-
-> integrated
|
|
173
|
-
-> verifying
|
|
174
|
-
-> verified
|
|
175
|
-
-> done
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
Alternative transitions include:
|
|
179
|
-
|
|
180
|
-
```text
|
|
181
|
-
ready/executing/review/verifying
|
|
182
|
-
-> blocked
|
|
183
|
-
-> changes_requested
|
|
184
|
-
-> ready or executing
|
|
185
|
-
|
|
186
|
-
any non-terminal
|
|
187
|
-
-> cancelled
|
|
188
|
-
-> superseded
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Current Implementation
|
|
192
|
-
|
|
193
|
-
Current status names include `running` instead of a distinct `executing` abstraction and include compatibility states such as `launch_blocked`. Effective status also incorporates the latest Run.
|
|
194
|
-
|
|
195
|
-
### Migration Rule
|
|
196
|
-
|
|
197
|
-
Existing status values remain readable for migration and UI compatibility. The
|
|
198
|
-
canonical Work phase vocabulary is deliberately smaller:
|
|
199
|
-
|
|
200
|
-
```text
|
|
201
|
-
implementation -> verification -> delivery -> cleanup
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
The phase is technical execution context, not a user-facing Requirement
|
|
205
|
-
lifecycle. A Work completion receipt must identify the Work, exact target
|
|
206
|
-
branch/revision, valid delivery reachability, and blocker-free cleanup before a
|
|
207
|
-
terminal completed Work can be written.
|
|
208
|
-
|
|
209
|
-
## 7. Job
|
|
210
|
-
|
|
211
|
-
### Meaning
|
|
212
|
-
|
|
213
|
-
A Job is one accepted asynchronous system operation.
|
|
214
|
-
|
|
215
|
-
Examples:
|
|
216
|
-
|
|
217
|
-
- dispatch an existing Task;
|
|
218
|
-
- start a Quick Agent session;
|
|
219
|
-
- run a named check;
|
|
220
|
-
- verify an Edit Session;
|
|
221
|
-
- execute a repository command;
|
|
222
|
-
- integrate a reviewed Run;
|
|
223
|
-
- execute a release gate;
|
|
224
|
-
- reconcile stale state;
|
|
225
|
-
- process one Schedule Occurrence.
|
|
226
|
-
|
|
227
|
-
### Required Identity
|
|
228
|
-
|
|
229
|
-
```text
|
|
230
|
-
jobId
|
|
231
|
-
repoId
|
|
232
|
-
operationType
|
|
233
|
-
requestId
|
|
234
|
-
semanticKey
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### Required Metadata
|
|
238
|
-
|
|
239
|
-
```text
|
|
240
|
-
createdAt
|
|
241
|
-
updatedAt
|
|
242
|
-
status
|
|
243
|
-
requestedBy
|
|
244
|
-
payloadRef or bounded payload
|
|
245
|
-
resultRef
|
|
246
|
-
error
|
|
247
|
-
attempt
|
|
248
|
-
parentJobId
|
|
249
|
-
correlationId
|
|
250
|
-
causationId
|
|
251
|
-
deadlineAt
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### Ownership
|
|
255
|
-
|
|
256
|
-
The Repo Actor owns Job admission and repository-local ordering. A Worker owns execution only while holding the Job's valid Lease.
|
|
257
|
-
|
|
258
|
-
### Rules
|
|
259
|
-
|
|
260
|
-
- Job creation precedes execution.
|
|
261
|
-
- A Job may create or link a Run, but is not a Run.
|
|
262
|
-
- Terminal Job records are immutable except for append-only audit annotations.
|
|
263
|
-
- Retry creates a new Job attempt linked to the prior Job unless the operation contract defines retry inside the same durable Job.
|
|
264
|
-
|
|
265
|
-
## 8. Run
|
|
266
|
-
|
|
267
|
-
### Meaning
|
|
268
|
-
|
|
269
|
-
A Run is one Agent execution attempt for one Task.
|
|
270
|
-
|
|
271
|
-
It owns:
|
|
272
|
-
|
|
273
|
-
```text
|
|
274
|
-
runId
|
|
275
|
-
issueId
|
|
276
|
-
taskId
|
|
277
|
-
agent
|
|
278
|
-
provider
|
|
279
|
-
executionMode
|
|
280
|
-
repoRoot / executionRoot
|
|
281
|
-
baseRevision
|
|
282
|
-
process identity
|
|
283
|
-
timeout / deadline
|
|
284
|
-
heartbeat
|
|
285
|
-
stdout / stderr / result / events
|
|
286
|
-
terminal outcome
|
|
287
|
-
integration metadata
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
### Rules
|
|
291
|
-
|
|
292
|
-
- A Run never changes which Task objective it attempts.
|
|
293
|
-
- A failed, cancelled, timed-out, or unknown Run remains historical evidence.
|
|
294
|
-
- Retry creates a new Run.
|
|
295
|
-
- A successful isolated Run is not accepted until its reviewed changes are integrated or explicitly represented by an approved external collaboration path.
|
|
296
|
-
- A Run self-report cannot mark its Task done.
|
|
297
|
-
|
|
298
|
-
## 9. Direct Edit Session
|
|
299
|
-
|
|
300
|
-
### Meaning
|
|
301
|
-
|
|
302
|
-
A Direct Edit Session is a transactional sequence of bounded deterministic file operations controlled by the Controller.
|
|
303
|
-
|
|
304
|
-
It owns:
|
|
305
|
-
|
|
306
|
-
```text
|
|
307
|
-
sessionId
|
|
308
|
-
purpose
|
|
309
|
-
allowedPaths
|
|
310
|
-
baseRevision
|
|
311
|
-
revisions
|
|
312
|
-
operations
|
|
313
|
-
savepoints
|
|
314
|
-
backups
|
|
315
|
-
aggregateDiff
|
|
316
|
-
requestedChecks
|
|
317
|
-
checkResults
|
|
318
|
-
review metadata
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
### Current Lifecycle
|
|
322
|
-
|
|
323
|
-
```text
|
|
324
|
-
open
|
|
325
|
-
-> dirty
|
|
326
|
-
-> checked
|
|
327
|
-
-> finalized
|
|
328
|
-
|
|
329
|
-
dirty/checked
|
|
330
|
-
-> check_failed
|
|
331
|
-
-> dirty
|
|
332
|
-
|
|
333
|
-
open/dirty/checked/check_failed
|
|
334
|
-
-> rolled_back
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
### Rules
|
|
338
|
-
|
|
339
|
-
- Each patch batch creates a numbered Revision.
|
|
340
|
-
- Every operation records before/after hashes where applicable.
|
|
341
|
-
- Checks apply to the current Edit Session Revision.
|
|
342
|
-
- A failed check does not require discarding the session; another correction Revision may follow.
|
|
343
|
-
- Finalization closes the transaction but does not by itself prove Task-level acceptance.
|
|
344
|
-
|
|
345
|
-
## 10. Integration
|
|
346
|
-
|
|
347
|
-
Integration is a deterministic operation that applies one reviewed change set to a target Checkout.
|
|
348
|
-
|
|
349
|
-
Integration may be represented as a dedicated Job and produces an Integration Record containing:
|
|
350
|
-
|
|
351
|
-
```text
|
|
352
|
-
sourceRunId or sourceEditSessionId
|
|
353
|
-
sourceBaseRevision
|
|
354
|
-
targetCheckoutId
|
|
355
|
-
targetRevisionBefore
|
|
356
|
-
targetRevisionAfter
|
|
357
|
-
reviewedDiffHash
|
|
358
|
-
appliedFiles
|
|
359
|
-
conflicts
|
|
360
|
-
cleanupOutcome
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
Integration is not an Agent role. Conflicts are explicit outcomes, not instructions to silently rebase or overwrite.
|
|
364
|
-
|
|
365
|
-
## 11. Verification
|
|
366
|
-
|
|
367
|
-
### Meaning
|
|
368
|
-
|
|
369
|
-
Verification is persisted evidence that declared checks and acceptance criteria were evaluated against a specific repository state.
|
|
370
|
-
|
|
371
|
-
A Verification Record owns:
|
|
372
|
-
|
|
373
|
-
```text
|
|
374
|
-
verificationId or embedded identity
|
|
375
|
-
repoId
|
|
376
|
-
checkoutId
|
|
377
|
-
revision
|
|
378
|
-
runId / editSessionId / integrationId
|
|
379
|
-
reviewedDiffHash
|
|
380
|
-
checkResults
|
|
381
|
-
commandEvidence
|
|
382
|
-
acceptanceResults
|
|
383
|
-
reviewer
|
|
384
|
-
verifiedAt
|
|
385
|
-
autoCompleted
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
### Rules
|
|
389
|
-
|
|
390
|
-
- Verification binds to an exact Revision.
|
|
391
|
-
- Evidence from an older relevant Revision becomes stale.
|
|
392
|
-
- Verification may fail and lead to `changes_requested`.
|
|
393
|
-
- Required checks are executed by the Controller or trusted repository systems; caller-provided success flags are not authoritative.
|
|
394
|
-
|
|
395
|
-
## 12. Acceptance
|
|
396
|
-
|
|
397
|
-
Acceptance is the workflow decision that evidence satisfies the Task or Issue contract.
|
|
398
|
-
|
|
399
|
-
Acceptance is distinct from Verification:
|
|
400
|
-
|
|
401
|
-
- Verification asks whether evidence passes the declared criteria.
|
|
402
|
-
- Acceptance asks whether the work may enter its final workflow state.
|
|
403
|
-
|
|
404
|
-
Low-risk work may auto-accept when policy and evidence allow. High-risk or destructive work requires human acceptance.
|
|
405
|
-
|
|
406
|
-
## 13. Check Execution
|
|
407
|
-
|
|
408
|
-
A Check Execution is a Job running one named deterministic repository check.
|
|
409
|
-
|
|
410
|
-
Its semantic identity includes:
|
|
411
|
-
|
|
412
|
-
```text
|
|
413
|
-
repoId
|
|
414
|
-
checkoutId
|
|
415
|
-
checkId
|
|
416
|
-
revision
|
|
417
|
-
environmentFingerprint
|
|
418
|
-
timeout contract
|
|
419
|
-
```
|
|
420
|
-
|
|
421
|
-
Identical active semantic identities may share one physical execution with independent subscribers. Completed evidence may be reused only while the cache key remains valid.
|
|
422
|
-
|
|
423
|
-
## 14. Resource Claim
|
|
424
|
-
|
|
425
|
-
A Resource Claim declares what an operation needs before it can run.
|
|
426
|
-
|
|
427
|
-
```text
|
|
428
|
-
claimId
|
|
429
|
-
repoId
|
|
430
|
-
jobId
|
|
431
|
-
resourceKey
|
|
432
|
-
mode: shared | exclusive
|
|
433
|
-
scope
|
|
434
|
-
state: requested | granted | released | expired
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
Examples:
|
|
438
|
-
|
|
439
|
-
```text
|
|
440
|
-
workspace:<checkoutId>
|
|
441
|
-
worktree-slot:<repoId>
|
|
442
|
-
path:<repoId>:src/cli/mcp/**
|
|
443
|
-
git-index:<checkoutId>
|
|
444
|
-
git-refs:<repoId>
|
|
445
|
-
heavy-check:<repoId>
|
|
446
|
-
integration:<checkoutId>
|
|
447
|
-
release:<repoId>
|
|
448
|
-
remote-write:<repoId>
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
A Claim expresses scheduling intent. A Lease expresses temporary execution ownership.
|
|
452
|
-
|
|
453
|
-
## 15. Lease
|
|
454
|
-
|
|
455
|
-
A Lease grants temporary ownership of one resource to one Job.
|
|
456
|
-
|
|
457
|
-
```text
|
|
458
|
-
leaseId
|
|
459
|
-
resourceKey
|
|
460
|
-
ownerJobId
|
|
461
|
-
fencingToken
|
|
462
|
-
acquiredAt
|
|
463
|
-
expiresAt
|
|
464
|
-
heartbeatAt
|
|
465
|
-
releasedAt
|
|
466
|
-
```
|
|
467
|
-
|
|
468
|
-
Rules:
|
|
469
|
-
|
|
470
|
-
- Leases expire unless renewed.
|
|
471
|
-
- A newer fencing token invalidates writes from older owners.
|
|
472
|
-
- A Worker process identity is evidence, not Lease identity.
|
|
473
|
-
- Process death allows reconciliation but does not itself define the final business outcome.
|
|
474
|
-
|
|
475
|
-
## 16. Schedule
|
|
476
|
-
|
|
477
|
-
A Schedule defines a recurring or condition-driven automation policy.
|
|
478
|
-
|
|
479
|
-
It owns:
|
|
480
|
-
|
|
481
|
-
```text
|
|
482
|
-
scheduleId
|
|
483
|
-
repository selector or portfolio selector
|
|
484
|
-
trigger
|
|
485
|
-
policy
|
|
486
|
-
work template
|
|
487
|
-
budget
|
|
488
|
-
retry and backoff
|
|
489
|
-
stop conditions
|
|
490
|
-
enabled state
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
A Schedule does not execute forever. It creates bounded Occurrences.
|
|
494
|
-
|
|
495
|
-
## 17. Occurrence
|
|
496
|
-
|
|
497
|
-
An Occurrence is one trigger window of one Schedule.
|
|
498
|
-
|
|
499
|
-
```text
|
|
500
|
-
occurrenceId
|
|
501
|
-
scheduleId
|
|
502
|
-
repoId
|
|
503
|
-
windowKey
|
|
504
|
-
requestId
|
|
505
|
-
status
|
|
506
|
-
decision
|
|
507
|
-
jobIds
|
|
508
|
-
budgetUsed
|
|
509
|
-
outcome
|
|
510
|
-
nextEligibleAt
|
|
511
|
-
```
|
|
512
|
-
|
|
513
|
-
One Schedule and window key may have at most one Occurrence. Outcomes include:
|
|
514
|
-
|
|
515
|
-
```text
|
|
516
|
-
nothing_to_do
|
|
517
|
-
work_dispatched
|
|
518
|
-
work_completed
|
|
519
|
-
work_failed
|
|
520
|
-
external_blocker
|
|
521
|
-
human_attention_required
|
|
522
|
-
release_ready
|
|
523
|
-
budget_exhausted
|
|
524
|
-
cancelled
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
## 18. Candidate Finding
|
|
528
|
-
|
|
529
|
-
A Candidate Finding is a structured automation observation that is not yet a formal Issue or Task.
|
|
530
|
-
|
|
531
|
-
It contains:
|
|
532
|
-
|
|
533
|
-
```text
|
|
534
|
-
findingId
|
|
535
|
-
semanticKey
|
|
536
|
-
repoId
|
|
537
|
-
sourceOccurrenceId
|
|
538
|
-
evidence
|
|
539
|
-
confidence
|
|
540
|
-
firstSeenAt
|
|
541
|
-
lastSeenAt
|
|
542
|
-
occurrenceCount
|
|
543
|
-
status
|
|
544
|
-
```
|
|
545
|
-
|
|
546
|
-
Promotion requires configured evidence. Repeated speculative suggestions must deduplicate instead of generating unlimited Issues.
|
|
547
|
-
|
|
548
|
-
## 19. Portfolio Workflow
|
|
549
|
-
|
|
550
|
-
A Portfolio Workflow coordinates dependency-aware work across multiple repositories.
|
|
551
|
-
|
|
552
|
-
It owns repository nodes and cross-repository dependencies but delegates each repository-local operation to that repository's Actor.
|
|
553
|
-
|
|
554
|
-
It uses Saga semantics rather than distributed atomic commit:
|
|
555
|
-
|
|
556
|
-
```text
|
|
557
|
-
prepare -> execute node -> verify node -> checkpoint -> continue
|
|
558
|
-
\-> stop or compensate
|
|
559
|
-
```
|
|
560
|
-
|
|
561
|
-
## 20. Event and Projection
|
|
562
|
-
|
|
563
|
-
An Event is append-only history:
|
|
564
|
-
|
|
565
|
-
```text
|
|
566
|
-
eventId
|
|
567
|
-
eventType
|
|
568
|
-
repoId
|
|
569
|
-
entityType
|
|
570
|
-
entityId
|
|
571
|
-
requestId
|
|
572
|
-
correlationId
|
|
573
|
-
causationId
|
|
574
|
-
revision
|
|
575
|
-
occurredAt
|
|
576
|
-
dataRef
|
|
577
|
-
```
|
|
578
|
-
|
|
579
|
-
A Projection is a rebuildable read model. Projection corruption must not rewrite source lifecycle state; it is repaired from durable entities and events.
|
|
580
|
-
|
|
581
|
-
## 21. Relationship Rules
|
|
582
|
-
|
|
583
|
-
- One Issue owns many Tasks.
|
|
584
|
-
- One Task may own many Runs, Jobs, Edit Sessions, and Verification records.
|
|
585
|
-
- One Job may link at most one primary Run but may depend on child Jobs.
|
|
586
|
-
- One Run belongs to exactly one Task.
|
|
587
|
-
- One Occurrence belongs to exactly one Schedule and may create many Jobs.
|
|
588
|
-
- One active Lease has one owner Job and one fencing token.
|
|
589
|
-
- One resource may have many compatible shared Claims or one exclusive owner.
|
|
590
|
-
- One Verification applies to one exact repository Revision.
|
|
591
|
-
|
|
592
|
-
## 22. Deletion and Retention
|
|
593
|
-
|
|
594
|
-
Durable workflow and evidence entities are normally archived, not deleted.
|
|
595
|
-
|
|
596
|
-
Ephemeral Quick Agent Issue metadata may be cleaned after terminal completion, but Run and Job evidence remains durable according to retention policy.
|
|
597
|
-
|
|
598
|
-
Runtime projections, expired Leases, caches, and disposable Worktrees may be removed after durable terminal evidence and cleanup records exist.
|
|
599
|
-
|
|
600
|
-
## 22. Structured Execution Outcome
|
|
601
|
-
|
|
602
|
-
A Job result and a Job failure are separate concepts. Durable execution records may contain all of the following independently:
|
|
603
|
-
|
|
604
|
-
```text
|
|
605
|
-
result bounded operation-specific value
|
|
606
|
-
outcome.process exit code, timeout, stdout/stderr artifact paths
|
|
607
|
-
outcome.policy allowed, approval-required, or rejected decision
|
|
608
|
-
outcome.infrastructure storage, spawn, transport, or runtime failure
|
|
609
|
-
error terminal workflow error when the Job did not succeed
|
|
610
|
-
```
|
|
611
|
-
|
|
612
|
-
Successful stdout is never stored in `error`. Compatibility Local Jobs project the durable Execution Job status, result, and structured outcome without becoming a second source of lifecycle truth.
|