@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
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
# Supervisor owns the enrolled prompt chain
|
|
2
|
+
|
|
3
|
+
Status: accepted implementation contract for the autonomous-continuation candidate.
|
|
4
|
+
|
|
5
|
+
## Decision
|
|
6
|
+
|
|
7
|
+
An explicitly enrolled logical conversation is a durable task. Workflow Supervisor
|
|
8
|
+
monitors its exact provider effect, commits the model's structured receipt, and
|
|
9
|
+
reserves the next fixed prompt for CONTINUE. DONE and NEEDS_USER retain their
|
|
10
|
+
configured semantic validators; STOPPED remains explicit operator authority.
|
|
11
|
+
|
|
12
|
+
The Supervisor Effect prompt carries immutable task identity, outcome objective and terminal receipt; it is not a per-turn checklist, execution-time budget, or reason to perform a status probe before work. Ordinary CONTINUE turns should resume substantive work for as long as safe, useful actions remain. A terminal C receipt is a protocol acknowledgment, not evidence of productive progress; observed tool calls and deliverables are separate evidence. JSON metadata and Project instructions do not grant a missing ChatGPT App capability.
|
|
13
|
+
|
|
14
|
+
The first Work-bound enrollment still requires authenticated launcher admission,
|
|
15
|
+
canonical Work lookup and a prepared ControllerRound. Before consulting that lower
|
|
16
|
+
admission gate, the Runtime checks whether the exact conversation already has a
|
|
17
|
+
Supervisor task. Once enrolled, that existing task/effect/completion journal is the
|
|
18
|
+
only cross-turn authority and is reused even if its original ControllerRound is now
|
|
19
|
+
closed, exhausted or absent. Neither Work absence/turnover nor ControllerRound
|
|
20
|
+
status/budget is a second gate on a committed CONTINUE. Supervisor must not manufacture Controller claims,
|
|
21
|
+
release another owner's lease, rotate round authority, or rearm lower budgets to
|
|
22
|
+
make an outer prompt runnable. Normal MCP execution still enforces principal,
|
|
23
|
+
Controller ownership, Work scope, resource and write fences independently.
|
|
24
|
+
The enrollment compatibility receipt may settle only its exact origin Work and
|
|
25
|
+
provider effect. A newer Requirement relay is never a substitute receipt target.
|
|
26
|
+
|
|
27
|
+
Explicit Requirement cancellation revokes new sends for that Goal; Work carrier
|
|
28
|
+
cancellation alone does not. An explicit Work conversation rebind fences new sends to the predecessor
|
|
29
|
+
conversation at dispatch admission. Already-started effects remain observable
|
|
30
|
+
on their original exact conversation: unknown never authorizes resend. New task
|
|
31
|
+
registration retains the initial Work id as provenance even for Requirement
|
|
32
|
+
contracts. Existing Work-named tasks provide the same provenance from their
|
|
33
|
+
registered identity. Legacy Requirement-only tasks retain their registered
|
|
34
|
+
conversation; no newest Requirement relay is selected as their transport owner.
|
|
35
|
+
|
|
36
|
+
Scheduler liveness discovers existing relay references as well as repo Work
|
|
37
|
+
projections and resolves them through canonical getWorkContract. A missing list
|
|
38
|
+
entry is not deletion. A genuinely missing Work never implies completion or
|
|
39
|
+
authorizes retiring an unresolved provider effect. This candidate does not add
|
|
40
|
+
orphan deletion, a new relay index, or a second cleanup lifecycle.
|
|
41
|
+
|
|
42
|
+
## Cross-cutting closure
|
|
43
|
+
|
|
44
|
+
| Area | Existing owner and candidate behavior |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| Identity / scope | Exact enrolled task + conversation + causal effect; Work is execution context. |
|
|
47
|
+
| Authority / authorization | Supervisor owns prompts; authenticated MCP and Controller own repository mutations. No lease or capability is synthesized by receipt processing. |
|
|
48
|
+
| Concurrency / fencing | Existing effect dispatch transaction, unique causal successor, Runtime write claim and provider lane remain. Rebind is checked again at dispatch admission. |
|
|
49
|
+
| Persistence / replay | Existing Supervisor SQLite schema and append-only event journal; every nonterminal task must mechanically derive one causal obligation (unapplied effect, applied effect awaiting completion, or committed completion awaiting successor/terminal settlement). Restart reconciliation repairs the same obligation without a new table, enum or writer. |
|
|
50
|
+
| Unknown / recovery | Existing bounded provider attempts and independently spaced unknown observations. Retired Work does not suppress read-only effect reconciliation. |
|
|
51
|
+
| Lifecycle / retention | Supervisor terminal receipts/operator stop own task termination; existing retention/backup policies remain. Missing Work is not semantic terminality. |
|
|
52
|
+
| Evidence / privacy | Existing causal completion hashes, allowlisted provider evidence and redaction; no page-body persistence added. |
|
|
53
|
+
| Capacity / time / performance | Existing send lane, bounded scanner and observation budgets. Provider-wide inventory/backpressure may delay the consumer globally; exact-conversation target failures are task-local and cannot back off unrelated Supervisor tasks. |
|
|
54
|
+
| Topology / portability | Same in-process Runtime/Supervisor owner and native Browser adapter; no process, credential flow or platform dependency added. |
|
|
55
|
+
| Release / rollback | ReleaseSession verifies isolated Candidate B, then cutover retains rollback authority during soak. The new Stable release cannot become known-good until the canonical Supervisor ledger proves a causal CONTINUE → CONTINUE → DONE on the exact active release: one dispatch and applied receipt per source effect, terminal_done after the third assistant_completion, and at least two Runtime incarnations. A bounded disposable acceptance task supplies this proof; long-running production Work need not terminate. Historical receipts before the active-release boundary never qualify. No component activation or manual live database repair. |
|
|
56
|
+
|
|
57
|
+
## Predecessor obligations
|
|
58
|
+
|
|
59
|
+
| Previous obligation | Disposition | Successor location |
|
|
60
|
+
| --- | --- | --- |
|
|
61
|
+
| 20260916 Supervisor authority: exact conversation, model receipt, fixed prompts, semantic validators | KEEP | Supervisor control-plane/protocol/store and forge-validators. |
|
|
62
|
+
| Restart-safe effects, no unknown resend, bounded recovery | KEEP | Existing Supervisor effect journal and Browser adapter. |
|
|
63
|
+
| 20261001 ambiguous-send reconciliation: observer snapshots never authorize provider mutation | KEEP | 19147d69 remains the candidate baseline; native reconciliation stays read-only. |
|
|
64
|
+
| Lower ControllerRound continuation/provider authority | CHANGE | Initial admission/direct non-ChatGPT effects remain Controller-owned; enrolled ChatGPT continuation belongs exclusively to Supervisor. |
|
|
65
|
+
| 20260919 autonomous Work liveness and same-occurrence recovery | CHANGE | Scheduler canonical lookup of relay-referenced semantic Work; subsequent prompt-chain repair stays in Supervisor. |
|
|
66
|
+
| Explicit successor lineage/conversation inheritance | KEEP | Existing typed Work lineage and explicit binding API; outer task/effect identity does not change with a Work carrier. |
|
|
67
|
+
| Real unattended restart, multiple CONTINUE, DONE/NEEDS_USER canary | KEEP | Existing focused scenarios, process-restart smoke and release-bound live continuation proof; candidate is not complete before that evidence. |
|
|
68
|
+
|
|
69
|
+
## Verification
|
|
70
|
+
|
|
71
|
+
Retained scenarios must prove causal CONTINUE successor idempotency through
|
|
72
|
+
lower budget exhaustion without mutating the lower round, exact-conversation
|
|
73
|
+
rebind fences, observation of old started effects, semantic Work discovery,
|
|
74
|
+
the automation receipt successor baseline, bounded retry/unknown behavior and
|
|
75
|
+
process restart. Compiler and canonical architecture gates precede deployment.
|
|
76
|
+
Live acceptance requires a real enrolled conversation advancing multiple turns
|
|
77
|
+
without human continuation and a validated terminal receipt.
|
|
78
|
+
|
|
79
|
+
The native consumer must accept a causally completed tool-only turn even when
|
|
80
|
+
ChatGPT renders no assistant prose and its last visible message role is user.
|
|
81
|
+
Provider generation and cooldown still delay a new send, and dispatch admission
|
|
82
|
+
still verifies the exact source effect. Browser resources have the disposable
|
|
83
|
+
lifecycle defined below; task/effect history survives resource retirement.
|
|
84
|
+
A real b388b27c canary exposed
|
|
85
|
+
these consumer gaps after its first persisted CONTINUE, so source gates alone
|
|
86
|
+
did not establish unattended continuation acceptance.
|
|
87
|
+
|
|
88
|
+
## Timely consumption under observation backlog
|
|
89
|
+
|
|
90
|
+
The native consumer refreshes the canonical pending-send projection between
|
|
91
|
+
individual read-only tab inspections, including within bootstrap unknown-effect
|
|
92
|
+
inventory walks. At most one send is serviced at each checkpoint; least-recently
|
|
93
|
+
checked eligible effects receive the next opportunity. Busy/cooldown checks are
|
|
94
|
+
spaced by the existing active tick. Observation resumes after that opportunity,
|
|
95
|
+
so fresh sends cannot starve it and a full historical scan cannot hold a new
|
|
96
|
+
CONTINUE until the next pass. This is serial cooperative scheduling within the
|
|
97
|
+
same Runtime owner; its timestamps are ephemeral fairness hints, never dispatch
|
|
98
|
+
authority. Existing bounded native calls and admitted provider dispatches finish
|
|
99
|
+
before the next checkpoint; no operation is abandoned or allowed to race a
|
|
100
|
+
second writer. Unknown observation spacing/budgets, durable dispatch CAS,
|
|
101
|
+
source-completion validation and the shared provider lane remain authoritative.
|
|
102
|
+
|
|
103
|
+
Live acceptance also records completion-to-successor dispatch latency under
|
|
104
|
+
existing Browser backlog. An eventual CONTINUE/CONTINUE/DONE chain alone does
|
|
105
|
+
not establish timely continuation. The previous 5a6fc9cb canary's 688,144 ms
|
|
106
|
+
second-successor delay is failed timing evidence and remains in the incident
|
|
107
|
+
record; it must not be erased or relabeled as successful timing acceptance.
|
|
108
|
+
|
|
109
|
+
## Disposable browser resources
|
|
110
|
+
|
|
111
|
+
The existing native Supervisor consumer owns tab retention and restoration.
|
|
112
|
+
When browser work is suspended by durable cooldown or unknown-observation
|
|
113
|
+
spacing, it may close its created canonical tab only after a readable snapshot
|
|
114
|
+
proves that no provider generation is running. An unbound bootstrap's sole
|
|
115
|
+
observation resource remains until binding or explicit task termination.
|
|
116
|
+
An applied effect awaiting its model receipt remains eligible for observation.
|
|
117
|
+
DONE, NEEDS_USER and explicit STOPPED retire owned resources; after restart the
|
|
118
|
+
same owner reconstructs ownership from exact task identity and window.name.
|
|
119
|
+
An adopted user tab loses only the Supervisor marker and stays open.
|
|
120
|
+
|
|
121
|
+
An operator-STOPPED bootstrap may have written an entire machine-authored effect to a
|
|
122
|
+
Project composer without clicking Send. A subsequent bootstrap for that **same Project**
|
|
123
|
+
may replace the residue only if the canonical Supervisor ledger proves the prior task is
|
|
124
|
+
STOPPED, the prior effect has zero dispatch generations, and its last pre-Send failure
|
|
125
|
+
durably attests that exact, single visible editor (classification=current_effect,
|
|
126
|
+
send_clicked=false, matching full text length and SHA-256 fingerprint). The permitted editor payload must either match the canonical
|
|
127
|
+
immutable effect bytes exactly or match that persisted pre-Send observation's
|
|
128
|
+
full length and fingerprint exactly. This dual exact check handles a corrected
|
|
129
|
+
ProseMirror reader that no longer synthesizes layout newlines inside auto-linked
|
|
130
|
+
URLs, without ignoring any other whitespace or allowing arbitrary human edits.
|
|
131
|
+
New observations reconstruct text from the direct ProseMirror paragraphs' text
|
|
132
|
+
nodes rather than CSS-rendered layout text. The sole Chrome extension
|
|
133
|
+
rechecks the stopped effect marker and a fresh exact editor fingerprint immediately
|
|
134
|
+
before its prepare-only replacement. If ChatGPT hydrates this exact STOPPED-owned draft
|
|
135
|
+
after the first bootstrap snapshot, the same pinned Computer target may obtain
|
|
136
|
+
one fresh read-only observation following a `composer_not_empty` prepare refusal
|
|
137
|
+
and attempt exactly one guarded second **prepare**, still before any Send
|
|
138
|
+
generation. Unknown mutation, foreign text or missing precise evidence remain
|
|
139
|
+
blocked; no task, effect or provider is duplicated. This grants no replay or
|
|
140
|
+
new provider authority. Ambiguous/applied/possibly-sent effects, user or foreign drafts,
|
|
141
|
+
and a generating assistant always fail closed. A successful prepare still requires the
|
|
142
|
+
normal exact-effect Send and completion checks; never count typing as delivery.
|
|
143
|
+
|
|
144
|
+
When delivery or read-only observation is due, complete supported-browser
|
|
145
|
+
inventory must prove the exact enrolled conversation absent before the owner
|
|
146
|
+
opens its persisted conversation URL. An unreadable inventory, foreign owner,
|
|
147
|
+
ambiguous exact candidate or unresolved resource close fails closed. At most one
|
|
148
|
+
restoration per conversation is attempted in a consumer pass, with existing
|
|
149
|
+
transport backoff after failure. Reopening a tab neither creates a ChatGPT
|
|
150
|
+
conversation nor changes provider effect admission, generation or outcome.
|
|
151
|
+
Outcome unknown is still read-only and never authorizes resend. No persistent
|
|
152
|
+
state, extra lifecycle owner, schema or provider retry policy is added.
|
|
153
|
+
|
|
154
|
+
The operator's three-goal consolidation explicitly stops historical duplicate
|
|
155
|
+
tasks through the Supervisor API. It does not infer completion, clear effects,
|
|
156
|
+
cancel another execution owner's claim or delete ControllerRound authority.
|
|
157
|
+
|
|
158
|
+
Project discovery attributes a conversation to a project page only when its
|
|
159
|
+
canonical route carries the same project id. Sidebar presence is not project
|
|
160
|
+
membership. The existing discovery store validates both incoming and retained
|
|
161
|
+
metadata against that route, including projects whose URLs omit a title slug;
|
|
162
|
+
a conflicting observation cannot displace a proven title from another source.
|
|
163
|
+
Discovery remains observation, never task enrollment or dispatch authority.
|
|
164
|
+
|
|
165
|
+
## Provider observation and explicit recovery (20261002)
|
|
166
|
+
|
|
167
|
+
The same native consumer reads the visible hydrated conversation surface.
|
|
168
|
+
Hidden server-rendered copies, profile loading and unrelated page busy markers
|
|
169
|
+
are not provider activity. Current-turn reasoning/tool text contributes only to
|
|
170
|
+
the existing activity digest, even before an assistant role message exists.
|
|
171
|
+
Current provider status regions include localized disconnect/delivery-timeout
|
|
172
|
+
messages. A status region is evidence; arbitrary chat prose is not.
|
|
173
|
+
|
|
174
|
+
A reserved recovery remains authorized across consumer passes and provider
|
|
175
|
+
cooldown, but never authorizes stopping a live turn. Unchanged reasoning/tool
|
|
176
|
+
activity and local wait expiry do not prove provider termination. A latest user
|
|
177
|
+
role without a settled assistant remains unresolved even if the Stop button is
|
|
178
|
+
absent. Only a settled idle assistant or explicit provider failure admits the
|
|
179
|
+
existing bounded recovery; a resumed live provider delays its dispatch. The
|
|
180
|
+
original applied prompt is never replayed. A dispatch function returning
|
|
181
|
+
without clicking Send supplies a dispatch-owner negative proof. Browser observers
|
|
182
|
+
still cannot turn absence or a transport exception into that proof.
|
|
183
|
+
|
|
184
|
+
After bounded automatic recovery stops, an explicit user recovery may reserve
|
|
185
|
+
one causally keyed recovery of the current applied leaf. The local operator RPC
|
|
186
|
+
requires exact task/source effect, a request id and reason; Native Messaging has
|
|
187
|
+
no access to it. Duplicate calls reuse the same recovery. Existing exhausted
|
|
188
|
+
events, provider generations and task/conversation identity are retained; the
|
|
189
|
+
new recovery itself cannot recursively auto-recover. No schema, enum, process,
|
|
190
|
+
readiness authority or recovery owner is added. Existing terminal states remain
|
|
191
|
+
terminal and an unresolved unknown effect blocks this operation.
|
|
192
|
+
|
|
193
|
+
Bounded migration exception: the pre-20261002 native adapter recorded its own
|
|
194
|
+
returned pre-click failures as unknown. Explicit recovery may reconstruct a
|
|
195
|
+
negative proof only from the current dispatch's persisted native pre-send reason,
|
|
196
|
+
never a browser snapshot or generic exception. Remove this reader after those
|
|
197
|
+
historical effects reconcile; new producers write the negative proof directly.
|
|
198
|
+
The same whole-Runtime release/rollback and existing Supervisor retention apply.
|
|
199
|
+
|
|
200
|
+
## Productive turns and frozen tool context (20261002)
|
|
201
|
+
|
|
202
|
+
Every newly rendered Supervisor prompt includes the existing `@forge` tool
|
|
203
|
+
invocation used by the ordinary ChatGPT delivery adapter. Normal continuations
|
|
204
|
+
retain conversation context instead of repeating the full historical objective,
|
|
205
|
+
and ask for the next unfinished product change or acceptance check. Unchanged
|
|
206
|
+
infrastructure summaries do not satisfy a work checkpoint.
|
|
207
|
+
Normal turns carry the existing registered repository identity and name the
|
|
208
|
+
direct read/edit/command/check tools. An explicitly registered checkout is carried
|
|
209
|
+
with that identity, so concurrent platform tasks do not follow one mutable
|
|
210
|
+
repository default. This is execution context, not checkout allocation or an
|
|
211
|
+
authorization bypass; domain tools still validate the selected checkout and fences.
|
|
212
|
+
Existing registration may fill this hint only once when it was initially absent
|
|
213
|
+
and every task/conversation/repository/objective/policy/semantic obligation is
|
|
214
|
+
unchanged. The existing Store transaction is the sole writer; conflicting
|
|
215
|
+
checkout selections fail. One diagnostic event in the existing journal records
|
|
216
|
+
the selected ids; retries of the original registration retain the selected hint.
|
|
217
|
+
No schema, lifecycle enum, RPC, process or alternate routing
|
|
218
|
+
authority is added. Effect prompts, unknowns, budgets and completion history are
|
|
219
|
+
untouched; existing retention, backup and whole-Runtime rollback still apply.
|
|
220
|
+
Semantic Work records are not execution.
|
|
221
|
+
Retrieval readiness describes bounded evidence gaps; the model resolves relevant
|
|
222
|
+
gaps and owns semantic sufficiency. It is not a second authorization/approval gate.
|
|
223
|
+
Missing implementation requires a scoped architecture decision and implementation,
|
|
224
|
+
rather than repeated substrate discovery. This adds prompt context only, with no
|
|
225
|
+
dispatch authority, schema, lifecycle or heuristic productivity gate.
|
|
226
|
+
Model judgment owns
|
|
227
|
+
which coherent wave advances the authorized objective; no keyword/count/score
|
|
228
|
+
gate, claim bypass, forced code mutation or automatic goal completion is added.
|
|
229
|
+
Context materialization owns bounded, redacted source bytes and their line/hash/
|
|
230
|
+
truncation metadata; the MCP facade must preserve them together. Explicit code
|
|
231
|
+
needles retain lexical coverage even when fuzzy structural candidates fill the
|
|
232
|
+
discovery budget. Existing current-turn provider status also recognizes analysis
|
|
233
|
+
paused as unavailable response delivery, retaining outcome-unknown classification
|
|
234
|
+
and the same single bounded resume. A live generating surface still blocks Send.
|
|
235
|
+
The read-only Work continuation projection directs open Work toward its next
|
|
236
|
+
authorized scoped step rather than prescribing a retired model-facing claim
|
|
237
|
+
operation. Existing execution admission and writer/resource fences still apply.
|
|
238
|
+
|
|
239
|
+
Newly rendered Supervisor prompts use the typed outer automation metadata already
|
|
240
|
+
present on Forge tools: exact `automation_task_id`,
|
|
241
|
+
`automation_type=autonomous_continuation`, and `automation_status`. Intermediate
|
|
242
|
+
calls use `working`; the final Forge call for the turn uses `continue`, `done` or
|
|
243
|
+
`needs_user`. The provider-facing continuation is intentionally close to a
|
|
244
|
+
human "continue working" request: the model reads the previous result and
|
|
245
|
+
live project evidence, chooses useful actions and keeps executing while meaningful
|
|
246
|
+
authorized work remains. It does not prescribe an existing Work, checkout,
|
|
247
|
+
sequence or phase as a mandatory path, nor treat one successful check or tool
|
|
248
|
+
call as completion. Parallel user and autonomous efforts may share an outcome
|
|
249
|
+
without sharing a Work; models assess ownership and live source evidence,
|
|
250
|
+
while Forge enforces mechanical writer/resource boundaries at execution. The
|
|
251
|
+
prompt discourages repeated status-only rounds and requests actual results and
|
|
252
|
+
remaining gaps. This is model guidance, not a semantic scoring gate, new state
|
|
253
|
+
store or second Work/progress authority. An `automation:*` or `receipt:*` causal checkpoint
|
|
254
|
+
is retained in the durable completion ledger but omitted from model-facing
|
|
255
|
+
`continuity.summary`: it is a transport reference, not an engineering handoff.
|
|
256
|
+
Meaningful non-receipt checkpoints and recovery/correction reasons remain
|
|
257
|
+
bounded advisory context. No elapsed-time quota, forced operation count,
|
|
258
|
+
semantic scoring gate, extra state store, or new lifecycle authority is added.
|
|
259
|
+
Receipt processing still derives the exact source effect from the canonical
|
|
260
|
+
Supervisor task and reserves the successor transactionally; tool payloads do
|
|
261
|
+
not choose another task/effect/conversation. The historical
|
|
262
|
+
`rh_work repair` / `automation.receipt:*` parser remains a bounded migration reader
|
|
263
|
+
only for prompts already issued before cutover and must not be used by new prompt
|
|
264
|
+
producers or become a second replay authority.
|
|
265
|
+
|
|
266
|
+
An explicitly launched child ChatGPT Work already goes through
|
|
267
|
+
`ensureWorkflowSupervisorEnrollmentForWork`: a distinct canonical conversation
|
|
268
|
+
gets its own existing task/effect journal, while a reused conversation returns
|
|
269
|
+
its original owner. Subsequent turns and accepted termination use the same
|
|
270
|
+
Supervisor and disposable tab cleanup. Prompt guidance requires enrollment
|
|
271
|
+
before a handoff; it does not create child conversations or a second parent
|
|
272
|
+
lifecycle. Existing typed Work relations carry decomposition when needed.
|
|
273
|
+
|
|
274
|
+
Verification extends retained compatibility, provider-wait and continuation
|
|
275
|
+
scenarios. Whole-Runtime activation follows canonical gates; actual productive
|
|
276
|
+
successive turns remain separate live acceptance evidence. Original exhausted
|
|
277
|
+
records are preserved and may only receive the existing explicit operator
|
|
278
|
+
recovery after the exact provider turn is proven settled or failed.
|
|
279
|
+
|
|
280
|
+
## Chrome attachment continuity (20261015)
|
|
281
|
+
|
|
282
|
+
Computer owns browser/profile selection and tab attachments. The extension keeps
|
|
283
|
+
one random provider instance id in `chrome.storage.local`, scoped by Chrome to
|
|
284
|
+
that extension/profile. Worker suspension, extension reload and browser restart
|
|
285
|
+
therefore preserve profile identity. The id is removed on extension uninstall;
|
|
286
|
+
there is no task/effect state, credential, URL, or conversation content in this
|
|
287
|
+
cache. The existing Computer Controller authority remains the only durable
|
|
288
|
+
attachment writer. The extension owns only this constant-size transport identity,
|
|
289
|
+
requires the standard storage permission and grants no new host access. Discovery
|
|
290
|
+
and target-command heartbeats derive their source identity from this same
|
|
291
|
+
persisted profile id; a worker restart must not orphan discovery or change
|
|
292
|
+
the physical-tab binding. See the
|
|
293
|
+
[Chrome storage contract](https://developer.chrome.com/docs/extensions/reference/api/storage#storage_areas).
|
|
294
|
+
|
|
295
|
+
The native Browser primitive treats Runtime's process lookup as liveness
|
|
296
|
+
only. Desktop Operator exclusively establishes exact Chrome GUI PID and Tab ID
|
|
297
|
+
authority through ScriptingBridge and revalidates bundle/executable identity.
|
|
298
|
+
Independent headless Chrome roots may coexist; zero or multiple GUI roots fail
|
|
299
|
+
closed in Desktop Operator before Apple Events. Runtime must not re-implement
|
|
300
|
+
process selection by counting every pgrep match or fall back to another
|
|
301
|
+
provider.
|
|
302
|
+
|
|
303
|
+
A missing pinned profile stays unavailable even when another profile is the sole
|
|
304
|
+
live provider. Within the same profile, Chrome tab id takes precedence over
|
|
305
|
+
window id so moving a tab between windows preserves attachment. An existing pin
|
|
306
|
+
at another conversation URL is identity drift. Only a positive Chrome tab-missing
|
|
307
|
+
result permits recovery through complete exact-conversation inventory: reuse the
|
|
308
|
+
unique existing conversation tab, or reopen the persisted conversation URL when
|
|
309
|
+
absent. This preserves the existing disposable-resource restoration rule without
|
|
310
|
+
creating a new ChatGPT conversation. Ambiguous matches and unreadable inventory
|
|
311
|
+
remain unresolved; they do not authorize profile replacement or another tab.
|
|
312
|
+
Bootstrap recovery still requires the same live provider's positive missing-tab
|
|
313
|
+
proof and the existing Computer binding CAS.
|
|
314
|
+
|
|
315
|
+
Tab creation and conversation hydration are separate outcomes. An ensure failure
|
|
316
|
+
may return its exact physical attachment alongside the error. The existing
|
|
317
|
+
Computer surface lease stores that attachment before reporting failure; page
|
|
318
|
+
readiness and Send remain unavailable. A subsequent worker uses that binding
|
|
319
|
+
instead of creating another Project tab. Claimed commands without a result stay
|
|
320
|
+
unknown and cannot authorize provider fallback or another tab creation. The
|
|
321
|
+
optional failure binding is backward compatible; only updated extensions supply
|
|
322
|
+
it. No database schema, lifecycle, process, retry budget, external send, or second
|
|
323
|
+
writer is added. Existing leases, redacted receipts, task terminalization,
|
|
324
|
+
tombstone retention, backpressure and unknown-effect fences remain. Complete
|
|
325
|
+
Runtime release/rollback includes the adapter contract and matching extension.
|
|
326
|
+
|
|
327
|
+
Incident evidence: read-only Runtime calls on 2026-10-15 observed 188 historical
|
|
328
|
+
Supervisor tasks and zero active tasks; recent retrieved acceptance tasks were
|
|
329
|
+
terminal. That inventory is not evidence of current autonomous sends. Computer
|
|
330
|
+
reported 227 saved records, 221 unverified and six dead native records; metadata
|
|
331
|
+
is not proof of a live tab. Existing discovery stays observation-only and never
|
|
332
|
+
enrolls historical conversations. A source reproduction combined unavailable
|
|
333
|
+
content scripts with worker restart: the old code changed instance id, returned
|
|
334
|
+
no binding, and created two tabs for one bootstrap key. The candidate retained
|
|
335
|
+
one instance and returned the failed page's binding, keeping one tab and sending
|
|
336
|
+
nothing. A separate Controller probe verified failed-binding persistence, broker
|
|
337
|
+
restart reuse and no commands to a foreign profile. These are bounded adapter
|
|
338
|
+
facts; live release acceptance remains separate.
|
|
339
|
+
|
|
340
|
+
### Live Chrome content contract at Bootstrap
|
|
341
|
+
|
|
342
|
+
A projected Chrome extension on disk is not evidence that an existing Chrome tab has loaded the same content script. Before Supervisor consumes an exact, single-use authorization to back up and replace an unrelated Project composer draft, the actual pinned tab must attest `composerReplacementContract=exact-backed-up-project-draft-v1` in its read-only snapshot. An absent attestation is a task-local `COMPUTER_CHATGPT_BOOTSTRAP_LOADED_SCRIPT_STALE` pre-send failure, not permission to clear the editor, switch providers, create a replacement tab, or record Send. The Chrome background independently checks this exact-tab capability when preparing a guarded draft replacement. The original draft and one-use authorization remain intact when the loaded script is stale; after reloading the extension, the original unspent effect may be rearmed only within its existing bounded operator-retry contract. Projection checks and MCP health cannot substitute for this live evidence. Final release acceptance still requires independent actual multi-turn work to DONE.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Forge V3 desktop client boundary
|
|
2
|
+
|
|
3
|
+
Status: accepted
|
|
4
|
+
Date: 2026-10-05
|
|
5
|
+
Authority: [`../CURRENT.md`](../CURRENT.md)
|
|
6
|
+
|
|
7
|
+
## Decision
|
|
8
|
+
|
|
9
|
+
Forge V3 introduces a fresh cross-platform desktop client under `apps/desktop`. The client is a presentation and interaction adapter over the existing Forge Runtime and Controller authorities; it is not a second control plane and does not reuse the retired Local Bridge web frontend as product architecture.
|
|
10
|
+
|
|
11
|
+
The initial macOS shell exposes two explicit interaction modes without creating a new domain state machine: Local for client-owned conversation interaction, and MCP for Projects/Work plus Runtime/Recovery operations. A lightweight sidebar selects mode, repository scope and Work; the single main surface shows either the Local conversation or the MCP repository/work surface and immediate actions. Plan, evidence, IDs and mechanical Runtime facts are disclosed on demand rather than occupying a permanent inspector. These surfaces are views over canonical Runtime facts rather than independent client state machines.
|
|
12
|
+
|
|
13
|
+
## Authority boundary
|
|
14
|
+
|
|
15
|
+
- Requirement, Plan, Work, ControllerSession/ControllerRound, Scheduler, Workflow Supervisor, repository/worktree identity, connections and Runtime/Recovery lifecycle remain authoritative in their existing Forge owners.
|
|
16
|
+
- The desktop client may own only transient presentation state such as selected navigation, active inspector tab, draft text, window geometry and replaceable transport handles.
|
|
17
|
+
- The client must not persist a mirrored Requirement/Plan/Work database, infer semantic completion from UI state, or create a client-side scheduler/retry authority.
|
|
18
|
+
- Runtime reads enter through typed projection/query contracts. Runtime mutations enter through existing typed Runtime/Controller capabilities and preserve their CAS, effect, authorization and outcome-unknown semantics.
|
|
19
|
+
- Tauri owns desktop shell mechanics only. Starting or closing the UI must not mint another Forge Runtime, Recovery, Scheduler or Supervisor authority.
|
|
20
|
+
- A disconnected UI is an adapter availability state. It does not redefine Work, Scheduler or Runtime semantic state.
|
|
21
|
+
- Runtime/Recovery history is projected from the standalone Recovery authority's bounded canonical audit tail. The projection exposes event/time and a bounded outcome bit only, omits arbitrary audit detail and local paths, and is never persisted or reconstructed by the desktop client.
|
|
22
|
+
|
|
23
|
+
## Foundation layout
|
|
24
|
+
|
|
25
|
+
`apps/desktop/src/runtime-projection.ts` defines the projection-facing client boundary. Its bootstrap value is presentation-only and intentionally says `Runtime not connected`; no fake Requirement, Plan, Work or connection facts are synthesized before Runtime integration lands.
|
|
26
|
+
|
|
27
|
+
`apps/desktop/src-tauri` is the fresh Tauri 2 shell. Platform-specific code remains behind this shell/provider boundary so Windows support can be added without changing semantic ownership.
|
|
28
|
+
|
|
29
|
+
## Runtime transport
|
|
30
|
+
|
|
31
|
+
The desktop shell reaches Canonical Runtime through its existing loopback MCP HTTP transport. The Tauri process resolves the installed Controller Home and Runtime service configuration, reads the Runtime bearer token only inside the native process, and issues stateless MCP `tools/call` requests. The token is never projected into the webview. Desktop mutations therefore still enter through `capability_execute`; the current automatic-continuation conversation switch calls `controller.workflow_supervisor.switch_to_fresh_conversation` and preserves the Supervisor CAS/effect fences.
|
|
32
|
+
|
|
33
|
+
The bridge is intentionally typed and narrow. It exposes only the product facts/actions needed by the current macOS surfaces: Repository Registry projection, bounded repository/runtime status, selected Work detail, Requirement detail, Plan detail, pending UserRequest projection, automatic-continuation projection, controller/tunnel connection projection, explicit Work continuation, explicit fresh-conversation migration, and bounded connection repair. Each command forwards to an existing Forge facade/tool; it does not expose Controller Home persistence, a generic database API, or a client-owned retry/session engine.
|
|
34
|
+
|
|
35
|
+
## Project Workbench projection
|
|
36
|
+
|
|
37
|
+
The V3 Project Workbench remains projection-only. Entering MCP or selecting a Project first establishes a repository/worktree overview from canonical Repository Registry and repository-state facts; it does not implicitly select or create a Work. The primary MCP surface may summarize the already-projected Repository cleanliness/revision, current Work count, active worktree inventory and Runtime/MCP readiness in compact operational cards; once a Work is selected, the same summary layer may surface canonical Work revision/state, linked Plan revision/status, execution-evidence phase/check counts and Repository state before the detailed sections. These summaries are derived only from the projection already in memory and never become a client-owned status model. Project navigation reads the canonical Repository Registry through `repository_list`; active checkout/worktree inventory comes from the existing `repository_get(detail)` authority, then the native bridge strips it to checkout id, local path, branch, worktree kind, lifecycle and active identity and bounds the WebView list rather than copying complete historical Registry records; bounded Git/repository state comes from `rh_status(list)`; the sidebar's current Work collection and bounded recent completed/cancelled history come from canonical `rh_work(list)` rather than a client-invented `rh_status` snapshot shape; once the user selects a Work, its canonical `revisionHistory`, its decomposition/dependency graph, and a bounded execution-evidence projection come from `rh_work(get, detail)`; linked Requirement and Plan authored facts plus canonical Plan `revisionHistory` are read through `rh_work(requirement_get)` and `rh_work(plan_get, detail)`. The Work detail execution projection is sourced from the canonical WorkContract execution fields (`dispatchState`, `evidenceState`, `phase`, `workKind`, `completionOutcome`, declared checks, `phaseEvidence`, verification records and `evidenceRefs`) and strips process-local artifact paths or other unnecessary mechanics before crossing into the webview. The MCP Work surface may drill into the already-projected verification timing, stale reason, bounded receipt facts and evidence-reference identity/summary so a user can audit why a check is considered valid or stale; it must not re-run a check, infer freshness, resolve artifact paths or manufacture receipt state in the renderer. Work remains semantic scope only: unless a separate canonical execution-placement fact is supplied, the desktop must not present the Project active checkout as the Work's execution checkout. The desktop must not parse semantic `resultRefs` to infer check outcomes, phase completion, execution placement or execution progress. Pending human-boundary facts come from instance-level `rh_inbox(list)` and are filtered to an exact `targetScope.workId` match before appearing in the selected Work surface, so the client does not turn the main workspace into a global/stale handoff dump. The focused surface may show Work semantic state/revision, repository dirty state, branch/source revision and canonical `nextSafeAction` as a compact fact strip, while Requirement outcome/acceptance criteria, Plan items, Work parent/dependencies, execution/check evidence, semantic revision history and result references remain progressive disclosure. History renders recorded semantic revisions as supplied; the client does not calculate progress, backfill missing revisions, or reinterpret historical state. Selecting a Project or Work changes only transient desktop presentation state. An explicit MCP refresh may re-read Repository Registry, repository/worktree facts, Work/Plan/evidence projection and Supervisor facts as one user-requested snapshot refresh; it does not poll, reconcile, retry or maintain a client-owned synchronization lifecycle. The client does not persist or reconstruct Work, Requirement, Plan, UserRequest, Git or Scheduler authority.
|
|
38
|
+
|
|
39
|
+
Continuing a selected Work is an explicit user mutation routed through `rh_work(launcher_start)` with the selected repository and Work identities. Automatic-continuation metadata comes from `controller.workflow_supervisor.list`; exact conversation URL, repository/Requirement contract bindings and created time are rendered only when supplied by the Supervisor authority. The desktop does not create its own controller session, retry loop, conversation authority, UserRequest lifecycle, or lifecycle transition.
|
|
40
|
+
|
|
41
|
+
The shipped desktop UI is Chinese-first. Domain IDs, repository names, user-authored objectives and external product names remain verbatim canonical data, while navigation, labels, states, actions, errors and explanatory copy are rendered in Chinese.
|
|
42
|
+
|
|
43
|
+
## Local conversation boundary
|
|
44
|
+
|
|
45
|
+
Local Thread is client-owned interaction data, not a Forge semantic lifecycle record. The desktop may persist a bounded local transcript plus presentation metadata and an optional canonical repository id reference, but it must not copy Requirement, Plan, Work, Runtime or connection records into that store as mutable truth.
|
|
46
|
+
|
|
47
|
+
Current Kernel `ControllerSession` / `ControllerRound` contracts are intentionally Work-bound. Local conversation therefore must not manufacture a Work merely to obtain a controller binding, and it must not reinterpret Workflow Supervisor or `launcher_start` as a general chat-session authority. Provider status and invocation live behind the typed `controller.local_conversation` capability. The initial provider is the installed Codex CLI and reuses Codex-owned authentication; Forge does not copy provider credentials into Controller Home or the renderer. Each local thread receives an invocation-scoped Forge MCP principal/session, while the provider thread id remains only an opaque resume handle. The provider/controller loop calls the existing Runtime MCP capabilities as tools, so Forge continues to own those capability effects and canonical semantic facts.
|
|
48
|
+
|
|
49
|
+
Local Codex sessions start in a read-only provider sandbox. Repository and Runtime mutations therefore go through the injected Forge MCP capability surface rather than direct provider filesystem writes. Client-local thread create/select/archive, optional Project attachment, provider resume, and final assistant responses are functional without implicit Requirement/Plan/Work/ControllerRound creation. If Codex or Runtime is unavailable the UI reports that failure directly; there is no synthetic assistant output and no fallback to the retired Local Bridge/browser-profile path.
|
|
50
|
+
|
|
51
|
+
## Runtime and Recovery surface
|
|
52
|
+
|
|
53
|
+
The Runtime screen must remain usable when Canonical Runtime is unavailable. The native Tauri adapter therefore has a second narrow transport path to the already-authoritative Standalone Recovery Gateway at its configured loopback MCP endpoint. It reads the Recovery configuration and bearer token only inside the native process; Recovery credentials are never projected into the webview.
|
|
54
|
+
|
|
55
|
+
This is not a fallback Runtime and does not start, stop, repair, or roll back any process directly. Readiness and diagnostics call Recovery's `runtime_status` and `verify_stable_runtime`. Explicit user mutations are limited to named Recovery tools such as `restart_primary_runtime` and `recover_primary_runtime`. Before a mutation, the adapter re-reads `runtime_status` and hydrates the exact host/platform/ControllerHome/Recovery-release/target-Runtime fencing identity exposed by Recovery itself; Standalone Recovery remains the authority that validates or rejects the operation.
|
|
56
|
+
|
|
57
|
+
No client retry loop or inferred recovery lifecycle is introduced. The UI may own only transient loading/error/confirmation state around one explicit command, then it re-reads Recovery authority after completion. `restart_primary_runtime` already stops/quiesces as needed, starts the configured launchd/systemd service and verifies the whole Runtime, so the desktop may label that same Recovery-owned mutation `Start Runtime` when `runtime_status.running=false` and `Restart Runtime` otherwise; this creates no second start authority. `recover_primary_runtime` remains a distinct deeper recovery transaction that can enter release recovery/rollback and is exposed only as an explicitly warned action while Runtime is not ready.
|
|
58
|
+
|
|
59
|
+
Controller and remote-transport setup is projected separately through the typed `controller.connection` capability. That facade derives product-safe status from the existing setup-profile authority (`readSetupProfile`, `resolveControllerGuidance`, and `resolveTunnelGuidance`) and does not persist a second connection model. Its only automatic mutation, `repair_connector`, delegates to the existing `runMcpSetupChatgpt` owner for the Forge-managed loopback Connector. OpenAI Secure Tunnel, Cloudflare, Tailscale, client installation, login, tunnel identity, and other external prerequisites remain explicit setup requirements rather than being silently repaired by the desktop client. Tauri and the webview never read or write setup files directly.
|
|
60
|
+
|
|
61
|
+
## macOS presentation model
|
|
62
|
+
|
|
63
|
+
The macOS client uses the system-owned decorated window. The webview must not draw duplicate traffic-light controls or treat an application toolbar as a synthetic title bar. Window close/minimize/zoom chrome remains owned by macOS/Tauri.
|
|
64
|
+
|
|
65
|
+
The primary V3 layout is intentionally sparse: one lightweight navigation sidebar and one main work surface. A compact Local/MCP switch changes presentation scope only. In MCP mode, Project selection opens a repository/worktree overview and Work inventory; Work selection then focuses the same main surface on the selected Work and its immediate actions. Repository/Work/Plan/Evidence readiness may appear as a compact summary band on that main surface so MCP operation does not require opening several disclosure sections merely to understand current state. IDs, revision history, raw evidence references, runtime mechanics, and other secondary facts remain progressive disclosure rather than a permanent inspector column. Runtime/Recovery is a dedicated MCP main surface rather than a dashboard side panel.
|
|
66
|
+
|
|
67
|
+
This follows the desktop-agent interaction model of task/session navigation plus a focused work area. It explicitly rejects a three-column web-dashboard composition as the default macOS product architecture.
|
|
68
|
+
|
|
69
|
+
## Verification
|
|
70
|
+
|
|
71
|
+
This foundation is acceptable when:
|
|
72
|
+
|
|
73
|
+
1. the frontend source and Tauri shell form an independently reviewable application boundary;
|
|
74
|
+
2. no desktop source imports Runtime persistence stores or writes Controller Home state directly;
|
|
75
|
+
3. the UI can render without manufacturing semantic domain data;
|
|
76
|
+
4. project source authority includes `apps/**` so future engineering checks and context retrieval treat the client as first-class source;
|
|
77
|
+
5. subsequent Runtime bootstrap work can replace the disconnected projection through a typed client adapter without migrating client-owned semantic data, because none exists.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Exact code-symbol discovery within bounded Context retrieval
|
|
2
|
+
|
|
3
|
+
`docs/architecture/CURRENT.md` remains the sole architecture authority. This note records a focused Context Plane implementation decision and test contract; it adds no store, cache, result state, or secondary search authority.
|
|
4
|
+
|
|
5
|
+
## Observed defect
|
|
6
|
+
|
|
7
|
+
A request containing two exact source symbols could split them into common word fragments or treat both as one literal query. Early broad matches then filled the candidate window and prevented later exact hits from entering. Separately, the Git inventory's alphabetic first-800-file cap made files beyond that prefix unsearchable by the lexical pass. Increasing the scan cap would add disk/CPU cost without fixing symbol priority.
|
|
8
|
+
|
|
9
|
+
## Existing-authority correction
|
|
10
|
+
|
|
11
|
+
- Parse explicit code-shaped tokens into independent bounded exact queries. Preserve caller-provided ordinary literal phrases (`return 42`) as search queries as well. Keep camel-case fragments as nonbinding discovery hints, not mandatory matches.
|
|
12
|
+
- Preserve later exact hits when broad candidate capacity is reached, and reserve the highest-ranked candidate for each matched exact symbol before ordinary ranked results.
|
|
13
|
+
- Use Git's read-only tracked-file grep only to **prioritize candidate paths** when the inventory exceeds the existing scan cap. The original policy-checked repository source matcher validates each file and enforces exact identifier boundaries. Git grep supplies no policy, semantic completion, persistence, or source identity authority.
|
|
14
|
+
- Apply equivalent search admission and cache identity in synchronous and asynchronous Context paths. Neither path increases the existing actual-file scan cap or accepts forbidden paths from Git hints.
|
|
15
|
+
- Context results remain bounded evidence, not completeness proof. Git hints may omit untracked files and max-files/snippet caps still apply; explicit known paths and progressively narrowed source requests remain the existing precise retrieval surfaces.
|
|
16
|
+
|
|
17
|
+
## Verification
|
|
18
|
+
|
|
19
|
+
Regression fixtures place two complete symbol declarations after more than 800 broad distractors, with multiple longer-prefix false positives. Both synchronous and asynchronous Context materialization must select the two exact target files and inspect fewer than 30 candidate source files. Process Runtime timeout observations independently release monitor waiters and abort listeners, with no post-timeout cancellation of a live command.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Checkout-local Xcode cache reuse and reclamation
|
|
2
|
+
|
|
3
|
+
Status: accepted contract for the storage repair candidate; activation is a separate complete Runtime release decision.
|
|
4
|
+
Evidence: local 2026-10-09 disk audit reclaimed 60.39 GiB of generated Xcode subdirectories across 384 directories; issue #194 records the bounded-retention gap.
|
|
5
|
+
|
|
6
|
+
## Root causes and decision
|
|
7
|
+
|
|
8
|
+
The existing iOS producer already used stable build buckets, but the key included device identity and tests used a separate scheme-only bucket. Build and test now reuse the same checkout-local container/scheme/configuration/platform bucket. Simulator identities, test selectors and invocation timestamps do not create another cache. Device and simulator platforms and configurations remain separate; Xcode owns source, SDK and toolchain invalidation. Cross-checkout mutable DerivedData sharing is forbidden because absolute paths and concurrent writers differ.
|
|
9
|
+
|
|
10
|
+
The existing Runtime maintenance owner reclaims generated caches on its five-minute retention cadence, with one repository and the existing 1,000-entry/eight-removal budget per pass. Repository, checkout, namespace and nested directory rotations consume independent visit ordinals; a global sequence must not couple these selection layers.
|
|
11
|
+
|
|
12
|
+
Discovery uses Xcode's info.plist plus known rebuildable directories, including arbitrary preview bucket names under existing owned namespaces. Reclamation deletes only Build, ModuleCache.noindex, Index.noindex, CompilationCache.noindex, SDKExplicitPrecompiledModules and SDKStatCaches.noindex. Logs, result bundles, SourcePackages, metadata, unknown contents and tracked content remain. This replaces the unsafe whole-DerivedData deletion contract.
|
|
13
|
+
|
|
14
|
+
## Cross-cutting closure
|
|
15
|
+
|
|
16
|
+
| Area | Owner and behavior |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| Identity / scope | Existing repository registry and active managed checkouts; existing .forge/ios, .ai/harness, .repo-harness and .tmp namespaces only. A cache name alone is not ownership or disposable-content proof. |
|
|
19
|
+
| Authority / trust | Existing Runtime maintenance write claim and explicit full-maintenance action. No new daemon, registry, schema, credential or permission authority. Symlink ancestors and unprovable Git/process inventory stop deletion. |
|
|
20
|
+
| Concurrency / fencing | Existing plugin workspace claims serialize canonical build/test operations. Maintenance protects processes referencing the cache and conservatively protects checkout-scoped or unscoped xcodebuild commands. Producer refreshes bucket last-use before and after execution; six-hour periodic grace remains. External shell activity is observable process evidence, not a Forge lease; this is conservative protection rather than a transactional filesystem lock. |
|
|
21
|
+
| Lifecycle / retention | Reusable cache lives within its checkout. Rebuildable children expire after idle grace and are regenerated by Xcode. Source checkout and evidence lifecycle remain separate. Missing process inventory yields a bounded diagnostic and no reclamation. |
|
|
22
|
+
| Persistence / integrity / recovery | No database migration. Deleting disposable children is idempotent; interrupted passes leave a valid surviving bucket for the next scan/build. Existing source, Git, dependency and evidence backups retain their owners. |
|
|
23
|
+
| Evidence / privacy | Existing cleanup reports record removed paths, protection reasons and budget exhaustion; no source, credential or process text persistence added. Result bundles use the existing collision-resistant artifact stamp. |
|
|
24
|
+
| Capacity / time / performance | Stable keys reduce cache production. Existing bounded scan/removal budgets protect scheduler latency; rotation prevents protected early entries from permanently starving later directories. Grace uses the newer bucket/child mtime and completed reuse refreshes last-use. This is idle reclamation, not a hard global disk quota. |
|
|
25
|
+
| Topology / portability / release | Same in-process Runtime maintenance owner; no additional process. iOS commands remain Darwin-only. Deploy/rollback is the complete Runtime release under existing authority; source delivery alone does not activate the fix. |
|
|
26
|
+
|
|
27
|
+
## Preserved and deferred boundaries
|
|
28
|
+
|
|
29
|
+
KEEP existing bounded budgets, active-process protection, Git ownership checks, evidence retention and complete Runtime rollback.
|
|
30
|
+
CHANGE whole-directory deletion to typed disposable children; cache key to compatible build/test reuse; correlated/deep-only cache scheduling to independent five-minute rotation.
|
|
31
|
+
DEFER relocating existing iOS build caches into Controller Home: install/build product paths and checkout fencing need one coherent owner migration. This candidate creates no additional cache root and does not duplicate or copy legacy buckets.
|
|
32
|
+
DEFER arbitrary external /private/tmp builds and third-party caches: neither naming nor age grants Forge deletion ownership. Use the canonical build/test producer for managed builds; manual external runs should reuse an explicit per-checkout cache and remove it at their own terminal boundary.
|
|
33
|
+
DEFER cloud transfer of cold recovery bundles until verified upload/restore and local-retention authority exist. Rebuildable caches are not cloud backup data.
|
|
34
|
+
|
|
35
|
+
## Verification
|
|
36
|
+
|
|
37
|
+
Extend retained iOS producer and generated-cache safety scenarios; do not add tests during Kernel V2 suite freeze. Verify cache reuse across simulators/build/test, platform/configuration separation, unique result bundles, arbitrary-name recognition, nested evidence/dependency preservation and independent rotation. Run affected type and repository/architecture checks before source delivery.
|