@moretea-labs/forge 1.8.0 → 1.8.2
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 +73 -7
- package/CHANGELOG.md +34 -0
- package/CLAUDE.md +17 -2
- package/CONTRIBUTING.md +3 -2
- package/README.en.md +24 -3
- package/README.md +10 -6
- package/README.zh-CN.md +5 -3
- package/THIRD_PARTY_NOTICES.md +1 -2
- package/adapters/chatgpt/browser-delivery-host.ts +7 -1
- package/adapters/chatgpt/browser-delivery-runtime.ts +531 -56
- package/adapters/chatgpt/controller-binding-store.ts +101 -22
- package/adapters/chatgpt/controller-round-host.ts +15 -25
- package/adapters/chatgpt/controller-round-settlement-store.ts +58 -4
- package/adapters/chatgpt/provider-delivery.ts +229 -2
- package/adapters/chatgpt/work-conversation-binding-store.ts +99 -54
- package/adapters/computer/chatgpt-extension-target.ts +708 -0
- package/adapters/computer/chrome-extension/background.js +541 -0
- package/adapters/computer/chrome-extension/content.js +402 -0
- package/adapters/computer/chrome-extension/core.js +24 -0
- package/adapters/computer/chrome-extension/manifest.json +32 -0
- package/adapters/computer/desktop-operator-discovery.ts +11 -31
- package/adapters/computer/desktop-operator-provider.ts +18 -6
- package/adapters/computer/interaction-target-authority.ts +178 -24
- package/adapters/mcp/access-mode.ts +18 -39
- package/adapters/mcp/auth.ts +2 -7
- package/adapters/mcp/instructions.ts +6 -5
- package/adapters/mcp/multi-repository.ts +10 -47
- package/adapters/mcp/oauth.ts +73 -0
- package/adapters/mcp/paths.ts +4 -1
- package/adapters/mcp/runtime-gateway/bounded-result-runtime.ts +62 -0
- package/adapters/mcp/runtime-gateway/cognition-settlement.ts +201 -0
- package/adapters/mcp/runtime-gateway/context-adapter.ts +490 -113
- package/adapters/mcp/runtime-gateway/context-pack-sidecar.ts +83 -0
- package/adapters/mcp/runtime-gateway/controller-authority-adapter.ts +20 -5
- package/adapters/mcp/runtime-gateway/core-capability-adapter.ts +258 -0
- package/adapters/mcp/runtime-gateway/engineering-preconditions.ts +10 -27
- package/adapters/mcp/runtime-gateway/engineering-tool-contract.ts +15 -0
- package/adapters/mcp/runtime-gateway/execution-tools.ts +14 -54
- package/adapters/mcp/runtime-gateway/gateway-execution-adapter.ts +2 -1
- package/adapters/mcp/runtime-gateway/plugin-adapter.ts +132 -47
- package/adapters/mcp/runtime-gateway/process-tools.ts +173 -23
- package/adapters/mcp/runtime-gateway/protected-computer-adapter.ts +16 -4
- package/adapters/mcp/runtime-gateway/recovery-adapter.ts +69 -52
- package/adapters/mcp/runtime-gateway/repository-compat-adapter.ts +4 -35
- package/adapters/mcp/runtime-gateway/result-adapter.ts +10 -4
- package/adapters/mcp/runtime-gateway/router.ts +19 -507
- package/adapters/mcp/runtime-gateway/routing-policy.ts +506 -0
- package/adapters/mcp/runtime-gateway/runtime-observation-adapter.ts +15 -66
- package/adapters/mcp/runtime-gateway/runtime-readiness-observation.ts +218 -0
- package/adapters/mcp/runtime-gateway/runtime-tool-definitions.ts +123 -178
- package/adapters/mcp/runtime-gateway/runtime-tools.ts +11 -5
- package/adapters/mcp/runtime-gateway/scheduler-adapter.ts +37 -1
- package/adapters/mcp/runtime-gateway/shared-adapter.ts +20 -0
- package/adapters/mcp/runtime-gateway/status-inbox-adapter.ts +416 -270
- package/adapters/mcp/runtime-gateway/typescript-navigation-sidecar.ts +140 -0
- package/adapters/mcp/runtime-gateway/work-adapter.ts +262 -3123
- package/adapters/mcp/runtime-gateway/work-controller-operations.ts +257 -0
- package/adapters/mcp/runtime-gateway/work-detail-projection.ts +60 -0
- package/adapters/mcp/runtime-gateway/work-input-wire-migration.ts +229 -0
- package/adapters/mcp/runtime-gateway/work-learning-operations.ts +145 -0
- package/adapters/mcp/runtime-gateway/work-list-projection.ts +38 -0
- package/adapters/mcp/runtime-gateway/work-plan-operations.ts +382 -0
- package/adapters/mcp/runtime-gateway/work-repair-adapter.ts +308 -0
- package/adapters/mcp/runtime-gateway/work-requirement-operations.ts +148 -0
- package/adapters/mcp/runtime-gateway/work-semantic-operations.ts +320 -0
- package/adapters/mcp/runtime-gateway/work-workflow-operations.ts +113 -0
- package/adapters/mcp/runtime-gateway/workflow-supervisor-adapter.ts +180 -0
- package/adapters/mcp/server.ts +91 -26
- package/adapters/mcp/setup.ts +5 -13
- package/adapters/mcp/tool-mapping/access-tools.ts +0 -6
- package/adapters/mcp/tool-mapping/legacy-tool-service.ts +703 -3092
- package/adapters/mcp/tool-mapping/post-finalize-work-attribution.ts +5 -10
- package/adapters/mcp/tool-mapping/repository-tools.ts +170 -213
- package/adapters/mcp/toolset-names.ts +11 -37
- package/adapters/mcp/toolset.ts +19 -92
- package/{src/cli → adapters}/mcp/transports/AGENTS.md +5 -5
- package/{src/cli → adapters}/mcp/transports/CLAUDE.md +5 -5
- package/adapters/mcp/transports/http-observation.ts +377 -0
- package/adapters/mcp/transports/http-post-lifecycle.ts +19 -0
- package/adapters/mcp/transports/http.ts +200 -683
- package/adapters/mcp/transports/oauth-http.ts +322 -0
- package/adapters/mcp/transports/session-registry.ts +6 -0
- package/adapters/mcp/tunnels/openai-secure-tunnel.ts +89 -5
- package/adapters/mcp/types.ts +0 -6
- package/assets/hooks/lib/session-state.sh +0 -38
- package/assets/hooks/post-bash.sh +1 -1
- package/assets/hooks/post-tool-observer.sh +0 -5
- package/assets/hooks/prompt-guard.sh +0 -55
- package/assets/partials/04-project-structure.partial.md +1 -1
- package/assets/partials/07-footer.partial.md +1 -1
- package/assets/partials-agents/02-operating-mode.partial.md +1 -1
- package/assets/partials-agents/08-deep-docs.partial.md +1 -1
- package/assets/plugin-registry.v1.json +6 -4
- package/assets/reference-configs/agentic-development-flow.md +26 -1
- package/assets/reference-configs/external-tooling.md +0 -76
- package/assets/reference-configs/global-working-rules.md +19 -0
- package/assets/reference-configs/release-deploy.md +1 -1
- package/assets/templates/helpers/architecture-queue.sh +1 -1
- package/assets/templates/helpers/check-agent-tooling.sh +1 -327
- package/assets/templates/helpers/check-task-workflow.sh +1 -1
- package/assets/templates/helpers/ensure-task-workflow.sh +0 -14
- package/assets/templates/helpers/migrate-project-template.sh +2 -2
- package/assets/workflow-contract.v1.json +0 -2
- package/docs/README.md +5 -2
- package/docs/architecture/CURRENT.md +205 -51
- package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +14 -5
- package/docs/architecture/decisions/20260823-immediate-controller-relay.md +6 -3
- package/docs/architecture/decisions/20260904-ios-device-migration-baseline.md +42 -0
- package/docs/architecture/decisions/20260907-assistant-learning-loop.md +2 -0
- package/docs/architecture/decisions/20260907-controller-round-transition-policy.md +19 -4
- package/docs/architecture/decisions/20260916-workflow-supervisor-authority.md +249 -0
- package/docs/architecture/decisions/20260917-cognitive-memory-foundation.md +82 -0
- package/docs/architecture/decisions/20260918-stable-candidate-release-lifecycle.md +234 -0
- package/docs/architecture/decisions/20260919-autonomous-work-liveness.md +62 -0
- package/docs/architecture/decisions/20260924-thin-semantic-working-context.md +74 -0
- package/docs/architecture/decisions/20261001-supervisor-turn-authority.md +342 -0
- package/docs/architecture/decisions/20261005-forge-v3-desktop-client-boundary.md +77 -0
- package/docs/architecture/decisions/20261009-exact-code-context-discovery.md +19 -0
- package/docs/architecture/decisions/20261009-generated-xcode-cache-retention.md +37 -0
- package/docs/architecture/decisions/20261011-autonomous-continuation-convergence.md +597 -0
- package/docs/architecture/decisions/20261017-edit-session-finalization-reconciliation.md +17 -0
- package/docs/architecture/decisions/20261019-retire-host-skills.md +16 -0
- package/docs/architecture/diagrams/agentic-dev-plugin-architecture.html +1 -1
- package/docs/architecture/domains/public-surface.md +3 -5
- package/docs/architecture/domains/verification.md +6 -5
- package/docs/architecture/domains/workflow-engine.md +6 -0
- package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +3 -3
- package/docs/architecture/requests/2026-09-04-computer-plugin-workflow-taxonomy.md +4 -4
- package/docs/architecture/reviews/20261015-code-search-runtime-acceptance.md +75 -0
- package/docs/forge-plugin-management.md +16 -4
- package/docs/operations/controller-browser-plugin.md +23 -0
- package/docs/operations/controller-performance-and-502.md +17 -0
- package/docs/operations/controller-reliability-runbook.md +2 -2
- package/docs/operations/features.md +6 -7
- package/docs/operations/features.zh-CN.md +1 -1
- package/docs/operations/github-repository.md +4 -4
- package/docs/operations/github-semantic-release-projection.md +20 -0
- package/docs/operations/homebrew.md +2 -2
- package/docs/operations/mcp-tool-exposure.md +13 -52
- package/docs/operations/releasing.md +2 -0
- package/docs/operations/runtime-performance-diagnostics.md +8 -0
- package/docs/operations/standalone-disaster-recovery.md +15 -7
- package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
- package/docs/tutorials/03-first-repository-task.md +2 -0
- package/docs/wiki/Computer-and-Plugins.md +78 -0
- package/docs/wiki/Computer-and-Plugins.zh-CN.md +88 -0
- package/docs/wiki/Home.md +16 -2
- package/docs/wiki/Implementation.md +25 -13
- package/docs/wiki/Installation.md +28 -32
- package/docs/wiki/Integrations.md +4 -0
- package/docs/wiki/Quick-Start.md +35 -22
- package/docs/wiki/Releases-and-Upgrades.md +15 -25
- package/docs/wiki/_Sidebar.md +5 -1
- package/package.json +25 -25
- package/packages/kernel/cognition/api/index.ts +6 -0
- package/packages/kernel/cognition/application/activation-service.ts +451 -0
- package/packages/kernel/cognition/application/consolidation-service.ts +185 -0
- package/packages/kernel/cognition/application/legacy-experience-adapter.ts +38 -0
- package/packages/kernel/cognition/application/memory-service.ts +64 -0
- package/packages/kernel/cognition/domain/learning.ts +106 -0
- package/packages/kernel/cognition/domain/memory.ts +254 -0
- package/packages/kernel/controller/api/index.ts +1 -0
- package/packages/kernel/controller/application/continuation-service.ts +281 -0
- package/packages/kernel/controller/application/controller-round-service.ts +12 -0
- package/packages/kernel/controller/domain/controller-round-transition-policy.ts +242 -21
- package/packages/kernel/controller/domain/controller-round.ts +4 -1
- package/packages/kernel/controller/domain/execution-quality.ts +3 -1
- package/packages/kernel/controller/infrastructure/controller-round-store.ts +689 -103
- package/packages/kernel/controller/infrastructure/controller-session-store.ts +348 -97
- package/packages/kernel/controller/ports/controller-host.ts +2 -0
- package/packages/kernel/identity/api/index.ts +10 -0
- package/packages/kernel/identity/domain/activity-projection.ts +43 -0
- package/packages/kernel/identity/domain/capability-broker.ts +60 -0
- package/packages/kernel/identity/domain/grant.ts +72 -0
- package/packages/kernel/identity/domain/owned-resource.ts +116 -0
- package/packages/kernel/identity/domain/user-request.ts +93 -0
- package/packages/kernel/identity/infrastructure/activity-projection-store.ts +87 -0
- package/packages/kernel/identity/infrastructure/capability-broker.ts +81 -0
- package/packages/kernel/identity/infrastructure/grant-store.ts +284 -0
- package/packages/kernel/identity/infrastructure/owned-resource-store.ts +259 -0
- package/packages/kernel/identity/infrastructure/user-request-store.ts +182 -0
- package/packages/kernel/scheduler/api/index.ts +0 -2
- package/packages/kernel/scheduler/application/eligibility.ts +4 -1
- package/packages/kernel/scheduler/application/schedule-service.ts +3 -0
- package/packages/kernel/scheduler/application/settlement.ts +0 -15
- package/packages/kernel/scheduler/domain/schedule.ts +87 -0
- package/packages/kernel/scheduler/infrastructure/schedule-store.ts +166 -143
- package/packages/kernel/work/api/index.ts +3 -2
- package/packages/kernel/work/application/work-service.ts +18 -42
- package/packages/kernel/work/domain/current-task-lineage.ts +104 -0
- package/packages/kernel/work/domain/engineering-design.ts +10 -5
- package/packages/kernel/work/domain/engineering-profile.ts +8 -12
- package/packages/kernel/work/domain/evaluation-promotion-receipt.ts +186 -0
- package/packages/kernel/work/domain/execution-concurrency.ts +19 -26
- package/packages/kernel/work/domain/execution-snapshot.ts +0 -31
- package/packages/kernel/work/domain/implementation-review.ts +14 -331
- package/packages/kernel/work/domain/objective-graph.ts +119 -0
- package/packages/kernel/work/domain/project-engineering-contract.ts +23 -1
- package/packages/kernel/work/domain/repository-completion-receipt.ts +1 -1
- package/packages/kernel/work/domain/state-machine.ts +34 -65
- package/packages/kernel/work/domain/types.ts +57 -51
- package/packages/kernel/work/infrastructure/work-contract-store.ts +847 -729
- package/packages/kernel/work/ports/work-contract-store.ts +5 -2
- package/packages/plugin-runtime/browser/provider-registry.ts +12 -36
- package/packages/plugin-runtime/browser/session-authority.ts +2 -1
- package/packages/plugin-runtime/computer/chatgpt-identity.ts +24 -0
- package/packages/plugin-runtime/computer/conversation-target.ts +153 -0
- package/packages/plugin-runtime/computer/index.ts +2 -0
- package/packages/plugin-runtime/computer/target-authority.ts +26 -1
- package/packages/plugin-runtime/external/unix-jsonl-transport.ts +142 -18
- package/packages/protocols/computer/contract.ts +27 -1
- package/scripts/activate-source-baseline.ts +7 -9
- package/scripts/assemble-template.ts +11 -72
- package/scripts/canary-controller-semantic-wait.ts +12 -24
- package/scripts/check-mcp-compatibility.ts +94 -201
- package/scripts/check-package-identity.mjs +0 -5
- package/scripts/check-runtime-architecture.mjs +921 -239
- package/scripts/forge-local-recovery-helper.mjs +93 -15
- package/scripts/init-project.sh +0 -46
- package/scripts/install-ios-hid-toolchain.sh +60 -0
- package/scripts/install-standalone-recovery.ts +1 -1
- package/scripts/lib/project-init-lib.sh +6 -3
- package/scripts/migrate-windows-wsl-controller-home.ts +2 -0
- package/scripts/open-source-audit-allowlist.txt +1 -3
- package/scripts/run-bounded-command.mjs +5 -0
- package/scripts/run-governed-gate.ts +2 -1
- package/scripts/run-mobile-monitor-bridge.ts +0 -1
- package/scripts/smoke-control-plane-failure-domain.ts +94 -0
- package/scripts/smoke-ios-physical-device.ts +38 -10
- package/scripts/smoke-mcp-http-runtime.ts +12 -8
- package/scripts/smoke-mcp-tool-surface.ts +27 -41
- package/scripts/smoke-runtime-recovery.ts +12 -43
- package/scripts/smoke-schedule-engine.ts +23 -15
- package/scripts/smoke-unattended-transport-recovery.ts +223 -0
- package/scripts/smoke-user-request-continuation-restart.ts +232 -0
- package/scripts/smoke-workflow-supervisor-chrome-adapter.ts +95 -0
- package/scripts/smoke-workflow-supervisor-process-restart.ts +276 -0
- package/scripts/smoke-workflow-supervisor-restart-recovery.ts +150 -0
- package/scripts/smoke-workflow-supervisor.ts +103 -0
- package/scripts/sync-generated-authority.mjs +0 -1
- package/scripts/verify-forge-runtime.sh +2 -1
- package/src/cli/agent-jobs/executor-health.ts +12 -35
- package/src/cli/agent-jobs/integration.ts +20 -51
- package/src/cli/agent-jobs/job-manager.ts +7 -3
- package/src/cli/chatgpt-browser/file-policy.ts +2 -2
- package/src/cli/commands/brain-assistant.ts +27 -13
- package/src/cli/commands/brain.ts +13 -15
- package/src/cli/commands/chatgpt.ts +1 -163
- package/src/cli/commands/doctor.ts +1 -143
- package/src/cli/commands/global-runtime.ts +3 -196
- package/src/cli/commands/init-hook.ts +6 -23
- package/src/cli/commands/init.ts +3 -252
- package/src/cli/commands/mcp.ts +0 -5
- package/src/cli/commands/prompt-guard-decision.ts +0 -2
- package/src/cli/commands/recovery.ts +137 -135
- package/src/cli/commands/repository.ts +17 -1
- package/src/cli/commands/runtime.ts +3 -3
- package/src/cli/commands/setup-execution.ts +41 -0
- package/src/cli/commands/setup-profile.ts +8 -0
- package/src/cli/controller/check-runner.ts +13 -2
- package/src/cli/controller/completion-backlog.ts +3 -3
- package/src/cli/controller/completion-orchestrator.ts +5 -44
- package/src/cli/controller/completion-target.ts +3 -72
- package/src/cli/controller/composite-operations.ts +1 -1
- package/src/cli/controller/context/instruction-context.ts +1 -1
- package/src/cli/controller/context/known-paths.ts +2 -2
- package/src/cli/controller/context/query-planning.ts +11 -4
- package/src/cli/controller/context/rule-resolution.ts +2 -2
- package/src/cli/controller/context/source-materializer.ts +83 -102
- package/src/cli/controller/context/structural-provider.ts +84 -0
- package/src/cli/controller/context/structural.ts +6 -6
- package/src/cli/controller/context/types.ts +8 -9
- package/src/cli/controller/context-pack.ts +107 -84
- package/src/cli/controller/execution-completion.ts +4 -7
- package/src/cli/controller/execution-policy.ts +36 -153
- package/src/cli/controller/governance.ts +2 -3
- package/src/cli/controller/issue-store.ts +4 -99
- package/src/cli/controller/launch-agents.ts +59 -18
- package/src/cli/controller/operational-plan.ts +25 -52
- package/src/cli/controller/runtime-config.ts +5 -1
- package/src/cli/controller/stuck-state-migration.ts +2 -3
- package/src/cli/controller/systemd-user.ts +42 -10
- package/src/cli/editing/edit-session.ts +18 -12
- package/src/cli/github/github.ts +4 -4
- package/src/cli/github/semantic-projection.ts +174 -0
- package/src/cli/hook/prompt-intents.ts +0 -9
- package/src/cli/index.ts +1 -43
- package/src/cli/local-bridge/connector-freshness.ts +1 -12
- package/src/cli/local-bridge/console-automations.ts +19 -14
- package/src/cli/local-bridge/console-view-models.ts +4 -13
- package/src/cli/local-bridge/facade-api.ts +64 -193
- package/src/cli/local-bridge/server.ts +24 -147
- package/src/cli/local-bridge/types.ts +0 -1
- package/src/cli/mcp/oauth-client-retirement.ts +74 -0
- package/src/cli/repositories/command-classifier.ts +0 -9
- package/src/cli/repositories/command-executor.ts +29 -23
- package/src/cli/repositories/command-scope.ts +37 -18
- package/src/cli/repositories/controller-home.ts +48 -0
- package/src/cli/repositories/ephemeral-workspace.ts +20 -30
- package/src/cli/repositories/git-command-executor.ts +2 -2
- package/src/cli/repositories/locks.ts +20 -0
- package/src/cli/repositories/registry.ts +79 -12
- package/src/cli/repositories/safe-patch.ts +2 -12
- package/src/cli/repositories/structured-git.ts +101 -5
- package/src/cli/repository/inspector.ts +185 -343
- package/src/cli/repository/session-cache.ts +92 -6
- package/src/effects/process-runner.ts +17 -1
- package/src/runtime/context/assistant-context.ts +20 -7
- package/src/runtime/context/assistant-work-context.ts +89 -27
- package/src/runtime/context/automatic-learning.ts +565 -0
- package/src/runtime/context/cognitive-attention.ts +173 -0
- package/src/runtime/context/cognitive-skill-canary.ts +158 -0
- package/src/runtime/context/context-closure.ts +46 -9
- package/src/runtime/context/context-pack-process.ts +103 -0
- package/src/runtime/context/context-plane.ts +1 -9
- package/src/runtime/context/direct-controller-learning.ts +298 -0
- package/src/runtime/context/generic-lsp-provider.ts +1 -1
- package/src/runtime/context/semantic-navigation-contract.ts +16 -0
- package/src/runtime/context/semantic-navigation.ts +7 -35
- package/src/runtime/context/typescript-navigation-process.ts +145 -0
- package/src/runtime/context/typescript-navigation.ts +89 -3
- package/src/runtime/control-plane/cleanup-artifact-retention.ts +215 -12
- package/src/runtime/control-plane/concurrency/work-execution-concurrency.ts +9 -47
- package/src/runtime/control-plane/execution/controller-authority-recovery.ts +34 -4
- package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +29 -20
- package/src/runtime/control-plane/execution/execution-identity.ts +23 -3
- package/src/runtime/control-plane/execution/repository-work-attribution.ts +7 -30
- package/src/runtime/control-plane/execution/retained-work-resume.ts +206 -199
- package/src/runtime/control-plane/execution/session-store.ts +31 -1
- package/src/runtime/control-plane/execution/validation.ts +6 -8
- package/src/runtime/control-plane/execution/work-authority-reconciler.ts +13 -42
- package/src/runtime/control-plane/execution/work-check-evidence.ts +137 -0
- package/src/runtime/control-plane/execution/work-completion-authority.ts +30 -85
- package/src/runtime/control-plane/execution/work-delivery-service.ts +616 -0
- package/src/runtime/control-plane/execution/work-evidence-policy.ts +12 -50
- package/src/runtime/control-plane/execution/work-execution-support.ts +50 -149
- package/src/runtime/control-plane/execution/work-handle-authority.ts +197 -110
- package/src/runtime/control-plane/execution/work-handle-store.ts +72 -44
- package/src/runtime/control-plane/execution/work-head-settlement.ts +53 -20
- package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +52 -29
- package/src/runtime/control-plane/execution/work-operation-service.ts +60 -34
- package/src/runtime/control-plane/execution/work-preparation-service.ts +231 -267
- package/src/runtime/control-plane/execution/work-process-evidence.ts +2 -2
- package/src/runtime/control-plane/execution/work-remote-delivery.ts +2 -3
- package/src/runtime/control-plane/execution/work-revision-diff.ts +39 -0
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +201 -199
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +33 -85
- package/src/runtime/control-plane/execution/work-verification-service.ts +406 -50
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +6 -2
- package/src/runtime/control-plane/facade/capability-registry.ts +364 -37
- package/src/runtime/control-plane/facade/check-normalization.ts +3 -9
- package/src/runtime/control-plane/facade/codex-delegation.ts +10 -11
- package/src/runtime/control-plane/facade/controller-connection.ts +135 -0
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +1 -20
- package/src/runtime/control-plane/facade/goal-workloop.ts +281 -1753
- package/src/runtime/control-plane/facade/handoff-inbox-application.ts +12 -25
- package/src/runtime/control-plane/facade/handoff-inbox-store.ts +256 -52
- package/src/runtime/control-plane/facade/index.ts +0 -1
- package/src/runtime/control-plane/facade/operation-digest.ts +12 -15
- package/src/runtime/control-plane/facade/plan-contract-store.ts +451 -991
- package/src/runtime/control-plane/facade/policy-gate.ts +0 -23
- package/src/runtime/control-plane/facade/repository-work-admission.ts +12 -22
- package/src/runtime/control-plane/facade/requirement-authority.ts +102 -199
- package/src/runtime/control-plane/facade/requirement-board.ts +3 -3
- package/src/runtime/control-plane/facade/rh-work-operation-contract.ts +51 -14
- package/src/runtime/control-plane/facade/self-healing-loop.ts +18 -53
- package/src/runtime/control-plane/facade/suggested-actions.ts +15 -18
- package/src/runtime/control-plane/facade/types.ts +49 -108
- package/src/runtime/control-plane/facade/work-continuation.ts +9 -9
- package/src/runtime/control-plane/generated-cache-retention.ts +206 -59
- package/src/runtime/control-plane/global-scheduler/autonomous-continuation.ts +248 -0
- package/src/runtime/control-plane/global-scheduler/durable-admission.ts +1 -1
- package/src/runtime/control-plane/global-scheduler/maintenance.ts +256 -117
- package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -12
- package/src/runtime/control-plane/global-scheduler/scheduler.ts +66 -40
- package/src/runtime/control-plane/global-scheduler/wake-signal.ts +42 -2
- package/src/runtime/control-plane/governance/access-policy.ts +19 -2
- package/src/runtime/control-plane/governance/authorization.ts +20 -3
- package/src/runtime/control-plane/governance/external-effects.ts +1 -1
- package/src/runtime/control-plane/launcher/chatgpt-round-continuation.ts +63 -300
- package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +29 -300
- package/src/runtime/control-plane/launcher/local-conversation-controller.ts +238 -0
- package/src/runtime/control-plane/launcher/provider-mcp-bootstrap.ts +5 -2
- package/src/runtime/control-plane/launcher/thin-launcher.ts +96 -240
- package/src/runtime/control-plane/persistence/cognition-store.ts +820 -0
- package/src/runtime/control-plane/persistence/experience-store.ts +162 -29
- package/src/runtime/control-plane/persistence/requirement-store.ts +216 -74
- package/src/runtime/control-plane/persistence/sqlite-store.ts +113 -6
- package/src/runtime/control-plane/release-retention.ts +135 -47
- package/src/runtime/control-plane/repository-namespace-retention.ts +2 -2
- package/src/runtime/control-plane/runtime-cleanup.ts +295 -107
- package/src/runtime/control-plane/workspace/project-onboarding.ts +80 -0
- package/src/runtime/control-plane/workspace/semantic-sync-service.ts +19 -5
- package/src/runtime/control-plane/workspace/workspace-store.ts +169 -0
- package/src/runtime/diagnostics/incident-repair.ts +313 -146
- package/src/runtime/diagnostics/mcp-timing.ts +114 -0
- package/src/runtime/evidence/artifact-store.ts +158 -40
- package/src/runtime/evidence/evidence-store.ts +112 -8
- package/src/runtime/evidence/output-handle-index.ts +225 -0
- package/src/runtime/evidence/result-store.ts +158 -44
- package/src/runtime/evidence/sensitive-output.ts +22 -2
- package/src/runtime/execution/jobs/child-reference.ts +11 -0
- package/src/runtime/execution/jobs/receipt-recovery.ts +1 -11
- package/src/runtime/execution/jobs/store.ts +3 -4
- package/src/runtime/execution/managed-workspace.ts +57 -0
- package/src/runtime/execution/process-runtime/check-facade.ts +1 -1
- package/src/runtime/execution/process-runtime/check-result-retention.ts +2 -2
- package/src/runtime/execution/process-runtime/check-result.ts +105 -1
- package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +18 -8
- package/src/runtime/execution/process-runtime/command-facade.ts +82 -30
- package/src/runtime/execution/process-runtime/gc.ts +15 -2
- package/src/runtime/execution/process-runtime/handle-index.ts +176 -0
- package/src/runtime/execution/process-runtime/host-command-lane.ts +139 -0
- package/src/runtime/execution/process-runtime/index.ts +3 -0
- package/src/runtime/execution/process-runtime/lightweight-managed.ts +251 -72
- package/src/runtime/execution/process-runtime/persisted-check.ts +3 -3
- package/src/runtime/execution/process-runtime/process-runner-entry.ts +47 -5
- package/src/runtime/execution/process-runtime/process-scope.ts +160 -0
- package/src/runtime/execution/process-runtime/resource-claims.ts +65 -61
- package/src/runtime/execution/process-runtime/runtime.ts +55 -18
- package/src/runtime/execution/process-runtime/store.ts +30 -2
- package/src/runtime/execution/process-runtime/types.ts +6 -1
- package/src/runtime/execution/thin-harness/execution-router.ts +16 -16
- package/src/runtime/execution/thin-harness/fast-executor.ts +2 -2
- package/src/runtime/execution/thin-harness/search-worker.ts +2 -2
- package/src/runtime/execution/workers/executor.ts +3 -8
- package/src/runtime/maintenance/cleanup.ts +41 -5
- package/src/runtime/platform/service-inventory.ts +130 -0
- package/src/runtime/platform/service-manager.ts +8 -0
- package/src/runtime/plugins/action-application.ts +97 -29
- package/src/runtime/plugins/app-store-connect-adapter.ts +290 -18
- package/src/runtime/plugins/browser-adapter.ts +1124 -333
- package/src/runtime/plugins/browser-automation-service.ts +23 -3
- package/src/runtime/plugins/browser-macos-bridge.ts +431 -137
- package/src/runtime/plugins/browser-manifest-surface.ts +47 -12
- package/src/runtime/plugins/browser-native-session-service.ts +63 -13
- package/src/runtime/plugins/browser-registration.ts +18 -0
- package/src/runtime/plugins/browser-runtime.ts +40 -36
- package/src/runtime/plugins/browser-session-authority.ts +2 -2
- package/src/runtime/plugins/browser-session-store.ts +46 -76
- package/src/runtime/plugins/capability-authorization-grants.ts +258 -62
- package/src/runtime/plugins/computer-chatgpt-browser-adapter-installer.ts +228 -0
- package/src/runtime/plugins/computer-registration.ts +298 -20
- package/src/runtime/plugins/desktop-operator-external-policy.ts +36 -4
- package/src/runtime/plugins/desktop-operator-registration.ts +12 -4
- package/src/runtime/plugins/external-adapter.ts +42 -6
- package/src/runtime/plugins/external-registration.ts +21 -1
- package/src/runtime/plugins/github-adapter.ts +30 -3
- package/src/runtime/plugins/gmail-adapter.ts +189 -3
- package/src/runtime/plugins/google-calendar-adapter.ts +2 -2
- package/src/runtime/plugins/google-shared.ts +24 -12
- package/src/runtime/plugins/google-tasks-adapter.ts +2 -2
- package/src/runtime/plugins/ios/remote-xpc-hid.ts +70 -30
- package/src/runtime/plugins/ios-adapter.ts +46 -41
- package/src/runtime/plugins/ios-agent-device.ts +54 -4
- package/src/runtime/plugins/ios-device-ownership.ts +103 -0
- package/src/runtime/plugins/ios-physical-device.ts +497 -79
- package/src/runtime/plugins/lightweight-action.ts +208 -2
- package/src/runtime/plugins/local-system-adapter.ts +12 -100
- package/src/runtime/plugins/managed-process-adapter.ts +12 -5
- package/src/runtime/plugins/plugin-action-sidecar.ts +17 -13
- package/src/runtime/plugins/plugin-management-adapter.ts +1 -1
- package/src/runtime/plugins/store.ts +682 -435
- package/src/runtime/plugins/types.ts +24 -0
- package/src/runtime/plugins/xiaohongshu-publish.ts +16 -0
- package/src/runtime/projections/git-status-sampler.ts +2 -19
- package/src/runtime/projections/invalidation.ts +7 -3
- package/src/runtime/projections/materialized-view.ts +80 -36
- package/src/runtime/recovery/actions.ts +4 -4
- package/src/runtime/recovery/capability-action-application.ts +46 -45
- package/src/runtime/recovery/lifecycle-inventory.ts +30 -40
- package/src/runtime/recovery/maintenance-executor.ts +374 -123
- package/src/runtime/recovery/probe.ts +2 -2
- package/src/runtime/recovery/store.ts +29 -11
- package/src/runtime/release/release-coordinator.ts +312 -0
- package/src/runtime/release/release-session.ts +716 -0
- package/src/runtime/release/release-state-migration.ts +25 -0
- package/src/runtime/resources/leases/store.ts +56 -25
- package/src/runtime/root/computer-composition.ts +191 -6
- package/src/runtime/root/controller-progression-composition.ts +254 -0
- package/src/runtime/root/controller-round-composition.ts +20 -1
- package/src/runtime/root/deployment-topology.ts +106 -0
- package/src/runtime/root/entry.ts +4 -3
- package/src/runtime/root/known-good-recovery.ts +184 -0
- package/src/runtime/root/local-bridge.ts +0 -1
- package/src/runtime/root/mcp-transport.ts +111 -18
- package/src/runtime/root/ownership.ts +261 -9
- package/src/runtime/root/package-connector-service.ts +227 -29
- package/src/runtime/root/package-runtime-release.ts +117 -30
- package/src/runtime/root/package-runtime-service.ts +24 -24
- package/src/runtime/root/release-execution-canary.ts +57 -12
- package/src/runtime/root/release-loader.ts +90 -8
- package/src/runtime/root/release-manifest.ts +80 -40
- package/src/runtime/root/release-materialize.ts +372 -106
- package/src/runtime/root/release-store.ts +395 -36
- package/src/runtime/root/runtime-lane.ts +191 -0
- package/src/runtime/root/runtime.ts +160 -29
- package/src/runtime/root/scheduled-controller-composition.ts +29 -3
- package/src/runtime/root/service-runner.ts +2 -2
- package/src/runtime/root/service.ts +126 -44
- package/src/runtime/root/status.ts +48 -0
- package/src/runtime/root/types.ts +32 -9
- package/src/runtime/root/workflow-supervisor-composition.ts +681 -0
- package/src/runtime/root/workflow-supervisor-runtime.ts +564 -0
- package/src/runtime/root/write-fence.ts +50 -2
- package/src/runtime/safe-tooling/google-credential-store.ts +67 -22
- package/src/runtime/safe-tooling/google-oauth-broker.ts +25 -7
- package/src/runtime/safe-tooling/ios-development.ts +22 -8
- package/src/runtime/safe-tooling/job-summary.ts +1 -1
- package/src/runtime/safe-tooling/workspace-auth.ts +5 -2
- package/src/runtime/shared/atomic-text-file.ts +21 -0
- package/src/runtime/shared/bounded-child-supervisor.ts +9 -1
- package/src/runtime/shared/json-files.ts +8 -3
- package/src/runtime/shared/process-environment.ts +20 -9
- package/src/runtime/shared/response-budget.ts +1 -3
- package/src/runtime/standalone-recovery/controller-home-migration.ts +16 -24
- package/src/runtime/standalone-recovery/core.ts +3792 -417
- package/src/runtime/standalone-recovery/entry.ts +507 -45
- package/src/runtime/standalone-recovery/installer.ts +262 -148
- package/src/runtime/standalone-recovery/mcp-server.ts +29 -193
- package/src/runtime/standalone-recovery/operation-lock.ts +12 -2
- package/src/runtime/standalone-recovery/performance.ts +54 -16
- package/src/runtime/standalone-recovery/release.ts +53 -5
- package/src/runtime/standalone-recovery/service-labels.ts +5 -2
- package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +5 -2
- package/src/runtime/workflow/schedules/browser-probe.ts +17 -6
- package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +11 -3
- package/src/runtime/workflow/schedules/engine.ts +166 -178
- package/src/runtime/workflow/schedules/pending-activation.ts +11 -4
- package/src/runtime/workflow/schedules/work-continuation.ts +95 -11
- package/src/runtime/workflows/runtime.ts +15 -19
- package/src/testing/test-governance.ts +5 -1
- package/supervisor/chatgpt-conversation.ts +23 -0
- package/supervisor/client.ts +218 -0
- package/supervisor/control-plane.ts +963 -0
- package/supervisor/entry.ts +15 -0
- package/supervisor/forge-validators.ts +147 -0
- package/supervisor/index.ts +5 -0
- package/supervisor/native-browser-adapter.ts +1151 -0
- package/supervisor/native-messaging/host.ts +58 -0
- package/supervisor/native-messaging/manifest.ts +26 -0
- package/supervisor/native-messaging/protocol.ts +27 -0
- package/supervisor/paths.ts +18 -0
- package/supervisor/protocol.ts +250 -0
- package/supervisor/server.ts +412 -0
- package/supervisor/store.ts +1870 -0
- package/supervisor/tsconfig.json +8 -0
- package/supervisor/types.ts +261 -0
- package/SKILL.md +0 -427
- package/adapters/chatgpt/controller-host.ts +0 -119
- package/adapters/mcp/controller-round-compatibility.ts +0 -184
- package/adapters/mcp/frozen-client-semantic-compatibility.ts +0 -292
- package/adapters/mcp/runtime-gateway/work-compat-adapter.ts +0 -502
- package/adapters/mcp/runtime-gateway/work-validation-reconciler.ts +0 -1
- package/adapters/mcp/toolset-selection.ts +0 -41
- package/agents/openai.yaml +0 -4
- package/assets/skill-hooks.json +0 -41
- package/assets/skill-version.json +0 -189
- package/assets/skills/claude-review/SKILL.md +0 -231
- package/assets/skills/codex-review/SKILL.md +0 -103
- package/assets/templates/helpers/check-skill-version.ts +0 -193
- package/packages/kernel/progression/api/index.ts +0 -2
- package/packages/kernel/progression/application/projector.ts +0 -211
- package/packages/kernel/progression/domain/types.ts +0 -116
- package/packages/kernel/progression/index.ts +0 -1
- package/packages/kernel/scheduler/application/continuation-service.ts +0 -212
- package/packages/kernel/scheduler/domain/continuation.ts +0 -38
- package/packages/kernel/scheduler/infrastructure/continuation-dispatch-store.ts +0 -38
- package/packages/kernel/work/domain/admission-policy.ts +0 -34
- package/scripts/benchmark-background-check-overlap.ts +0 -228
- package/scripts/benchmark-computer-hotpath.ts +0 -255
- package/scripts/benchmark-controller-hotpath.ts +0 -212
- package/scripts/benchmark-controller-round2.ts +0 -191
- package/scripts/benchmark-ios-agent-device.ts +0 -511
- package/scripts/benchmark-mcp-host.sh +0 -117
- package/scripts/benchmark-mcp-transport.ts +0 -169
- package/scripts/benchmark-operational-memory-activation.ts +0 -235
- package/scripts/benchmark-operational-shadow.ts +0 -28
- package/scripts/benchmark-quality-harness.ts +0 -146
- package/scripts/benchmark-route-session-concurrency.ts +0 -915
- package/scripts/benchmark-thin-harness-gateway-ab.ts +0 -632
- package/scripts/benchmark-thin-harness-mcp-e2e.ts +0 -498
- package/scripts/benchmark-thin-harness.ts +0 -251
- package/scripts/benchmark-typescript-navigation.ts +0 -186
- package/scripts/benchmark-work-efficiency.ts +0 -334
- package/scripts/build-controller-ui.ts +0 -28
- package/scripts/check-npm-release.sh +0 -32
- package/scripts/check-public-release-surface.sh +0 -19
- package/scripts/check-release-published.sh +0 -57
- package/scripts/check-release-readiness.sh +0 -37
- package/scripts/check-release-version.mjs +0 -74
- package/scripts/check-skill-version.ts +0 -5
- package/scripts/check-tarball-install-smoke.sh +0 -150
- package/scripts/ensure-codegraph.sh +0 -16
- package/scripts/package-source-archive.sh +0 -147
- package/scripts/public-release-files.txt +0 -39
- package/scripts/public-release.ts +0 -174
- package/scripts/publish-release-tarball.sh +0 -27
- package/scripts/route-nl-vs-ts-eval.ts +0 -679
- package/scripts/run-skill-hook.ts +0 -244
- package/scripts/stage-runtime-release.ts +0 -44
- package/scripts/sync-codex-installed-copies.sh +0 -182
- package/src/cli/commands/tools.ts +0 -167
- package/src/cli/controller/progress.ts +0 -656
- package/src/cli/controller/work-mode.ts +0 -181
- package/src/cli/local-bridge/console-assets.ts +0 -17
- package/src/cli/local-bridge/dashboard.ts +0 -17
- package/src/cli/local-bridge/frontend/src/App.tsx +0 -10
- package/src/cli/local-bridge/frontend/src/components/Button.tsx +0 -1
- package/src/cli/local-bridge/frontend/src/components/DetailPane.tsx +0 -3
- package/src/cli/local-bridge/frontend/src/components/SearchField.tsx +0 -1
- package/src/cli/local-bridge/frontend/src/components/SectionHeader.tsx +0 -1
- package/src/cli/local-bridge/frontend/src/components/Segmented.tsx +0 -1
- package/src/cli/local-bridge/frontend/src/components/StatusText.tsx +0 -3
- package/src/cli/local-bridge/frontend/src/design/icons.tsx +0 -11
- package/src/cli/local-bridge/frontend/src/design/tokens.css +0 -8
- package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +0 -153
- package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +0 -37
- package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +0 -183
- package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +0 -2
- package/src/cli/local-bridge/frontend/src/features/system/SystemView.tsx +0 -2
- package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +0 -4
- package/src/cli/local-bridge/frontend/src/lib/api.ts +0 -30
- package/src/cli/local-bridge/frontend/src/lib/format.ts +0 -4
- package/src/cli/local-bridge/frontend/src/lib/routes.ts +0 -7
- package/src/cli/local-bridge/frontend/src/main.tsx +0 -1
- package/src/cli/local-bridge/frontend/src/shell/AppShell.tsx +0 -1
- package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +0 -2
- package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +0 -4
- package/src/cli/local-bridge/frontend/src/styles.css +0 -28
- package/src/cli/local-bridge/frontend/src/types.ts +0 -15
- package/src/cli/local-bridge/frontend/src/vite-env.d.ts +0 -1
- package/src/cli/local-bridge/frontend/vite.config.ts +0 -27
- package/src/cli/local-bridge/ui-dist/app.css +0 -1
- package/src/cli/local-bridge/ui-dist/app.js +0 -11228
- package/src/cli/mcp/access-mode.ts +0 -2
- package/src/cli/mcp/access-tools.ts +0 -2
- package/src/cli/mcp/audit.ts +0 -2
- package/src/cli/mcp/auth.ts +0 -2
- package/src/cli/mcp/instructions.ts +0 -2
- package/src/cli/mcp/legacy-context.ts +0 -2
- package/src/cli/mcp/legacy-tool-service.ts +0 -2
- package/src/cli/mcp/multi-repository.ts +0 -2
- package/src/cli/mcp/oauth.ts +0 -2
- package/src/cli/mcp/openai-secure-tunnel.ts +0 -2
- package/src/cli/mcp/paths.ts +0 -2
- package/src/cli/mcp/policy.ts +0 -2
- package/src/cli/mcp/post-finalize-work-attribution.ts +0 -2
- package/src/cli/mcp/proxy-env.ts +0 -2
- package/src/cli/mcp/readiness-projection.ts +0 -2
- package/src/cli/mcp/redaction.ts +0 -2
- package/src/cli/mcp/repo.ts +0 -2
- package/src/cli/mcp/repository-tools.ts +0 -2
- package/src/cli/mcp/server.ts +0 -2
- package/src/cli/mcp/setup.ts +0 -2
- package/src/cli/mcp/tool-capability-cache.ts +0 -2
- package/src/cli/mcp/tool-contract.ts +0 -2
- package/src/cli/mcp/tools.ts +0 -2
- package/src/cli/mcp/toolset-names.ts +0 -2
- package/src/cli/mcp/toolset-selection.ts +0 -2
- package/src/cli/mcp/toolset.ts +0 -2
- package/src/cli/mcp/transports/http.ts +0 -2
- package/src/cli/mcp/transports/session-registry.ts +0 -2
- package/src/cli/mcp/transports/stdio.ts +0 -2
- package/src/cli/mcp/types.ts +0 -2
- package/src/cli/mcp/umbrella-tools.ts +0 -2
- package/src/cli/tools/codegraph.ts +0 -695
- package/src/core/adoption/helper-wrapper-plan.ts +0 -159
- package/src/runtime/context/codegraph-cache-boundary.ts +0 -255
- package/src/runtime/context/codegraph-read-provider.ts +0 -611
- package/src/runtime/context/codegraph-sidecar.cjs +0 -248
- package/src/runtime/control-plane/codegraph-cache-retention.ts +0 -164
- package/src/runtime/control-plane/execution/content-equivalent-commit-authority.ts +0 -169
- package/src/runtime/control-plane/execution/direct-canonical-work-reconciliation.ts +0 -85
- package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +0 -655
- package/src/runtime/control-plane/execution/work-finalization-service.ts +0 -2850
- package/src/runtime/control-plane/execution/work-path-scope.ts +0 -37
- package/src/runtime/control-plane/execution/work-task-receipt.ts +0 -468
- package/src/runtime/control-plane/facade/controller-round-relay.ts +0 -3
- package/src/runtime/control-plane/facade/work-admission-policy.ts +0 -142
- package/src/runtime/control-plane/facade/work-implementation-review.ts +0 -2
- package/src/runtime/control-plane/facade/work-state-machine.ts +0 -2
- package/src/runtime/control-plane/facade/work-task-projection.ts +0 -66
- package/src/runtime/control-plane/routing/index.ts +0 -1
- package/src/runtime/control-plane/routing/route-policy.ts +0 -401
- package/src/runtime/control-plane/routing/workspace-admission.ts +0 -70
- package/src/runtime/gateway/mcp/execution-tools.ts +0 -2
- package/src/runtime/gateway/mcp/legacy-ios-tool-adapter.ts +0 -2
- package/src/runtime/gateway/mcp/persisted-check-process.ts +0 -2
- package/src/runtime/gateway/mcp/process-tools.ts +0 -2
- package/src/runtime/gateway/mcp/router.ts +0 -2
- package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +0 -2
- package/src/runtime/gateway/mcp/runtime-tools.ts +0 -2
- package/src/runtime/gateway/mcp/work-validation-reconciler.ts +0 -2
- package/src/runtime/plugins/browser-provider-registry.ts +0 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertImplementationReviewHistoryAppendOnly, validateImplementationReviewRecord } from './implementation-review';
|
|
2
|
+
import { normalizeWorkObjectiveRelationIds, validateWorkObjectiveRelationShape } from './objective-graph';
|
|
2
3
|
import {
|
|
3
4
|
WORK_PHASES,
|
|
4
5
|
isDirectEditWorkCompletionReceipt,
|
|
@@ -10,7 +11,6 @@ import {
|
|
|
10
11
|
type EvidenceState,
|
|
11
12
|
type SuggestedNextAction,
|
|
12
13
|
type WorkContract,
|
|
13
|
-
type WorkContractStatus,
|
|
14
14
|
type WorkPhase,
|
|
15
15
|
type WorkPhaseEvidence,
|
|
16
16
|
type WorkPhaseEvidenceMap,
|
|
@@ -24,7 +24,7 @@ export function transitionPhaseEvidence(
|
|
|
24
24
|
current: Pick<WorkContract, 'phaseEvidence' | 'evidenceRefs'>,
|
|
25
25
|
targetPhase: WorkPhase,
|
|
26
26
|
input: {
|
|
27
|
-
|
|
27
|
+
state?: WorkPhaseEvidence['state'];
|
|
28
28
|
summary: string;
|
|
29
29
|
evidenceRefs?: EvidenceRef[];
|
|
30
30
|
recordedAt: string;
|
|
@@ -56,13 +56,7 @@ export function transitionPhaseEvidence(
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
phaseEvidence[targetPhase] = {
|
|
59
|
-
state: input.
|
|
60
|
-
? 'failed'
|
|
61
|
-
: input.status === 'cancelled'
|
|
62
|
-
? 'skipped'
|
|
63
|
-
: input.status === 'blocked' || input.status === 'ready'
|
|
64
|
-
? 'blocked'
|
|
65
|
-
: 'active',
|
|
59
|
+
state: input.state ?? 'active',
|
|
66
60
|
source,
|
|
67
61
|
summary: input.summary.trim().slice(0, 1_000) || `Work entered ${targetPhase}.`,
|
|
68
62
|
evidenceRefs,
|
|
@@ -73,24 +67,8 @@ export function transitionPhaseEvidence(
|
|
|
73
67
|
|
|
74
68
|
export function validateWorkSemantics(contract: WorkContract): WorkContract {
|
|
75
69
|
if (!contract.objective.trim()) throw new Error('WORK_OBJECTIVE_REQUIRED');
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
const currentPhaseIndex = phaseIndex(contract.phase);
|
|
80
|
-
for (const phase of WORK_PHASES) {
|
|
81
|
-
const checkpoint = contract.phaseEvidence?.[phase];
|
|
82
|
-
if (!checkpoint) throw new Error(`WORK_PHASE_EVIDENCE_REQUIRED: ${phase}`);
|
|
83
|
-
const index = phaseIndex(phase);
|
|
84
|
-
if (index < currentPhaseIndex && !['satisfied', 'skipped'].includes(checkpoint.state)) {
|
|
85
|
-
throw new Error(`WORK_PHASE_EVIDENCE_PREVIOUS_NOT_SATISFIED: ${phase}`);
|
|
86
|
-
}
|
|
87
|
-
if (index === currentPhaseIndex && checkpoint.state === 'pending') {
|
|
88
|
-
throw new Error(`WORK_PHASE_EVIDENCE_REQUIRED: ${phase}`);
|
|
89
|
-
}
|
|
90
|
-
if (index > currentPhaseIndex && checkpoint.state !== 'pending') {
|
|
91
|
-
throw new Error(`WORK_PHASE_EVIDENCE_FUTURE_NOT_PENDING: ${phase}`);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
70
|
+
validateWorkObjectiveRelationShape(contract);
|
|
71
|
+
if (!['open', 'completed', 'cancelled'].includes(contract.semanticState)) throw new Error('WORK_SEMANTIC_STATE_INVALID');
|
|
94
72
|
for (const review of contract.implementationReviews ?? []) validateImplementationReviewRecord(review);
|
|
95
73
|
if (contract.completionReceipt) {
|
|
96
74
|
const receipt = contract.completionReceipt;
|
|
@@ -116,7 +94,9 @@ export function validateWorkSemantics(contract: WorkContract): WorkContract {
|
|
|
116
94
|
if (receipt.workspaceChangedPaths.length !== 0) throw new Error('WORK_COMPLETION_RECEIPT_READ_ONLY_REVIEW_WORKSPACE_CHANGED');
|
|
117
95
|
const reviewEvidence = contract.readOnlyReviewEvidence;
|
|
118
96
|
if (!reviewEvidence || reviewEvidence.sourceRevision !== receipt.sourceRevision) throw new Error('WORK_COMPLETION_RECEIPT_READ_ONLY_REVIEW_EVIDENCE_REQUIRED');
|
|
119
|
-
|
|
97
|
+
// Findings are durable observations the model/user acts on; they never block
|
|
98
|
+
// terminal completion. Only the exact inspected scope must stay consistent.
|
|
99
|
+
if (receipt.inspectedPaths.length === 0) throw new Error('WORK_COMPLETION_RECEIPT_READ_ONLY_REVIEW_SCOPE_REQUIRED');
|
|
120
100
|
const evidencePaths = [...new Set(reviewEvidence.inspectedPaths)].sort();
|
|
121
101
|
const receiptPaths = [...new Set(receipt.inspectedPaths)].sort();
|
|
122
102
|
if (evidencePaths.length !== receiptPaths.length || evidencePaths.some((path, index) => path !== receiptPaths[index])) {
|
|
@@ -143,34 +123,27 @@ export function validateWorkSemantics(contract: WorkContract): WorkContract {
|
|
|
143
123
|
if (contract.completionOutcome !== 'completed_local') throw new Error('WORK_COMPLETION_RECEIPT_LOCAL_EFFECT_OUTCOME_REQUIRED');
|
|
144
124
|
if (!receipt.operation.trim() || !receipt.target.id.trim()) throw new Error('WORK_COMPLETION_RECEIPT_LOCAL_EFFECT_TARGET_REQUIRED');
|
|
145
125
|
}
|
|
146
|
-
|
|
147
|
-
for (const phase of WORK_PHASES) {
|
|
148
|
-
if (!['satisfied', 'skipped'].includes(contract.phaseEvidence[phase].state)) {
|
|
149
|
-
throw new Error(`WORK_COMPLETION_PHASE_NOT_SATISFIED: ${phase}`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
for (const phase of ['delivery', 'cleanup'] as WorkPhase[]) {
|
|
153
|
-
if (contract.phaseEvidence[phase].receiptId !== receipt.receiptId) {
|
|
154
|
-
throw new Error(`WORK_COMPLETION_PHASE_RECEIPT_MISMATCH: ${phase}`);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
126
|
+
// Delivery/effect receipts are mechanical evidence. They never require or imply semantic completion.
|
|
157
127
|
}
|
|
158
128
|
const outcome = contract.completionOutcome;
|
|
159
129
|
if (!outcome) return contract;
|
|
160
|
-
if (
|
|
161
|
-
throw new Error(`WORK_SEMANTICS_INVALID: ${outcome} requires a
|
|
162
|
-
}
|
|
163
|
-
if (contract.dispatchState !== 'terminal') {
|
|
164
|
-
throw new Error(`WORK_SEMANTICS_INVALID: ${outcome} requires terminal dispatch`);
|
|
165
|
-
}
|
|
166
|
-
if (contract.evidenceState !== 'valid') {
|
|
167
|
-
throw new Error(`WORK_SEMANTICS_INVALID: ${outcome} requires valid evidence`);
|
|
130
|
+
if (!contract.completionReceipt) {
|
|
131
|
+
throw new Error(`WORK_SEMANTICS_INVALID: ${outcome} requires a delivery/effect receipt`);
|
|
168
132
|
}
|
|
133
|
+
// completionOutcome classifies the attached delivery/effect receipt only.
|
|
134
|
+
// Dispatch and generic evidence axes remain independent execution observations.
|
|
169
135
|
if (outcome === 'completed_changed' && contract.workKind !== 'repository_change') {
|
|
170
136
|
throw new Error('WORK_SEMANTICS_INVALID: completed_changed requires repository_change WorkKind');
|
|
171
137
|
}
|
|
172
|
-
|
|
173
|
-
|
|
138
|
+
// An empty repository delivery is evidence, not authority to rewrite WorkKind.
|
|
139
|
+
const emptyRepositoryDelivery = contract.workKind === 'repository_change'
|
|
140
|
+
&& isRepositoryCompletionReceipt(contract.completionReceipt)
|
|
141
|
+
&& contract.completionReceipt.delivery.kind === 'no_change'
|
|
142
|
+
&& contract.completionReceipt.changedPaths.length === 0;
|
|
143
|
+
if (outcome === 'completed_no_change'
|
|
144
|
+
&& !['completed_no_change', 'read_only_review'].includes(contract.workKind)
|
|
145
|
+
&& !emptyRepositoryDelivery) {
|
|
146
|
+
throw new Error('WORK_SEMANTICS_INVALID: completed_no_change requires a no-change WorkKind or proven empty repository delivery');
|
|
174
147
|
}
|
|
175
148
|
if (outcome === 'completed_no_change' && contract.workKind === 'read_only_review' && contract.completionReceipt?.source !== 'read_only_review') {
|
|
176
149
|
throw new Error('WORK_SEMANTICS_INVALID: read_only_review completed_no_change requires a read_only_review completion receipt');
|
|
@@ -214,24 +187,12 @@ const EVIDENCE_TRANSITIONS: Readonly<Record<EvidenceState, readonly EvidenceStat
|
|
|
214
187
|
export function validateWorkSemanticTransition(
|
|
215
188
|
current: WorkContract,
|
|
216
189
|
next: WorkContract,
|
|
217
|
-
options: {
|
|
190
|
+
options: { allowPhaseRegression?: boolean } = {},
|
|
218
191
|
): WorkContract {
|
|
219
|
-
const retryingFailedWork = current.status === 'failed'
|
|
220
|
-
&& !current.completionOutcome
|
|
221
|
-
&& ['claimed', 'launching', 'running', 'blocked'].includes(next.dispatchState);
|
|
222
|
-
const resumingRetainedCancelledWork = options.allowRetainedCancelledResume === true
|
|
223
|
-
&& current.status === 'cancelled'
|
|
224
|
-
&& current.dispatchState === 'terminal'
|
|
225
|
-
&& current.phaseEvidence[current.phase].state === 'skipped'
|
|
226
|
-
&& !current.completionReceipt
|
|
227
|
-
&& !current.completionOutcome
|
|
228
|
-
&& next.status === 'running'
|
|
229
|
-
&& next.dispatchState === 'running'
|
|
230
|
-
&& next.phase === 'implementation';
|
|
231
192
|
if (phaseIndex(next.phase) < phaseIndex(current.phase) && options.allowPhaseRegression !== true) {
|
|
232
193
|
throw new Error(`WORK_SEMANTICS_TRANSITION_INVALID: phase ${current.phase} -> ${next.phase} requires explicit regression authority`);
|
|
233
194
|
}
|
|
234
|
-
if (!
|
|
195
|
+
if (!DISPATCH_TRANSITIONS[current.dispatchState].includes(next.dispatchState)) {
|
|
235
196
|
throw new Error(`WORK_SEMANTICS_TRANSITION_INVALID: dispatch ${current.dispatchState} -> ${next.dispatchState}`);
|
|
236
197
|
}
|
|
237
198
|
if (!EVIDENCE_TRANSITIONS[current.evidenceState].includes(next.evidenceState)) {
|
|
@@ -246,6 +207,14 @@ export function validateWorkSemanticTransition(
|
|
|
246
207
|
if (current.parentWorkId !== next.parentWorkId) {
|
|
247
208
|
throw new Error('WORK_SEMANTICS_TRANSITION_INVALID: parentWorkId is immutable');
|
|
248
209
|
}
|
|
210
|
+
if (current.semanticParentWorkId !== next.semanticParentWorkId) {
|
|
211
|
+
throw new Error('WORK_SEMANTICS_TRANSITION_INVALID: semanticParentWorkId requires semantic CAS');
|
|
212
|
+
}
|
|
213
|
+
const currentDependencies = normalizeWorkObjectiveRelationIds(current.dependsOnWorkIds).sort();
|
|
214
|
+
const nextDependencies = normalizeWorkObjectiveRelationIds(next.dependsOnWorkIds).sort();
|
|
215
|
+
if (currentDependencies.length !== nextDependencies.length || currentDependencies.some((id, index) => id !== nextDependencies[index])) {
|
|
216
|
+
throw new Error('WORK_SEMANTICS_TRANSITION_INVALID: dependsOnWorkIds requires semantic CAS');
|
|
217
|
+
}
|
|
249
218
|
if (current.predecessorWorkId !== next.predecessorWorkId) {
|
|
250
219
|
throw new Error('WORK_SEMANTICS_TRANSITION_INVALID: predecessorWorkId is immutable');
|
|
251
220
|
}
|
|
@@ -253,7 +222,7 @@ export function validateWorkSemanticTransition(
|
|
|
253
222
|
return next;
|
|
254
223
|
}
|
|
255
224
|
|
|
256
|
-
export function
|
|
257
|
-
if (
|
|
225
|
+
export function suggestedActionsForSemanticState(state: 'open' | 'completed' | 'cancelled', actions: readonly SuggestedNextAction[]): SuggestedNextAction[] {
|
|
226
|
+
if (state !== 'open') return [];
|
|
258
227
|
return actions.slice(0, 8);
|
|
259
228
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { ExecutionPlacement, ScopeRef } from '../../identity/api/index';
|
|
2
2
|
import type { ProcessCheckReceiptEvidence } from './check-receipt';
|
|
3
|
-
import type { WorkAccessMode
|
|
3
|
+
import type { WorkAccessMode } from './execution-snapshot';
|
|
4
4
|
import type { RepositoryCompletionReceipt } from './repository-completion-receipt';
|
|
5
5
|
import type { WorkImplementationReviewRecord } from './implementation-review';
|
|
6
6
|
import type { EngineeringContextReceipt } from './engineering-contracts';
|
|
7
7
|
|
|
8
|
-
/** Work-persisted orchestration metadata is Kernel-owned; facade is a consumer. */
|
|
9
|
-
export type ExecutionMode = 'direct_control' | 'goal_workloop' | 'handoff_only';
|
|
10
8
|
export type FacadeDetailLevel = 'summary' | 'detail' | 'raw';
|
|
11
9
|
export interface EvidenceRef {
|
|
12
10
|
evidenceId?: string;
|
|
@@ -17,7 +15,7 @@ export interface EvidenceRef {
|
|
|
17
15
|
}
|
|
18
16
|
export interface WorkExecutionConcurrencyProjection {
|
|
19
17
|
schemaVersion: 1;
|
|
20
|
-
/** Projection only. Process
|
|
18
|
+
/** Projection only. Concrete Process/resource owners remain execution authority. */
|
|
21
19
|
status: 'waiting' | 'invalid';
|
|
22
20
|
source: 'work_compatibility' | 'resource_lease' | 'scheduler_capacity';
|
|
23
21
|
attemptId?: string;
|
|
@@ -31,7 +29,6 @@ export interface WorkExecutionConcurrencyProjection {
|
|
|
31
29
|
wakeTrigger:
|
|
32
30
|
| { kind: 'work_terminal'; workId: string }
|
|
33
31
|
| { kind: 'resource_release'; resourceKeys: string[] }
|
|
34
|
-
| { kind: 'controller_release'; workId: string }
|
|
35
32
|
| { kind: 'scheduler_capacity'; capacityKey: string }
|
|
36
33
|
| { kind: 'work_contract_change'; workId: string };
|
|
37
34
|
recordedAt: string;
|
|
@@ -39,7 +36,7 @@ export interface WorkExecutionConcurrencyProjection {
|
|
|
39
36
|
|
|
40
37
|
export interface SuggestedNextAction {
|
|
41
38
|
label: string;
|
|
42
|
-
tool: 'rh_access' | 'rh_status' | 'rh_inbox' | 'rh_context' | 'rh_work';
|
|
39
|
+
tool: 'rh_access' | 'rh_status' | 'rh_inbox' | 'rh_context' | 'rh_work' | 'capability_execute';
|
|
43
40
|
operation: string;
|
|
44
41
|
payload?: Record<string, unknown>;
|
|
45
42
|
risk: 'readonly' | 'local_repo_write' | 'workspace_write' | 'remote_write' | 'destructive_remote' | 'destructive' | 'raw_secret_config' | 'unknown';
|
|
@@ -58,16 +55,28 @@ export interface PolicyDecision {
|
|
|
58
55
|
}
|
|
59
56
|
|
|
60
57
|
/** Canonical Kernel Work domain contracts. */
|
|
61
|
-
export const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
58
|
+
export const SEMANTIC_WORK_STATES = ['open', 'completed', 'cancelled'] as const;
|
|
59
|
+
/** Thin semantic Work state. Execution/runtime conditions never add states here. */
|
|
60
|
+
export type SemanticWorkState = (typeof SEMANTIC_WORK_STATES)[number];
|
|
61
|
+
|
|
62
|
+
export interface WorkSemanticView {
|
|
63
|
+
workId: string;
|
|
64
|
+
revision: number;
|
|
65
|
+
semanticScope: ScopeRef;
|
|
66
|
+
objective: string;
|
|
67
|
+
state: SemanticWorkState;
|
|
68
|
+
requirementId?: string;
|
|
69
|
+
requirementRevision?: number;
|
|
70
|
+
planId?: string;
|
|
71
|
+
planRevision?: number;
|
|
72
|
+
/** Objective decomposition parent. Distinct from execution-child parentWorkId and continuation lineage. */
|
|
73
|
+
semanticParentWorkId?: string;
|
|
74
|
+
/** Explicit semantic ordering dependencies. Absence/empty means siblings are independently runnable. */
|
|
75
|
+
dependsOnWorkIds?: string[];
|
|
76
|
+
resultRefs: string[];
|
|
77
|
+
createdAt: string;
|
|
78
|
+
updatedAt: string;
|
|
79
|
+
}
|
|
71
80
|
|
|
72
81
|
/**
|
|
73
82
|
* Work execution phases are intentionally small and technical. User-facing
|
|
@@ -95,13 +104,12 @@ export type WorkPhaseEvidenceMap = Record<WorkPhase, WorkPhaseEvidence>;
|
|
|
95
104
|
export const WORK_RISKS = ['readonly', 'low', 'medium', 'high', 'destructive'] as const;
|
|
96
105
|
export type WorkRisk = (typeof WORK_RISKS)[number];
|
|
97
106
|
|
|
98
|
-
export const
|
|
107
|
+
export const TERMINAL_SEMANTIC_WORK_STATES: readonly SemanticWorkState[] = [
|
|
99
108
|
'completed',
|
|
100
|
-
'failed',
|
|
101
109
|
'cancelled',
|
|
102
110
|
] as const;
|
|
103
111
|
|
|
104
|
-
/** Independent
|
|
112
|
+
/** Independent execution/evidence classifications; none are Work lifecycle state. */
|
|
105
113
|
export const WORK_KINDS = [
|
|
106
114
|
'repository_change',
|
|
107
115
|
'completed_no_change',
|
|
@@ -277,14 +285,10 @@ export interface WorkContractConstraints {
|
|
|
277
285
|
allowMerge?: boolean;
|
|
278
286
|
allowCleanup?: boolean;
|
|
279
287
|
allowDestructive?: boolean;
|
|
280
|
-
requireHandoffOnAmbiguity?: boolean;
|
|
281
288
|
/** Immutable execution-policy snapshot captured when work starts. */
|
|
282
289
|
accessMode?: WorkAccessMode;
|
|
283
|
-
/**
|
|
290
|
+
/** Explicit repository placement. `auto` is retained as the legacy durable-Work isolated/frozen-base default. */
|
|
284
291
|
workspaceMode?: 'current' | 'isolated' | 'auto';
|
|
285
|
-
requireWorktree?: boolean;
|
|
286
|
-
/** Admission fence: repository mutation must not use the Direct Control/current-main lane. */
|
|
287
|
-
directMainProhibited?: boolean;
|
|
288
292
|
/** True when a change alters the agreed architecture direction rather than only implementation details. */
|
|
289
293
|
architectureStrategyChange?: boolean;
|
|
290
294
|
/** True when the proposed change weakens the thin-harness / high-performance execution policy. */
|
|
@@ -295,12 +299,6 @@ export interface WorkContractConstraints {
|
|
|
295
299
|
remoteDeliveryRequired?: boolean;
|
|
296
300
|
}
|
|
297
301
|
|
|
298
|
-
export interface WorkContractDriverPolicy {
|
|
299
|
-
preferred: 'direct_edit' | 'isolated_worktree' | 'external_controller' | 'handoff_only';
|
|
300
|
-
allowWorker: boolean;
|
|
301
|
-
allowDirectEdit: boolean;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
302
|
export interface WorktreePolicy {
|
|
305
303
|
required: boolean;
|
|
306
304
|
reason?: string;
|
|
@@ -371,15 +369,15 @@ export interface WorkReconciliationRecord {
|
|
|
371
369
|
}
|
|
372
370
|
|
|
373
371
|
export interface WorkContract {
|
|
374
|
-
schemaVersion: 1 | 2 | 3;
|
|
372
|
+
schemaVersion: 1 | 2 | 3 | 4;
|
|
375
373
|
workId: string;
|
|
376
374
|
/** Portable semantic scope. New records derive this from Requirement/Plan/Work identity, never local repository registration. */
|
|
377
375
|
scopeRef?: ScopeRef;
|
|
378
|
-
/** Replaceable node-local placement
|
|
376
|
+
/** Replaceable node-local execution placement; never part of semantic Work identity. */
|
|
379
377
|
executionPlacement?: ExecutionPlacement;
|
|
380
|
-
/**
|
|
378
|
+
/** Repository relationship used for local execution lookup; never semantic lifecycle authority. */
|
|
381
379
|
repoId: string;
|
|
382
|
-
/**
|
|
380
|
+
/** Optional checkout relationship for local execution placement. */
|
|
383
381
|
checkoutId?: string;
|
|
384
382
|
principalId?: string;
|
|
385
383
|
controllerInstanceId?: string;
|
|
@@ -387,10 +385,18 @@ export interface WorkContract {
|
|
|
387
385
|
/** Authoritative repository baseline captured at Work admission. Absent means legacy/unknown, never implicitly unborn. */
|
|
388
386
|
repositoryBaseState?: 'revision' | 'unborn';
|
|
389
387
|
workspaceFingerprint?: string;
|
|
390
|
-
routeDecisionFingerprint?: string;
|
|
391
|
-
routeDecision?: WorkRouteDecisionSnapshot;
|
|
392
|
-
mode: ExecutionMode;
|
|
393
388
|
objective: string;
|
|
389
|
+
/** Independent authored-context revision. Mechanical Work writes never use the SQLite row revision as semantic CAS. */
|
|
390
|
+
semanticRevision?: number;
|
|
391
|
+
/** Timestamp of the authored semantic content; mechanical Work writes must not change it. */
|
|
392
|
+
semanticUpdatedAt?: string;
|
|
393
|
+
/** The single authored Work lifecycle state. Execution/runtime conditions never add states here. */
|
|
394
|
+
semanticState: SemanticWorkState;
|
|
395
|
+
/** Optional provenance links to the Requirement/Plan semantic revisions used when this Work was authored. */
|
|
396
|
+
requirementRevision?: number;
|
|
397
|
+
planRevision?: number;
|
|
398
|
+
/** Model/user-selected semantic result references, separate from mechanical evidence and delivery receipts. */
|
|
399
|
+
semanticResultRefs?: string[];
|
|
394
400
|
acceptanceCriteria: string[];
|
|
395
401
|
constraints: WorkContractConstraints;
|
|
396
402
|
/** Risk is immutable contract input and is projected to legacy Task reads. */
|
|
@@ -399,16 +405,20 @@ export interface WorkContract {
|
|
|
399
405
|
engineeringContext?: EngineeringContextReceipt;
|
|
400
406
|
/** Actionable concurrency wait projection. Absence means no currently known semantic/resource blocker. */
|
|
401
407
|
executionConcurrency?: WorkExecutionConcurrencyProjection;
|
|
402
|
-
/**
|
|
408
|
+
/** Repository-execution phase observation. Never semantic Work authority. */
|
|
403
409
|
phase: WorkPhase;
|
|
404
|
-
/**
|
|
410
|
+
/** Mechanical phase evidence for execution/delivery observation only. */
|
|
405
411
|
phaseEvidence: WorkPhaseEvidenceMap;
|
|
406
|
-
/**
|
|
412
|
+
/** Execution/result classification. Semantic Work identity/state never depends on this field. */
|
|
407
413
|
workKind: WorkKind;
|
|
408
414
|
/** Primary is an objective-level business execution lane; execution_child is a resumable low-level operation handle owned by a primary Work or standalone caller. */
|
|
409
415
|
lifecycleRole?: 'primary' | 'execution_child';
|
|
410
416
|
/** Optional objective-level parent when this Work is only an execution child. */
|
|
411
417
|
parentWorkId?: string;
|
|
418
|
+
/** Objective decomposition parent for primary semantic Work. Never execution ownership or continuation lineage. */
|
|
419
|
+
semanticParentWorkId?: string;
|
|
420
|
+
/** Explicit objective ordering dependencies for primary semantic Work. Never inferred from Plan items. */
|
|
421
|
+
dependsOnWorkIds?: string[];
|
|
412
422
|
/** Immediate prior primary Work in the same semantic continuation lineage. Relationship evidence only; never execution or deletion authority. */
|
|
413
423
|
predecessorWorkId?: string;
|
|
414
424
|
/** Historical predecessors explicitly replaced by this Work. Relationship evidence only; never deletion authority. */
|
|
@@ -417,18 +427,18 @@ export interface WorkContract {
|
|
|
417
427
|
supersededBy?: string;
|
|
418
428
|
/** Bounded durable reason for the supersession edge. */
|
|
419
429
|
supersessionReason?: string;
|
|
430
|
+
/** Mechanical execution/evidence projections; none may advance semanticState. */
|
|
420
431
|
dispatchState: DispatchState;
|
|
421
432
|
evidenceState: EvidenceState;
|
|
422
433
|
completionOutcome?: CompletionOutcome;
|
|
423
|
-
status: WorkContractStatus;
|
|
424
434
|
createdAt: string;
|
|
425
435
|
updatedAt: string;
|
|
426
|
-
/**
|
|
436
|
+
/** Optional historical Issue/Task relationship identifiers; never lifecycle authority. */
|
|
427
437
|
issueId?: string;
|
|
428
438
|
taskId?: string;
|
|
429
439
|
/** Stable Requirement authority that this Work may complete. */
|
|
430
440
|
requirementId?: string;
|
|
431
|
-
/** Work-owned
|
|
441
|
+
/** Work-owned delivery/effect receipt. It never determines semantic completion. */
|
|
432
442
|
completionReceipt?: WorkCompletionReceipt;
|
|
433
443
|
/** Provenance for complex work dispatched from a durable PlanContract step. */
|
|
434
444
|
planId?: string;
|
|
@@ -450,11 +460,7 @@ export interface WorkContract {
|
|
|
450
460
|
readOnlyReviewEvidence?: ReadOnlyReviewEvidence;
|
|
451
461
|
/** Explicit Controller-reviewed acceptance bindings. Mechanical evidence attribution alone never writes this field. */
|
|
452
462
|
semanticAcceptanceEvidence?: WorkSemanticAcceptanceEvidence[];
|
|
453
|
-
/** Explicit policy fence. This is not semantic completeness evidence. */
|
|
454
|
-
allowedPaths: string[];
|
|
455
|
-
forbiddenPaths: string[];
|
|
456
463
|
checks: string[];
|
|
457
|
-
driver: WorkContractDriverPolicy;
|
|
458
464
|
worktreePolicy: WorktreePolicy;
|
|
459
465
|
evidencePolicy: EvidencePolicy;
|
|
460
466
|
approvalPolicy: ApprovalPolicy;
|
|
@@ -505,7 +511,7 @@ export function semanticScopeRefForWork(
|
|
|
505
511
|
return { schemaVersion: 1, kind: 'work', id: work.workId.trim() };
|
|
506
512
|
}
|
|
507
513
|
|
|
508
|
-
/** Resolve replaceable execution placement from explicit
|
|
514
|
+
/** Resolve replaceable execution placement from explicit placement or stored repository relationships. */
|
|
509
515
|
export function executionPlacementForWork(
|
|
510
516
|
work: Pick<WorkContract, 'executionPlacement' | 'repoId' | 'checkoutId'>,
|
|
511
517
|
): ExecutionPlacement {
|
|
@@ -518,11 +524,11 @@ export function executionPlacementForWork(
|
|
|
518
524
|
}
|
|
519
525
|
|
|
520
526
|
export interface WorkContractStore {
|
|
521
|
-
schemaVersion: 1 | 2 | 3;
|
|
527
|
+
schemaVersion: 1 | 2 | 3 | 4;
|
|
522
528
|
updatedAt: string;
|
|
523
529
|
contracts: WorkContract[];
|
|
524
530
|
}
|
|
525
531
|
|
|
526
|
-
export function
|
|
527
|
-
return
|
|
532
|
+
export function isTerminalSemanticWorkState(state: SemanticWorkState): boolean {
|
|
533
|
+
return TERMINAL_SEMANTIC_WORK_STATES.includes(state);
|
|
528
534
|
}
|