@moretea-labs/forge 1.5.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +120 -0
- package/CHANGELOG.md +36 -0
- package/CLAUDE.md +120 -0
- package/CODE_OF_CONDUCT.md +23 -0
- package/CONTRIBUTING.md +77 -0
- package/LICENSE +22 -0
- package/NOTICE +9 -0
- package/README.en.md +5 -0
- package/README.es.md +12 -0
- package/README.fr.md +12 -0
- package/README.ja.md +12 -0
- package/README.md +132 -0
- package/README.zh-CN.md +84 -0
- package/SECURITY.md +50 -0
- package/SKILL.md +431 -0
- package/SUPPORT.md +31 -0
- package/THIRD_PARTY_NOTICES.md +18 -0
- package/agents/openai.yaml +4 -0
- package/assets/AGENTS.md +68 -0
- package/assets/CLAUDE.md +68 -0
- package/assets/branding/README.md +10 -0
- package/assets/branding/forge-controller-flow.mmd +8 -0
- package/assets/hooks/AGENTS.md +75 -0
- package/assets/hooks/CLAUDE.md +75 -0
- package/assets/hooks/anti-simplification.sh +12 -0
- package/assets/hooks/changelog-guard.sh +80 -0
- package/assets/hooks/codex.hooks.template.json +60 -0
- package/assets/hooks/first-principles-guard.sh +72 -0
- package/assets/hooks/hook-input.sh +618 -0
- package/assets/hooks/lib/session-state.sh +106 -0
- package/assets/hooks/lib/workflow-state.sh +1730 -0
- package/assets/hooks/post-bash.sh +215 -0
- package/assets/hooks/post-edit-guard.sh +256 -0
- package/assets/hooks/post-tool-observer.sh +99 -0
- package/assets/hooks/pre-edit-guard.sh +240 -0
- package/assets/hooks/prompt-guard.sh +1077 -0
- package/assets/hooks/run-hook.sh +67 -0
- package/assets/hooks/security-sentinel.sh +115 -0
- package/assets/hooks/session-start-context.sh +593 -0
- package/assets/hooks/settings.template.json +60 -0
- package/assets/hooks/stop-orchestrator.sh +171 -0
- package/assets/hooks/subagent-return-channel-guard.sh +107 -0
- package/assets/hooks/worktree-guard.sh +39 -0
- package/assets/initializer-question-pack.v1.json +132 -0
- package/assets/initializer-question-pack.v1.schema.json +46 -0
- package/assets/initializer-question-pack.v2.json +174 -0
- package/assets/initializer-question-pack.v3.json +206 -0
- package/assets/initializer-question-pack.v3.schema.json +92 -0
- package/assets/initializer-question-pack.v4.json +557 -0
- package/assets/initializer-question-pack.v4.schema.json +169 -0
- package/assets/partials/01-header.partial.md +10 -0
- package/assets/partials/02-iron-rules.partial.md +30 -0
- package/assets/partials/03-philosophy.partial.md +32 -0
- package/assets/partials/04-project-structure.partial.md +56 -0
- package/assets/partials/05-workflow.partial.md +79 -0
- package/assets/partials/06-cloudflare.partial.md +20 -0
- package/assets/partials/07-footer.partial.md +38 -0
- package/assets/partials/08-orchestration.partial.md +49 -0
- package/assets/partials/09-compact-instructions.partial.md +11 -0
- package/assets/partials/_assembly-order.md +40 -0
- package/assets/partials-agents/01-header.partial.md +8 -0
- package/assets/partials-agents/02-operating-mode.partial.md +44 -0
- package/assets/partials-agents/03-orchestration.partial.md +45 -0
- package/assets/partials-agents/04-task-protocol.partial.md +69 -0
- package/assets/partials-agents/05-coding-constraints.partial.md +20 -0
- package/assets/partials-agents/06-quality-safety.partial.md +23 -0
- package/assets/partials-agents/07-cloudflare.partial.md +9 -0
- package/assets/partials-agents/08-deep-docs.partial.md +32 -0
- package/assets/plan-map.json +301 -0
- package/assets/plugin-registry.v1.json +8 -0
- package/assets/project-structures/ai-native-collaborative-editor.txt +25 -0
- package/assets/project-structures/ai-native-product-copilot.txt +21 -0
- package/assets/project-structures/ai-native-runtime-console.txt +25 -0
- package/assets/project-structures/ai-native-sidecar-kernel.txt +19 -0
- package/assets/project-structures/astro-ssr.txt +25 -0
- package/assets/project-structures/expo-nativewind.txt +52 -0
- package/assets/project-structures/monorepo.txt +63 -0
- package/assets/project-structures/remix.txt +50 -0
- package/assets/project-structures/tanstack-start-workers.txt +51 -0
- package/assets/project-structures/vite-tanstack.txt +58 -0
- package/assets/reference-configs/AGENTS.md +13 -0
- package/assets/reference-configs/CLAUDE.md +13 -0
- package/assets/reference-configs/agentic-development-flow.md +94 -0
- package/assets/reference-configs/ai-workflows.md +14 -0
- package/assets/reference-configs/changelog-versioning.md +13 -0
- package/assets/reference-configs/coding-standards.md +14 -0
- package/assets/reference-configs/development-protocol.md +21 -0
- package/assets/reference-configs/document-generation.md +38 -0
- package/assets/reference-configs/evaluator-rubric.md +19 -0
- package/assets/reference-configs/external-tooling.md +374 -0
- package/assets/reference-configs/git-strategy.md +14 -0
- package/assets/reference-configs/global-working-rules.md +64 -0
- package/assets/reference-configs/handoff-protocol.md +38 -0
- package/assets/reference-configs/harness-overview.md +124 -0
- package/assets/reference-configs/heartbeat-triage.md +57 -0
- package/assets/reference-configs/hook-operations.md +96 -0
- package/assets/reference-configs/release-deploy.md +40 -0
- package/assets/reference-configs/spa-day-protocol.md +14 -0
- package/assets/reference-configs/sprint-contracts.md +89 -0
- package/assets/reference-configs/workflow-orchestration.md +14 -0
- package/assets/skill-hooks.json +41 -0
- package/assets/skill-version.json +189 -0
- package/assets/skills/claude-review/SKILL.md +231 -0
- package/assets/skills/codex-review/SKILL.md +103 -0
- package/assets/templates/AGENTS.md +13 -0
- package/assets/templates/CLAUDE.md +13 -0
- package/assets/templates/architecture.template.md +80 -0
- package/assets/templates/brief.template.md +38 -0
- package/assets/templates/contract.template.md +104 -0
- package/assets/templates/decisions.template.md +85 -0
- package/assets/templates/factor-factory/factor-backtest-report.template.md +36 -0
- package/assets/templates/factor-factory/factor-hypothesis.template.md +30 -0
- package/assets/templates/factor-factory/factor-registry.template.json +5 -0
- package/assets/templates/gitignore.template +53 -0
- package/assets/templates/guides/metro-esm-gotchas.template.md +46 -0
- package/assets/templates/helpers/architecture-event.ts +822 -0
- package/assets/templates/helpers/architecture-queue.sh +647 -0
- package/assets/templates/helpers/archive-architecture-request.sh +244 -0
- package/assets/templates/helpers/archive-workflow.sh +295 -0
- package/assets/templates/helpers/capability-config.ts +394 -0
- package/assets/templates/helpers/capability-resolver.ts +505 -0
- package/assets/templates/helpers/capture-plan.sh +335 -0
- package/assets/templates/helpers/check-agent-tooling.sh +1533 -0
- package/assets/templates/helpers/check-architecture-sync.sh +287 -0
- package/assets/templates/helpers/check-brain-manifest.sh +255 -0
- package/assets/templates/helpers/check-context-files.sh +49 -0
- package/assets/templates/helpers/check-deploy-sql-order.sh +117 -0
- package/assets/templates/helpers/check-skill-version.ts +193 -0
- package/assets/templates/helpers/check-task-sync.sh +65 -0
- package/assets/templates/helpers/check-task-workflow.sh +1002 -0
- package/assets/templates/helpers/codex-handoff-resume.sh +269 -0
- package/assets/templates/helpers/context-contract-sync.sh +516 -0
- package/assets/templates/helpers/contract-run.ts +465 -0
- package/assets/templates/helpers/contract-worktree.sh +725 -0
- package/assets/templates/helpers/ensure-task-workflow.sh +1218 -0
- package/assets/templates/helpers/harness-trace-grade.sh +150 -0
- package/assets/templates/helpers/heartbeat-triage.sh +361 -0
- package/assets/templates/helpers/inspect-project-state.ts +280 -0
- package/assets/templates/helpers/maintenance-triage.sh +167 -0
- package/assets/templates/helpers/migrate-project-template.sh +54 -0
- package/assets/templates/helpers/migrate-workflow-docs.ts +413 -0
- package/assets/templates/helpers/new-plan.sh +183 -0
- package/assets/templates/helpers/new-spec.sh +50 -0
- package/assets/templates/helpers/new-sprint.sh +49 -0
- package/assets/templates/helpers/plan-to-todo.sh +799 -0
- package/assets/templates/helpers/prepare-codex-handoff.sh +203 -0
- package/assets/templates/helpers/prepare-handoff.sh +81 -0
- package/assets/templates/helpers/refresh-current-status.sh +469 -0
- package/assets/templates/helpers/select-agent-context-blocks.sh +66 -0
- package/assets/templates/helpers/ship-worktrees.sh +561 -0
- package/assets/templates/helpers/sprint-backlog.sh +837 -0
- package/assets/templates/helpers/summarize-failures.sh +125 -0
- package/assets/templates/helpers/switch-plan.sh +153 -0
- package/assets/templates/helpers/sync-brain-docs.sh +381 -0
- package/assets/templates/helpers/verify-contract.sh +705 -0
- package/assets/templates/helpers/verify-sprint.sh +680 -0
- package/assets/templates/helpers/workflow-contract.ts +202 -0
- package/assets/templates/helpers/workstream-sync.sh +263 -0
- package/assets/templates/implementation-notes.template.md +37 -0
- package/assets/templates/packages.template.md +45 -0
- package/assets/templates/plan.template.md +77 -0
- package/assets/templates/prd.template.md +165 -0
- package/assets/templates/research.template.md +25 -0
- package/assets/templates/review.template.md +78 -0
- package/assets/templates/spec.template.md +31 -0
- package/assets/templates/sprint.template.md +69 -0
- package/assets/templates/tech-stack.template.md +57 -0
- package/assets/versions.json +77 -0
- package/assets/workflow-contract.v1.json +671 -0
- package/bin/forge-desktop-helper.mjs +204 -0
- package/bin/forge-hook.mjs +32 -0
- package/bin/forge-runtime-service.mjs +34 -0
- package/bin/forge-runtime.mjs +30 -0
- package/bin/forge.mjs +32 -0
- package/docs/CHANGELOG.md +978 -0
- package/docs/README.md +72 -0
- package/docs/README.zh-CN.md +58 -0
- package/docs/architecture/chatgpt-handoff-facade.md +393 -0
- package/docs/architecture/current/README.md +158 -0
- package/docs/architecture/current/approved-target-architecture.zh-CN.md +1501 -0
- package/docs/architecture/current/architecture-invariants.md +331 -0
- package/docs/architecture/current/automation-and-schedule-engine.md +453 -0
- package/docs/architecture/current/codegraph-context-provider.md +226 -0
- package/docs/architecture/current/control-plane-authority-inventory.md +82 -0
- package/docs/architecture/current/controller-repository-decoupling.md +148 -0
- package/docs/architecture/current/dispatch-and-agent-strategy.md +354 -0
- package/docs/architecture/current/entity-model.md +619 -0
- package/docs/architecture/current/external-plugin-governance.md +396 -0
- package/docs/architecture/current/failure-recovery.md +471 -0
- package/docs/architecture/current/governance.md +213 -0
- package/docs/architecture/current/human-interaction-plane.md +87 -0
- package/docs/architecture/current/implementation-status.md +128 -0
- package/docs/architecture/current/job-and-run-lifecycle.md +413 -0
- package/docs/architecture/current/local-workspace-target-grants.md +70 -0
- package/docs/architecture/current/migration-roadmap.md +105 -0
- package/docs/architecture/current/multi-repository-execution.md +371 -0
- package/docs/architecture/current/operations-runbook.md +45 -0
- package/docs/architecture/current/peer-supercontroller-runtime.md +32 -0
- package/docs/architecture/current/personal-assistant-plugin-baseline.md +207 -0
- package/docs/architecture/current/repository-access-modes.md +102 -0
- package/docs/architecture/current/route-policy.md +15 -0
- package/docs/architecture/current/route-session-concurrency.md +85 -0
- package/docs/architecture/current/runtime-architecture-simplification.md +214 -0
- package/docs/architecture/current/runtime-directory-map.md +49 -0
- package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +85 -0
- package/docs/architecture/current/scheduler-and-resource-claims.md +432 -0
- package/docs/architecture/current/session-aware-execution-and-authorization.md +77 -0
- package/docs/architecture/current/system-overview.md +144 -0
- package/docs/architecture/current/target-requirements-traceability.md +202 -0
- package/docs/architecture/current/thin-harness-governance-policy.md +32 -0
- package/docs/architecture/current/thin-harness-v1.md +313 -0
- package/docs/architecture/current/verification-and-release-gates.md +391 -0
- package/docs/architecture/decisions/20260801-controller-home-sqlite-state.md +100 -0
- package/docs/architecture/decisions/20260803-canonical-skill-surface.md +40 -0
- package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +53 -0
- package/docs/architecture/diagrams/.gitkeep +1 -0
- package/docs/architecture/diagrams/agentic-dev-plugin-architecture.html +186 -0
- package/docs/architecture/domains/.gitkeep +0 -0
- package/docs/architecture/domains/public-surface.md +30 -0
- package/docs/architecture/domains/runtime-harness.md +33 -0
- package/docs/architecture/domains/verification.md +33 -0
- package/docs/architecture/domains/workflow-engine.md +30 -0
- package/docs/architecture/global-hook-runtime.md +162 -0
- package/docs/architecture/history.md +38 -0
- package/docs/architecture/index.md +114 -0
- package/docs/architecture/ios-semantic-automation-provider-v2.md +166 -0
- package/docs/architecture/modules/.gitkeep +0 -0
- package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +24 -0
- package/docs/architecture/requests/.gitkeep +1 -0
- package/docs/architecture/requests/archive/2026/20260528-154740-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-154816-assets-hooks-assets-hooks-hook-input-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-161851-ai-harness-workflow-contract-json-ai-harness-workflow-contract-json.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-161853-scripts-check-task-workflow-sh-scripts-check-task-workflow-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-161911-assets-workflow-contract-v1-json-assets-workflow-contract-v1-json.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222416-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222444-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222457-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222648-ai-hooks-ai-hooks-pre-edit-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222705-ai-hooks-ai-hooks-worktree-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222726-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-222727-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-224736-ai-hooks-ai-hooks-hook-input-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233259-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233335-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233456-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233457-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233637-ai-hooks-ai-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260528-233638-assets-hooks-assets-hooks-prompt-guard-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260529-000322-root-package-json.md +59 -0
- package/docs/architecture/requests/archive/2026/20260529-004238-ai-hooks-ai-hooks-lib-workflow-state-sh.md +59 -0
- package/docs/architecture/requests/archive/2026/20260529-020654-ai-harness-policy-json-ai-harness-policy-json.md +63 -0
- package/docs/architecture/requests/archive/2026/20260529-094236-ai-hooks-ai-hooks-prompt-guard-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094323-assets-hooks-assets-hooks-prompt-guard-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094331-ai-hooks-ai-hooks-prompt-guard-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094339-assets-hooks-assets-hooks-prompt-guard-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094430-assets-hooks-assets-hooks-session-start-context-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260529-094446-ai-hooks-ai-hooks-session-start-context-sh.md +60 -0
- package/docs/architecture/requests/archive/2026/20260613-002040-runtime-harness-hook-adapters.md +68 -0
- package/docs/architecture/requests/archive/2026/root.md +68 -0
- package/docs/architecture/requests/archive/2026/runtime-harness-hook-adapters.md +76 -0
- package/docs/architecture/requests/archive/2026/verification-evals-checks.md +68 -0
- package/docs/architecture/requests/archive/2026/workflow-engine-contract-assets.md +69 -0
- package/docs/architecture/reviews/2026-07-11-access-surface-review.md +99 -0
- package/docs/architecture/snapshots/.gitkeep +1 -0
- package/docs/forge-autonomous-goal-loop.md +7 -0
- package/docs/forge-chatgpt-browser-engine.md +11 -0
- package/docs/forge-chatgpt-mcp-setup.md +239 -0
- package/docs/forge-chatgpt-supervised-automation.md +11 -0
- package/docs/forge-github-issue-launcher.md +7 -0
- package/docs/forge-plugin-management.md +95 -0
- package/docs/forge-provider-configuration.md +7 -0
- package/docs/forge-runtime-self-healing-loop.md +7 -0
- package/docs/images/forge-banner-cn.svg +1 -0
- package/docs/images/forge-banner.svg +1 -0
- package/docs/images/forge-controller-flow.svg +1 -0
- package/docs/images/image.png +0 -0
- package/docs/images/repo-harness-gptpro-cn.png +0 -0
- package/docs/images/repo-harness-gptpro.png +0 -0
- package/docs/images/repo-harness-hook-carrot.png +0 -0
- package/docs/operations/chatgpt-personal-assistant-runtime.md +83 -0
- package/docs/operations/checkout-route-integrity.md +22 -0
- package/docs/operations/controller-browser-plugin.md +299 -0
- package/docs/operations/controller-desktop-plugin.md +112 -0
- package/docs/operations/controller-performance-and-502.md +126 -0
- package/docs/operations/controller-reliability-runbook.md +134 -0
- package/docs/operations/environment-hardening.md +50 -0
- package/docs/operations/features.md +45 -0
- package/docs/operations/features.zh-CN.md +45 -0
- package/docs/operations/github-repository.md +60 -0
- package/docs/operations/gmail-assistant-routines.md +186 -0
- package/docs/operations/homebrew.md +26 -0
- package/docs/operations/local-system-assistant.md +46 -0
- package/docs/operations/local-system-assistant.zh-CN.md +46 -0
- package/docs/operations/mcp-tool-exposure.md +58 -0
- package/docs/operations/mobile-intents-shortcuts.md +117 -0
- package/docs/operations/open-source-release-hygiene.md +31 -0
- package/docs/operations/personal-assistant-operator-guide.md +61 -0
- package/docs/operations/platform-support.md +62 -0
- package/docs/operations/platform-support.zh-CN.md +61 -0
- package/docs/operations/provider-configuration.md +31 -0
- package/docs/operations/releasing.md +86 -0
- package/docs/operations/releasing.zh-CN.md +86 -0
- package/docs/operations/route-session-concurrency-baseline.json +893 -0
- package/docs/operations/route-session-concurrency-baseline.md +94 -0
- package/docs/operations/runtime-performance-diagnostics.md +14 -0
- package/docs/operations/sqlite-control-plane-recovery.md +65 -0
- package/docs/operations/standalone-disaster-recovery.md +136 -0
- package/docs/operations/troubleshooting.md +72 -0
- package/docs/operations/troubleshooting.zh-CN.md +70 -0
- package/docs/public-usage-guide.md +33 -0
- package/docs/public-usage-guide.zh-CN.md +33 -0
- package/docs/tutorials/01-install-and-start.md +93 -0
- package/docs/tutorials/01-install-and-start.zh-CN.md +93 -0
- package/docs/tutorials/02-connect-chatgpt.md +82 -0
- package/docs/tutorials/02-connect-chatgpt.zh-CN.md +80 -0
- package/docs/tutorials/03-first-repository-task.md +57 -0
- package/docs/tutorials/03-first-repository-task.zh-CN.md +57 -0
- package/docs/tutorials/README.md +13 -0
- package/docs/tutorials/README.zh-CN.md +13 -0
- package/docs/wiki/Architecture.md +85 -0
- package/docs/wiki/Core-Concepts.md +27 -0
- package/docs/wiki/Home.md +36 -0
- package/docs/wiki/Implementation.md +172 -0
- package/docs/wiki/Installation.md +50 -0
- package/docs/wiki/Integrations.md +29 -0
- package/docs/wiki/Operations.md +26 -0
- package/docs/wiki/Quick-Start.md +46 -0
- package/docs/wiki/Releases-and-Upgrades.md +34 -0
- package/docs/wiki/Runtime-Architecture.md +50 -0
- package/docs/wiki/Security-Model.md +31 -0
- package/docs/wiki/Troubleshooting.md +38 -0
- package/docs/wiki/Work-Lifecycle.md +31 -0
- package/docs/wiki/_Sidebar.md +21 -0
- package/install.ps1 +48 -0
- package/install.sh +66 -0
- package/package.json +156 -0
- package/scripts/activate-source-baseline.ts +335 -0
- package/scripts/architecture-event.ts +822 -0
- package/scripts/architecture-queue.sh +647 -0
- package/scripts/archive-architecture-request.sh +244 -0
- package/scripts/archive-workflow.sh +295 -0
- package/scripts/assemble-template.ts +1172 -0
- package/scripts/benchmark-controller-hotpath.ts +212 -0
- package/scripts/benchmark-controller-round2.ts +139 -0
- package/scripts/benchmark-ios-agent-device.ts +514 -0
- package/scripts/benchmark-route-session-concurrency.ts +714 -0
- package/scripts/benchmark-thin-harness-gateway-ab.ts +632 -0
- package/scripts/benchmark-thin-harness-mcp-e2e.ts +479 -0
- package/scripts/benchmark-thin-harness.ts +251 -0
- package/scripts/bootstrap-runtime-maintenance-recovery.sh +183 -0
- package/scripts/canary-global-hook.sh +263 -0
- package/scripts/capability-config.ts +394 -0
- package/scripts/capability-resolver.ts +505 -0
- package/scripts/capture-plan.sh +335 -0
- package/scripts/check-agent-tooling.sh +1549 -0
- package/scripts/check-architecture-sync.sh +373 -0
- package/scripts/check-brain-manifest.sh +255 -0
- package/scripts/check-ci.sh +16 -0
- package/scripts/check-context-files.sh +49 -0
- package/scripts/check-deploy-sql-order.sh +117 -0
- package/scripts/check-mcp-compatibility.ts +93 -0
- package/scripts/check-npm-release.sh +32 -0
- package/scripts/check-open-source-tracked-surface.sh +146 -0
- package/scripts/check-package-identity.mjs +117 -0
- package/scripts/check-platform-support.mjs +79 -0
- package/scripts/check-public-docs.sh +105 -0
- package/scripts/check-public-release-surface.sh +19 -0
- package/scripts/check-release-published.sh +57 -0
- package/scripts/check-release-readiness.sh +43 -0
- package/scripts/check-release-version.mjs +74 -0
- package/scripts/check-runtime-architecture.mjs +593 -0
- package/scripts/check-runtime-env.mjs +89 -0
- package/scripts/check-skill-version.ts +193 -0
- package/scripts/check-tarball-install-smoke.sh +66 -0
- package/scripts/check-task-sync.sh +65 -0
- package/scripts/check-task-workflow.sh +1002 -0
- package/scripts/check-third-party-notices.mjs +36 -0
- package/scripts/codex-handoff-resume.sh +269 -0
- package/scripts/complete-control-plane-cutover.ts +126 -0
- package/scripts/context-contract-sync.sh +516 -0
- package/scripts/contract-run.ts +465 -0
- package/scripts/contract-worktree.sh +725 -0
- package/scripts/controller-ngrok-rotation.sh +678 -0
- package/scripts/create-project-dirs.sh +282 -0
- package/scripts/ensure-codegraph.sh +16 -0
- package/scripts/ensure-task-workflow.sh +1218 -0
- package/scripts/export-requirement-portfolio.ts +28 -0
- package/scripts/factor-lab-check.sh +73 -0
- package/scripts/factor-lab-new.sh +96 -0
- package/scripts/factor-lab-promote.sh +86 -0
- package/scripts/factor-lab-reject.sh +68 -0
- package/scripts/harness-trace-grade.sh +150 -0
- package/scripts/heartbeat-triage.sh +361 -0
- package/scripts/hook-dispatch-diet-report.ts +234 -0
- package/scripts/hook-shim.sh +93 -0
- package/scripts/init-project.sh +505 -0
- package/scripts/initializer-question-pack.ts +200 -0
- package/scripts/inspect-project-state.ts +280 -0
- package/scripts/install-desktop-operator-registration.ts +45 -0
- package/scripts/install-standalone-recovery.ts +74 -0
- package/scripts/lib/AGENTS.md +13 -0
- package/scripts/lib/CLAUDE.md +13 -0
- package/scripts/lib/controller-home-env.sh +69 -0
- package/scripts/lib/project-init-lib.sh +2759 -0
- package/scripts/load-standalone-recovery.sh +17 -0
- package/scripts/loop-engine-cutover-gate.ts +324 -0
- package/scripts/maintenance-triage.sh +167 -0
- package/scripts/migrate-project-template.sh +1189 -0
- package/scripts/migrate-requirement-portfolio.ts +86 -0
- package/scripts/migrate-workflow-docs.ts +413 -0
- package/scripts/new-plan.sh +183 -0
- package/scripts/new-spec.sh +50 -0
- package/scripts/new-sprint.sh +49 -0
- package/scripts/open-source-audit-allowlist.txt +46 -0
- package/scripts/package-source-archive.sh +147 -0
- package/scripts/plan-to-todo.sh +799 -0
- package/scripts/prepare-codex-handoff.sh +203 -0
- package/scripts/prepare-handoff.sh +81 -0
- package/scripts/public-release-files.txt +39 -0
- package/scripts/public-release.ts +174 -0
- package/scripts/publish-release-tarball.sh +27 -0
- package/scripts/refresh-current-status.sh +469 -0
- package/scripts/refresh-ios-physical-runtime.ts +196 -0
- package/scripts/repair-executable-modes.ts +8 -0
- package/scripts/rollout-all-registered-repos.sh +7 -0
- package/scripts/route-nl-vs-ts-eval.ts +679 -0
- package/scripts/run-bun-test-file.ts +182 -0
- package/scripts/run-governed-gate.ts +140 -0
- package/scripts/run-mobile-monitor-bridge.ts +71 -0
- package/scripts/run-skill-evals.ts +1022 -0
- package/scripts/run-skill-hook.ts +244 -0
- package/scripts/run-supervised-command.ts +24 -0
- package/scripts/run-tests-portable.sh +20 -0
- package/scripts/select-agent-context-blocks.sh +66 -0
- package/scripts/setup-plugins.sh +43 -0
- package/scripts/ship-worktrees.sh +561 -0
- package/scripts/smoke-browser-cdp-bridge.ts +93 -0
- package/scripts/smoke-chatgpt-supervised-automation.ts +208 -0
- package/scripts/smoke-ios-physical-device.ts +114 -0
- package/scripts/smoke-mcp-http-runtime.ts +216 -0
- package/scripts/smoke-mcp-tool-surface.ts +117 -0
- package/scripts/smoke-runtime-recovery.ts +220 -0
- package/scripts/smoke-schedule-engine.ts +283 -0
- package/scripts/sprint-backlog.sh +837 -0
- package/scripts/stage-runtime-release.ts +38 -0
- package/scripts/summarize-failures.sh +125 -0
- package/scripts/switch-plan.sh +153 -0
- package/scripts/sync-brain-docs.sh +381 -0
- package/scripts/sync-codex-installed-copies.sh +183 -0
- package/scripts/test-governance.ts +75 -0
- package/scripts/verify-contract.sh +705 -0
- package/scripts/verify-forge-runtime.sh +31 -0
- package/scripts/verify-sprint.sh +680 -0
- package/scripts/windows-paths.d.mts +7 -0
- package/scripts/windows-paths.mjs +28 -0
- package/scripts/workflow-contract.ts +206 -0
- package/scripts/workstream-sync.sh +263 -0
- package/src/cli/agent-jobs/executable-resolver.ts +289 -0
- package/src/cli/agent-jobs/executor-health.ts +252 -0
- package/src/cli/agent-jobs/integration.ts +963 -0
- package/src/cli/agent-jobs/job-manager.ts +2030 -0
- package/src/cli/agent-jobs/types.ts +219 -0
- package/src/cli/agent-jobs/worker-lifecycle.ts +288 -0
- package/src/cli/chatgpt-browser/bind-server.ts +504 -0
- package/src/cli/chatgpt-browser/binding.ts +140 -0
- package/src/cli/chatgpt-browser/bridge-extension.ts +221 -0
- package/src/cli/chatgpt-browser/bridge-provider.ts +268 -0
- package/src/cli/chatgpt-browser/engine.ts +569 -0
- package/src/cli/chatgpt-browser/file-policy.ts +158 -0
- package/src/cli/chatgpt-browser/native-provider.ts +553 -0
- package/src/cli/chatgpt-browser/oracle-provider.ts +437 -0
- package/src/cli/chatgpt-browser/prompt-assembler.ts +29 -0
- package/src/cli/chatgpt-browser/session-store.ts +301 -0
- package/src/cli/chatgpt-browser/types.ts +172 -0
- package/src/cli/commands/adopt-plan.ts +186 -0
- package/src/cli/commands/brain-root.ts +132 -0
- package/src/cli/commands/brain.ts +609 -0
- package/src/cli/commands/capability-context.ts +613 -0
- package/src/cli/commands/chatgpt.ts +424 -0
- package/src/cli/commands/controller.ts +680 -0
- package/src/cli/commands/docs.ts +103 -0
- package/src/cli/commands/doctor.ts +476 -0
- package/src/cli/commands/global-runtime.ts +323 -0
- package/src/cli/commands/hook.ts +34 -0
- package/src/cli/commands/init-hook.ts +870 -0
- package/src/cli/commands/init.ts +829 -0
- package/src/cli/commands/install.ts +86 -0
- package/src/cli/commands/mcp.ts +315 -0
- package/src/cli/commands/migrate.ts +154 -0
- package/src/cli/commands/plugin.ts +74 -0
- package/src/cli/commands/prompt-guard-decision.ts +238 -0
- package/src/cli/commands/recovery.ts +667 -0
- package/src/cli/commands/repository.ts +224 -0
- package/src/cli/commands/run.ts +23 -0
- package/src/cli/commands/runtime.ts +191 -0
- package/src/cli/commands/security.ts +440 -0
- package/src/cli/commands/status.ts +137 -0
- package/src/cli/commands/tools.ts +167 -0
- package/src/cli/controller/check-runner.ts +1022 -0
- package/src/cli/controller/codex-continuation.ts +153 -0
- package/src/cli/controller/completion-backlog.ts +380 -0
- package/src/cli/controller/completion-orchestrator.ts +1807 -0
- package/src/cli/controller/completion-target.ts +96 -0
- package/src/cli/controller/composite-operations.ts +196 -0
- package/src/cli/controller/composite-result.ts +130 -0
- package/src/cli/controller/context-pack.ts +652 -0
- package/src/cli/controller/execution-completion.ts +175 -0
- package/src/cli/controller/execution-policy.ts +392 -0
- package/src/cli/controller/governance.ts +594 -0
- package/src/cli/controller/issue-store.ts +1421 -0
- package/src/cli/controller/launch-agents.ts +410 -0
- package/src/cli/controller/legacy-issue-cutover.ts +415 -0
- package/src/cli/controller/lifecycle-authority.ts +16 -0
- package/src/cli/controller/migrated-issue-decision.ts +237 -0
- package/src/cli/controller/operational-plan.ts +226 -0
- package/src/cli/controller/postcondition.ts +134 -0
- package/src/cli/controller/progress.ts +656 -0
- package/src/cli/controller/project-state.ts +147 -0
- package/src/cli/controller/requirement-portfolio-export.ts +146 -0
- package/src/cli/controller/requirement-portfolio-migration.ts +613 -0
- package/src/cli/controller/run-evidence.ts +43 -0
- package/src/cli/controller/runtime-config.ts +92 -0
- package/src/cli/controller/stuck-state-migration.ts +396 -0
- package/src/cli/controller/task-ledger.ts +632 -0
- package/src/cli/controller/task-status-resolver.ts +403 -0
- package/src/cli/controller/types.ts +273 -0
- package/src/cli/controller/work-mode.ts +186 -0
- package/src/cli/controller/worklog.ts +201 -0
- package/src/cli/diagnostic-entry.ts +39 -0
- package/src/cli/editing/edit-session.ts +1606 -0
- package/src/cli/editing/executable-modes.ts +70 -0
- package/src/cli/github/github.ts +274 -0
- package/src/cli/github/plugin.ts +345 -0
- package/src/cli/github/session.ts +104 -0
- package/src/cli/hook/prompt-guard-decision.ts +238 -0
- package/src/cli/hook/prompt-intents.ts +534 -0
- package/src/cli/hook/route-registry.ts +107 -0
- package/src/cli/hook/runtime.ts +303 -0
- package/src/cli/hook/state-snapshot.ts +388 -0
- package/src/cli/hook-entry.ts +51 -0
- package/src/cli/index.ts +574 -0
- package/src/cli/installer/managed-entries.ts +78 -0
- package/src/cli/installer/shared.ts +65 -0
- package/src/cli/installer/targets/claude.ts +136 -0
- package/src/cli/installer/targets/codex.ts +174 -0
- package/src/cli/installer/targets/registry.ts +28 -0
- package/src/cli/installer/types.ts +72 -0
- package/src/cli/local-bridge/connector-freshness.ts +529 -0
- package/src/cli/local-bridge/console-view-models.ts +324 -0
- package/src/cli/local-bridge/dashboard.ts +1312 -0
- package/src/cli/local-bridge/facade-api.ts +1877 -0
- package/src/cli/local-bridge/job-store.ts +1451 -0
- package/src/cli/local-bridge/mobile-intents.ts +344 -0
- package/src/cli/local-bridge/mobile-monitor.ts +209 -0
- package/src/cli/local-bridge/server.ts +3183 -0
- package/src/cli/local-bridge/types.ts +176 -0
- package/src/cli/mcp/access-mode.ts +132 -0
- package/src/cli/mcp/access-tools.ts +387 -0
- package/src/cli/mcp/audit.ts +32 -0
- package/src/cli/mcp/auth.ts +402 -0
- package/src/cli/mcp/instructions.ts +33 -0
- package/src/cli/mcp/legacy-context.ts +16 -0
- package/src/cli/mcp/legacy-tool-service.ts +5516 -0
- package/src/cli/mcp/multi-repository.ts +423 -0
- package/src/cli/mcp/oauth.ts +226 -0
- package/src/cli/mcp/paths.ts +134 -0
- package/src/cli/mcp/policy.ts +230 -0
- package/src/cli/mcp/proxy-env.ts +62 -0
- package/src/cli/mcp/readiness-projection.ts +24 -0
- package/src/cli/mcp/redaction.ts +21 -0
- package/src/cli/mcp/repo.ts +24 -0
- package/src/cli/mcp/repository-tools.ts +1295 -0
- package/src/cli/mcp/server.ts +341 -0
- package/src/cli/mcp/setup.ts +793 -0
- package/src/cli/mcp/tool-capability-cache.ts +87 -0
- package/src/cli/mcp/tools.ts +9 -0
- package/src/cli/mcp/toolset-names.ts +70 -0
- package/src/cli/mcp/toolset-selection.ts +41 -0
- package/src/cli/mcp/toolset.ts +300 -0
- package/src/cli/mcp/transports/AGENTS.md +39 -0
- package/src/cli/mcp/transports/CLAUDE.md +39 -0
- package/src/cli/mcp/transports/http.ts +1234 -0
- package/src/cli/mcp/transports/session-registry.ts +428 -0
- package/src/cli/mcp/transports/stdio.ts +8 -0
- package/src/cli/mcp/types.ts +41 -0
- package/src/cli/mcp/umbrella-tools.ts +117 -0
- package/src/cli/repo-adoption/reclaim-runtime.ts +681 -0
- package/src/cli/repositories/branch-name-policy.ts +57 -0
- package/src/cli/repositories/command-classifier.ts +600 -0
- package/src/cli/repositories/command-executor.ts +1066 -0
- package/src/cli/repositories/command-normalization.ts +53 -0
- package/src/cli/repositories/command-scope.ts +264 -0
- package/src/cli/repositories/controller-home.ts +88 -0
- package/src/cli/repositories/entity-migration.ts +199 -0
- package/src/cli/repositories/ephemeral-workspace.ts +62 -0
- package/src/cli/repositories/git-command-executor.ts +301 -0
- package/src/cli/repositories/goal-registry.ts +239 -0
- package/src/cli/repositories/identity.ts +64 -0
- package/src/cli/repositories/local-project-onboarding.ts +539 -0
- package/src/cli/repositories/locks.ts +262 -0
- package/src/cli/repositories/registry.ts +1057 -0
- package/src/cli/repositories/runtime-storage.ts +411 -0
- package/src/cli/repositories/safe-patch.ts +421 -0
- package/src/cli/repositories/selected-path-actions.ts +341 -0
- package/src/cli/repositories/structured-git.ts +257 -0
- package/src/cli/repositories/types.ts +155 -0
- package/src/cli/repositories/umbrella.ts +134 -0
- package/src/cli/repositories/workbench.ts +140 -0
- package/src/cli/repositories/worktree-storage.ts +137 -0
- package/src/cli/repository/inspector.ts +637 -0
- package/src/cli/repository/session-cache.ts +453 -0
- package/src/cli/runtime/helper-runner.ts +172 -0
- package/src/cli/runtime-invocation.ts +318 -0
- package/src/cli/tools/codegraph.ts +676 -0
- package/src/cli/v81-entry.ts +29 -0
- package/src/core/adoption/gitignore-plan.ts +127 -0
- package/src/core/adoption/helper-wrapper-plan.ts +159 -0
- package/src/core/adoption/manifest-templates.ts +60 -0
- package/src/core/adoption/modes.ts +7 -0
- package/src/core/adoption/operations.ts +126 -0
- package/src/core/adoption/plan.ts +149 -0
- package/src/core/adoption/render.ts +70 -0
- package/src/core/adoption/rollback.ts +62 -0
- package/src/core/adoption/summary.ts +43 -0
- package/src/core/adoption/workflow-contract-asset.ts +14 -0
- package/src/core/adoption/workflow-contract-plan.ts +31 -0
- package/src/effects/fs-transaction.ts +540 -0
- package/src/effects/git-executable.ts +59 -0
- package/src/effects/managed-block.ts +86 -0
- package/src/effects/path-safety.ts +47 -0
- package/src/effects/process-runner.ts +192 -0
- package/src/runtime/assistant/action-proposals.ts +279 -0
- package/src/runtime/assistant/intent.ts +395 -0
- package/src/runtime/assistant/model-provider.ts +460 -0
- package/src/runtime/assistant/openapi.ts +223 -0
- package/src/runtime/assistant/policy.ts +89 -0
- package/src/runtime/assistant/readiness.ts +258 -0
- package/src/runtime/assistant/routine-runtime.ts +477 -0
- package/src/runtime/assistant/schedule-binding.ts +171 -0
- package/src/runtime/assistant/standing-grants.ts +375 -0
- package/src/runtime/assistant/store.ts +243 -0
- package/src/runtime/assistant/types.ts +135 -0
- package/src/runtime/context/codegraph-read-provider.ts +347 -0
- package/src/runtime/context/codegraph-sidecar.cjs +207 -0
- package/src/runtime/control-plane/dispatch-priority.ts +67 -0
- package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +151 -0
- package/src/runtime/control-plane/execution/execution-identity.ts +456 -0
- package/src/runtime/control-plane/execution/session-store.ts +175 -0
- package/src/runtime/control-plane/execution/validation.ts +117 -0
- package/src/runtime/control-plane/execution/verification-evidence.ts +191 -0
- package/src/runtime/control-plane/execution/work-handle-store.ts +225 -0
- package/src/runtime/control-plane/execution/work-prepare-request-store.ts +159 -0
- package/src/runtime/control-plane/execution/work-task-receipt.ts +445 -0
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +821 -0
- package/src/runtime/control-plane/facade/capability-registry.ts +279 -0
- package/src/runtime/control-plane/facade/check-normalization.ts +233 -0
- package/src/runtime/control-plane/facade/codex-delegation.ts +196 -0
- package/src/runtime/control-plane/facade/controller-session-store.ts +199 -0
- package/src/runtime/control-plane/facade/facade-result.ts +41 -0
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +177 -0
- package/src/runtime/control-plane/facade/goal-workloop.ts +1216 -0
- package/src/runtime/control-plane/facade/handoff-inbox-store.ts +221 -0
- package/src/runtime/control-plane/facade/index.ts +16 -0
- package/src/runtime/control-plane/facade/operation-digest.ts +528 -0
- package/src/runtime/control-plane/facade/plan-contract-store.ts +403 -0
- package/src/runtime/control-plane/facade/policy-gate.ts +149 -0
- package/src/runtime/control-plane/facade/requirement-board.ts +280 -0
- package/src/runtime/control-plane/facade/self-healing-loop.ts +555 -0
- package/src/runtime/control-plane/facade/suggested-actions.ts +108 -0
- package/src/runtime/control-plane/facade/types.ts +729 -0
- package/src/runtime/control-plane/facade/work-admission-policy.ts +93 -0
- package/src/runtime/control-plane/facade/work-continuation.ts +104 -0
- package/src/runtime/control-plane/facade/work-contract-store.ts +1118 -0
- package/src/runtime/control-plane/facade/work-task-projection.ts +66 -0
- package/src/runtime/control-plane/global-scheduler/reconciliation.ts +365 -0
- package/src/runtime/control-plane/global-scheduler/scheduler.ts +920 -0
- package/src/runtime/control-plane/global-scheduler/wake-signal.ts +89 -0
- package/src/runtime/control-plane/goal-loop/config-facade.ts +700 -0
- package/src/runtime/control-plane/goal-loop/config-store.ts +570 -0
- package/src/runtime/control-plane/goal-loop/config-types.ts +213 -0
- package/src/runtime/control-plane/goal-loop/executor-router.ts +109 -0
- package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +149 -0
- package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +304 -0
- package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +1001 -0
- package/src/runtime/control-plane/goal-loop/handoff-packet.ts +160 -0
- package/src/runtime/control-plane/goal-loop/index.ts +13 -0
- package/src/runtime/control-plane/goal-loop/local-tools.ts +290 -0
- package/src/runtime/control-plane/goal-loop/policy-gates.ts +203 -0
- package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +93 -0
- package/src/runtime/control-plane/goal-loop/provider-registry.ts +545 -0
- package/src/runtime/control-plane/goal-loop/types.ts +378 -0
- package/src/runtime/control-plane/governance/access-policy.ts +147 -0
- package/src/runtime/control-plane/governance/authorization.ts +195 -0
- package/src/runtime/control-plane/governance/external-effects.ts +43 -0
- package/src/runtime/control-plane/launcher/thin-launcher.ts +97 -0
- package/src/runtime/control-plane/persistence/metadata-payload-policy.ts +53 -0
- package/src/runtime/control-plane/persistence/requirement-store.ts +241 -0
- package/src/runtime/control-plane/persistence/sqlite-store.ts +539 -0
- package/src/runtime/control-plane/release-retention.ts +447 -0
- package/src/runtime/control-plane/repo-actor/actor.ts +181 -0
- package/src/runtime/control-plane/repo-actor/registry.ts +20 -0
- package/src/runtime/control-plane/routing/index.ts +1 -0
- package/src/runtime/control-plane/routing/route-policy.ts +379 -0
- package/src/runtime/control-plane/runtime-cleanup.ts +727 -0
- package/src/runtime/control-plane/runtime-generation.ts +509 -0
- package/src/runtime/control-plane/runtime-pid-ownership.ts +11 -0
- package/src/runtime/control-plane/runtime-status-client.ts +90 -0
- package/src/runtime/control-plane/startup-recovery.ts +198 -0
- package/src/runtime/diagnostics/connectivity-observability.ts +475 -0
- package/src/runtime/diagnostics/mcp-timing.ts +64 -0
- package/src/runtime/diagnostics/performance.ts +379 -0
- package/src/runtime/diagnostics/process-facade.ts +350 -0
- package/src/runtime/diagnostics/read-only-tool.ts +226 -0
- package/src/runtime/evidence/artifact-store.ts +154 -0
- package/src/runtime/evidence/event-ledger.ts +80 -0
- package/src/runtime/evidence/evidence-store.ts +68 -0
- package/src/runtime/evidence/process-check-receipt.ts +43 -0
- package/src/runtime/evidence/result-store.ts +209 -0
- package/src/runtime/evidence/sensitive-output.ts +353 -0
- package/src/runtime/execution/jobs/child-reference.ts +124 -0
- package/src/runtime/execution/jobs/legacy-adapter.ts +22 -0
- package/src/runtime/execution/jobs/receipt-recovery.ts +119 -0
- package/src/runtime/execution/jobs/receipt-store.ts +243 -0
- package/src/runtime/execution/jobs/store.ts +737 -0
- package/src/runtime/execution/jobs/timeouts.ts +109 -0
- package/src/runtime/execution/jobs/types.ts +230 -0
- package/src/runtime/execution/jobs/wait.ts +45 -0
- package/src/runtime/execution/process-runtime/canary.ts +26 -0
- package/src/runtime/execution/process-runtime/check-facade.ts +272 -0
- package/src/runtime/execution/process-runtime/check-receipt.ts +185 -0
- package/src/runtime/execution/process-runtime/check-runner-sidecar.ts +60 -0
- package/src/runtime/execution/process-runtime/command-facade.ts +321 -0
- package/src/runtime/execution/process-runtime/gc.ts +171 -0
- package/src/runtime/execution/process-runtime/index.ts +9 -0
- package/src/runtime/execution/process-runtime/interactive-admission.ts +23 -0
- package/src/runtime/execution/process-runtime/process-runner-entry.ts +466 -0
- package/src/runtime/execution/process-runtime/resource-claims.ts +440 -0
- package/src/runtime/execution/process-runtime/runtime.ts +1816 -0
- package/src/runtime/execution/process-runtime/store.ts +687 -0
- package/src/runtime/execution/process-runtime/types.ts +352 -0
- package/src/runtime/execution/thin-harness/async-process.ts +181 -0
- package/src/runtime/execution/thin-harness/batch-executor.ts +671 -0
- package/src/runtime/execution/thin-harness/execution-router.ts +700 -0
- package/src/runtime/execution/thin-harness/fast-executor.ts +1263 -0
- package/src/runtime/execution/thin-harness/fast-receipt.ts +235 -0
- package/src/runtime/execution/thin-harness/fingerprint-worker.ts +191 -0
- package/src/runtime/execution/thin-harness/index.ts +13 -0
- package/src/runtime/execution/thin-harness/latency-trace.ts +107 -0
- package/src/runtime/execution/thin-harness/lightweight-lanes.ts +745 -0
- package/src/runtime/execution/thin-harness/mutation-gate.ts +578 -0
- package/src/runtime/execution/thin-harness/proposal-store.ts +409 -0
- package/src/runtime/execution/thin-harness/request-ledger.ts +595 -0
- package/src/runtime/execution/thin-harness/search-worker.ts +114 -0
- package/src/runtime/execution/thin-harness/types.ts +313 -0
- package/src/runtime/execution/thin-harness/workspace-savepoint.ts +333 -0
- package/src/runtime/execution/workers/executor.ts +687 -0
- package/src/runtime/execution/workers/ownership.ts +94 -0
- package/src/runtime/execution/workers/worker-entry.ts +277 -0
- package/src/runtime/gateway/mcp/execution-tools.ts +2009 -0
- package/src/runtime/gateway/mcp/persisted-check-process.ts +255 -0
- package/src/runtime/gateway/mcp/process-tools.ts +230 -0
- package/src/runtime/gateway/mcp/resource-policy.ts +195 -0
- package/src/runtime/gateway/mcp/router.ts +1088 -0
- package/src/runtime/gateway/mcp/runtime-tools.ts +5994 -0
- package/src/runtime/gateway/mcp/work-validation-reconciler.ts +219 -0
- package/src/runtime/health/evaluator.ts +474 -0
- package/src/runtime/health/index.ts +2 -0
- package/src/runtime/health/operational-view.ts +198 -0
- package/src/runtime/maintenance/cleanup.ts +419 -0
- package/src/runtime/model-clients/deepseek-adapter.ts +312 -0
- package/src/runtime/model-clients/index.ts +2 -0
- package/src/runtime/model-clients/types.ts +101 -0
- package/src/runtime/observability/gateway-contention-metrics.ts +129 -0
- package/src/runtime/observability/route-session-benchmark.ts +110 -0
- package/src/runtime/personal-assistant/gmail-triage-manager.ts +231 -0
- package/src/runtime/personal-assistant/reporting-runtime.ts +344 -0
- package/src/runtime/personal-assistant/triage-runtime.ts +748 -0
- package/src/runtime/plugins/app-store-connect-adapter.ts +868 -0
- package/src/runtime/plugins/browser-adapter.ts +2812 -0
- package/src/runtime/plugins/browser-automation-service.ts +46 -0
- package/src/runtime/plugins/browser-handoff-host.ts +304 -0
- package/src/runtime/plugins/browser-handoff.ts +371 -0
- package/src/runtime/plugins/browser-macos-bridge.ts +865 -0
- package/src/runtime/plugins/browser-node-bridge-host.ts +64 -0
- package/src/runtime/plugins/browser-node-bridge.ts +249 -0
- package/src/runtime/plugins/desktop-adapter.ts +374 -0
- package/src/runtime/plugins/desktop-operator-registration.ts +418 -0
- package/src/runtime/plugins/errors.ts +39 -0
- package/src/runtime/plugins/execution-origin.ts +26 -0
- package/src/runtime/plugins/external-adapter.ts +322 -0
- package/src/runtime/plugins/external-registration.ts +308 -0
- package/src/runtime/plugins/external-unix-socket-probe.cjs +79 -0
- package/src/runtime/plugins/external-unix-socket.ts +238 -0
- package/src/runtime/plugins/first-party-registry.ts +37 -0
- package/src/runtime/plugins/github-adapter.ts +266 -0
- package/src/runtime/plugins/gmail-adapter.ts +729 -0
- package/src/runtime/plugins/google-calendar-adapter.ts +468 -0
- package/src/runtime/plugins/google-shared.ts +578 -0
- package/src/runtime/plugins/google-tasks-adapter.ts +535 -0
- package/src/runtime/plugins/interaction-session.ts +252 -0
- package/src/runtime/plugins/ios/agent-device-capabilities.ts +258 -0
- package/src/runtime/plugins/ios/agent-device-failures.ts +95 -0
- package/src/runtime/plugins/ios/agent-device-provider.ts +63 -0
- package/src/runtime/plugins/ios/agent-device-typed-provider.ts +268 -0
- package/src/runtime/plugins/ios/app-adapters.ts +122 -0
- package/src/runtime/plugins/ios-adapter.ts +509 -0
- package/src/runtime/plugins/ios-agent-device.ts +2311 -0
- package/src/runtime/plugins/ios-physical-device.ts +955 -0
- package/src/runtime/plugins/local-system-adapter.ts +1016 -0
- package/src/runtime/plugins/macos-capability-broker.ts +73 -0
- package/src/runtime/plugins/managed-process-adapter.ts +366 -0
- package/src/runtime/plugins/resend-adapter.ts +506 -0
- package/src/runtime/plugins/store.ts +1025 -0
- package/src/runtime/plugins/types.ts +138 -0
- package/src/runtime/projections/controller-context.ts +596 -0
- package/src/runtime/projections/git-status-sampler.ts +84 -0
- package/src/runtime/projections/invalidation.ts +250 -0
- package/src/runtime/projections/materialized-view.ts +694 -0
- package/src/runtime/recovery/actions.ts +158 -0
- package/src/runtime/recovery/audit.ts +38 -0
- package/src/runtime/recovery/classifier.ts +163 -0
- package/src/runtime/recovery/index.ts +9 -0
- package/src/runtime/recovery/local-jobs-repair.ts +393 -0
- package/src/runtime/recovery/maintenance-executor.ts +822 -0
- package/src/runtime/recovery/patch-handoff.ts +50 -0
- package/src/runtime/recovery/probe.ts +308 -0
- package/src/runtime/recovery/store.ts +35 -0
- package/src/runtime/recovery/types.ts +175 -0
- package/src/runtime/release/identity.ts +101 -0
- package/src/runtime/release/release-gate.ts +137 -0
- package/src/runtime/resources/claims/conflicts.ts +205 -0
- package/src/runtime/resources/index.ts +1 -0
- package/src/runtime/resources/leases/store.ts +539 -0
- package/src/runtime/resources/leases/types.ts +50 -0
- package/src/runtime/resources/ownership.ts +72 -0
- package/src/runtime/root/controller-services.ts +42 -0
- package/src/runtime/root/entry.ts +70 -0
- package/src/runtime/root/gateway-adapter.ts +46 -0
- package/src/runtime/root/local-bridge.ts +72 -0
- package/src/runtime/root/mcp-transport.ts +198 -0
- package/src/runtime/root/ownership.ts +94 -0
- package/src/runtime/root/readiness.ts +69 -0
- package/src/runtime/root/release-manifest.ts +147 -0
- package/src/runtime/root/release-materialize.ts +509 -0
- package/src/runtime/root/release-store.ts +236 -0
- package/src/runtime/root/runtime.ts +318 -0
- package/src/runtime/root/scheduler.ts +58 -0
- package/src/runtime/root/service-runner-entry.ts +20 -0
- package/src/runtime/root/service-runner.ts +69 -0
- package/src/runtime/root/service.ts +291 -0
- package/src/runtime/root/status.ts +127 -0
- package/src/runtime/root/types.ts +112 -0
- package/src/runtime/root/write-fence.ts +309 -0
- package/src/runtime/safe-tooling/browser-safe.ts +133 -0
- package/src/runtime/safe-tooling/external-filesystem.ts +304 -0
- package/src/runtime/safe-tooling/google-credential-store.ts +95 -0
- package/src/runtime/safe-tooling/google-oauth-broker.ts +286 -0
- package/src/runtime/safe-tooling/index.ts +11 -0
- package/src/runtime/safe-tooling/ios-development.ts +1039 -0
- package/src/runtime/safe-tooling/job-summary.ts +361 -0
- package/src/runtime/safe-tooling/plugin-summary.ts +53 -0
- package/src/runtime/safe-tooling/resend-oauth.ts +387 -0
- package/src/runtime/safe-tooling/review-artifacts.ts +133 -0
- package/src/runtime/safe-tooling/types.ts +103 -0
- package/src/runtime/safe-tooling/workspace-auth.ts +116 -0
- package/src/runtime/shared/bounded-child-supervisor.ts +235 -0
- package/src/runtime/shared/idempotent-retry.ts +128 -0
- package/src/runtime/shared/json-files.ts +43 -0
- package/src/runtime/shared/local-bridge-surface.ts +231 -0
- package/src/runtime/shared/managed-env.ts +154 -0
- package/src/runtime/shared/node-ts-loader.mjs +50 -0
- package/src/runtime/shared/process-environment.ts +97 -0
- package/src/runtime/shared/process-identity.ts +72 -0
- package/src/runtime/shared/process-tree.ts +227 -0
- package/src/runtime/shared/response-budget.ts +246 -0
- package/src/runtime/standalone-recovery/core.ts +2275 -0
- package/src/runtime/standalone-recovery/entry.ts +686 -0
- package/src/runtime/standalone-recovery/http-transport.ts +317 -0
- package/src/runtime/standalone-recovery/installer.ts +747 -0
- package/src/runtime/standalone-recovery/release.ts +241 -0
- package/src/runtime/watchdog/workflow-watchdog.ts +118 -0
- package/src/runtime/workflow/campaigns/cleanup.ts +263 -0
- package/src/runtime/workflow/campaigns/engine.ts +112 -0
- package/src/runtime/workflow/campaigns/normalize.ts +100 -0
- package/src/runtime/workflow/campaigns/review.ts +315 -0
- package/src/runtime/workflow/campaigns/store.ts +526 -0
- package/src/runtime/workflow/campaigns/supervisor.ts +112 -0
- package/src/runtime/workflow/campaigns/types.ts +290 -0
- package/src/runtime/workflow/campaigns/workspace-agent.ts +155 -0
- package/src/runtime/workflow/campaigns/workspace.ts +200 -0
- package/src/runtime/workflow/findings/store.ts +165 -0
- package/src/runtime/workflow/findings/types.ts +36 -0
- package/src/runtime/workflow/portfolio/engine.ts +20 -0
- package/src/runtime/workflow/portfolio/store.ts +185 -0
- package/src/runtime/workflow/portfolio/types.ts +29 -0
- package/src/runtime/workflow/schedules/engine.ts +620 -0
- package/src/runtime/workflow/schedules/settlement.ts +144 -0
- package/src/runtime/workflow/schedules/store.ts +417 -0
- package/src/runtime/workflow/schedules/types.ts +124 -0
- package/src/runtime/workspace-targets/index.ts +24 -0
- package/src/runtime/workspace-targets/target-grant.ts +721 -0
- package/src/testing/test-governance.ts +626 -0
- package/src/version.ts +21 -0
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
# Failure Recovery
|
|
2
|
+
|
|
3
|
+
> Status: **Runtime Authority**
|
|
4
|
+
|
|
5
|
+
## 1. Objective
|
|
6
|
+
|
|
7
|
+
Failure recovery preserves durable truth when client connections, Gateway sessions, Controller processes, Workers, Agents, external providers, repositories, or indexes fail independently.
|
|
8
|
+
|
|
9
|
+
The recovery objective is not to turn every uncertain state into success. It is to determine what can be proven, preserve evidence, prevent duplicate unsafe execution, and expose an explicit next action.
|
|
10
|
+
|
|
11
|
+
## 2. Failure Domains
|
|
12
|
+
|
|
13
|
+
The target runtime has distinct failure domains:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
Client / MCP session
|
|
17
|
+
Gateway
|
|
18
|
+
Canonical Forge Runtime
|
|
19
|
+
Repo Actor
|
|
20
|
+
Worker
|
|
21
|
+
Agent or command process tree
|
|
22
|
+
External provider
|
|
23
|
+
Repository checkout
|
|
24
|
+
Controller Home storage
|
|
25
|
+
Projection / index
|
|
26
|
+
Network tunnel or reverse proxy
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
A failure in one domain must not automatically terminate or corrupt another domain.
|
|
30
|
+
|
|
31
|
+
## 3. Client and Transport Failure
|
|
32
|
+
|
|
33
|
+
An installed Controller Home has one Canonical Runtime Root as the core lifecycle owner. Accepted repository work is persisted before execution and is independent of the MCP request lifetime. Runtime status is a read-only owner-bound projection, while standalone Recovery reads that projection and the atomic whole-release authority; there is no Supervisor socket or component operation queue.
|
|
34
|
+
|
|
35
|
+
Examples:
|
|
36
|
+
|
|
37
|
+
- MCP client disconnects;
|
|
38
|
+
- reverse proxy returns 502;
|
|
39
|
+
- tunnel changes endpoint;
|
|
40
|
+
- Streamable HTTP session is lost;
|
|
41
|
+
- request exceeds proxy timeout;
|
|
42
|
+
- response body is truncated.
|
|
43
|
+
|
|
44
|
+
### Target Behavior
|
|
45
|
+
|
|
46
|
+
If a command was durably accepted before disconnection:
|
|
47
|
+
|
|
48
|
+
- the Job continues according to its contract;
|
|
49
|
+
- repeated request with the same idempotency key returns the existing Job;
|
|
50
|
+
- the client can recover through `get_job`, `get_run`, or related detail tools;
|
|
51
|
+
- the original connection is not execution ownership.
|
|
52
|
+
|
|
53
|
+
If durable acceptance cannot be proven, the caller may retry using the same request ID.
|
|
54
|
+
|
|
55
|
+
Transport sessions use one global registry across all HTTP MCP paths. A client SHOULD send DELETE when ending a session. The runtime MUST reclaim stream-only sessions through explicit prior-session replacement, bounded SSE lease, absolute lifetime, or oldest-safe capacity eviction. An active POST is protected from session-capacity eviction; an SSE GET by itself is not protected execution ownership.
|
|
56
|
+
|
|
57
|
+
### Health Requirement
|
|
58
|
+
|
|
59
|
+
Gateway health endpoints and compact status queries must not wait for active long operations.
|
|
60
|
+
|
|
61
|
+
`/health` proves liveness and reports actual global session counts. `/ready` additionally proves that a new initialize can be accepted safely. A full pool remains ready when it contains a safe eviction candidate; it becomes not-ready when every slot is protected by active POST work. A core failure makes whole-Runtime readiness false; any restart replaces the complete Runtime release rather than recovering an individual component.
|
|
62
|
+
|
|
63
|
+
A 502 may describe Gateway or proxy availability. It must not be used as evidence that a Job failed or never started.
|
|
64
|
+
|
|
65
|
+
## 4. Gateway Failure
|
|
66
|
+
|
|
67
|
+
The Gateway is stateless except for transport/session caches and bounded projections.
|
|
68
|
+
|
|
69
|
+
After a whole-Runtime restart it must:
|
|
70
|
+
|
|
71
|
+
1. acquire the single Controller Home Runtime ownership claim;
|
|
72
|
+
2. validate the selected whole-release manifest and local schema compatibility;
|
|
73
|
+
3. initialize SQLite, Controller Services and repository identities;
|
|
74
|
+
4. recover scheduling, Leases, projections and bounded Worker ownership;
|
|
75
|
+
5. start the in-process Scheduler and MCP Transport;
|
|
76
|
+
6. reject stale MCP sessions cleanly;
|
|
77
|
+
7. avoid resubmitting accepted work without idempotency lookup;
|
|
78
|
+
8. publish `ready: true` only after the authenticated MCP end-to-end probe succeeds.
|
|
79
|
+
|
|
80
|
+
A fatal MCP Transport, Controller Services, SQLite, or Scheduler failure makes the complete Runtime not ready and stops the one core process. No module restarts itself as an independently authoritative service.
|
|
81
|
+
|
|
82
|
+
## 5. Runtime core recovery
|
|
83
|
+
|
|
84
|
+
The Runtime Root owns scheduling initialization, reconciliation, Schedule delivery, Lease management and core failure propagation.
|
|
85
|
+
|
|
86
|
+
After restart it runs bounded recovery before publishing ready:
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
load enabled repository registry
|
|
90
|
+
rebuild ExecutionJob active and requestId indexes from durable records
|
|
91
|
+
reconcile running/active ExecutionJobs and dead workers
|
|
92
|
+
reconcile Local Bridge compatibility Jobs
|
|
93
|
+
remove or classify expired Leases
|
|
94
|
+
rebuild every repository materialized projection from durable truth
|
|
95
|
+
publish the one binary Runtime readiness result with structured diagnostic reason codes
|
|
96
|
+
resume fair scheduling and normal asynchronous observation
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Projection rebuild is unconditional on daemon restart, so a stale persisted projection is repaired even when a dirty marker was lost. Recovery failures are isolated by repository and phase: one broken repository does not prevent healthy repositories from recovering, and a failure in one phase does not silently skip later Lease or projection repair. The Controller must not assume every persisted `running` entity is still running. It verifies Lease, heartbeat, process/provider state, and durable result evidence.
|
|
100
|
+
|
|
101
|
+
### Runtime source coherence and lifecycle handoff
|
|
102
|
+
|
|
103
|
+
Runtime source coherence is part of the one binary readiness decision. A missing or stale startup Runtime source snapshot is a blocking condition, not a warning and not a metadata-maintenance candidate.
|
|
104
|
+
|
|
105
|
+
The running Runtime never owns its own replacement. Recovery diagnostics may classify the condition and return a structured external lifecycle handoff, but they must not expose a Runtime/component restart action, detached restart coordinator, rollout slot, or autonomous source-repair fallback.
|
|
106
|
+
|
|
107
|
+
The external lifecycle owner may replace only the existing single `forge-runtime` service. It must not start a second Runtime, create a component Runtime, mutate the source checkout as part of recovery, or introduce a rollout path. Readiness becomes true again only after the replacement Runtime has published a startup source snapshot and source-coherence evaluation proves that the configured Runtime source and active Runtime source agree.
|
|
108
|
+
|
|
109
|
+
Local runtime maintenance remains limited to bounded Controller Home / repository runtime metadata repair. When that executor has no safe candidate, its continuation is an explicit handoff; it does not escalate to an invented lifecycle or source-repair action.
|
|
110
|
+
|
|
111
|
+
## 6. Repo Actor Recovery
|
|
112
|
+
|
|
113
|
+
A Repo Actor is a logical single owner. Its mailbox and sequence position must be recoverable.
|
|
114
|
+
|
|
115
|
+
Actor recovery reads:
|
|
116
|
+
|
|
117
|
+
- repository enabled state;
|
|
118
|
+
- active Jobs and Claims;
|
|
119
|
+
- Leases and fencing tokens;
|
|
120
|
+
- Task effective states;
|
|
121
|
+
- Workspace and Worktree ownership;
|
|
122
|
+
- Integration Queue;
|
|
123
|
+
- release freeze;
|
|
124
|
+
- pending Schedule Occurrences.
|
|
125
|
+
|
|
126
|
+
Commands are applied idempotently by command ID or request ID. Replaying an already-applied command returns the recorded result.
|
|
127
|
+
|
|
128
|
+
## 7. Worker Failure
|
|
129
|
+
|
|
130
|
+
A Worker may exit because of:
|
|
131
|
+
|
|
132
|
+
- process crash;
|
|
133
|
+
- host restart;
|
|
134
|
+
- timeout termination;
|
|
135
|
+
- explicit cancellation;
|
|
136
|
+
- resource exhaustion;
|
|
137
|
+
- launch error;
|
|
138
|
+
- lost Controller connection.
|
|
139
|
+
|
|
140
|
+
Worker liveness is not inferred only from a parent PID. Recovery considers:
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
Lease validity
|
|
144
|
+
fencing token
|
|
145
|
+
worker PID
|
|
146
|
+
child and process-group state
|
|
147
|
+
heartbeat
|
|
148
|
+
result artifact
|
|
149
|
+
stdout/stderr/event completion
|
|
150
|
+
external provider state
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
A dead Worker with a complete valid result may be reconciled to terminal success. A live descendant without a valid Lease must not retain state-write authority.
|
|
154
|
+
|
|
155
|
+
## 8. Process Tree Ownership
|
|
156
|
+
|
|
157
|
+
Local execution must record enough data to identify the complete process tree or process group.
|
|
158
|
+
|
|
159
|
+
Timeout or cancellation procedure:
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
record termination intent
|
|
163
|
+
signal process group gracefully
|
|
164
|
+
wait bounded grace period
|
|
165
|
+
signal remaining group forcefully when allowed
|
|
166
|
+
record observed exit state
|
|
167
|
+
persist unresolved descendants if any
|
|
168
|
+
release Lease only after ownership transition is durable
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
A parent process exit is not sufficient evidence that compilers, tests, or Agent descendants have exited.
|
|
172
|
+
|
|
173
|
+
## 9. External Provider Failure
|
|
174
|
+
|
|
175
|
+
For GitHub or another provider:
|
|
176
|
+
|
|
177
|
+
- local Run stores provider session identity and links;
|
|
178
|
+
- provider status is refreshed independently from MCP connection;
|
|
179
|
+
- unavailable provider state yields a retriable external blocker or `unknown`, not fabricated success;
|
|
180
|
+
- duplicate provider sessions are prevented by request identity;
|
|
181
|
+
- external branch/PR existence is evidence, not automatic acceptance.
|
|
182
|
+
|
|
183
|
+
## 10. Storage Failure
|
|
184
|
+
|
|
185
|
+
Controller Home and repository runtime bindings are durable state dependencies.
|
|
186
|
+
|
|
187
|
+
On write failure:
|
|
188
|
+
|
|
189
|
+
- do not start a new Worker;
|
|
190
|
+
- do not advance lifecycle in memory only;
|
|
191
|
+
- return a storage-blocked result;
|
|
192
|
+
- preserve temporary files for diagnostics where safe;
|
|
193
|
+
- avoid deleting the prior valid snapshot.
|
|
194
|
+
|
|
195
|
+
Atomic-write protocol:
|
|
196
|
+
|
|
197
|
+
```text
|
|
198
|
+
write temporary file
|
|
199
|
+
flush when required by risk class
|
|
200
|
+
rename atomically
|
|
201
|
+
update index after entity snapshot
|
|
202
|
+
append audit event or record repair anomaly
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
If entity write succeeds and index update fails, reconciliation rebuilds the index from bounded durable entities.
|
|
206
|
+
|
|
207
|
+
## 11. Projection and Index Recovery
|
|
208
|
+
|
|
209
|
+
Indexes are rebuildable projections.
|
|
210
|
+
|
|
211
|
+
Target indexes include:
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
active Jobs
|
|
215
|
+
requestId -> entity
|
|
216
|
+
Task -> Run IDs
|
|
217
|
+
active Claims and Leases
|
|
218
|
+
pending Integration Queue
|
|
219
|
+
active Schedule Occurrences
|
|
220
|
+
Candidate Finding semantic keys
|
|
221
|
+
recent attention items
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Rules:
|
|
225
|
+
|
|
226
|
+
- hot reads use indexes;
|
|
227
|
+
- index owner/version is persisted;
|
|
228
|
+
- process restart may validate or rebuild active indexes;
|
|
229
|
+
- a missing terminal-history index does not require scanning history on every request;
|
|
230
|
+
- rebuild runs as a bounded reconciliation Job when history is large;
|
|
231
|
+
- malformed entities are isolated and reported rather than silently discarded.
|
|
232
|
+
|
|
233
|
+
## 12. Lease Recovery and Fencing
|
|
234
|
+
|
|
235
|
+
A Lease may be:
|
|
236
|
+
|
|
237
|
+
```text
|
|
238
|
+
active
|
|
239
|
+
expired
|
|
240
|
+
released
|
|
241
|
+
revoked
|
|
242
|
+
orphaned
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Recovery procedure:
|
|
246
|
+
|
|
247
|
+
1. read persisted Lease and resource fencing counter;
|
|
248
|
+
2. determine whether current owner Job is non-terminal;
|
|
249
|
+
3. inspect heartbeat and execution evidence;
|
|
250
|
+
4. if ownership is uncertain, prevent new writes until expiry or explicit revocation;
|
|
251
|
+
5. grant new ownership with a higher fencing token;
|
|
252
|
+
6. reject late writes carrying the older token.
|
|
253
|
+
|
|
254
|
+
Process PID reuse must not grant ownership. The Lease ID and fencing token are authoritative.
|
|
255
|
+
|
|
256
|
+
## 13. Orphan Classification
|
|
257
|
+
|
|
258
|
+
Use `orphaned` when:
|
|
259
|
+
|
|
260
|
+
- an active owner disappeared;
|
|
261
|
+
- no valid terminal result proves success or failure;
|
|
262
|
+
- repeating the operation may have side effects;
|
|
263
|
+
- manual or policy-guided reconciliation is required.
|
|
264
|
+
|
|
265
|
+
Orphan metadata includes:
|
|
266
|
+
|
|
267
|
+
```text
|
|
268
|
+
lastHeartbeatAt
|
|
269
|
+
leaseExpiredAt
|
|
270
|
+
lastKnownPid/provider state
|
|
271
|
+
lastEvent
|
|
272
|
+
artifact completeness
|
|
273
|
+
safeToRetry
|
|
274
|
+
reconciliationReason
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## 14. Unknown Run Classification
|
|
278
|
+
|
|
279
|
+
A Run uses `unknown` when execution outcome cannot be proven, including startup ambiguity or provider uncertainty.
|
|
280
|
+
|
|
281
|
+
Unknown does not mean failed, succeeded, or safe to retry. Task readiness must require explicit retry authorization after the Controller evaluates duplicate-execution risk.
|
|
282
|
+
|
|
283
|
+
## 15. Stale Classification
|
|
284
|
+
|
|
285
|
+
Use `stale` when the operation may have executed correctly but cannot satisfy the original contract because a required precondition changed.
|
|
286
|
+
|
|
287
|
+
Examples:
|
|
288
|
+
|
|
289
|
+
- repository Revision changed;
|
|
290
|
+
- Edit Session advanced to another Revision;
|
|
291
|
+
- approval token snapshot changed;
|
|
292
|
+
- integration target moved;
|
|
293
|
+
- Schedule window was superseded;
|
|
294
|
+
- repository identity or provider mapping changed.
|
|
295
|
+
|
|
296
|
+
Stale evidence remains historical but cannot complete the current Task.
|
|
297
|
+
|
|
298
|
+
## 16. Timed-Out Classification
|
|
299
|
+
|
|
300
|
+
A timeout requires:
|
|
301
|
+
|
|
302
|
+
- a persisted deadline;
|
|
303
|
+
- observed deadline expiry;
|
|
304
|
+
- termination or provider cancellation attempt;
|
|
305
|
+
- durable timeout event;
|
|
306
|
+
- resource-release/reconciliation outcome.
|
|
307
|
+
|
|
308
|
+
An in-memory timer firing without durable deadline identity is insufficient recovery evidence.
|
|
309
|
+
|
|
310
|
+
## 17. Retry Safety
|
|
311
|
+
|
|
312
|
+
Before retry, determine operation class:
|
|
313
|
+
|
|
314
|
+
### Naturally idempotent
|
|
315
|
+
|
|
316
|
+
Examples: bounded read, exact-revision check with cache key.
|
|
317
|
+
|
|
318
|
+
May retry automatically within budget.
|
|
319
|
+
|
|
320
|
+
### Idempotent through request identity
|
|
321
|
+
|
|
322
|
+
Examples: Job admission, Run creation, Schedule Occurrence creation.
|
|
323
|
+
|
|
324
|
+
Retry returns the original entity.
|
|
325
|
+
|
|
326
|
+
### Requires reconciliation
|
|
327
|
+
|
|
328
|
+
Examples: command may have modified files, Agent may still be alive, external provider session may exist.
|
|
329
|
+
|
|
330
|
+
Do not retry until current outcome and resource ownership are reconciled.
|
|
331
|
+
|
|
332
|
+
### Explicitly non-repeatable
|
|
333
|
+
|
|
334
|
+
Examples: publication, deployment, destructive mutation.
|
|
335
|
+
|
|
336
|
+
Require human decision and operation-specific compensation or resume protocol.
|
|
337
|
+
|
|
338
|
+
## 18. Reconciliation Jobs
|
|
339
|
+
|
|
340
|
+
Reconciliation is itself durable and bounded.
|
|
341
|
+
|
|
342
|
+
Types include:
|
|
343
|
+
|
|
344
|
+
- active Job reconciliation;
|
|
345
|
+
- active Run reconciliation;
|
|
346
|
+
- Lease reconciliation;
|
|
347
|
+
- Worktree inventory reconciliation;
|
|
348
|
+
- Integration Queue reconciliation;
|
|
349
|
+
- repository registry identity reconciliation;
|
|
350
|
+
- Schedule Occurrence reconciliation;
|
|
351
|
+
- projection rebuild.
|
|
352
|
+
|
|
353
|
+
Reconciliation Jobs must be idempotent and normally read-only except for lifecycle repair and index updates.
|
|
354
|
+
|
|
355
|
+
## 19. Startup Sequence
|
|
356
|
+
|
|
357
|
+
Controller startup order:
|
|
358
|
+
|
|
359
|
+
```text
|
|
360
|
+
1. validate Controller Home
|
|
361
|
+
2. load repository registry
|
|
362
|
+
3. validate runtime storage bindings
|
|
363
|
+
4. load/rebuild global active indexes
|
|
364
|
+
5. instantiate Repo Actors
|
|
365
|
+
6. reconcile Claims and Leases
|
|
366
|
+
7. reconcile active Jobs/Runs/Occurrences
|
|
367
|
+
8. start Worker dispatch
|
|
368
|
+
9. deliver due Schedules
|
|
369
|
+
10. report readiness
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
Gateway may report liveness before Controller readiness, but execution admission must wait for durable state readiness.
|
|
373
|
+
|
|
374
|
+
## 20. Health Model
|
|
375
|
+
|
|
376
|
+
### Liveness
|
|
377
|
+
|
|
378
|
+
The process event loop responds.
|
|
379
|
+
|
|
380
|
+
### Readiness
|
|
381
|
+
|
|
382
|
+
The component can safely perform its role.
|
|
383
|
+
|
|
384
|
+
Suggested health surfaces:
|
|
385
|
+
|
|
386
|
+
```text
|
|
387
|
+
Gateway /health
|
|
388
|
+
Gateway /ready
|
|
389
|
+
Controller status
|
|
390
|
+
Worker pool status
|
|
391
|
+
Repository-specific health
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
Repository-specific degradation does not make Gateway liveness fail.
|
|
395
|
+
|
|
396
|
+
## 21. Recovery Notifications
|
|
397
|
+
|
|
398
|
+
Notify only on material state change:
|
|
399
|
+
|
|
400
|
+
- Job recovered to terminal outcome;
|
|
401
|
+
- Job became orphaned/unknown;
|
|
402
|
+
- retry is unsafe without user decision;
|
|
403
|
+
- repository storage is blocked;
|
|
404
|
+
- integration conflict requires action;
|
|
405
|
+
- repeated Controller/Gateway instability crosses policy threshold.
|
|
406
|
+
|
|
407
|
+
Do not repeatedly notify for an unchanged orphan or external blocker.
|
|
408
|
+
|
|
409
|
+
## 22. Recovery Testing
|
|
410
|
+
|
|
411
|
+
Required test scenarios include:
|
|
412
|
+
|
|
413
|
+
- client disconnect after Job acceptance;
|
|
414
|
+
- Gateway restart during Worker execution;
|
|
415
|
+
- Controller restart with running Jobs;
|
|
416
|
+
- Worker crash before and after result persistence;
|
|
417
|
+
- process descendants surviving parent exit;
|
|
418
|
+
- expired Lease and late stale Worker write;
|
|
419
|
+
- corrupt/missing active index rebuild;
|
|
420
|
+
- repeated request ID after timeout;
|
|
421
|
+
- external provider temporarily unavailable;
|
|
422
|
+
- repository A recovery while repository B continues.
|
|
423
|
+
|
|
424
|
+
## 23. Current Implementation
|
|
425
|
+
|
|
426
|
+
MCP Transport, Gateway Adapter, Controller Services, Scheduler and SQLite run in one Canonical Runtime process. Workers remain bounded child process roles. Accepted Jobs are persisted before Worker spawn. Job heartbeat, deadline, attempt, PID, Lease and fencing state are durable, and active/request indexes reconstruct scheduling after a whole-Runtime restart.
|
|
427
|
+
|
|
428
|
+
Before an operation runs, the Worker writes an Operation Receipt. A completed receipt lets Reconciliation close a Job after a crash between side-effect completion and terminal-state persistence. A started-but-incomplete mutating receipt is treated as an uncertain side effect and becomes `human_attention_required`; it is not replayed. Safe read-only work may be requeued within attempt budget.
|
|
429
|
+
|
|
430
|
+
Worker ownership is the tuple of Job ID, attempt, Worker PID and original Lease/fencing set. A stale Worker cannot heartbeat, renew or release replacement Leases, or publish a terminal result for a newer attempt.
|
|
431
|
+
|
|
432
|
+
The Gateway does not infer execution failure from a disconnected request. Callers recover with the request ID or Job ID. Cancellation terminates the owned Worker, records a terminal state and releases only that attempt's Claims.
|
|
433
|
+
|
|
434
|
+
## 24. Recovery Invariants
|
|
435
|
+
|
|
436
|
+
- MCP transport sessions never own Worker lifetime;
|
|
437
|
+
- the restarted Canonical Runtime schedules from durable active indexes;
|
|
438
|
+
- a stale Worker cannot write through an expired or replaced fencing token;
|
|
439
|
+
- external effects are reconciled rather than blindly retried;
|
|
440
|
+
- repository A recovery does not require locking repository B;
|
|
441
|
+
- bounded projections remain readable while Workers execute.
|
|
442
|
+
|
|
443
|
+
## Campaign Recovery
|
|
444
|
+
|
|
445
|
+
Campaign state survives Gateway, MCP, ChatGPT, scheduler, and worker restarts. Reconciliation treats persisted Execution Jobs and Agent Runs as the execution source of truth. Missing, orphaned, timed-out, or human-attention child work becomes a bounded Campaign task failure and may open a Supervisor Checkpoint.
|
|
446
|
+
|
|
447
|
+
No in-memory ChatGPT conversation is required for recovery. Duplicate review delivery and scheduler delivery are idempotent. A stale checkpoint nonce, stale goal revision, or conflicting request-ID reuse is rejected rather than replayed against newer state.
|
|
448
|
+
|
|
449
|
+
### Campaign checkout recovery
|
|
450
|
+
|
|
451
|
+
Campaign worktree identity is stored in Controller Home with its request id, branch, path, and original base revision. Repeated creation reuses this manifest and registered checkout even if the source checkout advances. A missing directory is reconstructed from the retained branch after stale Git worktree metadata is pruned.
|
|
452
|
+
|
|
453
|
+
## 25. Campaign Cancellation Finalizer
|
|
454
|
+
|
|
455
|
+
Campaign cancellation is a two-phase state transition:
|
|
456
|
+
|
|
457
|
+
```text
|
|
458
|
+
active / paused / waiting_for_supervisor
|
|
459
|
+
-> cancelling
|
|
460
|
+
-> cancelled | cancelled_with_leaks
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
Entering `cancelling` blocks new Task dispatch, supersedes open checkpoints, and marks non-terminal Tasks cancelled. The finalizer then cancels Task and Supervisor Execution Jobs, which terminate owned process trees and release Leases. A managed Campaign worktree is removed only when its path and branch identity match and the workspace is clean. Unknown, dirty, or committed resources are preserved and reported as leaks.
|
|
464
|
+
|
|
465
|
+
`cancelled` is written only after the cleanup report is durable. Cleanup is idempotent; a Campaign in `cancelled_with_leaks` may be reconciled again after an operator resolves the preserved resource.
|
|
466
|
+
|
|
467
|
+
## 26. Runtime Storage Recovery
|
|
468
|
+
|
|
469
|
+
Every Controller Home runtime directory carries a repository/binding owner marker. Empty or terminal legacy storage is migrated and replaced with a repository-local link. Non-conflicting entries are merged. Name collisions are moved to a repository-scoped quarantine with a diagnostic path rather than overwritten or deleted.
|
|
470
|
+
|
|
471
|
+
Active or unreadable Run and Local Job directories remain fail-closed. Worktree storage is recoverable because stale and partial entries can be preserved or quarantined without claiming execution readiness based on deletion.
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Architecture Governance Contract
|
|
2
|
+
|
|
3
|
+
> Status: **Runtime Authority**
|
|
4
|
+
|
|
5
|
+
## 1. Objective
|
|
6
|
+
|
|
7
|
+
Architecture governance keeps implementation, execution policy, durable schemas, and documentation from evolving as independent stories.
|
|
8
|
+
|
|
9
|
+
The goal is not to maximize documentation. The goal is to maintain one reviewable answer to each of these questions:
|
|
10
|
+
|
|
11
|
+
- What owns a decision?
|
|
12
|
+
- What owns the durable state?
|
|
13
|
+
- What may run concurrently?
|
|
14
|
+
- What must be serialized?
|
|
15
|
+
- What can recover after disconnection or restart?
|
|
16
|
+
- What evidence is required before completion?
|
|
17
|
+
- Which statements describe current code and which describe the approved target?
|
|
18
|
+
|
|
19
|
+
## 2. Authority Hierarchy
|
|
20
|
+
|
|
21
|
+
Architecture sources are ordered as follows:
|
|
22
|
+
|
|
23
|
+
1. `docs/architecture/current/` — approved Runtime Authority.
|
|
24
|
+
2. Accepted ADRs — temporary binding amendments until merged into the current set.
|
|
25
|
+
3. Executable code, schemas, and tests — evidence of Current Implementation.
|
|
26
|
+
4. Issues, plans, and architecture requests — proposed or in-progress change.
|
|
27
|
+
5. Historical version documents and snapshots — migration evidence.
|
|
28
|
+
6. Research reports — hypotheses and supporting evidence.
|
|
29
|
+
7. Diagrams and UI projections — explanatory views only.
|
|
30
|
+
|
|
31
|
+
Code cannot silently redefine the Target Architecture. A code/document mismatch must be recorded as one of:
|
|
32
|
+
|
|
33
|
+
- implementation defect;
|
|
34
|
+
- intentional migration gap;
|
|
35
|
+
- architecture change awaiting ADR;
|
|
36
|
+
- obsolete target rule requiring explicit supersession.
|
|
37
|
+
|
|
38
|
+
## 3. Normative Language
|
|
39
|
+
|
|
40
|
+
The current set uses these keywords:
|
|
41
|
+
|
|
42
|
+
- **MUST / MUST NOT** — architecture invariant or safety boundary.
|
|
43
|
+
- **SHOULD / SHOULD NOT** — default policy; deviations require recorded rationale.
|
|
44
|
+
- **MAY** — supported option without default authority.
|
|
45
|
+
|
|
46
|
+
Normative rules must identify their state:
|
|
47
|
+
|
|
48
|
+
- **Current Implementation**
|
|
49
|
+
- **Target Architecture**
|
|
50
|
+
- **Migration Rule**
|
|
51
|
+
|
|
52
|
+
A paragraph may include more than one state only when the gap is explicit.
|
|
53
|
+
|
|
54
|
+
## 4. Document Ownership
|
|
55
|
+
|
|
56
|
+
| Document | Owns |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| `system-overview.md` | System boundary, layer responsibilities, process topology |
|
|
59
|
+
| `architecture-invariants.md` | Non-negotiable cross-cutting rules |
|
|
60
|
+
| `entity-model.md` | Entity meanings, identity, ownership, durable relationships |
|
|
61
|
+
| `job-and-run-lifecycle.md` | Execution state machines and terminal semantics |
|
|
62
|
+
| `dispatch-and-agent-strategy.md` | Work-mode and Agent-role selection |
|
|
63
|
+
| `scheduler-and-resource-claims.md` | Claims, leases, conflicts, queues, workspace/worktree rules |
|
|
64
|
+
| `multi-repository-execution.md` | Global quotas, fairness, portfolio workflows, repository isolation |
|
|
65
|
+
| `automation-and-schedule-engine.md` | Schedule, occurrence, deduplication, budget and stop conditions |
|
|
66
|
+
| `failure-recovery.md` | Process failure, orphan, stale, timeout, reconciliation and fencing |
|
|
67
|
+
| `verification-and-release-gates.md` | Verification, acceptance, release freeze and human authorization |
|
|
68
|
+
| `migration-roadmap.md` | Ordered convergence plan and evidence gates |
|
|
69
|
+
| `governance.md` | Authority, terminology, change process and drift management |
|
|
70
|
+
|
|
71
|
+
A rule must live in its owning document. Other documents should link to it instead of copying a second normative version.
|
|
72
|
+
|
|
73
|
+
## 5. Architecture Decision Records
|
|
74
|
+
|
|
75
|
+
An ADR is required before intentionally changing:
|
|
76
|
+
|
|
77
|
+
- the Thin Gateway / Controller / Worker boundary;
|
|
78
|
+
- the single-owner semantics of a Per-Repository Actor;
|
|
79
|
+
- Job, Run, Task, Edit Session, Verification, Schedule, Occurrence, Claim, or Lease identity;
|
|
80
|
+
- request idempotency or retry behavior;
|
|
81
|
+
- workspace or worktree conflict rules;
|
|
82
|
+
- cross-repository ordering or failure isolation;
|
|
83
|
+
- release and destructive-operation authority;
|
|
84
|
+
- compatibility behavior of persisted runtime state.
|
|
85
|
+
|
|
86
|
+
ADRs should be stored under `docs/architecture/decisions/` and contain:
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
Status
|
|
90
|
+
Context
|
|
91
|
+
Decision
|
|
92
|
+
Alternatives
|
|
93
|
+
Consequences
|
|
94
|
+
Migration
|
|
95
|
+
Verification
|
|
96
|
+
Supersedes / Superseded by
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
An accepted ADR must name the current documents it amends. The amended rules must be merged into the current set before the ADR is considered fully incorporated.
|
|
100
|
+
|
|
101
|
+
## 6. Architecture Drift
|
|
102
|
+
|
|
103
|
+
Architecture drift exists when executable behavior and a current normative rule differ.
|
|
104
|
+
|
|
105
|
+
Every drift item must record:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
rule
|
|
109
|
+
observed implementation
|
|
110
|
+
risk
|
|
111
|
+
temporary behavior
|
|
112
|
+
owner Issue/Task
|
|
113
|
+
target closure condition
|
|
114
|
+
verification
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Drift is acceptable only when it is:
|
|
118
|
+
|
|
119
|
+
- explicit;
|
|
120
|
+
- bounded;
|
|
121
|
+
- owned;
|
|
122
|
+
- observable;
|
|
123
|
+
- scheduled for closure or deliberate architecture revision.
|
|
124
|
+
|
|
125
|
+
An unlabeled mismatch is a defect, not a migration strategy.
|
|
126
|
+
|
|
127
|
+
## 7. Historical Document Policy
|
|
128
|
+
|
|
129
|
+
Versioned V5–V8 documents, old controller guides, migration snapshots, and retired workflow designs must remain available for audit, but they must begin with a visible notice:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
Historical Design
|
|
133
|
+
Not Runtime Authority
|
|
134
|
+
Current architecture: docs/architecture/current/README.md
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Historical documents must not be incrementally edited to carry new target rules. New target rules belong in `current/`; historical documents may receive only:
|
|
138
|
+
|
|
139
|
+
- the historical notice;
|
|
140
|
+
- corrected links;
|
|
141
|
+
- factual errata that do not make them appear current.
|
|
142
|
+
|
|
143
|
+
## 8. Diagram Policy
|
|
144
|
+
|
|
145
|
+
The semantic Markdown text is authoritative. Mermaid or HTML diagrams are projections.
|
|
146
|
+
|
|
147
|
+
A diagram:
|
|
148
|
+
|
|
149
|
+
- MUST link to its semantic source;
|
|
150
|
+
- MUST NOT introduce an entity, state, dependency, or boundary absent from the source;
|
|
151
|
+
- SHOULD be regenerated when the source topology changes;
|
|
152
|
+
- MAY omit detail for readability if the omission is explicit.
|
|
153
|
+
|
|
154
|
+
## 9. Change Procedure
|
|
155
|
+
|
|
156
|
+
For an architecture-sensitive change:
|
|
157
|
+
|
|
158
|
+
1. Classify the change and locate the owning current document.
|
|
159
|
+
2. Create an Issue, architecture request, or ADR with scope and acceptance evidence.
|
|
160
|
+
3. Update the current architecture before or with implementation.
|
|
161
|
+
4. Define Migration Rules where implementation cannot move atomically.
|
|
162
|
+
5. Implement in bounded Tasks.
|
|
163
|
+
6. Run focused checks and architecture consistency checks.
|
|
164
|
+
7. Verify exact links between the implementation Task, ADR/request, current document, and evidence.
|
|
165
|
+
8. Archive or supersede historical guidance that would otherwise conflict.
|
|
166
|
+
|
|
167
|
+
For an urgent incident fix:
|
|
168
|
+
|
|
169
|
+
1. Restore safety or availability with the smallest reversible change.
|
|
170
|
+
2. Record the behavior as temporary drift.
|
|
171
|
+
3. Create the architecture follow-up before declaring the incident fully closed.
|
|
172
|
+
|
|
173
|
+
## 10. Review Checklist
|
|
174
|
+
|
|
175
|
+
An architecture review must verify:
|
|
176
|
+
|
|
177
|
+
- one component owns each mutable decision;
|
|
178
|
+
- durable truth is not held only in memory or chat;
|
|
179
|
+
- long operations are not bound to request lifetime;
|
|
180
|
+
- concurrency rules identify explicit resources;
|
|
181
|
+
- unknown write scope is treated conservatively;
|
|
182
|
+
- retries preserve history and do not mutate prior attempts;
|
|
183
|
+
- evidence binds to the exact repository revision;
|
|
184
|
+
- multi-repository behavior has failure isolation and fair resource limits;
|
|
185
|
+
- scheduled work has bounded occurrences and stop conditions;
|
|
186
|
+
- destructive and externally visible actions remain explicitly authorized;
|
|
187
|
+
- the target does not claim to be already implemented without evidence.
|
|
188
|
+
|
|
189
|
+
## 11. Automated Governance Gate
|
|
190
|
+
|
|
191
|
+
The architecture check must eventually enforce at least:
|
|
192
|
+
|
|
193
|
+
- presence of the required current document set;
|
|
194
|
+
- the Runtime Authority declaration in this directory and the architecture index;
|
|
195
|
+
- required Historical Design notices on versioned documents;
|
|
196
|
+
- valid internal links;
|
|
197
|
+
- stable terminology for core entities;
|
|
198
|
+
- presence of key invariants such as durable-job execution and exact-revision verification.
|
|
199
|
+
|
|
200
|
+
The automated gate protects structure and explicit contracts. It does not replace human review of architecture quality.
|
|
201
|
+
|
|
202
|
+
## 12. Baseline Freeze
|
|
203
|
+
|
|
204
|
+
A current architecture baseline may be declared frozen when:
|
|
205
|
+
|
|
206
|
+
- all required documents exist;
|
|
207
|
+
- the architecture consistency gate passes;
|
|
208
|
+
- known implementation gaps are listed in `migration-roadmap.md`;
|
|
209
|
+
- every P0 gap has an owner;
|
|
210
|
+
- versioned documents are marked historical;
|
|
211
|
+
- the baseline has been reviewed against current source and persisted schemas.
|
|
212
|
+
|
|
213
|
+
After baseline freeze, new architecture-sensitive implementation Tasks must cite the affected current document or an accepted ADR.
|