@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,17 @@
|
|
|
1
|
+
# Edit-session finalization after integrated commits
|
|
2
|
+
|
|
3
|
+
**Tracking issue:** [#235](https://github.com/moretea-labs/forge/issues/235)
|
|
4
|
+
|
|
5
|
+
## Problem
|
|
6
|
+
|
|
7
|
+
An edit session captures a Git baseline and workspace fingerprint when its edits are applied. After the same tracked after-images are committed, Git HEAD and the workspace fingerprint naturally change. The public finalization path previously rejected this drift before consulting the existing edit-session reconciliation logic, leaving already-integrated changes without a terminal session/receipt.
|
|
8
|
+
|
|
9
|
+
## Canonical rule
|
|
10
|
+
|
|
11
|
+
When the baseline or workspace fingerprint has changed, `finalizeEditSession` first invokes the existing `reconcileEditSession` path. Reconciliation may finalize only when all tracked files still match their exact recorded after-images, no tracked session path has uncommitted changes, and configured checks have passed. If the session remains dirty, the original stale-baseline/fingerprint error is preserved. Content drift follows the existing reconciliation behavior and supersedes the session rather than overwriting or rebasing its evidence.
|
|
12
|
+
|
|
13
|
+
The approval requirement is checked before reconciliation. This does not adopt a new Git baseline, relax ownership checks, bypass validation, or create a completion receipt directly; the canonical finalization and receipt owners remain authoritative.
|
|
14
|
+
|
|
15
|
+
## Regression coverage
|
|
16
|
+
|
|
17
|
+
`tests/runtime/edit-session-continuity.test.ts` covers both successful finalization after the edited path is committed and rejection while that path remains uncommitted. The focused suite, runtime architecture check, and TypeScript checks passed on the tested revision.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Decision: Retire Forge-owned host Skills and duplicate version authority
|
|
2
|
+
|
|
3
|
+
**Status:** Accepted (2026-10-19). Supersedes the host-Skill distribution decision of 20260803.
|
|
4
|
+
|
|
5
|
+
## Evidence
|
|
6
|
+
Forge execution uses CLI, MCP, Runtime, and host adapters. The former root Skill only offered prompt discovery for Codex/Claude; its separate installer and version manifest added a second release authority which blocked version 1.8.2 without evidence of a Runtime defect.
|
|
7
|
+
|
|
8
|
+
## Decision
|
|
9
|
+
- Remove the Forge-owned host Skill, Codex Skill metadata, bundled cross-review Skills, and their installers.
|
|
10
|
+
- Forge setup no longer installs third-party Waza/Mermaid Skills. Existing user-installed Skills are user-owned and left untouched.
|
|
11
|
+
- Project guidance templates read their version from package.json.version. Eliminate the independent version manifest and generated per-project Skill version stamp.
|
|
12
|
+
- Retire the deprecated empty Skill lifecycle-hook table and executor.
|
|
13
|
+
- Keep CLI, MCP, Runtime, host hook adapters, project guidance, Forge Plugins, and unrelated Cognitive Skill semantics.
|
|
14
|
+
|
|
15
|
+
## Migration and acceptance
|
|
16
|
+
Packaged distributions no longer include Forge-owned host Skills. CLI init/update/adopt do not synchronize them. All changed code, project templates, architecture, and release gates must be validated with one canonical version authority. No replacement provider is introduced.
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
|
|
178
178
|
<rect x="120" y="470" width="882" height="86" class="box"/>
|
|
179
179
|
<text x="146" y="506" class="label">Compatibility Boundary</text>
|
|
180
|
-
<text x="146" y="532" class="small">Canonical name: agentic-dev. Compatibility alias: agentic-dev-skill. Retired project-initializer install paths are cleanup targets.
|
|
180
|
+
<text x="146" y="532" class="small">Canonical name: agentic-dev. Compatibility alias: agentic-dev-skill. Retired project-initializer install paths are cleanup targets. Source search is ripgrep plus language-service navigation.</text>
|
|
181
181
|
</svg>
|
|
182
182
|
</div>
|
|
183
183
|
<p class="footer">Generated 2026-05-25. Standalone HTML with inline SVG; no JavaScript. Semantic source: docs/architecture/snapshots/2026-05-25-agentic-dev-plugin-review.md#semantic-diagram.</p>
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# Architecture Domain: Public Surface
|
|
2
2
|
|
|
3
3
|
> **Source**: `.ai/context/capabilities.json`
|
|
4
|
-
> **Owner**:
|
|
4
|
+
> **Owner**: CLI/MCP command facade docs.
|
|
5
5
|
|
|
6
6
|
## Purpose
|
|
7
7
|
|
|
8
8
|
The public surface turns user intent into one of the supported CLI+hooks harness
|
|
9
|
-
actions without duplicating engine policy in prose. It includes the root
|
|
10
|
-
compatibility router, README, root agent docs, the `forge` CLI, and thin
|
|
9
|
+
actions without duplicating engine policy in prose. It includes the README, root agent docs, the `forge` CLI, and thin
|
|
11
10
|
`forge-*` command facades.
|
|
12
11
|
|
|
13
12
|
## Capabilities
|
|
@@ -17,10 +16,9 @@ compatibility router, README, root agent docs, the `forge` CLI, and thin
|
|
|
17
16
|
|
|
18
17
|
## Stable Rules
|
|
19
18
|
|
|
20
|
-
-
|
|
19
|
+
- Forge ships no host Skill; CLI/MCP and host adapters are the execution surfaces.
|
|
21
20
|
- Root `AGENTS.md` and `CLAUDE.md` stay concise; detailed operating rules live in `docs/reference-configs/`.
|
|
22
21
|
- Public commands are CLI-backed facades. Internal steps such as `hooks-init`, `docs-init`, and `create-project-dirs` stay behind `init`, `scaffold`, `migrate`, and `upgrade`.
|
|
23
|
-
- `forge-skill` remains a compatibility trigger, not the canonical name.
|
|
24
22
|
- The former `project-initializer` install paths have been fully removed; no tooling recognizes, syncs, or cleans them up.
|
|
25
23
|
|
|
26
24
|
## Verification Surface
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Architecture Domain: Verification
|
|
2
2
|
|
|
3
3
|
> **Source**: `.ai/context/capabilities.json`
|
|
4
|
-
> **Owner**: Regression tests, workflow gates, eval harness,
|
|
4
|
+
> **Owner**: Regression tests, workflow gates, eval harness, and advisory tooling checks.
|
|
5
5
|
|
|
6
6
|
## Purpose
|
|
7
7
|
|
|
@@ -10,7 +10,6 @@ repos, command facades, hooks, migration helpers, and installed runtime copies.
|
|
|
10
10
|
|
|
11
11
|
## Capabilities
|
|
12
12
|
|
|
13
|
-
- `verification-codegraph-readiness` -> `docs/architecture/modules/verification/codegraph-readiness.md`
|
|
14
13
|
- `verification-evals-checks` -> `docs/architecture/modules/verification/evals-checks.md`
|
|
15
14
|
|
|
16
15
|
## Stable Rules
|
|
@@ -20,6 +19,7 @@ repos, command facades, hooks, migration helpers, and installed runtime copies.
|
|
|
20
19
|
- Governed tests preserve typed per-file failure evidence (`source`, `fixture`, `infrastructure`, `interrupted`) in bounded receipts; Check/Work verification may collapse that evidence only to the existing acceptance-vs-infrastructure authority, never by reparsing human stderr.
|
|
21
20
|
- The active Runtime always owns Process admission, leases, terminal Process state, and Work verification receipts. For ordinary repositories, persisted checks execute through that Runtime's immutable Check Runner.
|
|
22
21
|
- Self-hosting Forge Work verification is the bounded exception to runner location, not to lifecycle authority: when the verified repository has the same durable `repoId` as the Runtime Source authority, a non-live verification snapshot executes the Check Runner from that exact candidate snapshot. Candidate runner/content identity is folded into the existing Check execution fingerprint so evidence cannot cross runner revisions.
|
|
22
|
+
- A Work verification snapshot establishes its package dependency closure inside the existing Check Process before loading candidate Check Runner modules. Exact canonical `node_modules` reuse remains valid only when dependency metadata is equivalent; otherwise the disposable snapshot materializes dependencies from its own supported frozen lockfile. Bootstrap failure is infrastructure failure and never repository acceptance evidence.
|
|
23
23
|
- `live_controller_home` certification never uses the candidate snapshot runner because it is explicitly verifying the installed Runtime. A candidate snapshot missing its Forge-owned sidecar fails closed; no arbitrary executable override or second scheduler/store is introduced.
|
|
24
24
|
- Public `rh_work verify` accepts either one `check_id` or one non-empty `check_ids` batch, never both. A batch is admitted only when the registered checks form one ordinary resource-compatible wave according to Process Runtime `buildCheckExecutionSchedule`; invalid, cross-wave, release, and multi-phase batches fail closed before partial execution. Every admitted member still runs through the canonical Work verification service, Work snapshot, Process Runtime claims, Failure Contract, and VerificationRecord authority; batch aggregation is not a scheduler or lifecycle authority.
|
|
25
25
|
- Work verification persistence is one read-modify-write authority: any decision derived from current `checkRefs`, scope evidence, review state, or lifecycle state must read the latest Work and derive its patch inside the existing Work-store writer critical section. Synchronous writer contention remains fail-fast/retryable rather than sleeping on the Gateway path; a retry must re-read current state before deriving its mutation, so stale snapshots cannot silently erase compatible evidence.
|
|
@@ -27,14 +27,15 @@ repos, command facades, hooks, migration helpers, and installed runtime copies.
|
|
|
27
27
|
- `check-task-sync.sh` enforces that substantive repo changes update `tasks/`.
|
|
28
28
|
- `check-task-workflow.sh --strict` is the repo-local harness readiness gate.
|
|
29
29
|
- `sync-brain-docs.sh --check` verifies manifest-controlled repo-to-brain mirrors without making gbrain or MCP part of hook correctness.
|
|
30
|
-
- External tooling probes remain read-only by default
|
|
31
|
-
-
|
|
30
|
+
- External tooling probes remain read-only by default. Agent code navigation uses current source and explicit LSP navigation; no graph index is required.
|
|
31
|
+
- Source discovery must authorize each file before invoking `rg`, search the eligible inventory rather than silently truncating its alphabetic prefix, and report missing search executables as errors rather than empty matches. `rg` match records use NUL-framed paths/line numbers so standard process-output redaction cannot corrupt JSON syntax. Caller-supplied exclude globs also apply to explicit known paths. `scannedFiles` counts files contributing accepted lexical evidence, not the complete set of candidate paths examined by ripgrep.
|
|
32
|
+
- For exact code-symbol discovery, rank exported declarations ahead of same-named local wrappers and ordinary usage sites, with all evidence remaining literal and current-source grounded. Compare only authorized files that actually matched `rg`; preserve the inventory ordering on equal relevance. Context Pack returns bounded source snippets fairly across inferred candidates, including when a caller raises `max_snippets`; an explicit known-file read retains its caller-selected evidence budget. A truncated discovery result is never advertised as exhaustive.
|
|
33
|
+
- `rh_context.query` preserves the caller's natural-language intent; optional model-selected `search_terms` supplies up to eight source-language lexical anchors to the existing Context Pack, with no embedded translation/semantic engine. Only a single code-shaped query becomes an implicit exact search needle; natural-language sentences must not be promoted to mandatory literal code symbols. The model selects source-language keywords, inspects current raw-source hits, and progressively refines the query when results are unrelated or truncated.
|
|
32
34
|
|
|
33
35
|
## Verification Surface
|
|
34
36
|
|
|
35
37
|
- `bun test`
|
|
36
38
|
- `bash scripts/check-task-sync.sh`
|
|
37
39
|
- `bash scripts/check-task-workflow.sh --strict`
|
|
38
|
-
- `bash scripts/ensure-codegraph.sh --check --json`
|
|
39
40
|
- `bun scripts/inspect-project-state.ts --repo . --format text`
|
|
40
41
|
- `bash scripts/migrate-project-template.sh --repo . --dry-run`
|
|
@@ -28,3 +28,9 @@ verify without a live service.
|
|
|
28
28
|
- `bun test tests/migration-script.test.ts tests/create-project-dirs.runtime.test.ts tests/workflow-contract.test.ts`
|
|
29
29
|
- `bash scripts/migrate-project-template.sh --repo . --dry-run`
|
|
30
30
|
- `bash scripts/check-task-workflow.sh --strict`
|
|
31
|
+
|
|
32
|
+
## Autonomous WorkflowRun name boundary
|
|
33
|
+
|
|
34
|
+
This repo-mutation **Workflow Engine** and the existing declarative `workflow_run` checkpoint records are not the cross-assistant-turn lifecycle authority for an autonomous development Goal.
|
|
35
|
+
|
|
36
|
+
The V1 Workflow Supervisor defined in [`../decisions/20260916-workflow-supervisor-authority.md`](../decisions/20260916-workflow-supervisor-authority.md) uses a distinct Supervisor persistence authority/namespace. It may eventually converge with declarative Workflow assets only through an explicit migration and authority decision. Shared terminology is not permission to share writers, reinterpret persisted states, or copy lower-layer lifecycle states upward.
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
# MCP HTTP Transport Lifecycle
|
|
2
2
|
|
|
3
3
|
> Capability: `mcp-http-transport-lifecycle`
|
|
4
|
-
> Runtime Authority:
|
|
4
|
+
> Runtime Authority: [Current Architecture](../../CURRENT.md)
|
|
5
5
|
|
|
6
6
|
## Responsibility
|
|
7
7
|
|
|
8
|
-
`
|
|
8
|
+
`adapters/mcp/transports/` owns HTTP authentication handoff and protocol-era serving. MCP 2026-07-28 is the canonical public boundary and is served per request without protocol-level sessions. The session registry, global admission capacity, transport leases, and DELETE cleanup exist only for the explicit 2025-era compatibility path. The transport does not own durable Work/Process/ControllerRound authority or Gateway process recovery.
|
|
9
9
|
|
|
10
10
|
## Invariants
|
|
11
11
|
|
|
12
12
|
- Modern `server/discover` and subsequent 2026-07-28 requests are handled by the SDK v2 per-request handler and do not require or emit `Mcp-Session-Id`.
|
|
13
13
|
- Durable Work, Process, and ControllerRound identity is independent from both modern request bindings and legacy transport sessions.
|
|
14
|
-
- A newly created Work
|
|
14
|
+
- A newly created Work may receive an opaque Work-bound controller capability for Runtime recovery and replay fencing. That capability is internal to normal model-facing Work execution: the Runtime/Supervisor establishes, rotates, and recovers it. Legacy owner records without a capability digest may use the explicit `controller_claim` compatibility upgrade; ordinary model-facing Work operations never require it.
|
|
15
15
|
- Legacy 2025-era traffic is classified mechanically by the SDK and routed to one bounded stateful compatibility registry shared by all public MCP HTTP routes.
|
|
16
16
|
- On the legacy path, route and authenticated principal must match the stored session on GET, POST, and DELETE; active POST work is protected from capacity eviction.
|
|
17
17
|
- Legacy stream-only sessions are reclaimable through client DELETE, explicit prior-session replacement, lease expiry, absolute lifetime, or oldest-safe capacity eviction.
|
|
@@ -38,15 +38,15 @@ V2 must explicitly distinguish four concepts even if compatibility transport sti
|
|
|
38
38
|
|
|
39
39
|
The 2026-09-09 #200 latency review proved that the native Desktop Operator is not the dominant warm-path cost, so provider transport optimization must preserve the existing authority boundary rather than introduce another controller or durable provider session. The Computer runtime therefore uses the following transport contract:
|
|
40
40
|
|
|
41
|
-
- one live Desktop Operator provider binding is scoped to the current trusted registration identity/revision and endpoint contract;
|
|
41
|
+
- one live Desktop Operator provider registration binding is scoped to the current trusted registration identity/revision and endpoint contract; it owns at most two lazy retained JSONL connections;
|
|
42
42
|
- provider identity/capability negotiation is reused only while the same Unix-socket connection generation remains live;
|
|
43
|
-
-
|
|
44
|
-
- registration fingerprint/revision or endpoint-contract change disposes
|
|
43
|
+
- native observe/element-observe/capture requests reuse an observation connection, while input, protected console, and legacy Browser compatibility requests retain the original ordered connection. Desktop Operator processes each connection serially, so a slow Browser RPC must not block unrelated native observation. Target/session locks remain the observation-epoch authority;
|
|
44
|
+
- registration fingerprint/revision or endpoint-contract change disposes both old connections before replacement; each connection negotiates its own live generation and Runtime disposal closes both;
|
|
45
45
|
- if the Unix connection changes after negotiation, the pending action is rejected before dispatch and the next explicit invocation must renegotiate; non-idempotent effects are never replayed automatically;
|
|
46
46
|
- timeout, cancellation, response-size and protocol-error bounds remain per request; transport reuse creates no new durable lifecycle or retry authority.
|
|
47
47
|
- Browser semantic mutations do not pay an unconditional fixed post-action sleep: provider primitives and bounded post-action identity/evidence are the normal completion path; `post_action_wait_ms` is explicit compatibility input only, while native foreground activation may retain a provider-specific verification budget because system foreground authority must be observed.
|
|
48
48
|
- Desktop target-bound semantic actions dispatch through the current leased provider binding without a `desktop_status(limit: 500)` preflight. Only an explicit provider `SESSION_NOT_FOUND` transported as a failed/pre-effect result may rebuild the binding from stable application identity and retry once; transport, timeout, and outcome-unknown failures are never replayed. Target close likewise calls the bound session close directly instead of enumerating provider sessions first.
|
|
49
|
-
- Desktop observe/input/capture product actions use the retained `ComputerProvider`
|
|
49
|
+
- Desktop observe/input/capture product actions use the retained `ComputerProvider` connections instead of re-entering the legacy external-adapter transport for every semantic action. Both connections address the same provider sessions and create no second target/provider authority. Target open/close remain low-frequency provider lifecycle operations; the hot path owns no parallel durable provider-session authority.
|
|
50
50
|
- the external Unix JSONL and `ComputerProviderError` failure contracts preserve `failed` versus `outcome_unknown` across adapter boundaries. A provider-declared failure keeps the negotiated connection alive; transport loss after an effectful request is dispatched invalidates negotiation and is never eligible for implicit replay.
|
|
51
51
|
|
|
52
52
|
The repeatable `benchmark:computer-hotpath` run on 2026-09-09 used 50 warm semantic samples after five warmups. The isolated real dispatch path measured cold first semantic action `4.398ms`; warm `p50=0.939ms`, `p95=1.511ms`, `max=1.894ms`. Across the 50 warm samples the provider observed exactly 50 semantic RPCs, zero new connections, zero handshakes, zero manifest preflights, zero `desktop_status` preflights, and zero session reopens. This benchmark is comparative evidence, not a machine-specific release threshold.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Forge Code Search — Post-Release Acceptance Ledger (2026-10-15)
|
|
2
|
+
|
|
3
|
+
Status: **PARTIAL — not a known-good or release acceptance.** This record describes observed evidence, not a deployment decision.
|
|
4
|
+
|
|
5
|
+
## Identities and scope
|
|
6
|
+
|
|
7
|
+
- Mac source checkout: `<local-forge-checkout>` (local path omitted from the public ledger), source HEAD at this measurement: `765804d762544a87e3d750287a423fad64d86ddb`.
|
|
8
|
+
- Active immutable Runtime remains `1792022338979-696cc9d5f3aea62e550309206b73f7357c545d70`, authority revision 868, using source `696cc9d5f`. **Unreleased** source commits: `5a0f8d839` (model-selected lexical hints), `9a7e26f63` (retire obsolete editor rule), `765804d76` (exported-definition ranking and snippet fairness).
|
|
9
|
+
- Preserve four pre-existing dirty files outside code search. No Runtime cutover, restart, promotion, external delivery, or CodeGraph process termination was performed.
|
|
10
|
+
- Existing independent acceptance task: `supervisor:9089c98263b23e1bd329813b`. Enrollment remains blocked by unattributed `composer_not_empty` draft; do not treat the bootstrap URL as a delivered independent conversation.
|
|
11
|
+
|
|
12
|
+
## Repository retrieval correctness: real deployed MCP vs direct rg
|
|
13
|
+
|
|
14
|
+
Real `search_repository` MCP on currently deployed Runtime, with `max_results=500,max_files=20000`, compared with direct `rg -l -i --fixed-strings --no-ignore --hidden` using the same default exclusion globs:
|
|
15
|
+
|
|
16
|
+
| Query | MCP distinct files | Direct rg files | Truncated | Conclusion |
|
|
17
|
+
| --- | ---: | ---: | --- | --- |
|
|
18
|
+
| `runProcess` | 28 | 28 | false | File-set equality; MCP trace `c71e6967-1069-4f8f-b998-8a22a64c6634` |
|
|
19
|
+
| `rollbackPrevious` | 5 | 5 | false | File-set equality; MCP trace `c0031532-d2b4-47d2-a559-d5d005d572b0` |
|
|
20
|
+
| `ReleaseSession` (whole repo) | 20 | 25 | true, `max_results` | Expected incomplete bounded response; MCP trace `c72f4662-aba0-416a-bc48-ebed69822982` |
|
|
21
|
+
| `ReleaseSession` `src/**` | 11 | 11 | false | Exact matching subset |
|
|
22
|
+
| `ReleaseSession` `tests/runtime/**` | 5 | 5 | false | Exact matching subset |
|
|
23
|
+
| `ReleaseSession` `docs/**,scripts/**` | 9 | 9 | false | Exact matching subset |
|
|
24
|
+
|
|
25
|
+
The three explicit scopes recover 25/25 paths, without claiming that a single bounded whole-repo search is complete. These checks concern **matching file paths**, not every returned line or all authorized filesystem states. The broad MCP count alone must not be used as full coverage.
|
|
26
|
+
|
|
27
|
+
## Latency attribution: current deployed Runtime
|
|
28
|
+
|
|
29
|
+
### Direct local authenticated HTTP MCP (unchanged active Runtime)
|
|
30
|
+
|
|
31
|
+
Used existing `scripts/benchmark-mcp-transport.ts` via `http://127.0.0.1:8765/mcp`, `--local-service-auth`, one steady-state MCP session, 3 warmups, 20 measured calls per tool. No secret values were written to artifacts or command line.
|
|
32
|
+
|
|
33
|
+
| Tool | Local MCP p50 / p95 | Server p50 / p95 | Local transport residual p50 / p95 |
|
|
34
|
+
| --- | ---: | ---: | ---: |
|
|
35
|
+
| `rh_status` | 20.62 / 23.25 ms | 17.01 / 20.84 ms | 2.98 / 5.02 ms |
|
|
36
|
+
| `rh_context`, exact known source path | 199.78 / 215.20 ms | 196.25 / 207.57 ms | 3.40 / 4.14 ms |
|
|
37
|
+
|
|
38
|
+
Reproduction examples (read-only, using the local Runtime's existing auth). Replace `REGISTERED_REPO_ID` with the local repository ID from `repository_list` before running; raw local IDs and device paths are intentionally not published:
|
|
39
|
+
```sh
|
|
40
|
+
bun scripts/benchmark-mcp-transport.ts --endpoint http://127.0.0.1:8765/mcp --local-service-auth --tool rh_status --iterations 20 --warmup 3 --repo-id REGISTERED_REPO_ID
|
|
41
|
+
bun scripts/benchmark-mcp-transport.ts --endpoint http://127.0.0.1:8765/mcp --local-service-auth --tool rh_context --iterations 20 --warmup 3 --repo-id REGISTERED_REPO_ID --arguments '{"operation":"search","query":"runProcess","known_paths":["src/effects/process-runner.ts"],"max_files":3,"max_snippets":4,"structural_context":"off","include_learning_recall":false}'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### ChatGPT-connected tool invocation (separate path; not controlled A/B)
|
|
45
|
+
|
|
46
|
+
Six sequential `rh_status` calls: observed invocation p50/p95 **1526/2270 ms**, Forge server p50/p95 **52.47/81.25 ms**.
|
|
47
|
+
|
|
48
|
+
Six sequential `rh_context` known-path calls: observed invocation p50/p95 **2144/4338 ms**, Forge server p50/p95 **235.03/497.95 ms**.
|
|
49
|
+
|
|
50
|
+
Earlier 3 samples per query gave: symbol invocation **2044–3367 ms**, known path **1395–3095 ms**, original Chinese rollback **2211–2562 ms**. The Chinese query did not find the rollback core on this older Runtime.
|
|
51
|
+
|
|
52
|
+
**Inference and limit:** Direct authenticated local HTTP MCP has only a few milliseconds of transport residual; the substantial extra delay appears somewhere on the ChatGPT-to-tool calling path outside that local HTTP baseline. It has **not** been subdivided into host, tunnel, platform scheduling, or client-rendering contributions. These are separate workloads, loads, and observation windows; do not infer a specific network provider or claim a controlled causal improvement. Avoid rewriting ripgrep to solve latency not observed in local ripgrep/MCP execution.
|
|
53
|
+
|
|
54
|
+
## Current source candidate correctness (NOT deployed)
|
|
55
|
+
|
|
56
|
+
With code revision `765804d76` and 20 alternating local source invocations per version for `runProcess`, default `max_files=4,max_snippets=8`:
|
|
57
|
+
- Before: canonical `src/effects/process-runner.ts:151` returned **0/20**, local p50/p95 **236.48/273.14 ms**.
|
|
58
|
+
- After: canonical owner returned **20/20**, ranked first **20/20**, local p50/p95 **238.42/406.28 ms**.
|
|
59
|
+
- Both versions reported bounded truncation **20/20**. Ranking quality improved; performance improvement is **unproven**. Focused checks on candidate: 49 pass/0 fail, type/architecture/repository/governance checks passed.
|
|
60
|
+
- `search_terms` with model-provided `rollbackPrevious,cutover,recovery` locates `src/runtime/standalone-recovery/core.ts` in isolated source verification, but no new Runtime / live MCP certification has occurred.
|
|
61
|
+
|
|
62
|
+
## LSP coordinate verification
|
|
63
|
+
|
|
64
|
+
Live `rh_context` raw semantic-navigation call for `runProcess` references returned `totalLocations=135`, `returnedLocations=135`, `truncated=false`, `policyDeniedLocations=0`, but every location element was replaced by `[bounded-depth]` in the client-visible projection (trace `af7515e0-0fe7-43ee-8f09-b2cbf54e7700`).
|
|
65
|
+
|
|
66
|
+
Independent local TypeScript Language Service inspection at `src/effects/process-runner.ts:151:19` returned **135 references in 26 files**. Each of 135 positions was checked against its current source file: **zero missing files, zero invalid line/column starts, zero out-of-repository paths**; 126 reference sites start with `runProcess`, nine use imported aliases. Direct local Language Service runtime was approximately 1608 ms for a cold query. This validates coordinates for the current source revision, not all possible dynamic call edges or complete MCP serialization fidelity.
|
|
67
|
+
|
|
68
|
+
## Outstanding acceptance gates
|
|
69
|
+
|
|
70
|
+
1. Repeat correctness, snippet fairness, complete scope behavior, and multilingual hints against the **future authorized deployed release**, preserving immutable source/release identity; independent new-conversation acceptance.
|
|
71
|
+
2. Full LSP result coordinate inspection, fail-closed policy/readable-scope edges, changed-file behavior, and resource variability (not just success-count proxies).
|
|
72
|
+
3. Live autonomous continuation proof and ReleaseSession `known_good` remain blocked; never bypass the unattributed composer draft or mark a `soaking` release known-good.
|
|
73
|
+
4. The other four dirty checkout modifications remain separately owned. Some pre-existing WorkKind tests fail even on `696cc9d5f`; do not repair them as part of code search without a direct dependency.
|
|
74
|
+
|
|
75
|
+
**Current decision:** Preserve ripgrep + explicit LSP as the single Forge search architecture. A bounded default context result is useful for implementation but is not complete evidence; use explicit scopes/limits to prove completeness. Optimize ChatGPT call overhead only with evidence of its real owner. Runtime switch requires new user authorization.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Forge Plugin Management
|
|
2
2
|
|
|
3
|
-
Forge
|
|
3
|
+
Forge provides a public installation path for independently released providers while keeping the Controller trust boundary small. Official providers are **separate products** with their own repositories and releases; Forge owns how those providers are selected, installed, registered, authorized, and executed.
|
|
4
4
|
|
|
5
5
|
## Official catalog
|
|
6
6
|
|
|
@@ -10,9 +10,10 @@ forge plugin catalog
|
|
|
10
10
|
|
|
11
11
|
| Plugin ID | Product | Pinned release | Platforms |
|
|
12
12
|
| --- | --- | --- | --- |
|
|
13
|
-
| `desktop_operator` | [Forge Desktop Operator](https://github.com/moretea-labs/forge-desktop-operator) | `v0.
|
|
13
|
+
| `desktop_operator` | [Forge Desktop Operator](https://github.com/moretea-labs/forge-desktop-operator) | `v0.4.5` | macOS |
|
|
14
14
|
| `design` | [Forge Design](https://github.com/moretea-labs/forge-design) | `v0.3.0` | macOS, Linux, Windows |
|
|
15
15
|
| `personal_knowledge` | [Personal Knowledge Assistant](https://github.com/moretea-labs/personal-knowledge-assistant) | `v0.2.1` | macOS, Linux, Windows |
|
|
16
|
+
| `figma` | [Forge Figma Bridge](https://github.com/moretea-labs/forge-figma-bridge) | `v0.3.0` | macOS |
|
|
16
17
|
|
|
17
18
|
Investment Decision System remains an independent product and is intentionally not a Forge plugin.
|
|
18
19
|
|
|
@@ -30,18 +31,29 @@ forge computer uninstall
|
|
|
30
31
|
forge computer uninstall --purge
|
|
31
32
|
```
|
|
32
33
|
|
|
33
|
-
`Computer` is the Forge product/capability identity. `desktop_operator` remains the implementation/provider identity used for trusted registration, release diagnostics, the stable macOS app bundle, LaunchAgent, socket, and TCC permissions. Its provider release is independent from the Forge Runtime release. `status` is a bounded projection of registration and recorded health, never proof inferred from a host browser; `doctor` refreshes provider health before reporting platform, registration, pinned-release, and readiness checks only on a compatible provider platform, and otherwise reports the stored incompatible registration without probing its transport. Setup/update use the same pinned official catalog transaction as generic plugin installation and fail before mutation when no compatible native provider exists. Uninstall invokes the provider-owned native uninstaller before Forge removes registration/package state, and fails closed rather than orphaning a native service when that lifecycle cannot be proven.
|
|
34
|
+
`Computer` is the Forge product/capability identity. `desktop_operator` remains the implementation/provider identity used for trusted registration, release diagnostics, the stable macOS app bundle, LaunchAgent, socket, and TCC permissions. Its provider release is independent from the Forge Runtime release. Desktop Operator owns native macOS Computer observe/input/capture/console-unlock/element capabilities; Browser automation remains under the separate Browser provider authority rather than being claimed by the Desktop Operator catalog. `status` is a bounded projection of registration and recorded health, never proof inferred from a host browser; `doctor` refreshes provider health before reporting platform, registration, pinned-release, and readiness checks only on a compatible provider platform, and otherwise reports the stored incompatible registration without probing its transport. Setup/update use the same pinned official catalog transaction as generic plugin installation and fail before mutation when no compatible native provider exists. Uninstall invokes the provider-owned native uninstaller before Forge removes registration/package state, and fails closed rather than orphaning a native service when that lifecycle cannot be proven.
|
|
34
35
|
|
|
35
36
|
Generic provider administration remains available for diagnostics and non-Computer providers:
|
|
36
37
|
|
|
37
38
|
```bash
|
|
38
39
|
forge plugin install design
|
|
39
40
|
forge plugin install personal_knowledge
|
|
41
|
+
forge plugin install figma # macOS, Figma bridge app/service required
|
|
40
42
|
forge plugin install desktop_operator # compatibility/advanced path on macOS
|
|
41
43
|
forge plugin list --refresh
|
|
42
44
|
```
|
|
43
45
|
|
|
44
|
-
Re-running `forge plugin install <id>` installs the version currently pinned by Forge. A catalog version change is a reviewed Forge source change; providers cannot silently self-update through a ChatGPT request.
|
|
46
|
+
**Updating the Forge CLI does not automatically update external providers.** On macOS, use `forge computer update` after upgrading Forge; for other providers explicitly re-run `forge plugin install <id>` after checking `forge plugin catalog`. Re-running `forge plugin install <id>` installs the version currently pinned by Forge. A catalog version change is a reviewed Forge source change; providers cannot silently self-update through a ChatGPT request.
|
|
47
|
+
|
|
48
|
+
## User workflow: install, configure, use
|
|
49
|
+
|
|
50
|
+
1. Run `npm install -g @moretea-labs/forge@latest` and `forge setup next` to update the package/runtime connector contract.
|
|
51
|
+
2. On macOS, run `forge computer setup` (or `forge computer update` for an existing provider), then `forge computer doctor` and `forge computer status --json`. Native Accessibility/Screen Recording permissions may require manual approval.
|
|
52
|
+
3. Review `forge plugin catalog` and install only the extra providers you need, e.g. `forge plugin install design`, `forge plugin install personal_knowledge`, or `forge plugin install figma` on macOS.
|
|
53
|
+
4. Run `forge plugin list --refresh`. A provider registration is not evidence that its app, socket, browser or service authentication is ready.
|
|
54
|
+
5. Connect ChatGPT via the [MCP tutorial](tutorials/02-connect-chatgpt.md), then request a bounded outcome such as checking an open webpage, reviewing an authorized Finder folder, inspecting a design asset, or searching a configured local knowledge base. ChatGPT chooses typed actions, and Forge checks scope, authorization and evidence.
|
|
55
|
+
|
|
56
|
+
See the [Computer and Plugins Wiki guide](wiki/Computer-and-Plugins.md) and the [Browser runbook](operations/controller-browser-plugin.md). Computer is currently backed by a macOS-only native provider; do not promise native desktop control on Linux/Windows. Browser and Figma readiness depend on the selected browser mode or running app-specific bridge.
|
|
45
57
|
|
|
46
58
|
## Trust boundary
|
|
47
59
|
|
|
@@ -315,3 +315,26 @@ bun scripts/smoke-browser-cdp-bridge.ts http://127.0.0.1:9222
|
|
|
315
315
|
The smoke reuses an existing HTTP(S) tab, repeats the same session action, verifies that the target count does not increase, and confirms that Chrome remains reachable after the Node child disconnects. It does not read cookies or storage state and does not print the page title or full URL.
|
|
316
316
|
|
|
317
317
|
Immutable Forge whole-Runtime releases include a dedicated `browser-node-bridge-host.js` bundle built for Node. The Browser adapter resolves that sibling entrypoint when running from a release and falls back to the source TypeScript host only in a source checkout. Release verification treats the bridge host as a required, hashed executable.
|
|
318
|
+
|
|
319
|
+
### Exact-tab selection and local file upload
|
|
320
|
+
|
|
321
|
+
- Browser URL/title is an observation, never a unique Tab identity. Sessionless URL reuse requires exactly one matching tab; an active tab, former window, duplicated owned marker, or truncated macOS inventory does not break ties. A previously saved native tab can only reattach by its exact ID; disappearance fails with `PLUGIN_BROWSER_SESSION_STATE_LOST` instead of binding a different user tab. Return `PLUGIN_BROWSER_REUSABLE_TAB_AMBIGUOUS` and request an explicit existing Tab binding rather than guessing or trying an alternative provider. Exact native `windowId`/`tabId` binding remains the first choice.
|
|
322
|
+
- For a normal webpage `input[type=file]`, `attach_local_file` takes `selector` plus `file_path` or `file_paths` (1–32). Paths are relative to the repository by default. To attach files in Downloads/Desktop or another approved directory, first authorize that directory using the existing `local_system.authorize_target` (read-only is sufficient), then supply `target_key` and file paths **relative to the authorized target root**. Absolute paths, expired/wrong-caller grants, traversal, symlink escape, directories, and executable file types are rejected.
|
|
323
|
+
- `attach_local_file` binds files to the DOM input and verifies their selected names/sizes, not the remote application's completed upload. The caller must separately verify its submission and server-side result. In macOS native Browser mode, bytes are transported to Chrome/Vivaldi via the existing browser scripting bridge; large/batch upload performance and live application postconditions require dedicated acceptance.
|
|
324
|
+
- A system `Open Panel` triggered by Chrome is **not Finder**. The existing `local_system.reveal_in_finder` command only reveals files and does not select files in that panel. No Browser `attach_local_file` fallback to unreliable Finder clicks or undeclared foreground input is performed; a distinct exact-dialog native Computer workflow would need its own real end-to-end validation.
|
|
325
|
+
|
|
326
|
+
Native Chrome/Vivaldi DOM file attachment follows one bounded transaction: validate every local regular file (up to 32 files and 16 MiB total), observe a unique enabled `input[type=file]` and its `multiple` property, stage the entire batch without modifying the input, then assign `input.files` once and emit one `input`/`change` pair. Mid-transfer failure does **not** leave a partial selection. The final DOM event can trigger a remote upload: if its receipt is unknown, re-observe the exact page before any further mutation; do not replay the transfer blindly. Upload completion still requires separate application-level verification. A macOS Open Panel remains a separate Desktop accessibility workflow, not a fallback for this action.
|
|
327
|
+
|
|
328
|
+
The macOS Chrome live E2E (`bun run test:browser-live`) calls the **production Computer/Desktop Operator broker** for both active-tab observation and all Browser actions. It must not spawn `osascript`, install a test-only Apple Events callback, or override the stable provider socket; such a test would exercise a different macOS TCC/automation principal and could misattribute a JavaScript permission error to the user's Chrome setting. The E2E preserves the exact active user tab and cleans up only its own created tab. When Chrome reports a JavaScript permission error, inspect the calling provider and Chrome process/profile identity before instructing users to change settings.
|
|
329
|
+
|
|
330
|
+
The public `PLUGIN_BROWSER_JAVASCRIPT_PERMISSION_REQUIRED` code reports that the **instance selected by Apple Events rejected JavaScript**; it does not prove the visible GUI Chrome checkbox is unchecked. In particular, concurrent Chrome processes using separate `--user-data-dir` roots may make process targeting ambiguous. Preserve the error code for callers but inspect the exact process/profile and real Browser broker invocation. Do not restart Chrome, toggle user settings, or silently switch providers based solely on this code.
|
|
331
|
+
|
|
332
|
+
The real Chrome E2E also runs a **read-only process-root preflight before the first Apple Event**. If more than one Chrome application root exists (including headless `--user-data-dir` browser instances), it fails with `CHROME_APPLE_EVENTS_TARGET_AMBIGUOUS` instead of claiming the visible Chrome has disabled JavaScript or driving an unproven tab. It never kills the other process or toggles the user's setting. This guard is scoped to the live test harness; it is not an OS-level PID targeting solution for the production AppleScript broker.
|
|
333
|
+
|
|
334
|
+
Desktop Operator Chrome Apple Events dispatch now has the canonical application-root safety preflight (native commit `cab13fdee`): when a GUI and headless Chrome share the app name, or multiple GUI roots exist, it returns `BROWSER_AUTOMATION_PROCESS_TARGET_AMBIGUOUS` before scripting rather than sending events to an unproven profile; process enumeration failures return `BROWSER_AUTOMATION_PROCESS_PROBE_UNAVAILABLE`. Browser preserves these typed errors, with no provider substitution or guessed Tab identity. This is a fail-closed safety step, not live support for selecting the GUI PID while independent headless Chrome instances remain open.
|
|
335
|
+
|
|
336
|
+
**PID-bound Chrome update (Desktop Operator commit `3b3c5786`):** Chrome's production Apple Events transport is now the same Desktop Operator provider using `SBApplication(processIdentifier:)`, not name-addressed `osascript`. It selects exactly one non-headless GUI Chrome root, even if separately owned headless/CDP Chrome processes are running. Multiple GUI roots remain ambiguous; losing the verified PID/bundle/executable returns typed nonretryable `BROWSER_AUTOMATION_PROCESS_IDENTITY_LOST`. Forge Browser preserves this error and its live test now permits independent headless Chrome roots. No fallback to name addressing or provider switching. These are source-level changes until separately deployed; final authenticated Chrome Tab and upload E2E remains outstanding.
|
|
337
|
+
|
|
338
|
+
Desktop Operator native Chrome Apple Event mutation failure is nonretryable `BROWSER_AUTOMATION_MUTATION_OUTCOME_UNKNOWN`; Browser preserves the typed code and `effectOutcome=outcome_unknown`, and requires exact-tab reobservation instead of retry. Read-only native event failures retain nonretryable `BROWSER_AUTOMATION_NATIVE_EVENT_FAILED`. Live E2E can use a test-only Desktop Operator Socket override and releases its Computer provider channel when exiting.
|
|
339
|
+
|
|
340
|
+
Desktop Operator 0.4.7 is the single Chrome PID authority; Browser Runtime only checks process liveness. Headless Chrome roots may coexist with a unique GUI root. Duplicate Runtime pgrep process-count rejection has been removed; exact Tab ID checks, fail-closed behavior and no provider fallback remain unchanged.
|
|
@@ -256,6 +256,23 @@ Different repository roots never share a cache entry. When the registry
|
|
|
256
256
|
is unavailable, Git discovery (`origin/HEAD`, `main`/`master`, current
|
|
257
257
|
branch) is used.
|
|
258
258
|
|
|
259
|
+
## Autonomous continuation cost boundary
|
|
260
|
+
|
|
261
|
+
The five-second Scheduler reconciliation is a liveness safety net, not permission
|
|
262
|
+
to replay a terminal provider retry decision. When a failed ControllerRound has
|
|
263
|
+
already consumed `maxFailures`, autonomous continuation skips it until the
|
|
264
|
+
existing provider-environment recovery transition supplies new evidence and
|
|
265
|
+
resets that budget. This prevents an unchanged failed round from becoming a
|
|
266
|
+
five-second error/repair loop.
|
|
267
|
+
|
|
268
|
+
Automatic Forge incident repair also treats Runtime release provenance as
|
|
269
|
+
existing authority. Source-mode Runtime may resolve repair ownership by exact
|
|
270
|
+
registered checkout path. Immutable/package Runtime resolves it from the staged
|
|
271
|
+
release manifest `sourceRepositoryId`. It must not scan every registered
|
|
272
|
+
repository with synchronous `git cat-file` / `merge-base` calls from the Runtime
|
|
273
|
+
Scheduler path. A package manifest without that repository identity is not
|
|
274
|
+
silently repaired through Git ancestry discovery.
|
|
275
|
+
|
|
259
276
|
## Safe Cleanup
|
|
260
277
|
|
|
261
278
|
Safe source-distribution exclusions:
|
|
@@ -68,8 +68,8 @@ A release change is performed only as an explicitly authorized whole-Runtime ope
|
|
|
68
68
|
1. validate one immutable release manifest, configuration, database compatibility range, and Worker protocol;
|
|
69
69
|
2. quiesce admission and stop the complete Runtime;
|
|
70
70
|
3. atomically select the candidate as the one active whole release;
|
|
71
|
-
4. atomically mirror the selected release's signed `forge-runtime`
|
|
72
|
-
5. require
|
|
71
|
+
4. atomically mirror the selected release's signed `forge-runtime` supervisor launcher to the fixed physical service path `runtime/service/active-forge-runtime`; the launcher validates the selected release's hashed `forge-runtime-bundle.js` and release-owned Bun interpreter, then starts exactly one interpreter child with the selected manifest/environment and forwards lifecycle/diagnostic signals to it;
|
|
72
|
+
5. require whole-Runtime readiness from the child-owned Runtime owner/status and release canaries; the launcher itself is never a second Runtime authority;
|
|
73
73
|
6. on failure, stop the service, restore the previous release and its bound local SQLite backup, then start and verify the complete previous Runtime.
|
|
74
74
|
|
|
75
75
|
There is no blue-green pair, fixed alternate port, slot adoption, mixed-generation traffic, or component rollback. Release safety comes from pre-activation canaries, immutable artifacts, one atomic active/previous authority, whole-Runtime readiness, and previous-release recovery.
|
|
@@ -8,7 +8,7 @@ These features are part of the default local setup:
|
|
|
8
8
|
|
|
9
9
|
- repository registration with stable `repoId` and `checkoutId` identities;
|
|
10
10
|
- bounded repository inspection and context collection;
|
|
11
|
-
- five
|
|
11
|
+
- five structured ChatGPT facade capabilities: `rh_status`, `rh_access`, `rh_inbox`, `rh_context`, and `rh_work`, plus a stable repair-capable default MCP schema;
|
|
12
12
|
- Direct Edit sessions with path limits, SHA preconditions, revisions, savepoints, diffs, checks, and rollback;
|
|
13
13
|
- durable Issue → Task → Run state and resumable evidence;
|
|
14
14
|
- named verification checks instead of arbitrary remote shell access;
|
|
@@ -26,19 +26,18 @@ These features are part of the default local setup:
|
|
|
26
26
|
| Tailscale / Cloudflare | Stable HTTPS endpoint for ChatGPT MCP | Tunnel client and appropriate account/domain configuration. |
|
|
27
27
|
| Browser | Playwright navigation, screenshots, and bounded browser evidence | Browser binaries and HTTP(S) URL scheme validation. |
|
|
28
28
|
| CodeGraph | Additional code relationships and impact navigation | CodeGraph CLI; native Windows automatic setup is not yet enabled. |
|
|
29
|
-
| Google Workspace | Gmail and Calendar plugin actions | Explicit OAuth setup and plugin permission. |
|
|
29
|
+
| Google Workspace | Gmail and Calendar plugin actions | Explicit OAuth setup and plugin permission. The OAuth client ID is non-secret managed configuration; refresh tokens and imported client secrets are stored in the platform credential store. Forge sends `client_secret` when one is stored and otherwise attempts the public-client/PKCE path; the live provider response remains authoritative for whether a specific OAuth client requires the secret. A stored refresh token or configured access token alone is **unverified**, not live-ready. Readiness becomes live-ready only after a successful provider action. If the provider returns `invalid_request: client_secret is missing`, restore the secret matching the configured OAuth client ID in macOS Keychain. If the original secret is irretrievable, configure a dedicated OAuth client ID, store its matching secret in Keychain, and reauthorize: refresh tokens do not transfer between OAuth clients. macOS Keychain is the single credential authority: do not cache refresh tokens or client secrets across external rotations. When the managed OAuth Client ID changes, restart the same running release to reload the environment; a runtime version switch is unnecessary. |
|
|
30
30
|
| Schedules | Supervised recurring checks | Canonical Forge Runtime running; live actions remain policy-gated. |
|
|
31
31
|
|
|
32
32
|
## Tool exposure
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Forge exposes one complete MCP tool registry without `facade` / `core` / `advanced` / `full` exposure selectors. The preferred entry points remain the `rh_*` facades, `execute_command` for authorized terminal work, `capability_execute` for typed core actions, and `plugin_action_execute` for provider-owned plugin actions. Other genuinely distinct Git, repository, Process, evidence, browser, iOS, and maintenance capabilities remain public until their callers move to an equivalent canonical action and their duplicate definitions are removed. Tool selection guidance does not hide capability. The MCP transport publishes the full static schema and does not dynamically load domain schemas.
|
|
35
35
|
|
|
36
36
|
## Execution choices
|
|
37
37
|
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
- Use named checks to verify results before acceptance.
|
|
38
|
+
- The model can choose direct terminal execution with `execute_command`, bounded source edits, structured retrieval, or domain capabilities without any required Work or Plan.
|
|
39
|
+
- Durable Tasks, agents, and named checks remain optional capabilities for the model to select when they add value.
|
|
40
|
+
- Forge enforces concrete execution authorization, resource isolation and write consistency, but does not choose the model's workflow.
|
|
42
41
|
|
|
43
42
|
## Authorization boundaries
|
|
44
43
|
|
|
@@ -26,7 +26,7 @@ Forge 不依赖编码 Agent 或外部插件也能使用。先完成核心工作
|
|
|
26
26
|
| Tailscale / Cloudflare | 为 ChatGPT MCP 提供稳定 HTTPS 地址 | 隧道客户端及对应账号/域名。 |
|
|
27
27
|
| Browser | Playwright 浏览、截图和证据 | 浏览器 binary 与允许访问的域名。 |
|
|
28
28
|
| CodeGraph | 代码关系和影响范围导航 | CodeGraph CLI;Windows 原生暂不自动配置。 |
|
|
29
|
-
| Google Workspace | Gmail、Calendar 助手能力 | 显式 OAuth 与插件权限。 |
|
|
29
|
+
| Google Workspace | Gmail、Calendar 助手能力 | 显式 OAuth 与插件权限。OAuth Client ID 是非秘密受管配置;refresh token 与导入的 client secret 保存到平台凭据存储。Forge 在凭据存储存在 `client_secret` 时发送它,否则尝试 public-client/PKCE 路径;具体 OAuth client 是否强制要求 secret,以实时 provider 响应为准。仅保存了 refresh token 或配置了尚未验证的 access token,不等于 Gmail 已可用;只有实际 provider 调用成功才标记 live-ready。若 Google 返回 `invalid_request: client_secret is missing`,优先将与当前 OAuth Client ID 匹配的密钥恢复到 macOS Keychain;若旧密钥无法找回,则在唯一受管配置中改用专用 OAuth Client ID,将对应密钥存入 Keychain,再重新授权。不同 OAuth client 之间不能复用原 refresh token。macOS Keychain 是唯一凭据权威,不得跨进程长期缓存 refresh token 或 client secret;受管 OAuth Client ID 修改后,应重启同版本运行进程以重新载入环境配置,无需切换 Runtime 版本。 |
|
|
30
30
|
| Schedule / Finding | 受监督的周期检查和候选发现 | Canonical Forge Runtime 持续运行,真实动作仍受策略控制。 |
|
|
31
31
|
|
|
32
32
|
## 工具暴露
|
|
@@ -4,9 +4,9 @@ This document records the intended public GitHub configuration for Forge. The re
|
|
|
4
4
|
|
|
5
5
|
## Repository metadata
|
|
6
6
|
|
|
7
|
-
- **Description:** `Local-first
|
|
8
|
-
- **Homepage:** `https://github.com/moretea-labs/forge/
|
|
9
|
-
- **Topics:** `
|
|
7
|
+
- **Description:** `Local-first ChatGPT MCP runtime for secure computer use, code, browser automation, and developer workflows.`
|
|
8
|
+
- **Homepage:** `https://github.com/moretea-labs/forge/blob/main/docs/README.md` (public versioned docs; the Wiki remains linked from the README)
|
|
9
|
+
- **Topics:** `chatgpt`, `mcp`, `model-context-protocol`, `local-first`, `ai-assistant`, `ai-agents`, `developer-tools`, `browser-automation`, `computer-use`, `coding-assistant`, `workflow-automation`, `typescript`
|
|
10
10
|
- **Features:** Issues, Discussions, Wiki, security policy, and Private Vulnerability Reporting enabled.
|
|
11
11
|
- **License:** MIT, with `NOTICE` and third-party notices preserved.
|
|
12
12
|
|
|
@@ -42,7 +42,7 @@ Use Issues for reproducible defects and scoped feature requests. Use Discussions
|
|
|
42
42
|
|
|
43
43
|
## Documentation ownership
|
|
44
44
|
|
|
45
|
-
The GitHub Wiki is a presentation target. Versioned source lives under `docs/wiki/`. Deeper engineering detail remains under `docs/architecture/CURRENT.md` and `docs/operations/`.
|
|
45
|
+
The GitHub Wiki is a presentation target. Versioned source lives under `docs/wiki/` and must be explicitly synchronized to the separate `forge.wiki.git` remote after reviewed changes. Public GitHub Pages at `https://moretea-labs.github.io/forge/` is a **generated publication artifact** created by `python3 docs/site/build-pages.py --output /tmp/forge-pages` from these same Markdown sources and published through the `gh-pages` branch. Do not hand-edit generated pages, and re-publish them after changing `docs/wiki/`. The GitHub Pages branch is not a second documentation authority. At low star counts, the Wiki cannot be relied upon for general search engine indexing: prioritize the GitHub About description/topics and repository README for GitHub search, and versioned docs for externally linked canonical content. Deeper engineering detail remains under `docs/architecture/CURRENT.md` and `docs/operations/`.
|
|
46
46
|
|
|
47
47
|
Public documentation must distinguish current facts from historical evidence. Avoid hard-coding “next release” versions in operational runbooks; derive versions from `package.json` so routine releases do not leave stale docs behind.
|
|
48
48
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# GitHub semantic release projection
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Use one root **Thin Forge Work** for a release and existing explicitly related `semanticParentWorkId` children. Forge Requirement, Plan, Work, controller binding, evidence and scheduler remain authoritative. GitHub Issues are generated **read-only projections of those durable facts**, not a task state store or an approval system.
|
|
6
|
+
|
|
7
|
+
## Setup
|
|
8
|
+
|
|
9
|
+
1. Register the repository in Forge; enable its existing GitHub plugin (`repository` set to the corresponding `owner/repo`).
|
|
10
|
+
2. Optional: set `projectOwner` and `projectNumber` to attach the generated Issues to one GitHub Project. The local `gh` account then needs Project scopes (`read:project`, `project`). Plain Issue sync works without Project permissions.
|
|
11
|
+
3. Have the model create/reuse the release Requirement and Plan, then its single primary Work. Only link independently approved or explicitly selected feature Works with `rh_work.revise(semantic_parent_work_id=...)`; **linking does not mean approval**. Continue development through the original Work and controller binding.
|
|
12
|
+
4. Call the existing GitHub plugin action `plugin.github.sync_semantic_release` with `release_work_id` for the root. Re-call on meaningful progress/semantic revisions (for example, from the same ongoing controller continuation workflow). The action reads the current Forge facts each time; it never edits Forge semantics.
|
|
13
|
+
|
|
14
|
+
The action creates or updates an Issue for each linked primary Work and the root release Work, using the exact `<!-- forge-semantic-work:<id> -->` marker for identity. It finds existing Issues before mutation, refuses ambiguous duplicates, and skips unchanged bodies. It never imports GitHub Issue state as a Work status and never infers user approval, tests or release completion. Exactly-once remote-send uncertainty must be reconciled by a fresh Issue inventory; do not blindly replay unknown creates.
|
|
15
|
+
|
|
16
|
+
## Explicit limitations
|
|
17
|
+
|
|
18
|
+
The current action is an **on-demand projection**, not a new scheduler or background daemon. A controller must call it when a Work's semantic content changes; deploying this source to the active Runtime is a separate release decision. Continuation is governed by the existing Forge Scheduler/Controller, not by Issue sync.
|
|
19
|
+
|
|
20
|
+
Version release acceptance remains an explicit model/human decision based on required evidence and external App Store authority. Never merge 1.0.5 work into a frozen 1.0.4 candidate.
|
|
@@ -6,8 +6,8 @@ Homebrew is planned as a convenience layer after the first stable npm/GitHub rel
|
|
|
6
6
|
|
|
7
7
|
Do not publish a formula until all of the following are true:
|
|
8
8
|
|
|
9
|
-
- `@moretea-labs/forge@1.8.
|
|
10
|
-
- Git tag and GitHub Release `v1.8.
|
|
9
|
+
- `@moretea-labs/forge@1.8.2` exists on npm;
|
|
10
|
+
- Git tag and GitHub Release `v1.8.2` exist and point to the tested commit;
|
|
11
11
|
- the npm tarball has an immutable checksum;
|
|
12
12
|
- macOS installation and `forge --version` / `forge doctor` tests pass;
|
|
13
13
|
- upgrade and uninstall behavior is documented.
|