@moretea-labs/forge 1.5.1 → 1.7.0
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 +2 -0
- package/CHANGELOG.md +46 -0
- package/CLAUDE.md +2 -0
- package/DESIGN.md +7 -2
- package/README.md +4 -4
- package/README.zh-CN.md +2 -2
- package/SKILL.md +2 -2
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/agents/openai.yaml +1 -1
- package/assets/hooks/hook-input.sh +11 -8
- package/assets/hooks/lib/session-state.sh +10 -7
- package/assets/hooks/lib/workflow-state.sh +13 -177
- package/assets/hooks/post-tool-observer.sh +8 -2
- package/assets/hooks/pre-edit-guard.sh +8 -39
- package/assets/hooks/prompt-guard.sh +7 -83
- package/assets/hooks/session-start-context.sh +56 -1
- package/assets/partials/05-workflow.partial.md +1 -1
- package/assets/partials-agents/03-orchestration.partial.md +1 -1
- package/assets/plugin-registry.v1.json +54 -3
- package/assets/reference-configs/document-generation.md +1 -1
- package/assets/reference-configs/harness-overview.md +1 -1
- package/assets/reference-configs/hook-operations.md +1 -1
- package/assets/reference-configs/sprint-contracts.md +3 -3
- package/assets/skill-version.json +2 -2
- package/assets/templates/contract.template.md +2 -7
- package/assets/templates/helpers/capture-plan.sh +2 -2
- package/assets/templates/helpers/check-task-workflow.sh +4 -4
- package/assets/templates/helpers/contract-worktree.sh +1 -21
- package/assets/templates/helpers/ensure-task-workflow.sh +13 -38
- package/assets/templates/helpers/migrate-project-template.sh +22 -45
- package/assets/templates/helpers/new-plan.sh +1 -1
- package/assets/templates/helpers/plan-to-todo.sh +12 -37
- package/assets/templates/helpers/ship-worktrees.sh +2 -29
- package/assets/templates/helpers/sprint-backlog.sh +6 -6
- package/assets/templates/helpers/verify-contract.sh +1 -111
- package/assets/templates/helpers/verify-sprint.sh +3 -180
- package/assets/templates/plan.template.md +1 -1
- package/assets/templates/review.template.md +9 -34
- package/assets/workflow-contract.v1.json +10 -19
- package/docs/README.md +10 -10
- package/docs/architecture/CURRENT.md +170 -0
- package/docs/architecture/EVOLUTION.md +42 -0
- package/docs/architecture/current/README.md +4 -156
- package/docs/architecture/decisions/20260803-release-identity-binding-and-exit-policy.md +2 -2
- package/docs/architecture/decisions/20260823-immediate-controller-relay.md +53 -0
- package/docs/architecture/decisions/20260826-browser-runtime-v2.md +73 -0
- package/docs/architecture/history/README.md +7 -0
- package/docs/architecture/{chatgpt-handoff-facade.md → history/chatgpt-handoff-facade.md} +4 -0
- package/docs/architecture/{global-hook-runtime.md → history/global-hook-runtime.md} +7 -3
- package/docs/architecture/{ios-semantic-automation-provider-v2.md → history/ios-semantic-automation-provider-v2.md} +6 -2
- package/docs/architecture/history.md +3 -34
- package/docs/architecture/index.md +15 -98
- package/docs/architecture/modules/controller-runtime/transport-lifecycle.md +1 -1
- package/docs/architecture/reviews/2026-08-22-semantic-harness-convergence-acceptance.md +39 -0
- package/docs/architecture/versions/1.6.md +38 -0
- package/docs/architecture/versions/1.7.md +41 -0
- package/docs/forge-chatgpt-browser-engine.md +2 -2
- package/docs/forge-chatgpt-mcp-setup.md +4 -28
- package/docs/forge-chatgpt-supervised-automation.md +3 -3
- package/docs/forge-github-issue-launcher.md +1 -1
- package/docs/forge-runtime-self-healing-loop.md +1 -1
- package/docs/operations/controller-browser-plugin.md +38 -22
- package/docs/operations/controller-performance-and-502.md +124 -0
- package/docs/operations/controller-reliability-runbook.md +1 -1
- package/docs/operations/features.md +3 -3
- package/docs/operations/github-repository.md +1 -1
- package/docs/operations/homebrew.md +2 -2
- package/docs/operations/mcp-tool-exposure.md +5 -3
- package/docs/tutorials/01-install-and-start.md +1 -1
- package/docs/tutorials/01-install-and-start.zh-CN.md +1 -1
- package/docs/wiki/Architecture.md +6 -6
- package/docs/wiki/Implementation.md +2 -2
- package/docs/wiki/Installation.md +1 -1
- package/docs/wiki/Integrations.md +2 -2
- package/docs/wiki/Quick-Start.md +1 -1
- package/docs/wiki/Work-Lifecycle.md +1 -1
- package/package.json +29 -10
- package/scripts/activate-source-baseline.ts +17 -13
- package/scripts/benchmark-background-check-overlap.ts +228 -0
- package/scripts/benchmark-mcp-host.sh +117 -0
- package/scripts/benchmark-mcp-transport.ts +170 -0
- package/scripts/benchmark-quality-harness.ts +146 -0
- package/scripts/benchmark-route-session-concurrency.ts +207 -6
- package/scripts/benchmark-thin-harness-mcp-e2e.ts +7 -1
- package/scripts/benchmark-typescript-navigation.ts +186 -0
- package/scripts/benchmark-work-efficiency.ts +334 -0
- package/scripts/capture-plan.sh +3 -3
- package/scripts/check-agent-tooling.sh +8 -35
- package/scripts/check-architecture-sync.sh +17 -86
- package/scripts/check-mcp-compatibility.ts +14 -0
- package/scripts/check-public-docs.sh +14 -1
- package/scripts/check-runtime-architecture.mjs +107 -64
- package/scripts/check-stable-baseline.ts +92 -0
- package/scripts/check-task-workflow.sh +4 -4
- package/scripts/contract-worktree.sh +1 -21
- package/scripts/ensure-task-workflow.sh +22 -55
- package/scripts/host-temporary-cloud-mcp-e2e.sh +265 -0
- package/scripts/install-standalone-recovery.ts +24 -0
- package/scripts/lib/project-init-lib.sh +15 -44
- package/scripts/migrate-chatgpt-automation-schedules.ts +64 -0
- package/scripts/migrate-project-template.sh +23 -1179
- package/scripts/new-plan.sh +1 -1
- package/scripts/plan-to-todo.sh +11 -36
- package/scripts/run-governed-gate.ts +2 -1
- package/scripts/ship-worktrees.sh +2 -29
- package/scripts/smoke-ios-physical-device.ts +4 -2
- package/scripts/smoke-runtime-recovery.ts +1 -35
- package/scripts/smoke-schedule-engine.ts +1 -20
- package/scripts/sprint-backlog.sh +1 -1
- package/scripts/verify-contract.sh +1 -111
- package/scripts/verify-forge-runtime.sh +0 -1
- package/scripts/verify-sprint.sh +3 -180
- package/scripts/workflow-contract.ts +1 -5
- package/src/cli/commands/chatgpt.ts +31 -2
- package/src/cli/commands/init-hook.ts +3 -3
- package/src/cli/commands/mcp.ts +9 -5
- package/src/cli/commands/plugin.ts +37 -10
- package/src/cli/commands/recovery.ts +25 -3
- package/src/cli/commands/runtime.ts +55 -3
- package/src/cli/commands/security.ts +12 -1
- package/src/cli/commands/setup-profile.ts +31 -21
- package/src/cli/controller/check-runner.ts +106 -3
- package/src/cli/controller/composite-result.ts +1 -1
- package/src/cli/controller/context/focus.ts +51 -0
- package/src/cli/controller/context/instruction-context.ts +114 -0
- package/src/cli/controller/context/known-paths.ts +76 -0
- package/src/cli/controller/context/query-planning.ts +110 -0
- package/src/cli/controller/context/rule-resolution.ts +532 -0
- package/src/cli/controller/context/source-materializer.ts +278 -0
- package/src/cli/controller/context/structural.ts +16 -0
- package/src/cli/controller/context/types.ts +286 -0
- package/src/cli/controller/context-pack.ts +898 -430
- package/src/cli/controller/launch-agents.ts +77 -2
- package/src/cli/controller/operational-plan.ts +2 -2
- package/src/cli/controller/work-mode.ts +6 -4
- package/src/cli/editing/edit-session.ts +60 -7
- package/src/cli/github/github.ts +133 -0
- package/src/cli/hook/prompt-guard-decision.ts +17 -18
- package/src/cli/hook/prompt-intents.ts +1 -1
- package/src/cli/installer/managed-entries.ts +15 -1
- package/src/cli/local-bridge/console-automations.ts +225 -67
- package/src/cli/local-bridge/console-view-models.ts +3 -35
- package/src/cli/local-bridge/facade-api.ts +2 -217
- package/src/cli/local-bridge/frontend/src/App.tsx +3 -3
- package/src/cli/local-bridge/frontend/src/features/automations/AutomationsView.tsx +153 -3
- package/src/cli/local-bridge/frontend/src/features/capabilities/CapabilitiesView.tsx +37 -4
- package/src/cli/local-bridge/frontend/src/features/overview/OverviewView.tsx +183 -3
- package/src/cli/local-bridge/frontend/src/features/repositories/RepositoriesView.tsx +1 -1
- package/src/cli/local-bridge/frontend/src/features/work/WorkView.tsx +4 -3
- package/src/cli/local-bridge/frontend/src/lib/api.ts +18 -11
- package/src/cli/local-bridge/frontend/src/lib/routes.ts +1 -1
- package/src/cli/local-bridge/frontend/src/shell/CommandBar.tsx +1 -1
- package/src/cli/local-bridge/frontend/src/shell/Sidebar.tsx +4 -3
- package/src/cli/local-bridge/frontend/src/styles.css +27 -11
- package/src/cli/local-bridge/frontend/src/types.ts +8 -7
- package/src/cli/local-bridge/job-store.ts +1 -490
- package/src/cli/local-bridge/server.ts +29 -532
- package/src/cli/local-bridge/ui-dist/app.css +1 -1
- package/src/cli/local-bridge/ui-dist/app.js +5101 -4967
- package/src/cli/mcp/auth.ts +5 -5
- package/src/cli/mcp/instructions.ts +3 -2
- package/src/cli/mcp/legacy-tool-service.ts +0 -189
- package/src/cli/mcp/multi-repository.ts +16 -5
- package/src/cli/mcp/oauth.ts +175 -26
- package/src/cli/mcp/paths.ts +8 -2
- package/src/cli/mcp/repository-tools.ts +356 -101
- package/src/cli/mcp/server.ts +625 -54
- package/src/cli/mcp/tool-capability-cache.ts +1 -1
- package/src/cli/mcp/toolset-selection.ts +1 -1
- package/src/cli/mcp/toolset.ts +42 -5
- package/src/cli/mcp/transports/http.ts +125 -15
- package/src/cli/mcp/transports/session-registry.ts +67 -5
- package/src/cli/mcp/types.ts +3 -3
- package/src/cli/repositories/command-classifier.ts +209 -14
- package/src/cli/repositories/command-executor.ts +55 -521
- package/src/cli/repositories/command-process.ts +108 -0
- package/src/cli/repositories/command-scope.ts +99 -41
- package/src/cli/repositories/controller-home.ts +7 -8
- package/src/cli/repositories/git-command-executor.ts +2 -0
- package/src/cli/repositories/locks.ts +53 -16
- package/src/cli/repositories/repository-snapshot.ts +121 -0
- package/src/cli/repositories/safe-patch.ts +6 -4
- package/src/cli/repositories/selected-path-actions.ts +17 -9
- package/src/cli/repositories/structured-git.ts +110 -10
- package/src/cli/repository/inspector.ts +565 -62
- package/src/cli/repository/session-cache.ts +58 -17
- package/src/cli/v81-entry.ts +1 -4
- package/src/effects/fs-transaction.ts +85 -17
- package/src/runtime/context/codegraph-read-provider.ts +233 -2
- package/src/runtime/context/codegraph-sidecar.cjs +74 -40
- package/src/runtime/context/generic-lsp-provider.ts +355 -0
- package/src/runtime/context/lsp-client.ts +283 -0
- package/src/runtime/context/semantic-navigation.ts +275 -0
- package/src/runtime/context/swift-navigation.ts +565 -0
- package/src/runtime/context/typescript-navigation.ts +226 -0
- package/src/runtime/control-plane/dispatch-priority.ts +28 -0
- package/src/runtime/control-plane/execution/direct-edit-work-completion.ts +196 -2
- package/src/runtime/control-plane/execution/edit-validation-coordinator.ts +86 -24
- package/src/runtime/control-plane/execution/execution-identity.ts +65 -14
- package/src/runtime/control-plane/execution/session-store.ts +18 -0
- package/src/runtime/control-plane/execution/validation.ts +15 -2
- package/src/runtime/control-plane/execution/verification-evidence.ts +58 -3
- package/src/runtime/control-plane/execution/work-handle-store.ts +27 -2
- package/src/runtime/control-plane/execution/work-lifecycle-audit.ts +258 -0
- package/src/runtime/control-plane/execution/work-remote-delivery.ts +215 -0
- package/src/runtime/control-plane/execution/work-task-receipt.ts +54 -11
- package/src/runtime/control-plane/execution/work-terminal-cleanup.ts +175 -8
- package/src/runtime/control-plane/execution/work-validation-reconciler.ts +28 -21
- package/src/runtime/control-plane/execution/work-verification-snapshot.ts +87 -9
- package/src/runtime/control-plane/facade/capability-registry.ts +129 -25
- package/src/runtime/control-plane/facade/controller-round-relay.ts +991 -0
- package/src/runtime/control-plane/facade/controller-session-store.ts +144 -14
- package/src/runtime/control-plane/facade/goal-workloop-access.ts +9 -2
- package/src/runtime/control-plane/facade/goal-workloop.ts +885 -105
- package/src/runtime/control-plane/facade/index.ts +1 -0
- package/src/runtime/control-plane/facade/plan-contract-store.ts +211 -26
- package/src/runtime/control-plane/facade/requirement-board.ts +24 -8
- package/src/runtime/control-plane/facade/semantic-admission.ts +205 -0
- package/src/runtime/control-plane/facade/suggested-actions.ts +5 -1
- package/src/runtime/control-plane/facade/types.ts +55 -11
- package/src/runtime/control-plane/facade/work-contract-store.ts +204 -73
- package/src/runtime/control-plane/generated-cache-retention.ts +271 -0
- package/src/runtime/control-plane/global-scheduler/config.ts +44 -0
- package/src/runtime/control-plane/global-scheduler/dispatch-capacity.ts +80 -0
- package/src/runtime/control-plane/global-scheduler/durable-admission.ts +46 -0
- package/src/runtime/control-plane/global-scheduler/maintenance.ts +145 -0
- package/src/runtime/control-plane/global-scheduler/projection-refresh.ts +84 -0
- package/src/runtime/control-plane/global-scheduler/reconciliation.ts +3 -3
- package/src/runtime/control-plane/global-scheduler/scheduler.ts +273 -542
- package/src/runtime/control-plane/global-scheduler/source-scan.ts +59 -0
- package/src/runtime/control-plane/global-scheduler/state.ts +88 -0
- package/src/runtime/control-plane/global-scheduler/worker-attachment.ts +57 -0
- package/src/runtime/control-plane/global-scheduler/worker-exit-decision.ts +38 -0
- package/src/runtime/control-plane/global-scheduler/worker-exit-reconciler.ts +175 -0
- package/src/runtime/control-plane/global-scheduler/worker-launch.ts +111 -0
- package/src/runtime/control-plane/global-scheduler/worker-lifecycle-store.ts +64 -0
- package/src/runtime/control-plane/global-scheduler/worker-lifecycle.ts +150 -0
- package/src/runtime/control-plane/global-scheduler/worker-process.ts +119 -0
- package/src/runtime/control-plane/global-scheduler/worker-stderr.ts +60 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-binding-store.ts +50 -0
- package/src/runtime/control-plane/launcher/chatgpt-work-continuation.ts +642 -51
- package/src/runtime/control-plane/launcher/launch-reservation-store.ts +40 -0
- package/src/runtime/control-plane/launcher/thin-launcher.ts +194 -10
- package/src/runtime/control-plane/persistence/controller-home-migration.ts +487 -0
- package/src/runtime/control-plane/persistence/requirement-store.ts +15 -11
- package/src/runtime/control-plane/persistence/sqlite-store.ts +33 -2
- package/src/runtime/control-plane/release-retention.ts +62 -2
- package/src/runtime/control-plane/routing/route-policy.ts +7 -16
- package/src/runtime/control-plane/runtime-status-client.ts +0 -2
- package/src/runtime/diagnostics/mcp-timing.ts +19 -0
- package/src/runtime/diagnostics/mcp-transport-benchmark.ts +129 -0
- package/src/runtime/diagnostics/performance.ts +24 -1
- package/src/runtime/evidence/event-ledger.ts +1 -1
- package/src/runtime/execution/jobs/store.ts +58 -4
- package/src/runtime/execution/jobs/types.ts +1 -1
- package/src/runtime/execution/managed-workspace.ts +203 -1
- package/src/runtime/execution/process-runtime/check-facade.ts +52 -14
- package/src/runtime/execution/process-runtime/check-result.ts +63 -2
- package/src/runtime/execution/process-runtime/check-scheduling.ts +114 -0
- package/src/runtime/execution/process-runtime/command-facade.ts +346 -40
- package/src/runtime/execution/process-runtime/gc.ts +98 -12
- package/src/runtime/execution/process-runtime/lightweight-managed.ts +1184 -0
- package/src/runtime/execution/process-runtime/persisted-check.ts +57 -6
- package/src/runtime/execution/process-runtime/resource-claims.ts +97 -8
- package/src/runtime/execution/process-runtime/runtime.ts +59 -4
- package/src/runtime/execution/process-runtime/store.ts +7 -0
- package/src/runtime/execution/process-runtime/types.ts +2 -0
- package/src/runtime/execution/thin-harness/async-process.ts +12 -2
- package/src/runtime/execution/thin-harness/search-worker.ts +54 -5
- package/src/runtime/execution/workers/executor.ts +0 -48
- package/src/runtime/gateway/mcp/execution-tools.ts +1219 -126
- package/src/runtime/gateway/mcp/process-tools.ts +83 -37
- package/src/runtime/gateway/mcp/router.ts +185 -83
- package/src/runtime/gateway/mcp/runtime-tool-definitions.ts +546 -0
- package/src/runtime/gateway/mcp/runtime-tools.ts +2555 -1616
- package/src/runtime/model-clients/deepseek-adapter.ts +0 -32
- package/src/runtime/plugins/app-store-connect-adapter.ts +123 -19
- package/src/runtime/plugins/browser-adapter.ts +2925 -318
- package/src/runtime/plugins/browser-automation-service.ts +10 -0
- package/src/runtime/plugins/browser-handoff-host.ts +6 -31
- package/src/runtime/plugins/browser-handoff.ts +92 -5
- package/src/runtime/plugins/browser-macos-bridge.ts +586 -45
- package/src/runtime/plugins/browser-node-bridge.ts +6 -34
- package/src/runtime/plugins/browser-provider-registry.ts +109 -0
- package/src/runtime/plugins/browser-runtime-contract.ts +152 -0
- package/src/runtime/plugins/browser-runtime.ts +183 -0
- package/src/runtime/plugins/browser-session-authority.ts +332 -0
- package/src/runtime/plugins/capability-authorization-grants.ts +354 -0
- package/src/runtime/plugins/desktop-operator-registration.ts +15 -12
- package/src/runtime/plugins/external-adapter.ts +324 -3
- package/src/runtime/plugins/external-registration.ts +84 -5
- package/src/runtime/plugins/external-unix-socket.ts +7 -1
- package/src/runtime/plugins/first-party-registry.ts +4 -2
- package/src/runtime/plugins/github-adapter.ts +125 -0
- package/src/runtime/plugins/gmail-adapter.ts +28 -2
- package/src/runtime/plugins/ios/agent-device-provider.ts +1 -1
- package/src/runtime/plugins/ios/agent-device-typed-provider.ts +52 -9
- package/src/runtime/plugins/ios/remote-xpc-hid.ts +1171 -0
- package/src/runtime/plugins/ios-adapter.ts +106 -16
- package/src/runtime/plugins/ios-agent-device.ts +234 -64
- package/src/runtime/plugins/ios-physical-device.ts +1143 -392
- package/src/runtime/plugins/lightweight-action.ts +153 -0
- package/src/runtime/plugins/local-system-adapter.ts +125 -8
- package/src/runtime/plugins/macos-capability-broker.ts +55 -9
- package/src/runtime/plugins/plugin-action-sidecar.ts +59 -0
- package/src/runtime/plugins/plugin-management-adapter.ts +181 -0
- package/src/runtime/plugins/resend-adapter.ts +1 -1
- package/src/runtime/plugins/store.ts +366 -24
- package/src/runtime/plugins/types.ts +39 -2
- package/src/runtime/plugins/xiaohongshu-publish.ts +515 -0
- package/src/runtime/projections/git-status-sampler.ts +16 -16
- package/src/runtime/projections/materialized-view.ts +28 -10
- package/src/runtime/recovery/actions.ts +0 -10
- package/src/runtime/recovery/classifier.ts +0 -9
- package/src/runtime/recovery/maintenance-executor.ts +415 -18
- package/src/runtime/recovery/probe.ts +0 -1
- package/src/runtime/recovery/types.ts +0 -1
- package/src/runtime/root/mcp-transport.ts +180 -10
- package/src/runtime/root/package-connector-service.ts +186 -8
- package/src/runtime/root/package-runtime-release.ts +143 -17
- package/src/runtime/root/package-runtime-service.ts +430 -22
- package/src/runtime/root/release-manifest.ts +7 -2
- package/src/runtime/root/release-materialize.ts +162 -19
- package/src/runtime/root/release-store.ts +48 -11
- package/src/runtime/root/runtime.ts +23 -5
- package/src/runtime/root/service.ts +100 -27
- package/src/runtime/root/types.ts +2 -0
- package/src/runtime/safe-tooling/index.ts +0 -1
- package/src/runtime/safe-tooling/ios-development.ts +321 -63
- package/src/runtime/safe-tooling/types.ts +0 -30
- package/src/runtime/shared/trusted-executable.ts +62 -0
- package/src/runtime/shared/trusted-node-executable.ts +48 -0
- package/src/runtime/standalone-recovery/core.ts +702 -94
- package/src/runtime/standalone-recovery/entry.ts +99 -23
- package/src/runtime/standalone-recovery/installer.ts +19 -3
- package/src/runtime/standalone-recovery/service-labels.ts +2 -0
- package/src/runtime/standalone-recovery/watchdog-heartbeat.ts +160 -0
- package/src/runtime/workflow/schedules/browser-probe.ts +258 -0
- package/src/runtime/workflow/schedules/chatgpt-automation-migration.ts +40 -0
- package/src/runtime/workflow/schedules/engine.ts +509 -80
- package/src/runtime/workflow/schedules/github-issue-watch.ts +158 -0
- package/src/runtime/workflow/schedules/settlement.ts +48 -4
- package/src/runtime/workflow/schedules/store.ts +131 -10
- package/src/runtime/workflow/schedules/types.ts +6 -3
- package/src/runtime/workflow/schedules/work-continuation.ts +120 -34
- package/src/testing/test-governance.ts +8 -40
- package/assets/reference-configs/heartbeat-triage.md +0 -57
- package/assets/templates/helpers/harness-trace-grade.sh +0 -150
- package/assets/templates/helpers/heartbeat-triage.sh +0 -361
- package/assets/templates/helpers/maintenance-triage.sh +0 -167
- package/bin/forge-desktop-helper.mjs +0 -204
- package/docs/architecture/current/approved-target-architecture.zh-CN.md +0 -1501
- package/docs/architecture/current/architecture-invariants.md +0 -331
- package/docs/architecture/current/automation-and-schedule-engine.md +0 -453
- package/docs/architecture/current/codegraph-context-provider.md +0 -226
- package/docs/architecture/current/control-plane-authority-inventory.md +0 -94
- package/docs/architecture/current/controller-repository-decoupling.md +0 -148
- package/docs/architecture/current/dispatch-and-agent-strategy.md +0 -354
- package/docs/architecture/current/entity-model.md +0 -592
- package/docs/architecture/current/external-plugin-governance.md +0 -396
- package/docs/architecture/current/failure-recovery.md +0 -447
- package/docs/architecture/current/governance.md +0 -213
- package/docs/architecture/current/human-interaction-plane.md +0 -87
- package/docs/architecture/current/implementation-status.md +0 -128
- package/docs/architecture/current/job-and-run-lifecycle.md +0 -413
- package/docs/architecture/current/legacy-governance.md +0 -58
- package/docs/architecture/current/local-workspace-target-grants.md +0 -70
- package/docs/architecture/current/migration-roadmap.md +0 -105
- package/docs/architecture/current/multi-repository-execution.md +0 -371
- package/docs/architecture/current/operations-runbook.md +0 -45
- package/docs/architecture/current/peer-supercontroller-runtime.md +0 -32
- package/docs/architecture/current/personal-assistant-plugin-baseline.md +0 -206
- package/docs/architecture/current/repository-access-modes.md +0 -102
- package/docs/architecture/current/route-policy.md +0 -15
- package/docs/architecture/current/route-session-concurrency.md +0 -85
- package/docs/architecture/current/runtime-architecture-simplification.md +0 -214
- package/docs/architecture/current/runtime-directory-map.md +0 -49
- package/docs/architecture/current/runtime-health-and-resource-lifecycle.md +0 -85
- package/docs/architecture/current/scheduler-and-resource-claims.md +0 -422
- package/docs/architecture/current/session-aware-execution-and-authorization.md +0 -77
- package/docs/architecture/current/system-overview.md +0 -144
- package/docs/architecture/current/target-requirements-traceability.md +0 -202
- package/docs/architecture/current/thin-harness-governance-policy.md +0 -32
- package/docs/architecture/current/thin-harness-v1.md +0 -311
- package/docs/architecture/current/verification-and-release-gates.md +0 -391
- package/docs/forge-autonomous-goal-loop.md +0 -9
- package/docs/forge-provider-configuration.md +0 -7
- package/docs/operations/chatgpt-personal-assistant-runtime.md +0 -83
- package/docs/operations/controller-desktop-plugin.md +0 -112
- package/docs/operations/gmail-assistant-routines.md +0 -186
- package/docs/operations/personal-assistant-operator-guide.md +0 -61
- package/docs/operations/provider-configuration.md +0 -31
- package/scripts/harness-trace-grade.sh +0 -150
- package/scripts/heartbeat-triage.sh +0 -361
- package/scripts/maintenance-triage.sh +0 -167
- package/src/cli/local-bridge/frontend/src/features/settings/SettingsView.tsx +0 -2
- package/src/cli/repositories/goal-registry.ts +0 -239
- package/src/runtime/assistant/action-proposals.ts +0 -279
- package/src/runtime/assistant/intent.ts +0 -395
- package/src/runtime/assistant/model-provider.ts +0 -460
- package/src/runtime/assistant/openapi.ts +0 -223
- package/src/runtime/assistant/policy.ts +0 -89
- package/src/runtime/assistant/readiness.ts +0 -258
- package/src/runtime/assistant/routine-runtime.ts +0 -477
- package/src/runtime/assistant/schedule-binding.ts +0 -171
- package/src/runtime/assistant/standing-grants.ts +0 -375
- package/src/runtime/assistant/store.ts +0 -243
- package/src/runtime/assistant/types.ts +0 -135
- package/src/runtime/control-plane/goal-loop/config-facade.ts +0 -700
- package/src/runtime/control-plane/goal-loop/config-store.ts +0 -570
- package/src/runtime/control-plane/goal-loop/config-types.ts +0 -213
- package/src/runtime/control-plane/goal-loop/executor-router.ts +0 -109
- package/src/runtime/control-plane/goal-loop/failure-taxonomy.ts +0 -149
- package/src/runtime/control-plane/goal-loop/goal-contract-store.ts +0 -304
- package/src/runtime/control-plane/goal-loop/goal-loop-engine.ts +0 -1001
- package/src/runtime/control-plane/goal-loop/handoff-packet.ts +0 -160
- package/src/runtime/control-plane/goal-loop/index.ts +0 -13
- package/src/runtime/control-plane/goal-loop/local-tools.ts +0 -290
- package/src/runtime/control-plane/goal-loop/policy-gates.ts +0 -203
- package/src/runtime/control-plane/goal-loop/provider-dispatch.ts +0 -93
- package/src/runtime/control-plane/goal-loop/provider-registry.ts +0 -545
- package/src/runtime/control-plane/goal-loop/types.ts +0 -378
- package/src/runtime/control-plane/startup-recovery.ts +0 -198
- package/src/runtime/gateway/mcp/resource-policy.ts +0 -186
- package/src/runtime/personal-assistant/gmail-triage-manager.ts +0 -231
- package/src/runtime/personal-assistant/reporting-runtime.ts +0 -344
- package/src/runtime/personal-assistant/triage-runtime.ts +0 -748
- package/src/runtime/plugins/desktop-adapter.ts +0 -374
- package/src/runtime/safe-tooling/browser-safe.ts +0 -133
- package/src/runtime/workflow/findings/store.ts +0 -204
- package/src/runtime/workflow/findings/types.ts +0 -58
- package/src/runtime/workflow/portfolio/engine.ts +0 -20
- package/src/runtime/workflow/portfolio/store.ts +0 -185
- package/src/runtime/workflow/portfolio/types.ts +0 -29
|
@@ -1,54 +1,31 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
# Generated projects keep installed workflow runtime state under .ai/. The
|
|
5
|
-
# template source lives in AGENTIC_DEV_ROOT, AGENTIC_DEV_SKILL_ROOT, or
|
|
6
|
-
# ~/Projects/forge. Retired legacy install paths are not
|
|
7
|
-
# searched.
|
|
2
|
+
# Run the canonical Forge adoption path without guessing a developer checkout.
|
|
8
3
|
|
|
9
4
|
set -euo pipefail
|
|
10
5
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"$HOME/Projects/forge"
|
|
25
|
-
"$HOME/.codex/skills/forge"
|
|
26
|
-
"$HOME/.claude/skills/forge"
|
|
27
|
-
"$HOME/.agents/skills/forge"
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
local root
|
|
31
|
-
for root in "${roots[@]}"; do
|
|
32
|
-
if [[ -d "$root" ]]; then
|
|
33
|
-
printf '%s\n' "$root"
|
|
34
|
-
return 0
|
|
35
|
-
fi
|
|
36
|
-
done
|
|
37
|
-
|
|
38
|
-
printf '%s\n' "${roots[0]}"
|
|
39
|
-
return 0
|
|
40
|
-
fi
|
|
41
|
-
|
|
42
|
-
printf '%s\n' ".forge/skills/forge"
|
|
6
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
7
|
+
SELF_SOURCE_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
8
|
+
SOURCE_ROOT="${FORGE_SOURCE_ROOT:-${AGENTIC_DEV_ROOT:-${AGENTIC_DEV_SKILL_ROOT:-}}}"
|
|
9
|
+
|
|
10
|
+
run_source_root() {
|
|
11
|
+
local root="$1"
|
|
12
|
+
shift
|
|
13
|
+
[[ -f "$root/src/cli/index.ts" ]] || return 1
|
|
14
|
+
command -v bun >/dev/null 2>&1 || {
|
|
15
|
+
echo "[migrate] bun is required to run Forge from source: $root" >&2
|
|
16
|
+
exit 1
|
|
17
|
+
}
|
|
18
|
+
exec bun "$root/src/cli/index.ts" adopt "$@" --no-codegraph --no-verify
|
|
43
19
|
}
|
|
44
20
|
|
|
45
|
-
|
|
46
|
-
|
|
21
|
+
run_source_root "$SELF_SOURCE_ROOT" "$@"
|
|
22
|
+
if [[ -n "$SOURCE_ROOT" ]]; then
|
|
23
|
+
run_source_root "$SOURCE_ROOT" "$@"
|
|
24
|
+
fi
|
|
47
25
|
|
|
48
|
-
if
|
|
49
|
-
|
|
50
|
-
echo "[migrate] Set AGENTIC_DEV_ROOT or AGENTIC_DEV_SKILL_ROOT to the skill root." >&2
|
|
51
|
-
exit 1
|
|
26
|
+
if command -v forge >/dev/null 2>&1; then
|
|
27
|
+
exec forge adopt "$@" --no-codegraph --no-verify
|
|
52
28
|
fi
|
|
53
29
|
|
|
54
|
-
|
|
30
|
+
echo "[migrate] Missing Forge CLI; set FORGE_SOURCE_ROOT to a Forge source checkout." >&2
|
|
31
|
+
exit 1
|
|
@@ -141,7 +141,7 @@ Complete this inventory before implementation. If any line is unknown, keep the
|
|
|
141
141
|
|
|
142
142
|
- **State/progress path**:
|
|
143
143
|
- **Verification evidence**:
|
|
144
|
-
- **
|
|
144
|
+
- **Impact review**:
|
|
145
145
|
- **Stop condition**:
|
|
146
146
|
- **Rollback surface**:
|
|
147
147
|
|
|
@@ -63,7 +63,7 @@ plan_evidence_contract_error() {
|
|
|
63
63
|
fi
|
|
64
64
|
|
|
65
65
|
local label line value
|
|
66
|
-
for label in "State/progress path" "Verification evidence" "Evaluator rubric" "Stop condition" "Rollback surface"; do
|
|
66
|
+
for label in "State/progress path" "Verification evidence" "Impact review|Evaluator rubric" "Stop condition" "Rollback surface"; do
|
|
67
67
|
line="$(printf '%s\n' "$section" | grep -Ei "^[[:space:]]*-[[:space:]]*(\\*\\*)?${label}(\\*\\*)?[[:space:]]*:" | head -1 || true)"
|
|
68
68
|
if [[ -z "$line" ]]; then
|
|
69
69
|
echo "missing field: ${label}"
|
|
@@ -323,7 +323,7 @@ Describe the exact outcome this task must deliver.
|
|
|
323
323
|
- Checks file: `.ai/harness/checks/latest.json`
|
|
324
324
|
- Run snapshots: `.ai/harness/runs/`
|
|
325
325
|
- Scope gate: edit only paths listed under `allowed_paths`; update this contract before widening scope.
|
|
326
|
-
- Completion
|
|
326
|
+
- Completion evidence: `scripts/verify-sprint.sh` reports this contract's direct checks and declared scope. Then perform a fresh semantic impact review.
|
|
327
327
|
|
|
328
328
|
## Allowed Paths
|
|
329
329
|
|
|
@@ -377,7 +377,7 @@ exit_criteria:
|
|
|
377
377
|
tests_pass:
|
|
378
378
|
- path: tests/unit/{{TASK_SLUG}}.test.ts
|
|
379
379
|
commands_succeed:
|
|
380
|
-
- bun run
|
|
380
|
+
- bun run check:type
|
|
381
381
|
files_contain:
|
|
382
382
|
- path: src/modules/{{TASK_SLUG}}/index.ts
|
|
383
383
|
pattern: "export"
|
|
@@ -691,19 +691,15 @@ else
|
|
|
691
691
|
> **Notes File**: {{NOTES_FILE}}
|
|
692
692
|
> **Checks File**: {{CHECKS_FILE}}
|
|
693
693
|
> **Last Updated**: {{TIMESTAMP}}
|
|
694
|
-
> **
|
|
694
|
+
> **Summary**:
|
|
695
695
|
|
|
696
|
-
##
|
|
696
|
+
## Semantic Impact Review
|
|
697
697
|
|
|
698
|
-
-
|
|
699
|
-
-
|
|
700
|
-
-
|
|
701
|
-
-
|
|
702
|
-
-
|
|
703
|
-
- External acceptance: unavailable
|
|
704
|
-
- Residual risks:
|
|
705
|
-
- Reviewer action required: inspect diff and card
|
|
706
|
-
- Rollback:
|
|
698
|
+
- User intent:
|
|
699
|
+
- Affected domains and downstream consumers:
|
|
700
|
+
- State transitions and persistence/restart impact:
|
|
701
|
+
- Missing impact areas or uncertainty:
|
|
702
|
+
- Residual risks and recovery:
|
|
707
703
|
|
|
708
704
|
## Mode Evidence
|
|
709
705
|
|
|
@@ -713,26 +709,14 @@ else
|
|
|
713
709
|
|
|
714
710
|
## Verification Evidence
|
|
715
711
|
|
|
716
|
-
-
|
|
712
|
+
- Focused/full checks:
|
|
717
713
|
- Commands run:
|
|
718
714
|
- Manual checks:
|
|
719
715
|
- Supporting artifacts:
|
|
720
716
|
- Implementation notes reviewed:
|
|
721
717
|
- Run snapshot:
|
|
722
718
|
|
|
723
|
-
##
|
|
724
|
-
|
|
725
|
-
> **External Acceptance**: unavailable
|
|
726
|
-
> **External Reviewer**:
|
|
727
|
-
> **External Source**:
|
|
728
|
-
> **External Started**:
|
|
729
|
-
> **External Completed**:
|
|
730
|
-
|
|
731
|
-
- P1 blockers:
|
|
732
|
-
- P2 advisories:
|
|
733
|
-
- Acceptance checklist:
|
|
734
|
-
|
|
735
|
-
## Behavior Diff Notes
|
|
719
|
+
## Scenario Evidence
|
|
736
720
|
|
|
737
721
|
- ...
|
|
738
722
|
|
|
@@ -740,15 +724,6 @@ else
|
|
|
740
724
|
|
|
741
725
|
- ...
|
|
742
726
|
|
|
743
|
-
## Scorecard
|
|
744
|
-
|
|
745
|
-
| Dimension | Score | Notes |
|
|
746
|
-
|-----------|-------|-------|
|
|
747
|
-
| Functionality | 0/10 | |
|
|
748
|
-
| Product depth | 0/10 | |
|
|
749
|
-
| Design quality | 0/10 | |
|
|
750
|
-
| Code quality | 0/10 | |
|
|
751
|
-
|
|
752
727
|
## Failing Items
|
|
753
728
|
|
|
754
729
|
- ...
|
|
@@ -224,19 +224,8 @@ active_slug_or_empty() {
|
|
|
224
224
|
plan_slug_from_path "$active_plan"
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
-
review_recommends_pass_fallback() {
|
|
228
|
-
local review_file="$1"
|
|
229
|
-
grep -Eq '^> \*\*Recommendation\*\*:[[:space:]]*pass([[:space:]]*)$' "$review_file"
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
external_acceptance_pass_fallback() {
|
|
233
|
-
local review_file="$1"
|
|
234
|
-
grep -Eq '^> \*\*External Acceptance\*\*:[[:space:]]*(pass|manual_override)([[:space:]]*)$' "$review_file" \
|
|
235
|
-
&& grep -Eq '^-?[[:space:]]*P1 blockers:[[:space:]]*none([[:space:]]*)$' "$review_file"
|
|
236
|
-
}
|
|
237
|
-
|
|
238
227
|
require_finish_ready() {
|
|
239
|
-
local contract_file=""
|
|
228
|
+
local contract_file="" checks_file=".ai/harness/checks/latest.json" checks_error=""
|
|
240
229
|
|
|
241
230
|
[[ -x "scripts/contract-worktree.sh" ]] || fail "scripts/contract-worktree.sh is missing or not executable"
|
|
242
231
|
[[ -x "scripts/verify-sprint.sh" ]] || fail "scripts/verify-sprint.sh is missing or not executable"
|
|
@@ -245,27 +234,11 @@ require_finish_ready() {
|
|
|
245
234
|
if declare -F workflow_active_contract >/dev/null 2>&1; then
|
|
246
235
|
contract_file="$(workflow_active_contract 2>/dev/null || true)"
|
|
247
236
|
fi
|
|
248
|
-
if declare -F workflow_active_review >/dev/null 2>&1; then
|
|
249
|
-
review_file="$(workflow_active_review 2>/dev/null || true)"
|
|
250
|
-
fi
|
|
251
237
|
if declare -F workflow_checks_file >/dev/null 2>&1; then
|
|
252
238
|
checks_file="$(workflow_checks_file)"
|
|
253
239
|
fi
|
|
254
240
|
|
|
255
241
|
[[ -n "$contract_file" && -f "$contract_file" ]] || fail "active sprint contract is missing"
|
|
256
|
-
[[ -n "$review_file" && -f "$review_file" ]] || fail "active sprint review is missing"
|
|
257
|
-
|
|
258
|
-
if declare -F workflow_review_recommends_pass >/dev/null 2>&1; then
|
|
259
|
-
workflow_review_recommends_pass "$review_file" || fail "$review_file does not recommend pass"
|
|
260
|
-
else
|
|
261
|
-
review_recommends_pass_fallback "$review_file" || fail "$review_file does not recommend pass"
|
|
262
|
-
fi
|
|
263
|
-
|
|
264
|
-
if declare -F workflow_external_acceptance_pass >/dev/null 2>&1; then
|
|
265
|
-
workflow_external_acceptance_pass "$review_file" || fail "$review_file has no passing external acceptance"
|
|
266
|
-
else
|
|
267
|
-
external_acceptance_pass_fallback "$review_file" || fail "$review_file has no passing external acceptance"
|
|
268
|
-
fi
|
|
269
242
|
|
|
270
243
|
run_cmd bash "scripts/verify-sprint.sh"
|
|
271
244
|
if [[ "$DRY_RUN" -eq 1 ]]; then
|
|
@@ -273,7 +246,7 @@ require_finish_ready() {
|
|
|
273
246
|
fi
|
|
274
247
|
|
|
275
248
|
if declare -F workflow_checks_pass >/dev/null 2>&1; then
|
|
276
|
-
if ! checks_error="$(workflow_checks_pass "$checks_file" "$contract_file"
|
|
249
|
+
if ! checks_error="$(workflow_checks_pass "$checks_file" "$contract_file")"; then
|
|
277
250
|
fail "$checks_error"
|
|
278
251
|
fi
|
|
279
252
|
elif ! grep -Eq '"status"[[:space:]]*:[[:space:]]*"pass"' "$checks_file"; then
|
|
@@ -21,11 +21,11 @@ Usage:
|
|
|
21
21
|
|
|
22
22
|
Program-level sprint backlog helper. PRDs live in plans/prds/ as the upper
|
|
23
23
|
planning layer; sprints live in plans/sprints/ as ordered execution backlogs.
|
|
24
|
-
Each backlog row is expanded with
|
|
24
|
+
Each backlog row is expanded with /plan before the existing plan -> contract
|
|
25
25
|
-> worktree flow. tasks/todos.md stays the deferred-goal ledger.
|
|
26
26
|
|
|
27
27
|
start-task reserves the next (or named) pending backlog row and can capture a
|
|
28
|
-
thin plan seed. The coding agent must still use
|
|
28
|
+
thin plan seed. The coding agent must still use `/plan` to expand the row into
|
|
29
29
|
a decision-complete plan before code edits.
|
|
30
30
|
--sprint overrides the active-sprint marker (still confined to the sprints
|
|
31
31
|
dir), which finish back-fill uses inside worktrees where the runtime marker
|
|
@@ -218,7 +218,7 @@ render_sprint_file() {
|
|
|
218
218
|
|
|
219
219
|
Program-level sprint container. The Source PRD summary and ordered backlog
|
|
220
220
|
decompose product intent into task-contract slices; each backlog row is a
|
|
221
|
-
long-task waypoint that must be expanded with
|
|
221
|
+
long-task waypoint that must be expanded with `/plan` before code edits.
|
|
222
222
|
`tasks/todos.md` stays the deferred-goal ledger and never carries this backlog.
|
|
223
223
|
|
|
224
224
|
## PRD
|
|
@@ -740,12 +740,12 @@ Deliver backlog task \`${target_task}\` so that the acceptance line holds: ${tar
|
|
|
740
740
|
|
|
741
741
|
## Planning Expansion
|
|
742
742
|
|
|
743
|
-
Before editing code, use
|
|
743
|
+
Before editing code, use \`/plan\` to expand this sprint row into a decision-complete implementation plan. The \`/plan\` pass should read the sprint file, preserve the acceptance line, name concrete files or commands, and produce the detailed \`plans/plan-*.md\` body that drives contract execution.
|
|
744
744
|
|
|
745
745
|
## Task Breakdown
|
|
746
746
|
|
|
747
|
-
- [ ] Run
|
|
748
|
-
- [ ] Capture the approved
|
|
747
|
+
- [ ] Run \`/plan\` for backlog task \`${target_task}\` using sprint \`${sprint_file}\` and acceptance: ${target_acceptance}
|
|
748
|
+
- [ ] Capture the approved \`/plan\` output with \`scripts/capture-plan.sh --source forge-plan --source-ref sprint:${sprint_file}#${target_task}\`
|
|
749
749
|
- [ ] Verify acceptance: ${target_acceptance}
|
|
750
750
|
BODY_EOF
|
|
751
751
|
|
|
@@ -69,24 +69,6 @@ read_contract_status() {
|
|
|
69
69
|
awk '/^> \*\*Status\*\*:/ {sub(/^.*> \*\*Status\*\*: */, ""); gsub(/\r/, ""); print; exit}' "$file" | xargs
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
read_contract_review_file() {
|
|
73
|
-
local file="$1"
|
|
74
|
-
local line=""
|
|
75
|
-
local value=""
|
|
76
|
-
|
|
77
|
-
line="$(grep -m 1 -E '^> \*\*Review File\*\*:' "$file" || true)"
|
|
78
|
-
[[ -n "$line" ]] || return 0
|
|
79
|
-
|
|
80
|
-
if [[ "$line" == *\`* ]]; then
|
|
81
|
-
value="${line#*\`}"
|
|
82
|
-
value="${value%%\`*}"
|
|
83
|
-
else
|
|
84
|
-
value="${line#*> **Review File**:}"
|
|
85
|
-
fi
|
|
86
|
-
|
|
87
|
-
printf '%s' "$value" | tr -d '\r' | sed -E 's/^[[:space:]]+//; s/[[:space:]]+$//'
|
|
88
|
-
}
|
|
89
|
-
|
|
90
72
|
read_contract_task_profile() {
|
|
91
73
|
local file="$1"
|
|
92
74
|
awk '/^> \*\*Task Profile\*\*:/ {sub(/^.*> \*\*Task Profile\*\*:[[:space:]]*/, ""); gsub(/\r/, ""); print; exit}' "$file" | xargs
|
|
@@ -130,36 +112,6 @@ contract_allowed_paths() {
|
|
|
130
112
|
'
|
|
131
113
|
}
|
|
132
114
|
|
|
133
|
-
review_recommends_pass() {
|
|
134
|
-
local review_file="$1"
|
|
135
|
-
[[ -n "$review_file" && -f "$review_file" ]] || return 1
|
|
136
|
-
grep -Eq '^> \*\*Recommendation\*\*:[[:space:]]*pass[[:space:]]*$' "$review_file"
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
review_score() {
|
|
140
|
-
local review_file="$1"
|
|
141
|
-
local dimension="$2"
|
|
142
|
-
|
|
143
|
-
[[ -n "$review_file" && -f "$review_file" ]] || return 1
|
|
144
|
-
|
|
145
|
-
awk -F'|' -v wanted="$dimension" '
|
|
146
|
-
function trim(s) {
|
|
147
|
-
gsub(/^[[:space:]]+/, "", s)
|
|
148
|
-
gsub(/[[:space:]]+$/, "", s)
|
|
149
|
-
return s
|
|
150
|
-
}
|
|
151
|
-
BEGIN { wanted = tolower(wanted) }
|
|
152
|
-
/^\|/ {
|
|
153
|
-
dim = tolower(trim($2))
|
|
154
|
-
score = trim($3)
|
|
155
|
-
if (dim == wanted && match(score, /[0-9]+/)) {
|
|
156
|
-
print substr(score, RSTART, RLENGTH)
|
|
157
|
-
exit
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
' "$review_file"
|
|
161
|
-
}
|
|
162
|
-
|
|
163
115
|
update_contract_status() {
|
|
164
116
|
local file="$1"
|
|
165
117
|
local status="$2"
|
|
@@ -385,14 +337,9 @@ declare -a contain_patterns=()
|
|
|
385
337
|
declare -a files_not_exist=()
|
|
386
338
|
declare -a not_contain_paths=()
|
|
387
339
|
declare -a not_contain_patterns=()
|
|
388
|
-
declare -a qa_dimensions=()
|
|
389
|
-
declare -a qa_mins=()
|
|
390
|
-
declare -a manual_checks=()
|
|
391
340
|
|
|
392
341
|
section=""
|
|
393
342
|
pending_path=""
|
|
394
|
-
pending_dimension=""
|
|
395
|
-
review_file="$(read_contract_review_file "$contract_file" || true)"
|
|
396
343
|
task_profile="$(read_contract_task_profile "$contract_file" || true)"
|
|
397
344
|
declare -a allowed_paths=()
|
|
398
345
|
while IFS= read -r allowed_path; do
|
|
@@ -443,21 +390,10 @@ while IFS= read -r raw_line; do
|
|
|
443
390
|
pending_path=""
|
|
444
391
|
continue
|
|
445
392
|
;;
|
|
446
|
-
qa_scores:)
|
|
447
|
-
section="qa_scores"
|
|
448
|
-
pending_path=""
|
|
449
|
-
pending_dimension=""
|
|
450
|
-
continue
|
|
451
|
-
;;
|
|
452
|
-
manual_checks:)
|
|
453
|
-
section="manual_checks"
|
|
454
|
-
pending_path=""
|
|
455
|
-
continue
|
|
456
|
-
;;
|
|
457
393
|
esac
|
|
458
394
|
|
|
459
395
|
case "$section" in
|
|
460
|
-
files_exist|commands_succeed|files_not_exist|artifacts_exist
|
|
396
|
+
files_exist|commands_succeed|files_not_exist|artifacts_exist)
|
|
461
397
|
if [[ "$trimmed" =~ ^-[[:space:]]*(.+)$ ]]; then
|
|
462
398
|
item="$(strip_quotes "${BASH_REMATCH[1]}")"
|
|
463
399
|
[[ -n "$item" ]] || continue
|
|
@@ -467,8 +403,6 @@ while IFS= read -r raw_line; do
|
|
|
467
403
|
commands_succeed+=("$item")
|
|
468
404
|
elif [[ "$section" == "artifacts_exist" ]]; then
|
|
469
405
|
artifacts_exist+=("$item")
|
|
470
|
-
elif [[ "$section" == "manual_checks" ]]; then
|
|
471
|
-
manual_checks+=("$item")
|
|
472
406
|
else
|
|
473
407
|
files_not_exist+=("$item")
|
|
474
408
|
fi
|
|
@@ -497,19 +431,6 @@ while IFS= read -r raw_line; do
|
|
|
497
431
|
fi
|
|
498
432
|
fi
|
|
499
433
|
;;
|
|
500
|
-
qa_scores)
|
|
501
|
-
if [[ "$trimmed" =~ ^-[[:space:]]*dimension:[[:space:]]*(.+)$ ]]; then
|
|
502
|
-
pending_dimension="$(strip_quotes "${BASH_REMATCH[1]}")"
|
|
503
|
-
elif [[ "$trimmed" =~ ^dimension:[[:space:]]*(.+)$ ]]; then
|
|
504
|
-
pending_dimension="$(strip_quotes "${BASH_REMATCH[1]}")"
|
|
505
|
-
elif [[ "$trimmed" =~ ^min:[[:space:]]*([0-9]+)$ ]]; then
|
|
506
|
-
if [[ -n "$pending_dimension" ]]; then
|
|
507
|
-
qa_dimensions+=("$pending_dimension")
|
|
508
|
-
qa_mins+=("${BASH_REMATCH[1]}")
|
|
509
|
-
pending_dimension=""
|
|
510
|
-
fi
|
|
511
|
-
fi
|
|
512
|
-
;;
|
|
513
434
|
esac
|
|
514
435
|
done <<< "$yaml_block"
|
|
515
436
|
if ((${#tests_pass[@]} || ${#commands_succeed[@]})); then
|
|
@@ -602,37 +523,6 @@ if ((${#commands_succeed[@]})); then
|
|
|
602
523
|
done
|
|
603
524
|
fi
|
|
604
525
|
|
|
605
|
-
if ((${#qa_dimensions[@]})); then
|
|
606
|
-
for idx in "${!qa_dimensions[@]}"; do
|
|
607
|
-
dimension="${qa_dimensions[$idx]}"
|
|
608
|
-
min_score="${qa_mins[$idx]}"
|
|
609
|
-
score="$(review_score "$review_file" "$dimension" || true)"
|
|
610
|
-
|
|
611
|
-
if [[ "$score" =~ ^[0-9]+$ && "$score" -ge "$min_score" ]]; then
|
|
612
|
-
pass "qa_scores" "$dimension" "qa_scores: $dimension ${score}/${min_score}"
|
|
613
|
-
else
|
|
614
|
-
fail "qa_scores" "$dimension" "qa_scores: $dimension score ${score:-missing} < $min_score"
|
|
615
|
-
fi
|
|
616
|
-
done
|
|
617
|
-
fi
|
|
618
|
-
|
|
619
|
-
if ((${#manual_checks[@]})); then
|
|
620
|
-
for check in "${manual_checks[@]}"; do
|
|
621
|
-
case "$check" in
|
|
622
|
-
"Evaluator review file recommends pass")
|
|
623
|
-
if review_recommends_pass "$review_file"; then
|
|
624
|
-
pass "manual_checks" "$check" "manual_checks: $check"
|
|
625
|
-
else
|
|
626
|
-
fail "manual_checks" "$check" "manual_checks: $check"
|
|
627
|
-
fi
|
|
628
|
-
;;
|
|
629
|
-
*)
|
|
630
|
-
fail "manual_checks" "$check" "manual_checks unsupported: $check"
|
|
631
|
-
;;
|
|
632
|
-
esac
|
|
633
|
-
done
|
|
634
|
-
fi
|
|
635
|
-
|
|
636
526
|
if ((${#contain_paths[@]})); then
|
|
637
527
|
for idx in "${!contain_paths[@]}"; do
|
|
638
528
|
path="${contain_paths[$idx]}"
|