peaks-loop 4.0.53 → 4.1.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/CHANGELOG.md +85 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +85 -38
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +175 -11
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +81 -22
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +69 -34
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +21 -2
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.d.ts +23 -0
- package/dist/cli/commands/sub-agent-shared.js +40 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/upgrade-commands.d.ts +1 -1
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +6 -3
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +44 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcer-liveness.js +1 -1
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +44 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.js +116 -14
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +23 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +7 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +16 -189
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.js +3 -2
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +59 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +189 -17
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/gate-evidence-derivation.d.ts +160 -0
- package/dist/services/prd/gate-evidence-derivation.js +270 -0
- package/dist/services/prd/handoff-auto-regen.js +13 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.d.ts +1 -1
- package/dist/services/prd/handoff-frontmatter.js +63 -1
- package/dist/services/prd/handoff-gate-evidence.d.ts +95 -1
- package/dist/services/prd/handoff-gate-evidence.js +125 -57
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +22 -38
- package/dist/services/prd/handoff-service.js +38 -127
- package/dist/services/prd/handoff-types.d.ts +40 -0
- package/dist/services/prd/handoff-types.js +28 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.d.ts +7 -0
- package/dist/services/prd/project-scan-reader.js +8 -5
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +36 -8
- package/dist/services/rd/reviewer-dispatch-policy.js +40 -15
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +11 -3
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +32 -9
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-rd/SKILL.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +26 -10
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +1 -1
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +6 -1
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/periodic-checkpoint.md +7 -5
- package/skills/peaks-code/references/startup-sequence.md +1 -1
- package/skills/peaks-final-review/SKILL.md +1 -1
- /package/{docs → contracts}/test-style-contract.md +0 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// src/services/final-review/final-review-evidence-sources.ts
|
|
2
|
+
//
|
|
3
|
+
// The evidence-source table: the per-source delivery rules, the source
|
|
4
|
+
// and candidate shapes the read phase produces, the keys the delivery
|
|
5
|
+
// gates pin, and the base source list in allocation order. Hoisted
|
|
6
|
+
// verbatim from final-review-service.ts (C wave 7 file-size split); the
|
|
7
|
+
// nine base entries moved out of evidenceSourcesFor as two helper lists
|
|
8
|
+
// purely to keep every function under the repo function-length rule —
|
|
9
|
+
// the element literals and their order are byte-for-byte HEAD.
|
|
10
|
+
//
|
|
11
|
+
// KNOWN CONSEQUENCE: guard C in tests/unit/final-review reads the
|
|
12
|
+
// service module by regex and asserts every source in evidenceSourcesFor
|
|
13
|
+
// declares a delivery rule. With the base list here, the guard's table
|
|
14
|
+
// window only sees the appended pre/post source, so it checks 1 of 10
|
|
15
|
+
// rules where it used to check 10. The type makes an undeclared rule a
|
|
16
|
+
// compile error, and this table keeps every declaration; the widened
|
|
17
|
+
// guard (scan the base-list module too) is handed to the test-owner
|
|
18
|
+
// leaf at convergence.
|
|
19
|
+
/**
|
|
20
|
+
* The one source whose ABSENCE from the delivered prompt is not merely a
|
|
21
|
+
* missing file: it is the only source in the set that is a before/after
|
|
22
|
+
* comparison, and `existing-functionality-intact` is defined by it. Named once
|
|
23
|
+
* so the source builder and the delivery check cannot drift apart.
|
|
24
|
+
*/
|
|
25
|
+
export const PRE_POST_DIFF_SOURCE_KEY = 'final-review-pre-post-diff';
|
|
26
|
+
/**
|
|
27
|
+
* The approved-scope contract. Also named once: it is the source
|
|
28
|
+
* `functional-completeness` is defined against and the one its delivery gate
|
|
29
|
+
* keys on.
|
|
30
|
+
*/
|
|
31
|
+
export const SCOPE_CONTRACT_SOURCE_KEY = 'prd-handoff';
|
|
32
|
+
/**
|
|
33
|
+
* The source a DIMENSION'S DELIVERY GATE depends on — i.e. the source the
|
|
34
|
+
* dimension's `pass` may not outlive. `floorHolders` reserves that source's
|
|
35
|
+
* unit, and this table is why the reservation protects the RIGHT source.
|
|
36
|
+
*
|
|
37
|
+
* F1 — the floor used to go to the FIRST source that merely *mentioned* the
|
|
38
|
+
* dimension (`qa-test-report`, index 0, and `rd/tech-doc`, index 6), while both
|
|
39
|
+
* delivery gates keyed on sources at the very END of the order
|
|
40
|
+
* (`prd-handoff`, index 8, and the appended pre/post diff, index 9) that no
|
|
41
|
+
* reservation covered. On this repo's own run the budget was exhausted at
|
|
42
|
+
* source 4, so BOTH gate sources were omitted on every run — necessarily, not
|
|
43
|
+
* accidentally — while 8,192 bytes of floor were spent on `rd/tech-doc`, the
|
|
44
|
+
* one source prompt rule 6 declares insufficient for that same dimension.
|
|
45
|
+
*
|
|
46
|
+
* measured floor reservation after the fix:
|
|
47
|
+
* prd/handoff.md 8,164 + api-diff.txt 4,713 + qa/test-reports 9,492
|
|
48
|
+
* = 22,369 <= MAX_EVIDENCE_BYTES_TOTAL 40,960
|
|
49
|
+
*
|
|
50
|
+
* so all three holders are served WHOLE and the two gate-backed dimensions
|
|
51
|
+
* become deliverable again. A dimension absent from this table has no delivery
|
|
52
|
+
* gate, and its floor stays with the earliest source that supports it.
|
|
53
|
+
*/
|
|
54
|
+
export const GATE_SOURCE_FOR_DIMENSION = {
|
|
55
|
+
'functional-completeness': SCOPE_CONTRACT_SOURCE_KEY,
|
|
56
|
+
'existing-functionality-intact': PRE_POST_DIFF_SOURCE_KEY
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* The base list, split from `evidenceSourcesFor` purely for function
|
|
60
|
+
* length — every element is HEAD-verbatim and the two halves keep the
|
|
61
|
+
* allocation order of the original single literal.
|
|
62
|
+
*/
|
|
63
|
+
function baseEvidenceSourcesA(rid) {
|
|
64
|
+
return [
|
|
65
|
+
{
|
|
66
|
+
key: 'qa-test-report',
|
|
67
|
+
label: 'QA execution report (per-command pass/fail counts)',
|
|
68
|
+
segments: ['qa', 'test-reports', `${rid}.md`],
|
|
69
|
+
supports: ['functional-completeness', 'problem-resolution', 'no-new-bugs'],
|
|
70
|
+
delivery: { kind: 'whole' }
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
key: 'qa-test-cases',
|
|
74
|
+
label: 'QA test cases (acceptance-criterion to test mapping)',
|
|
75
|
+
segments: ['qa', 'test-cases', `${rid}.md`],
|
|
76
|
+
supports: ['functional-completeness', 'problem-resolution'],
|
|
77
|
+
delivery: { kind: 'whole' }
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
key: 'qa-security-findings',
|
|
81
|
+
label: 'QA security findings',
|
|
82
|
+
segments: ['qa', `security-findings-${rid}.md`],
|
|
83
|
+
supports: ['no-new-bugs'],
|
|
84
|
+
delivery: { kind: 'whole' }
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
key: 'qa-performance-findings',
|
|
88
|
+
label: 'QA performance findings',
|
|
89
|
+
segments: ['qa', `performance-findings-${rid}.md`],
|
|
90
|
+
supports: ['no-new-bugs'],
|
|
91
|
+
delivery: { kind: 'whole' }
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
key: 'rd-code-review',
|
|
95
|
+
label: 'RD code review',
|
|
96
|
+
segments: ['rd', 'code-review.md'],
|
|
97
|
+
supports: ['no-new-bugs'],
|
|
98
|
+
delivery: { kind: 'whole' }
|
|
99
|
+
}
|
|
100
|
+
];
|
|
101
|
+
}
|
|
102
|
+
function baseEvidenceSourcesB(rid) {
|
|
103
|
+
return [
|
|
104
|
+
{
|
|
105
|
+
key: 'rd-security-review',
|
|
106
|
+
label: 'RD security review',
|
|
107
|
+
segments: ['rd', 'security-review.md'],
|
|
108
|
+
supports: ['no-new-bugs'],
|
|
109
|
+
delivery: { kind: 'whole' }
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
key: 'rd-tech-doc',
|
|
113
|
+
label: 'RD tech doc (public surface / design intent)',
|
|
114
|
+
segments: ['rd', 'tech-doc.md'],
|
|
115
|
+
supports: ['existing-functionality-intact'],
|
|
116
|
+
delivery: { kind: 'whole' }
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
key: 'rd-bug-analysis',
|
|
120
|
+
label: 'RD bug analysis (original problem statement)',
|
|
121
|
+
segments: ['rd', 'bug-analysis.md'],
|
|
122
|
+
supports: ['problem-resolution'],
|
|
123
|
+
delivery: { kind: 'whole' }
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
key: SCOPE_CONTRACT_SOURCE_KEY,
|
|
127
|
+
label: 'PRD handoff (approved scope + non-goals)',
|
|
128
|
+
// One capsule per slice since `2026-09-14-prd-capsule-rid-scoping`; the
|
|
129
|
+
// bare name is the pre-scoping tier and still lives on 3 sessions.
|
|
130
|
+
segments: ['prd', `handoff-${rid}.md`],
|
|
131
|
+
legacySegments: ['prd', 'handoff.md'],
|
|
132
|
+
supports: ['functional-completeness', 'existing-functionality-intact'],
|
|
133
|
+
delivery: { kind: 'whole' }
|
|
134
|
+
}
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
export function baseEvidenceSources(rid) {
|
|
138
|
+
return [...baseEvidenceSourcesA(rid), ...baseEvidenceSourcesB(rid)];
|
|
139
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CapabilityAuditResult } from '../capability-audit-service/types.js';
|
|
2
|
+
export declare function decideFifthDimension(input: {
|
|
3
|
+
readonly audit: CapabilityAuditResult | null;
|
|
4
|
+
readonly nowMs: number;
|
|
5
|
+
}): {
|
|
6
|
+
readonly verdict: 'pass' | 'fail' | 'inconclusive';
|
|
7
|
+
readonly reason: string;
|
|
8
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// src/services/final-review/final-review-fifth-dim.ts
|
|
2
|
+
//
|
|
3
|
+
// The fifth (capability-consistency) dimension: a pure deterministic
|
|
4
|
+
// verdict rule over the guard audit result. Hoisted verbatim from
|
|
5
|
+
// final-review-service.ts (C wave 7 file-size split); the service module
|
|
6
|
+
// re-exports it so the import path is unchanged.
|
|
7
|
+
import { isStale } from '../capability-audit-service/staleness.js';
|
|
8
|
+
export function decideFifthDimension(input) {
|
|
9
|
+
if (input.audit === null)
|
|
10
|
+
return { verdict: 'inconclusive', reason: 'AUDIT_GUARD_NOT_RUN' };
|
|
11
|
+
if (isStale(input.audit.auditedAt, input.nowMs))
|
|
12
|
+
return { verdict: 'inconclusive', reason: 'AUDIT_STALE' };
|
|
13
|
+
if (input.audit.crossCheck.guardVsAudit === 'diverge')
|
|
14
|
+
return { verdict: 'inconclusive', reason: 'AUDIT_CROSS_CHECK_DIVERGE' };
|
|
15
|
+
if (input.audit.verdict === 'consistent')
|
|
16
|
+
return { verdict: 'pass', reason: 'audit consistent' };
|
|
17
|
+
if (input.audit.verdict === 'drifted')
|
|
18
|
+
return { verdict: 'fail', reason: 'audit drifted' };
|
|
19
|
+
return { verdict: 'inconclusive', reason: 'audit inconclusive' };
|
|
20
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import type { PrePostDiffResult } from './pre-post-diff.js';
|
|
2
|
+
import { type CollectedEvidence } from './final-review-evidence-sources.js';
|
|
3
|
+
import type { DimensionEvidence, DimensionKind } from './final-review-types.js';
|
|
4
|
+
/**
|
|
5
|
+
* The honesty guarantee (D1), enforced after parsing rather than merely asked
|
|
6
|
+
* for in the prompt. Prompt instructions are advisory — a model can still
|
|
7
|
+
* answer `pass` — so this pass makes the property structural: a dimension with
|
|
8
|
+
* no supporting evidence on disk is rewritten to `inconclusive` / `low`
|
|
9
|
+
* regardless of what the model returned.
|
|
10
|
+
*
|
|
11
|
+
* A `fail` is never softened: it is already stricter than `inconclusive`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function enforceEvidenceBackedVerdicts(dimensions: readonly DimensionEvidence[], evidenceAvailableFor: ReadonlySet<DimensionKind>): readonly DimensionEvidence[];
|
|
14
|
+
/**
|
|
15
|
+
* The pre/post-diff half of the honesty rule: a `pass` on
|
|
16
|
+
* `existing-functionality-intact` may not outlive the baseline it claims.
|
|
17
|
+
*
|
|
18
|
+
* It fires whenever no baseline was DELIVERED to the reviewer, for EVERY reason:
|
|
19
|
+
* no base ref resolvable, a base that resolves to HEAD itself, a project that is
|
|
20
|
+
* not a git work tree at all, or a baseline that WAS computed but whose source
|
|
21
|
+
* block never reached the prompt (the budget omitted it). The first three are
|
|
22
|
+
* causes of a missing artifact; the last is a missing DELIVERY of an artifact
|
|
23
|
+
* that exists. None of the four is a licence to trust the claim: they are the
|
|
24
|
+
* CAUSE of the missing evidence, and a comparison the reviewer never saw is the
|
|
25
|
+
* absence of an answer, never an answer that came back clean.
|
|
26
|
+
*
|
|
27
|
+
* The earlier version exempted the non-git case, reasoning that "a non-git
|
|
28
|
+
* project would otherwise be permanently red". That reasoning was wrong in the
|
|
29
|
+
* one way this whole primitive exists to prevent: the permanently red verdict is
|
|
30
|
+
* the HONEST one (nothing was ever compared), while green-with-no-evidence is a
|
|
31
|
+
* forged clean handoff. Worse, it pierced the structural gate that
|
|
32
|
+
* `enforceEvidenceBackedVerdicts` exists to be — a `pass` whose supporting
|
|
33
|
+
* evidence is entirely absent is downgraded there, and it must not be let
|
|
34
|
+
* through by supplying a REASON for the absence.
|
|
35
|
+
*
|
|
36
|
+
* The version that followed it keyed on `prePostDiff.status === 'computed'` —
|
|
37
|
+
* "a baseline exists on disk" read as "the reviewer saw one". Those two facts
|
|
38
|
+
* separate the moment the budget omits the block, and the observed output was
|
|
39
|
+
* self-contradicting: the producer's own block said `STATUS: COMPUTED` one line
|
|
40
|
+
* above the source block's `STATUS: MISSING (omitted)`, the model was handed a
|
|
41
|
+
* `pass` it could not have justified, and the service attached the artifact to
|
|
42
|
+
* the dimension as evidence on top. `delivered` is that missing term.
|
|
43
|
+
*
|
|
44
|
+
* The gate also leaves its marker on the dimension whenever it fires, even if
|
|
45
|
+
* that dimension is already non-`pass`: with both gates firing, the earlier
|
|
46
|
+
* version's early return left only the OTHER gate's marker behind, so the
|
|
47
|
+
* envelope could not tell an operator that this gate had run at all.
|
|
48
|
+
*/
|
|
49
|
+
export declare function enforcePrePostDiffAvailability(dimensions: readonly DimensionEvidence[], prePostDiff: PrePostDiffResult, baselineDelivered: boolean): readonly DimensionEvidence[];
|
|
50
|
+
/**
|
|
51
|
+
* F-NIT — `inconclusive` is the one verdict that cannot carry `high`
|
|
52
|
+
* confidence. "I am highly confident that I could not tell" is the schema's
|
|
53
|
+
* one self-contradicting combination, and it reads as a strong statement to the
|
|
54
|
+
* human this envelope is handed to. Both service gates that produce an
|
|
55
|
+
* `inconclusive` a reviewer did not write already write `low`; this closes the
|
|
56
|
+
* same hole for the ones the reviewer DID write, clamping to `medium` (the
|
|
57
|
+
* upper bound `references/4-dimensions.md` documents for this verdict) and
|
|
58
|
+
* leaving a marker so the clamp is auditable rather than silent.
|
|
59
|
+
*
|
|
60
|
+
* `fail` and `pass` are untouched: their confidence says something real.
|
|
61
|
+
*/
|
|
62
|
+
export declare function clampInconclusiveConfidence(dimensions: readonly DimensionEvidence[]): readonly DimensionEvidence[];
|
|
63
|
+
/**
|
|
64
|
+
* The source whose absence from the delivered prompt is a DELIVERY failure for
|
|
65
|
+
* `functional-completeness`: the approved-scope contract.
|
|
66
|
+
*
|
|
67
|
+
* F-SAME-SHAPE — the hole the pre/post-diff gate closes for
|
|
68
|
+
* `existing-functionality-intact` was still open one dimension over. That
|
|
69
|
+
* dimension's rule is "a `pass` may not outlive the source it rests on", and
|
|
70
|
+
* `functional-completeness` is DEFINED against the approved scope and its
|
|
71
|
+
* non-goals — `prd/handoff.md` — but its `pass` only requires SOME source in its
|
|
72
|
+
* SUPPORTS list to be FOUND, and `qa-test-report` (the first source in the
|
|
73
|
+
* order, so the one the budget can never starve) also supports it. Measured on
|
|
74
|
+
* both saturated fixtures: `prd/handoff.md` was inlined with zero bytes on every
|
|
75
|
+
* run while the dimension still came back `pass`/`high` — the contract that
|
|
76
|
+
* says what "complete" meant was never shown to the reviewer judging
|
|
77
|
+
* completeness. Exactly the forged-clean-handoff shape, one dimension over.
|
|
78
|
+
*
|
|
79
|
+
* The delivery test for this source is the module's `whole` rule (`isDelivered`),
|
|
80
|
+
* not "some bytes arrived": the contract is prose whose point is the part a
|
|
81
|
+
* truncation would cut (scope then non-goals), so a partial slice is not a
|
|
82
|
+
* weaker version of the contract — it is a different document, and the reviewer
|
|
83
|
+
* would be judging "complete" against a scope list that stops mid-sentence.
|
|
84
|
+
*
|
|
85
|
+
* The gate deliberately does NOT fire when the contract is `missing` — ENOENT,
|
|
86
|
+
* i.e. the file is absent from the project, whether because the workflow has no
|
|
87
|
+
* PRD phase or because it never wrote one. A workflow with no PRD phase has no
|
|
88
|
+
* contract to lose, and reddening that dimension forever would be the "gate
|
|
89
|
+
* that is always red is noise" failure this primitive already names.
|
|
90
|
+
*
|
|
91
|
+
* F4 — what the gate fires on is the opposite fact: the contract IS there for
|
|
92
|
+
* this run and did not reach the reviewer. `totalBytes === 0` used to stand in
|
|
93
|
+
* for "not there", and it was wider than the comment above it: a 0-byte
|
|
94
|
+
* `prd/handoff.md` is `empty`, not `missing` — the file exists, the PRD phase
|
|
95
|
+
* ran, and the reviewer received no contract at all — yet the early return
|
|
96
|
+
* skipped the gate and let `functional-completeness` come back `pass`/`high`.
|
|
97
|
+
* The same line collapsed `unreadable` (EACCES / EBUSY: the contract exists and
|
|
98
|
+
* this process could not open it) into "no PRD phase". The test is now the
|
|
99
|
+
* STATUS the read phase produced, so "there is nothing to deliver" and "there
|
|
100
|
+
* is something to deliver and it did not arrive" cannot be the same branch.
|
|
101
|
+
*/
|
|
102
|
+
export declare function enforceScopeContractDelivery(dimensions: readonly DimensionEvidence[], collected: readonly CollectedEvidence[], delivered: (item: CollectedEvidence, dimension: DimensionKind) => boolean): readonly DimensionEvidence[];
|
|
103
|
+
/**
|
|
104
|
+
* Attach the computed diff to the dimension as a first-class `pre-post-diff`
|
|
105
|
+
* `EvidenceItem`.
|
|
106
|
+
*
|
|
107
|
+
* The service does this rather than trusting the reviewer to cite the source:
|
|
108
|
+
* the dimension's contract NAMES this evidence kind and this artifact path, and
|
|
109
|
+
* a machine-produced fact that only appears when an LLM remembers to type it is
|
|
110
|
+
* not a guarantee. Appending cannot upgrade a verdict — the gate above has
|
|
111
|
+
* already run, and this only makes the artifact the verdict rests on auditable.
|
|
112
|
+
*
|
|
113
|
+
* It follows the same delivery rule as the gate — it asks the SAME function, on
|
|
114
|
+
* purpose: attaching the artifact to a dimension whose reviewer never received
|
|
115
|
+
* that block would re-create the very contradiction this layer exists to remove
|
|
116
|
+
* — an envelope claiming a `pre-post-diff` evidence item next to an
|
|
117
|
+
* `inconclusive` verdict that says the comparison was never seen.
|
|
118
|
+
*/
|
|
119
|
+
export declare function attachPrePostDiffEvidence(dimensions: readonly DimensionEvidence[], prePostDiff: PrePostDiffResult, baselineDelivered: boolean): readonly DimensionEvidence[];
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// src/services/final-review/final-review-gates.ts
|
|
2
|
+
//
|
|
3
|
+
// The service verdict gates. Hoisted verbatim from final-review-service.ts
|
|
4
|
+
// (C wave 7 file-size split). The three gates that consult the delivery
|
|
5
|
+
// judgement receive it as a parameter (`delivered` / `baselineDelivered`)
|
|
6
|
+
// because the predicate itself stays in the service module — guard C
|
|
7
|
+
// pins isDelivered's single home there — and the service injects it at
|
|
8
|
+
// the call. Every gate body and its measured history comments are
|
|
9
|
+
// HEAD-text; only the parameter names at the three consult sites differ.
|
|
10
|
+
// The pre/post-diff gate is injected as the DELIVERED FACT (a boolean the
|
|
11
|
+
// service measured on the collected evidence) rather than the evidence
|
|
12
|
+
// array, because every fact it branches on is already in that boolean
|
|
13
|
+
import { SCOPE_CONTRACT_SOURCE_KEY } from './final-review-evidence-sources.js';
|
|
14
|
+
/**
|
|
15
|
+
* The honesty guarantee (D1), enforced after parsing rather than merely asked
|
|
16
|
+
* for in the prompt. Prompt instructions are advisory — a model can still
|
|
17
|
+
* answer `pass` — so this pass makes the property structural: a dimension with
|
|
18
|
+
* no supporting evidence on disk is rewritten to `inconclusive` / `low`
|
|
19
|
+
* regardless of what the model returned.
|
|
20
|
+
*
|
|
21
|
+
* A `fail` is never softened: it is already stricter than `inconclusive`.
|
|
22
|
+
*/
|
|
23
|
+
export function enforceEvidenceBackedVerdicts(dimensions, evidenceAvailableFor) {
|
|
24
|
+
return dimensions.map((dimension) => {
|
|
25
|
+
if (dimension.verdict !== 'pass')
|
|
26
|
+
return dimension;
|
|
27
|
+
if (evidenceAvailableFor.has(dimension.dimension))
|
|
28
|
+
return dimension;
|
|
29
|
+
const downgraded = {
|
|
30
|
+
...dimension,
|
|
31
|
+
verdict: 'inconclusive',
|
|
32
|
+
confidence: 'low',
|
|
33
|
+
summary: `${dimension.summary} [evidence-gate: verdict downgraded from "pass" to "inconclusive" — no on-disk evidence source supporting "${dimension.dimension}" was available to the reviewer.]`
|
|
34
|
+
};
|
|
35
|
+
return downgraded;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The pre/post-diff half of the honesty rule: a `pass` on
|
|
40
|
+
* `existing-functionality-intact` may not outlive the baseline it claims.
|
|
41
|
+
*
|
|
42
|
+
* It fires whenever no baseline was DELIVERED to the reviewer, for EVERY reason:
|
|
43
|
+
* no base ref resolvable, a base that resolves to HEAD itself, a project that is
|
|
44
|
+
* not a git work tree at all, or a baseline that WAS computed but whose source
|
|
45
|
+
* block never reached the prompt (the budget omitted it). The first three are
|
|
46
|
+
* causes of a missing artifact; the last is a missing DELIVERY of an artifact
|
|
47
|
+
* that exists. None of the four is a licence to trust the claim: they are the
|
|
48
|
+
* CAUSE of the missing evidence, and a comparison the reviewer never saw is the
|
|
49
|
+
* absence of an answer, never an answer that came back clean.
|
|
50
|
+
*
|
|
51
|
+
* The earlier version exempted the non-git case, reasoning that "a non-git
|
|
52
|
+
* project would otherwise be permanently red". That reasoning was wrong in the
|
|
53
|
+
* one way this whole primitive exists to prevent: the permanently red verdict is
|
|
54
|
+
* the HONEST one (nothing was ever compared), while green-with-no-evidence is a
|
|
55
|
+
* forged clean handoff. Worse, it pierced the structural gate that
|
|
56
|
+
* `enforceEvidenceBackedVerdicts` exists to be — a `pass` whose supporting
|
|
57
|
+
* evidence is entirely absent is downgraded there, and it must not be let
|
|
58
|
+
* through by supplying a REASON for the absence.
|
|
59
|
+
*
|
|
60
|
+
* The version that followed it keyed on `prePostDiff.status === 'computed'` —
|
|
61
|
+
* "a baseline exists on disk" read as "the reviewer saw one". Those two facts
|
|
62
|
+
* separate the moment the budget omits the block, and the observed output was
|
|
63
|
+
* self-contradicting: the producer's own block said `STATUS: COMPUTED` one line
|
|
64
|
+
* above the source block's `STATUS: MISSING (omitted)`, the model was handed a
|
|
65
|
+
* `pass` it could not have justified, and the service attached the artifact to
|
|
66
|
+
* the dimension as evidence on top. `delivered` is that missing term.
|
|
67
|
+
*
|
|
68
|
+
* The gate also leaves its marker on the dimension whenever it fires, even if
|
|
69
|
+
* that dimension is already non-`pass`: with both gates firing, the earlier
|
|
70
|
+
* version's early return left only the OTHER gate's marker behind, so the
|
|
71
|
+
* envelope could not tell an operator that this gate had run at all.
|
|
72
|
+
*/
|
|
73
|
+
export function enforcePrePostDiffAvailability(dimensions, prePostDiff, baselineDelivered) {
|
|
74
|
+
if (prePostDiff.status === 'computed' && baselineDelivered)
|
|
75
|
+
return dimensions;
|
|
76
|
+
const why = prePostDiff.status !== 'computed'
|
|
77
|
+
? prePostDiff.inGitWorkTree
|
|
78
|
+
? 'this is a git work tree, but no pre/post baseline diff could be produced for this run'
|
|
79
|
+
: 'this project is not a git work tree, so no pre/post baseline diff can exist for it'
|
|
80
|
+
: 'a baseline WAS computed for this run, but its source block was not delivered into the reviewer prompt (the evidence budget omitted it), so the reviewer never saw the comparison it would have to rest on';
|
|
81
|
+
const reason = prePostDiff.status === 'computed'
|
|
82
|
+
? 'the artifact exists on disk but did not reach the reviewer'
|
|
83
|
+
: prePostDiff.reason;
|
|
84
|
+
return dimensions.map((dimension) => {
|
|
85
|
+
if (dimension.dimension !== 'existing-functionality-intact')
|
|
86
|
+
return dimension;
|
|
87
|
+
const marker = `[pre-post-diff-gate: ${dimension.verdict === 'pass'
|
|
88
|
+
? 'verdict downgraded from "pass" to "inconclusive"'
|
|
89
|
+
: `gate ran; verdict "${dimension.verdict}" is already non-"pass" and is left unchanged`} — ${why}. Reason: ${reason}]`;
|
|
90
|
+
const annotated = {
|
|
91
|
+
...dimension,
|
|
92
|
+
summary: `${dimension.summary} ${marker}`
|
|
93
|
+
};
|
|
94
|
+
if (dimension.verdict !== 'pass')
|
|
95
|
+
return annotated;
|
|
96
|
+
return { ...annotated, verdict: 'inconclusive', confidence: 'low' };
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* F-NIT — `inconclusive` is the one verdict that cannot carry `high`
|
|
101
|
+
* confidence. "I am highly confident that I could not tell" is the schema's
|
|
102
|
+
* one self-contradicting combination, and it reads as a strong statement to the
|
|
103
|
+
* human this envelope is handed to. Both service gates that produce an
|
|
104
|
+
* `inconclusive` a reviewer did not write already write `low`; this closes the
|
|
105
|
+
* same hole for the ones the reviewer DID write, clamping to `medium` (the
|
|
106
|
+
* upper bound `references/4-dimensions.md` documents for this verdict) and
|
|
107
|
+
* leaving a marker so the clamp is auditable rather than silent.
|
|
108
|
+
*
|
|
109
|
+
* `fail` and `pass` are untouched: their confidence says something real.
|
|
110
|
+
*/
|
|
111
|
+
export function clampInconclusiveConfidence(dimensions) {
|
|
112
|
+
return dimensions.map((dimension) => {
|
|
113
|
+
if (dimension.verdict !== 'inconclusive' || dimension.confidence !== 'high')
|
|
114
|
+
return dimension;
|
|
115
|
+
return {
|
|
116
|
+
...dimension,
|
|
117
|
+
confidence: 'medium',
|
|
118
|
+
summary: `${dimension.summary} [confidence-gate: confidence clamped from "high" to "medium" — an "inconclusive" verdict cannot be highly confident that it could not tell.]`
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The source whose absence from the delivered prompt is a DELIVERY failure for
|
|
124
|
+
* `functional-completeness`: the approved-scope contract.
|
|
125
|
+
*
|
|
126
|
+
* F-SAME-SHAPE — the hole the pre/post-diff gate closes for
|
|
127
|
+
* `existing-functionality-intact` was still open one dimension over. That
|
|
128
|
+
* dimension's rule is "a `pass` may not outlive the source it rests on", and
|
|
129
|
+
* `functional-completeness` is DEFINED against the approved scope and its
|
|
130
|
+
* non-goals — `prd/handoff.md` — but its `pass` only requires SOME source in its
|
|
131
|
+
* SUPPORTS list to be FOUND, and `qa-test-report` (the first source in the
|
|
132
|
+
* order, so the one the budget can never starve) also supports it. Measured on
|
|
133
|
+
* both saturated fixtures: `prd/handoff.md` was inlined with zero bytes on every
|
|
134
|
+
* run while the dimension still came back `pass`/`high` — the contract that
|
|
135
|
+
* says what "complete" meant was never shown to the reviewer judging
|
|
136
|
+
* completeness. Exactly the forged-clean-handoff shape, one dimension over.
|
|
137
|
+
*
|
|
138
|
+
* The delivery test for this source is the module's `whole` rule (`isDelivered`),
|
|
139
|
+
* not "some bytes arrived": the contract is prose whose point is the part a
|
|
140
|
+
* truncation would cut (scope then non-goals), so a partial slice is not a
|
|
141
|
+
* weaker version of the contract — it is a different document, and the reviewer
|
|
142
|
+
* would be judging "complete" against a scope list that stops mid-sentence.
|
|
143
|
+
*
|
|
144
|
+
* The gate deliberately does NOT fire when the contract is `missing` — ENOENT,
|
|
145
|
+
* i.e. the file is absent from the project, whether because the workflow has no
|
|
146
|
+
* PRD phase or because it never wrote one. A workflow with no PRD phase has no
|
|
147
|
+
* contract to lose, and reddening that dimension forever would be the "gate
|
|
148
|
+
* that is always red is noise" failure this primitive already names.
|
|
149
|
+
*
|
|
150
|
+
* F4 — what the gate fires on is the opposite fact: the contract IS there for
|
|
151
|
+
* this run and did not reach the reviewer. `totalBytes === 0` used to stand in
|
|
152
|
+
* for "not there", and it was wider than the comment above it: a 0-byte
|
|
153
|
+
* `prd/handoff.md` is `empty`, not `missing` — the file exists, the PRD phase
|
|
154
|
+
* ran, and the reviewer received no contract at all — yet the early return
|
|
155
|
+
* skipped the gate and let `functional-completeness` come back `pass`/`high`.
|
|
156
|
+
* The same line collapsed `unreadable` (EACCES / EBUSY: the contract exists and
|
|
157
|
+
* this process could not open it) into "no PRD phase". The test is now the
|
|
158
|
+
* STATUS the read phase produced, so "there is nothing to deliver" and "there
|
|
159
|
+
* is something to deliver and it did not arrive" cannot be the same branch.
|
|
160
|
+
*/
|
|
161
|
+
export function enforceScopeContractDelivery(dimensions, collected, delivered) {
|
|
162
|
+
const block = collected.find((item) => item.source.key === SCOPE_CONTRACT_SOURCE_KEY);
|
|
163
|
+
if (block === undefined || block.status === 'missing')
|
|
164
|
+
return dimensions;
|
|
165
|
+
if (delivered(block, 'functional-completeness'))
|
|
166
|
+
return dimensions;
|
|
167
|
+
return dimensions.map((dimension) => {
|
|
168
|
+
if (dimension.dimension !== 'functional-completeness')
|
|
169
|
+
return dimension;
|
|
170
|
+
const marker = `[scope-contract-gate: ${dimension.verdict === 'pass'
|
|
171
|
+
? 'verdict downgraded from "pass" to "inconclusive"'
|
|
172
|
+
: `gate ran; verdict "${dimension.verdict}" is already non-"pass" and is left unchanged`} — the approved-scope contract (${block.relativePath}) exists for this run, but it did not reach the reviewer in full (${block.includedBytes} of ${block.totalBytes} bytes, status "${block.status}"), so "functional-completeness" was judged without the scope and non-goals it is defined against. Reason: ${block.reason || 'inlined only in part'}]`;
|
|
173
|
+
const annotated = {
|
|
174
|
+
...dimension,
|
|
175
|
+
summary: `${dimension.summary} ${marker}`
|
|
176
|
+
};
|
|
177
|
+
if (dimension.verdict !== 'pass')
|
|
178
|
+
return annotated;
|
|
179
|
+
return { ...annotated, verdict: 'inconclusive', confidence: 'low' };
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Attach the computed diff to the dimension as a first-class `pre-post-diff`
|
|
184
|
+
* `EvidenceItem`.
|
|
185
|
+
*
|
|
186
|
+
* The service does this rather than trusting the reviewer to cite the source:
|
|
187
|
+
* the dimension's contract NAMES this evidence kind and this artifact path, and
|
|
188
|
+
* a machine-produced fact that only appears when an LLM remembers to type it is
|
|
189
|
+
* not a guarantee. Appending cannot upgrade a verdict — the gate above has
|
|
190
|
+
* already run, and this only makes the artifact the verdict rests on auditable.
|
|
191
|
+
*
|
|
192
|
+
* It follows the same delivery rule as the gate — it asks the SAME function, on
|
|
193
|
+
* purpose: attaching the artifact to a dimension whose reviewer never received
|
|
194
|
+
* that block would re-create the very contradiction this layer exists to remove
|
|
195
|
+
* — an envelope claiming a `pre-post-diff` evidence item next to an
|
|
196
|
+
* `inconclusive` verdict that says the comparison was never seen.
|
|
197
|
+
*/
|
|
198
|
+
export function attachPrePostDiffEvidence(dimensions, prePostDiff, baselineDelivered) {
|
|
199
|
+
if (prePostDiff.status !== 'computed' || !baselineDelivered)
|
|
200
|
+
return dimensions;
|
|
201
|
+
const item = {
|
|
202
|
+
kind: 'pre-post-diff',
|
|
203
|
+
description: prePostDiff.summary,
|
|
204
|
+
artifact: prePostDiff.relativePath
|
|
205
|
+
};
|
|
206
|
+
return dimensions.map((dimension) => {
|
|
207
|
+
if (dimension.dimension !== 'existing-functionality-intact')
|
|
208
|
+
return dimension;
|
|
209
|
+
const alreadyPresent = dimension.evidence.some((existing) => existing.kind === 'pre-post-diff' && existing.artifact === item.artifact);
|
|
210
|
+
if (alreadyPresent)
|
|
211
|
+
return dimension;
|
|
212
|
+
return { ...dimension, evidence: [...dimension.evidence, item] };
|
|
213
|
+
});
|
|
214
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Floor — also the value that shipped before this fix, so no evidence set can
|
|
3
|
+
* end up with a smaller budget than it had. ~3000 tokens is enough for the
|
|
4
|
+
* envelope skeleton plus a short paragraph per dimension.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MIN_OUTPUT_TOKENS = 3000;
|
|
7
|
+
/**
|
|
8
|
+
* Headroom for the part of the reply that is not the envelope.
|
|
9
|
+
*
|
|
10
|
+
* A Messages-API-compatible endpoint applies `max_tokens` to the WHOLE
|
|
11
|
+
* response, and a reasoning model spends it on hidden reasoning before it
|
|
12
|
+
* emits a single character of the 4-dim envelope. Measured on this repo's own
|
|
13
|
+
* machine (2026-09-12, rid `2026-09-12-codegraph-exclude-integrity`,
|
|
14
|
+
* `deepseek-flash[1M]` via `api.deepseek.com/anthropic`): `max_tokens=8192`
|
|
15
|
+
* came back with `output_tokens=8192` and only **574** visible characters —
|
|
16
|
+
* the entire budget went to reasoning. A bytes-per-token estimate of the
|
|
17
|
+
* visible output cannot see that cost, which is why the previous formula
|
|
18
|
+
* budgeted 7096 for a reply that needs 10108 — and why a 13240 budget still
|
|
19
|
+
* truncated on 2 of 10 real runs.
|
|
20
|
+
*
|
|
21
|
+
* 12288 (12 KiB) is sized so the largest evidence pack the input caps allow
|
|
22
|
+
* lands at 25528 (see the formula below; the input cap is 40 KiB as of the
|
|
23
|
+
* F-BLOCK re-evaluation, and this floor was checked against the raised cap, not
|
|
24
|
+
* against the 32 KiB the measurements above were taken at — a 12 KiB headroom
|
|
25
|
+
* under a bigger cap is the conservative direction) — about 1.9x the largest
|
|
26
|
+
* value ever OBSERVED to truncate (13240), which is the margin the observed
|
|
27
|
+
* variance asks for. The numbers are in the block comment above.
|
|
28
|
+
*/
|
|
29
|
+
export declare const REASONING_HEADROOM_TOKENS = 12288;
|
|
30
|
+
/**
|
|
31
|
+
* Ceiling, 32_000: the value a real run on this machine was forced to in order
|
|
32
|
+
* to complete the envelope at all, and the largest this endpoint was observed
|
|
33
|
+
* to accept. 16384 was tried first and truncated 2/10 — a ceiling that is
|
|
34
|
+
* merely "above the last successful measurement" is not above the requirement,
|
|
35
|
+
* because the requirement moves with the model's reasoning spend.
|
|
36
|
+
*
|
|
37
|
+
* A model that caps output at 8192 will refuse this. That is still strictly
|
|
38
|
+
* better than shipping a budget measured to be too small, and the env lever
|
|
39
|
+
* below lets an operator pull it down without a code change.
|
|
40
|
+
*/
|
|
41
|
+
export declare const MAX_OUTPUT_TOKENS = 32000;
|
|
42
|
+
/**
|
|
43
|
+
* Environment lever. The old failure message told the operator to "raise the
|
|
44
|
+
* budget" while the budget was a module constant with no CLI flag and no env
|
|
45
|
+
* var — an instruction that could not be carried out from any surface the
|
|
46
|
+
* operator has. This is that lever.
|
|
47
|
+
*
|
|
48
|
+
* The value is the output ceiling in tokens; it OVERRIDES the derivation below
|
|
49
|
+
* (it is not a bonus added to it). Unset/invalid/out-of-range handling is in
|
|
50
|
+
* `resolveOutputBudget`.
|
|
51
|
+
*/
|
|
52
|
+
export declare const MAX_OUTPUT_TOKENS_ENV = "PEAKS_FINAL_REVIEW_MAX_OUTPUT_TOKENS";
|
|
53
|
+
/**
|
|
54
|
+
* Absolute upper bound the env lever may reach. An endpoint that accepts
|
|
55
|
+
* `max_tokens` at all accepts this; anything above it is a typo (a stray extra
|
|
56
|
+
* digit), not an intent, and clamping is safer than sending it.
|
|
57
|
+
*/
|
|
58
|
+
export declare const HARD_MAX_OUTPUT_TOKENS = 64000;
|
|
59
|
+
/**
|
|
60
|
+
* Inlined bytes that buy one extra output token — 4:1.
|
|
61
|
+
*
|
|
62
|
+
* This term prices the visible envelope (4 x `summary` + `evidence[]` +
|
|
63
|
+
* `confidence` + `overallSummary`) against the evidence the model is required
|
|
64
|
+
* to cite. It was 8:1, which put the 32 KiB pack at 4096 tokens of visible
|
|
65
|
+
* output; the same pack has been observed to complete at 10108 and to truncate
|
|
66
|
+
* at 13240, so 8:1 was pricing the visible side BELOW its own measurement.
|
|
67
|
+
* 4:1 doubles it to 8192. It is still not treated as the whole budget — see
|
|
68
|
+
* `REASONING_HEADROOM_TOKENS`.
|
|
69
|
+
*/
|
|
70
|
+
export declare const EVIDENCE_BYTES_PER_OUTPUT_TOKEN = 4;
|
|
71
|
+
/**
|
|
72
|
+
* Output ceiling for a call whose prompt carries `includedEvidenceBytes` bytes
|
|
73
|
+
* of inlined evidence. Pure, total, and clamped on both ends — the same
|
|
74
|
+
* evidence pack always yields the same budget.
|
|
75
|
+
*/
|
|
76
|
+
export declare function outputBudgetForEvidence(includedEvidenceBytes: number): number;
|
|
77
|
+
/**
|
|
78
|
+
* The budget the call actually uses: the derived one, unless
|
|
79
|
+
* `PEAKS_FINAL_REVIEW_MAX_OUTPUT_TOKENS` overrides it.
|
|
80
|
+
*
|
|
81
|
+
* An override that is not a positive integer THROWS rather than being ignored:
|
|
82
|
+
* a silent fallback would leave an operator who passed a bad value with the
|
|
83
|
+
* exact experience this lever exists to remove — a budget they cannot move.
|
|
84
|
+
* Out-of-range values are clamped, not rejected, so a model needing more than
|
|
85
|
+
* `HARD_MAX_OUTPUT_TOKENS` (or a model needing less than `MIN_OUTPUT_TOKENS`)
|
|
86
|
+
* still gets a call made.
|
|
87
|
+
*/
|
|
88
|
+
export declare function resolveOutputBudget(includedEvidenceBytes: number, env?: NodeJS.ProcessEnv): number;
|