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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,79 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.1.0 — 2026-10-03 (strict-remediation 战役收口: 门禁第一次开始看自己、判据换成"哪些代码是产品"、以及一次把自己推翻的探针)
|
|
4
|
+
|
|
5
|
+
**版本级别**: 未发布区间 `v4.0.54..HEAD` 共 **167 个 commit**(49 refactor / 42 docs / 35 fix / 8 feat / 6 test / 15 chore / 1 style)。取 **minor** 而不是继续 patch,理由是这区间有**新增的用户可见 CLI 表面**(`peaks job add-slice`)以及若干会改变用户所见的修复(cron 超时、`pnpm lint` 的口径、空测试集从"绿"变"红");`^4.0.54` 的下游仍能匹配到本版。
|
|
6
|
+
|
|
7
|
+
### 1. `peaks job` 不再自相矛盾(§2.38,本版本唯一"新增命令")
|
|
8
|
+
|
|
9
|
+
三条都是先在临时仓库里**跑出来**再修的:(a) `init` 之后没有任何办法给已有 job 追加 slice,`checkpoint` 回 `SLICE_NOT_FOUND`,于是"一片一片发现的 wave"只能谎报账本或一片开一个 job;(b) `checkpoint --commit-sha` 原先**只校验长度 ≥7**,一个 `git cat-file` 判定"不是有效对象"的 `c6de09a9` 被接受并写成 `lastCommitSha`;(c) `progress` 的 `currentSlice` 是 `slice-<done+1>` **合成出来的 id**,所以工具自己建议下一步、又自己拒绝那一步——第三条是第一条的成因。现在:`peaks job add-slice --slice-label` 幂等(重复 label 报知且 `state.json` 字节不变、空 label 拒绝);sha 必须可解析才写入,拒绝时引用 git 原话且账本一字节不动;`describeNextSlice` 成为 `#N of M` 的**唯一**出口(原先三处各自算),并把"全部完成"从 `Next: slice #3 of 2 (no slice pending)` 改成 `no further slice is registered — add one with: peaks job add-slice …`,实测该分支下 `slice #` 出现 **0 次**。附带撤回 backlog 自己原先写的"checkpoint 应该记录未知 slice 而不是拒绝"——拒绝未声明的 id 正是账本唯一的防线。
|
|
10
|
+
|
|
11
|
+
### 2. cron 的三处名实不符(用户可见行为)
|
|
12
|
+
|
|
13
|
+
`EXEC_TIMEOUT_MS` 在名字叫"五分钟"的地方是**五小时**;超时不再收割任务子进程(孤儿活在大门之后);daemon 与 run-once 两个写者对 `lastRunAt` 各有各的规则。现在同一 killed 规则覆盖两条路径,killed 记录带得出 killed 标记与非空 stderr,普通失败给不出这个形状。
|
|
14
|
+
|
|
15
|
+
### 3. 假绿被系统性关掉(三处)
|
|
16
|
+
|
|
17
|
+
包内测试集为空从"通过"变成"失败"并补上 CI 步骤;`emit` 检查改为**递归**,嵌套 emit 不能再不吭声地消失;stamp 写入改为原子,且守卫不再为自己验证不了的东西背书;build-integrity 的包集合与 gate 对齐(不一致就拒),空 stamp 记录直接拒。
|
|
18
|
+
|
|
19
|
+
### 4. `pnpm lint` 与门禁终于量同一个集合
|
|
20
|
+
|
|
21
|
+
原先 `peaks lint` 报的是 1259 而 `peaks-gate.mjs repo` 量 1298(少 80 条 finding 却仍打印"全部守住")——因为 gate 里那份扩展名/目录正则是规则的**第二份写法**、没有任何测试观察它。现在只有一个列表、一处过滤,两边由 parity 测试互相钉住;`.peaks/lint/baseline.json` 也修成可移植路径,**waiver 真的在豁免**(此前它按绝对路径匹配,等于静默不豁免)。
|
|
22
|
+
|
|
23
|
+
### 5. 判据换掉:严格检查属于"产品代码",出界部分只测不闸
|
|
24
|
+
|
|
25
|
+
owner 明确「只需要对 `src` 与 `packages/*/src` 这些目录下的文件做 eslint 严格检查、tscheck、prettier」,取代原先"四个目录"的口径。被排除的 552→575 个文件(`tests/`、`scripts/`、包内非 `src`)**不是删掉的债**——`eslintFindings 638`、`fileSizeExcessLines 13557` 仍每次测量并打印,只是不设 ceiling;`shadow` 块承担这笔账,并在上升时主动播报(实测今天连报 `638 → 639 → 641 → 648`,而受闸一侧同期 `2130 → 2128`)。配套把 `--rescope` 的触发条件从"数值变了"改成**"边界文本变了,或有文件离开了范围"**——纯长大免 flag 并打印 `scope grew: 950 -> 952 (7 entered, 0 left the scope)`,因为总体变大只会让计数上升,而任何上升都照旧被 `RAISED` 拒绝:**松的是仪式,不是 ratchet**。
|
|
26
|
+
|
|
27
|
+
### 6. 门禁第一次开始看自己
|
|
28
|
+
|
|
29
|
+
`.husky/` 原先不在任何行数口径里(`peaks-gate.mjs` 1019 行、3.3× 它自己 enforced 的 cap,而它贡献 0)。现在它有**自己的两行**且全程未动主口径(`fileSizeOverCap` 始终 162→126),四个 slice 把 gate 目录从 **4 文件 / 1,701 超实行降到 33+ 文件 / 0**;799 行的生成器与 1,019 行的入口都被拆开,每一次拆分都带**等价手臂**(拆分前后逐行多重集守恒 + 对 `git show` 钉 sha 的行为对照),因为"重构看起来没动"不等于"证明没动"。`silent-warning` 成为最后一条自择总体的腿,收口后它和其余腿共用同一份跟踪列表——顺带数出**17 处此前没有任何 ceiling 见过的静默吞异常**(16 处集中在 `packages/peaks-loop-mut/src/services/agent/ecc-cache-service.ts`,该文件同时欠 537 行)。
|
|
30
|
+
|
|
31
|
+
### 7. 一条被自己的探针推翻的结论(保留为记录,不删)
|
|
32
|
+
|
|
33
|
+
本版曾断言"全局 `npm i -g` 会静默跳过 `install-skills`,用户装到 CLI 却拿不到 skills"。一个 `mkprobe` 探针包(`postinstall` 写 marker 文件)在 **npm 11.19.0** 上两次都**执行了**脚本——该版本的 `install-scripts` 警告是告知性的,`ignore-scripts` 为 `false`;而"skills 目录 45 项未变"正是 `install-skills` **按内容 hash 幂等**的成功样子。教训写进 backlog §2.52a:**no-op 和 skip 给出同一份证据**,"工具 X 不肯做 Y"这种结论,先花一秒把 X 跑一遍。仍然成立的两点:npm 自己说这些脚本"尚未被覆盖"、翻默认在即(二手报道指 v12,本次未能取到一手来源),届时 `--allow-scripts=peaks-loop` 是唯一防线,故两版 README 的安装段落现在写明;以及本仓 `.npmrc` 携 pnpm 的 `onlyBuiltDependencies`(外加一个连字符重复项),npm 每次调用都报未知并声明下个大版本失效——**pnpm 侧有一条放行、npm 侧为空**。
|
|
34
|
+
|
|
35
|
+
### 验证
|
|
36
|
+
|
|
37
|
+
`gate repo` exit 0(943→952 文件、hooks 行 0/0)、`tsc -p tsconfig.json --noEmit` 0、`pnpm test:unit` **379 文件 / 3,915 passed / 3 skipped**、`npm run build` 0(`build-integrity: OK`,`dist-stamp: 907 source file(s)`)。战役过程与全部自我推翻记录在 `.peaks/docs/backlog.md` §2.25–§2.52a、`.peaks/docs/lint-gate.md` §4n–§4z。
|
|
38
|
+
|
|
39
|
+
## 4.0.54 — 2026-09-18 (Phase A 缺陷闭合十片: 9 片真改 + 3 次修复推翻自己 + 4.0.53 宣称闭合的 AC 里 2 个被证伪 — AC-6 是假 pin、AC-1 是空 pin)
|
|
40
|
+
|
|
41
|
+
**Highlights**:
|
|
42
|
+
|
|
43
|
+
1. **4.0.53 宣称闭合的 AC 里有 2 个是假的 (D 组, 本会话最重要的发现).** 不是"改错了"也不是"没做完", 是**测试通过但断言的不是它说自己断言的东西**:
|
|
44
|
+
- **AC-6 是假 pin**: `karpathy-injection.test.ts` 之所以绿, 是因为 `karpathy-reviewer` 这个**角色名里含有**它要找的 anchor 字符串 —— 断言的是文件名, 不是被注入的规则块。实测: 从块里删掉一个 canonical anchor, 旧测试仍 4 passed / exit 0, 改写后的测试 exit 1。现在 pin 的是四层注入 + 一个六-bee 作用域锁, 规则正文一字未动。
|
|
45
|
+
- **AC-1 是空 pin**: 它 pin 的模块 13/13 导出在 `src/`、`packages/`、`scripts/` (865 个文件) 里**零引用**, 唯一消费者是它自己的测试。pin 住一个没有调用者的死表面, 和没 pin 没有区别。
|
|
46
|
+
- 同组顺带纠正: AC-3 合并了两个完全相同的 case 并删掉一处**从未被断言**的 `skillMd` 读取 (它本想支撑的那条声明不存在, `grep -c` = 0; 留着等于为迁就一个坏测试而发明一条产品义务); AC-4 一直在 pin LLM-arbitrator 的预算, 而披露文字说的是周期性 checkpoint cadence —— cadence 现在有自己的测试, 并修好 D1 漏掉的一处过期指针。
|
|
47
|
+
|
|
48
|
+
2. **4.0.51 那句「49」句内自相矛盾.** `1 + 20 + 2` 之和是 23, 而同一句话写的是 21; 六个 dangling cross-ref 其实是 12 处指向 8 个目标。所以 49 是**混合单位的和**。「两个从未存在过」的标签被对调 (一个确实存在过 `3c82c797`、于 `f17aa377` 删除, 另一个真的从未存在), 同一处错误第三次出现在守卫自己的 header 里, 现已改名为 `d3a45d45`。声明改写为「在所有存活对象里都不存在」—— `backup-main-pre-rewrite` tag 表明历史被重写过, 无条件断言「从未存在」在本仓不可证。
|
|
49
|
+
|
|
50
|
+
3. **第三个 reach gap: 带行号的引用此前不可见.** `PATH_SHAPED` 的字符类排除了 `:`, 所以写成 `path.md:127` 的引用完全看不见。`git log -G` 显示**没有任何 commit 把 `:` 放进过那个字符类** —— 它随 `276161d5` 整体到达, 是一次事实上的排除、不是一个写下的决定。`LINE_SUFFIX` 现在先剥掉尾部 `:digits` 再做形状判定与 `exists` 检查, 实测 804 处含冒号的 span 里 0 条是真引用。把字符类直接放宽会报 11 条, 且 11/11 都指向**真实存在**的文件 —— 所以修复是方向性的, 不是数量问题。它暴露出的唯一一条悬空引用在 `skills/peaks-final-review/SKILL.md:233`, 按 4.0.51 的方式处置 (披露而非删除), 因为不存在活的后继文件。
|
|
51
|
+
|
|
52
|
+
4. **三个守卫看不见自己在被削弱 (C1–C4).** 三者都不是「没在检查」, 而是**活着的检查, 但观察不到自己的削弱** —— 它们抓得住「删除」抓不住「削弱」:
|
|
53
|
+
- `vitest-concurrency-guard` 对整文件匹配 `/maxWorkers,?\s*$/m`, 于是 `// maxWorkers,` 也满足: 把配置行注释掉, 六条断言全绿。现在断言作用在**生效行**上 (注释行先被过滤)。
|
|
54
|
+
- `publish-tag-strict` 断言某字面量在 workflow 里出现过, 于是把 `[[ =~ ]]` 操作数放宽成 `^v.+$` 后四条仍全绿。现在直接断言操作数本身。`capability-glossary` 补上同样的第二条臂。
|
|
55
|
+
- 删掉这些断言会是净损失 —— 上一轮的「删守卫」臂仍然会红 (2 / 4 failed), 现在两种形态都覆盖。只有 rotation 守卫的第 4 个分支**真的不可判定**, 三种方式确认 (结构上: 它的条件蕴含它所守卫分支的否定)。
|
|
56
|
+
- `authkey` / `authkeys` 加入敏感标题词表。此前一次同类新增**零覆盖** (`grep tests/` 什么都找不到, 删掉它不会弄红任何测试) —— 正是本组存在的理由。现有 3 个正控 + 1 个负控 (`authkeyboard layout`), 把匹配器放宽成子串语义时会红 (实测放宽后 6 条变红)。
|
|
57
|
+
|
|
58
|
+
5. **记忆标题的假拒绝 (C0).** `peaks memory extract` 拒绝标题「Derive from the auth-ority, never re-declare it」, 报 `Refusing to store sensitive memory content`, 补救文案写「remove secrets」。没有 secret。根因: `assertSafeMemory` 的第三项检查 `isSensitiveConfigPath(memory.title)` 是给配置**键**写的谓词, 做子串匹配 —— `authority` 命中 `auth`、`tokenizer` 命中 `token`、`secretary` 命中 `secret`。用在散文上就拒绝散文, 并把读者引去寻找一个不存在的东西。新增为散文而建的 `findSensitiveMemoryTitleTerm` (词-run 匹配、camelCase 感知、返回命中词)。标题检查**保留而非删除**: `hasSensitiveMemoryContent` 锚在 `:` / `=` 上, 裸 `apiKey` 标题没有别的检查能抓到 (实测确认)。`UnsafeMemoryError { check, matchedTerm }` 让每项检查报出自己是谁, 补救文案按 `error.check` 路由而不是按消息文本; `hasSensitiveMemoryContent` 逐字节未变 (671 B, 两侧同 sha)。附带修掉的第二个缺陷: `fail()` 会把每条失败消息过一遍 `redactSensitiveErrorMessage`, 其兜底正则把消息**存在意义**要报告的词改写掉, 产出 `an [redacted] / [redacted] / [redacted] assignment` —— 现在命中词走结构化 `data.matchedTerm` 字段, 散文避开目标词, 脱敏器本身未动。
|
|
59
|
+
|
|
60
|
+
6. **`gateEvidence` 从死表面变成端到端可达 (B).** 它此前被四种互不兼容的方式描述: reader 解析 `string[]`; 它自己的 header 注释把字符串称作「gate names」并声称 `initHandoff` 会写它; 测试用路径数组并承认 `initHandoff` 不接受这个字段; schema 参考规定的是五键到路径的 map 并说「缺键 → Gate C failure」; 而 Gate C 从不读它 —— `grep -rn gateEvidence src/` 只命中一个文件。现在它是**派生而非传入**的五键 map, 每个生产者都写、Gate C 校验: 新增 `deriveGateEvidence` 读 `getPrerequisitesFor('rd', 'qa-handoff', type)` (与闸门**同一张表**, 所以无法漂移); 三个生产者都派生并写入; **没有 CLI flag** —— 让用户传入等于要求他手写 JSON, 本项目禁止; Gate C 校验声明的路径存在, 并在 `PREREQUISITES_MISSING` 里点名出错的键。reader 变成 7 态判别联合 (旧的把「什么都没声明」和「声明了但损坏」塌缩成同一个 `null`)。**第一轮交付时测试全绿却完全不可达** —— 三个写入方什么都没传, 该字段只有测试能碰到; QA 跑真 CLI 读文件才发现。上面那条验收, 就是把那次失败变成一条检查。
|
|
61
|
+
|
|
62
|
+
7. **文档迁移与 manifest 守卫 (E1–E2).** `docs/` 里混着两类东西: superpowers 计划/规格散文 (属于那里) 和四份 peaks-loop 自有文档 (不属于)。四份用 `git mv` 迁到新的 `.peaks/docs/`, 全部记录为 100% rename 所以历史保留; 七个活引用同步更新。`CHANGELOG.md` 与 `.peaks/memory/` 有意不动 —— 那是「某事发生过」的记录, 不是指向它的指针。随后补上**刚被这次迁移证明的缺口**: 没有任何东西读 `package.json#files`, 一个 typo 能让 63 个测试保持绿色而包发出去时少了这个文件 (E1 就是证明 —— 它移动了一个已发布的契约, 而包还带着它, 唯一原因是那一行 `files` 被手工改了)。新守卫 `tests/unit/publish/files-entries-resolve.test.ts` **先对 24 个条目分类再写谓词**: 13 个具体文件必须存在; 9 个 glob 只按字面前缀目录判定、**从不**按文件存在性或匹配数 (`skills/**` 永远有匹配而 `schemas/*.json` 可能合法为空, 没有东西能区分它们); 2 个否定不判定; gitignored 生成物按**规则**豁免而非按名字。
|
|
63
|
+
|
|
64
|
+
8. **死模块获得首个调用者, 已发布契约换址 (F1–F3), 以及一次差点自相抵消的修复 (A1).** `reviewer-dispatch-policy.ts` 13/13 导出在 865 个文件里零外部引用; 读它时翻出三处文档/代码不一致, 其中一处正是它死掉的原因 —— 它的 header 自称「consumed by the LLM-side runner」, 而 LLM 读不了 TypeScript 导出。接线接受 legacy reviewer 并**改道 + 警告**而不是拒绝, 这是证据允许的唯一选项: 前置侧已通过 `legacyRelativePaths` 接受那些槽位, 模块正文三次写「instead of failing the gate」, 而 `f17aa377` 删掉的 12-case 测试 (从 `f17aa377^` 取回原文) 逐字写着「reroute ... rather than fail」。**行为变更如实陈述**: 只有 `security-reviewer` 与 `perf-baseline-reviewer` 会被改道; `ok`、record 与 toolCall 不变, 新增一条 `warnings[]` 改道通知; 其余角色逐字节相同 (QA 建立了 repeat-run 噪声基线 —— 每角色 4 个易变叶子 —— 并证明 10 角色全集里唯一的非噪声差异就是那两条 `warnings/0`)。本仓没有任何地方派发这两个角色, 所以已记录流程不受影响; 仓外与历史调用方此前一直在**静默地**跑一个不存在的 reviewer。契约 `test-style-contract.md` 从 `.peaks/docs/` 移到 `contracts/` —— 它要发布, 地址是 `node_modules/peaks-loop/...`, 不该待在语义为「本工具内部工作区」的点目录里。A1 关闭 4.0.52 留下的 `repair-index` 回滚缺口, 但**不是**用第一版的做法: 第一版让 `'force'` 先写修复再回滚自己 —— 配置原样还回去, `peaks codegraph status` 仍报缺口, exit 75 永不清除, 而 4.0.52 正是靠这条路径把 include gap 从 31 做到 0 的。已回退: 回滚现在是显式的操作员动作 `peaks codegraph config-restore` (exit 1 = 前置, 没有任何东西检查过回滚点; 77 = 回滚点检查了但 restore 没发生), 不再是修复内部的一步。
|
|
65
|
+
|
|
66
|
+
9. **两个 A 组条目值得单独记一笔, 因为它们的结论都是「不做」.** A2 让引用守卫看见裸 `tests/...test.ts` (此前守卫只读反引号 span), 并给裸文件名一条**故意更窄**的规则 (`*.test.ts`、名字含短横、空白边界 —— 短横要求正是把 `README.md` / `CHANGELOG.md` 挡在外面的那道条件)。A3 则**证伪了它自己要做的事**: 请求要求让围栏代码块不再对守卫不可见, 实测表明围栏**本来就是透明的** (守卫按行切分、扫反引号 span, 从不读 fence), 而加上 fence-awareness 反而会**弄瞎**四条当前被正确判定的真实引用。照原样实现会发出一个「修好了一个从不存在的盲区」的 commit —— 与本仓反复出现的「守卫宣称自己有它没有的覆盖」互为镜像, 两者都是**对从未测量过的行为下断言**。A3 因此不改逻辑, 只记录测量。F4 修掉本会话自己引入的 J03 上限突破: 一个 `catch { return undefined }` 把仓库自己的 `catch-return-null` 棘轮从 41 推到 42 并弄红 `J03-problem-resolution-flow.test.ts`; 棘轮存在的理由正是这个形状 ——「catch 返回 null/undefined, 调用方分不清失败与成功」—— 而这次突破把「artifact 不可读」藏进了「没有证据要声明」。
|
|
67
|
+
|
|
68
|
+
**验证**: `pnpm build` 干净, `build-integrity: OK`; 单元套件 **301 files / 3371 passed / 3 skipped / 0 failed** (与 bump 前基线逐数字相同); `tsc` 保持 **142** 基线 (无新增); `peaks release precheck` 四层全 `ok` —— `rootVsShared` (root 4.0.54 == shared dist CLI_VERSION 4.0.54)、`tagCollision` (v4.0.54 不存在)、`changesetStaged` (无 staged *.md)、`workspaceLockstep` (shared 0.0.88 是干净 semver); 版本 bump 与 4.0.53 那次 (`098a3778`) 逐字同模式: root + `CLI_VERSION` + `RUNTIME_VERSION` + 4 个 workspace 包各自 patch +1。
|
|
69
|
+
|
|
70
|
+
**明确未验证的 (不当作已完成)**:
|
|
71
|
+
- F1 记录了**三项后续, 未做**: `--from-dag` 在 `validateRole` 之前就 return, 只检查 `role.length > 0`; 13 个导出里仍有 11 个零引用; 模块的 decision-table 那一半仍无任何 pin。
|
|
72
|
+
- A3 把 `docs/**` 的测量留给了后续 slice: 11 个文件 165 处 findings, 71 个被引路径里 62 个从未存在, 而 9 个确实存在且被删除的与 D1 认定的 9 条诊断发现一一对应。与 4.0.51 的 178/64 同量级; 先决定「计划文档是否属于这个守卫的文体」再动它。
|
|
73
|
+
- A1 的 `config-restore` 用了与 codegraph 家族其余动词**不同**的 `code` 取值, 是刻意的偏离, 代码内有论证并有 FOLLOW-UP 待收敛 —— 尚未收敛。
|
|
74
|
+
- C0 只从**这一个调用点**移除了 `isSensitiveConfigPath`; 它自己领域内共有的一处误报 (`context.windowTokens`) 被**记录而非修复**, 留在原处。
|
|
75
|
+
- `git tag v4.0.54` 不存在且 precheck 通过, 但本片**没有**打 tag、**没有** commit —— 发布路径 (commit → 推送 → CI → tag → canary → promote) 由编排方接管。
|
|
76
|
+
|
|
3
77
|
## 4.0.53 — 2026-09-17 (三版本残留未验证清单的 source-of-truth 对账: 4.0.50/4.0.51/4.0.52 九条声明里 7 条 code 已实装, 1 条真 source dead surface 删除, 1 条仍真未做留口)
|
|
4
78
|
|
|
5
79
|
**Highlights**:
|
|
@@ -62,6 +136,15 @@
|
|
|
62
136
|
|
|
63
137
|
2. **49 处在文档里声称"由某个测试守护",而那些测试早就被删了 —— 包括守卫自己文件头里写的那次提交删掉的那个。** 引用完整性守卫原先的语料是 `CLAUDE.md` / `.peaks/PROJECT.md` / `README.md` / `.peaks/standards` —— **不含 `skills/**`**,而它的锚点正则里明明列着 `skills/`。把 `skills/**` 加进语料后,**守卫自己吐出 178 处悬空引用 / 64 文件**(此前临时扫描器估的 95 **低了近一倍**,且它归因的 `de0872b7` 只占 11 处)。修了 93 处后剩 85 处,**全部逐条处置、零白名单化**:其中 **43 处引用 21 个测试** —— 1 个删于 `457b9a87`(**正是守卫文件头自称"它存在的理由"的那次提交**)、20 个删于 `f17aa377`(*"delete 559 legacy unit tests"*)、**2 个从未在任何 commit 里存在过**;另有 6 处悬空文档互引。**每一条都逐站改写,不做批量正则替换**("由 X 守护"与"见 X"语义不同)。**残留如实披露而非关闭**:这 49 站现在如实说明"无物钉住它",并逐个点名了真实的覆盖缺口 —— `isDeprecatedReviewer` / `RD_DEPRECATED_REVIEWERS`、prereq 向后兼容形态、G11.5 标题锁、20-次调用节奏、handoff frontmatter(`gateEvidence` 在 `src/` 里**无人读取**)、superpowers 四条款规则、`peaks-ide` 审计日志助手。**未补测试(超出本片范围),也未放宽或删除任何一个。**
|
|
64
138
|
|
|
139
|
+
**对账(2026-09-18 修订)**:本段原始措辞有三处与事实不符。**原文逐字不动**,此处逐条记录实测 —— 这是 CHANGELOG/事实的 prose drift,不是 source 缺陷。
|
|
140
|
+
|
|
141
|
+
- ⚠️ **「49」是一个混合单位的和。** **43 处测试引用站复现** ✅(D1 按守卫自己的排除规则数得 43;同一批语料在更松的读法下是 **45 行 / 26 个去重目标** —— 数字随规则变,这正是口径必须写下来的理由)。但**「21 个被删测试」不复现,实为 23**:**本段自己的分解 `1 + 20 + 2` 加起来就是 23**,同一句话里自相矛盾(`tests/unit/skills/skills-skill-md-naming.test.ts` 删于 `457b9a87`、20 个删于 `f17aa377`、另 2 个见下条)。**「6 处悬空文档互引」也不复现:实测 12 站**(D1 报 8 个去重目标,按其表逐行列应为 9 —— 该项随排除规则变,D1 自己把这一行标为"存疑"而非确证)。所以 **49 = 43 个「站」+ 6 个「目标」**,两个单位相加;按**站**算,下界是 **≥55**。
|
|
142
|
+
- ⚠️ **「2 个从未存在」的两个标签装反了。** `skills/peaks-code/references/external-skill-invocation.md:99` 现写 "the bridge guard this paragraph used to name **never existed in this repository**" —— 假:`tests/unit/skills/peaks-code-superpowers-bridge.test.ts` 由 `3c82c797` 加入、由 `f17aa377` 删除。`skills/peaks-code/references/fanout-mandatory.md:100` 现写 "...was **deleted in `f17aa377`**" —— 假:该路径在**一切仍存活的对象**里缺席;它是 `b1dbc51d` 那次文档改名的产物(同一次改名把 `tests/unit/solo/skills-solo-fanout-mandatory.test.ts` 移到了 `tests/unit/code/skills-fanout-mandatory.test.ts`,而文档里被写成 `tests/unit/code/skills-code-fanout-mandatory.test.ts`)。**数目 2 对,成员错一对。** 验法(全称否定只能穷举):`git log --all --diff-filter=A -- <path>` → `git rev-list --all --objects` → `git fsck --unreachable`(**17 commit / 44 tree**)逐个 `git ls-tree -r`,三层皆 0。
|
|
143
|
+
- ⚠️ **同一错误还有第三处,在守卫自己的文件头里。** `tests/unit/standards/repo-citation-integrity.test.ts` 原 76-82 行称 `pre-rd-scan.test.ts` / `design-draft-confirm.test.ts` 是 "tests that no commit ever added" —— 假:两者都由 `d3a45d45` 加入、由 `f17aa377` 删除。**守卫在描述自己存在理由的那段文字里写了与事实不符的话。** 该处是**我方代码注释**(不是历史),已直接改对并点名 `d3a45d45`;同段其余事实性断言(`457b9a87` / `e6e35842` / `de0872b7` / `f17aa377` 四处归属、"两个反引号裸文件名"、"两处脚本 basename"、"四个 corpus 计数")逐条核过,无误。
|
|
144
|
+
- 🔒 **全称否定的限界(必须一起读)。** 「从未存在」只能在**本仓仍保留的对象**上建立 —— `backup-main-pre-rewrite` 标签说明**历史被重写过**,被 gc 剪除的对象**不可反驳**。诚实形式是「**在一切仍存活的对象中缺席**」,不是「从未存在」。本节此后不再下这个全称否定。
|
|
145
|
+
|
|
146
|
+
**口径(这一整片的存在理由,正是它此前没被写下来):**「一处站」= 规范语料(`CLAUDE.md` / `.peaks/PROJECT.md` / `README.md` / `.peaks/standards/**.md` / `skills/**.md`)里**一句断言某个仓库内路径承载 / 守护 / 演练了某种行为**的话,而那个被断言的路径**今天的树上不存在**。两个子型不可合并:**T1 悬空引用**(文本里仍写着那条路径 —— 守卫看得见)、**T2 披露**(文本已改写成「无物钉住它」—— **没有任何机器读它**)。4.0.51 把 T1 全量改写成 T2,所以今天的站**全是 T2**:**守卫是绿的,不能证明它们已关闭**(守卫只读路径,而路径已经被删掉了)。**站的单位 = 一处引用**(一个文件里的一处引用点;行号只是它的地址,不是它的身份 —— 少了这条规则,下面这个数就会随读法漂)。据此**逐行重数** `rid-d1-station-inventory` §四 的三张表 —— **该节从未写过分类汇总,那份汇总此前只出现在片内文档里;这里给的是从它的表数出来的数,不是它说的话**:分类列 **A 9 · B 6 · C 24 · D 9 = 48 行**。**但「行」不是「站」,两者不可相减** —— 那正是本段在修的那种单位混用,只是小了一号;所以这个数**只按「站」报一次**:§四 A 段自报 **33** 个 T2 站、B 段自报 **12** 站,C 段 3 行里**只有 C-1 是新站**,**C-2** 是对 B-1 的重新标注(D1 自己写「同 B-1」),**C-3** 是对 A-31 / A-32 的重新标注(D1 自己写「同上 A-31/32」;落盘可验:`scripts/sync-version.mjs:80` 今天**已不含任何测试引用**,而 `scripts/peaks-ide-audit-log.mjs:14` 与 A-32 的 `:10` 同属**一个注释块** —— 且 C-3 一行**跨两个文件**,按「站 = 一处引用点」的定义它是 **2 个引用点**,不是一个)。⇒ **33 + 12 + 1 = 46 个 distinct 站**,单一口径。按分类列读出的 **48 是同一张表的另一种分组**(按分类列 vs 按小节标题),**不是第二次独立枚举,两条路径不构成「交叉印证」** —— 它们同源,只是换了个切法;48 与 46 的差也不是「2 处重新标注」(那又是在把两种单位相减),而是 **2 行重新标注 / 3 个引用点**。另有 §五 gap table 的 **9 项**「已关闭」声明逐条核实,其中 **AC-1(空 pin)/ AC-3(半闭合)/ AC-4(错钉)/ AC-6(假命中)四条不成立**,由 D2 处置。
|
|
147
|
+
|
|
65
148
|
3. **9 个 `supportsScope` 断言全部恒真,且唯一消费者是一个循环论证的测试。** 接口声明 `supportsScope(scope: 'project' | 'global')`,9 个 adapter 的实现是 1 个 `() => true` 加 8 个逐字相同、**在类型上必然为真**的表达式 —— 没有一个能返回 `false`。**生产零调用者**:全仓唯一消费者是一个把它"characterise"成两个 scope 都返回 true 的新测试。**删除**(接口 + 9 实现 + 那个测试)。理由:参数类型即值域、无 adapter 只支持单一 scope(9/9 `resolveSettingsFile` 双 scope 对称),且真实属性已被 `adapter-runtime-surfaces.test.ts` 钉住。
|
|
66
149
|
|
|
67
150
|
4. **两个不可达导出与一处死参数。** `traeCnSubAgentDispatcher` 有导出、有测试、**没注册到任何 adapter**(8 个 adapter 分别注册了 claudeCode / codex / cursor / trae / null —— 且**没有 `trae-cn` adapter**,`IdeId` 里也没有)。它唯一可引的"支持"证据是 postinstall 的目录映射,**不是适配器注册** —— 给它建 adapter 等于**发明一条不存在的接线**,故删除。`awaitByLlmFallback` 生产零调用者(它的"向后兼容测试"只证明它自己存在 —— 与第 3 条同型的循环),且其注释里承诺的目标在 1.3 已兑现,故删除。另报出:`PollDispatchRecordsOptions.ide` **从未被 `pollDispatchRecords` 读取**(既有死表面,属三项目标之外,仅报出未修)。共 15 文件 **+61/−170**。
|
|
@@ -140,6 +223,8 @@
|
|
|
140
223
|
|
|
141
224
|
**本轮顺带发现、尚未处理(不属本版修复)**:13 个守卫点位里 10 个没有实测控制组;17 个带 id 的文件既未分类也未点名;约 60 处 binding/env 拼接;31 个未追踪的 CLI 文件上仍有同一种路径逃逸形状;以及最刺眼的一条 —— **扫描清单自己的后续指令仍然排除了这一轮查出最严重缺陷的那个文件**。
|
|
142
225
|
|
|
226
|
+
**对账记录(2026-09-18,C2 片 `rid-c2-mutation-control-audit`;经 C3 片 `rid-c3-fixes` 修正;source: 本文件 `CHANGELOG.md:141` 的"13 个守卫点位里 10 个没有实测控制组")**——**分母是文件名计数,不是守卫计数;结论方向也相反**。复现:`git ls-files 'tests/**/*.test.ts' | grep -i guard` 得 **31**,减去 `tests/integration/capability-guard/J01–J15`(15)与 `tests/unit/capability-guard-runner/{diff,runner,types}`(3)**恰为 13** —— 按文件名匹配的已知漏法是"守卫名里没有 `guard` 字样者全漏",而 `no-ai-co-author-trailer` / `repo-citation-integrity` / `home-directory-is-not-a-project-root`(C1 自行补出)、`publish-tag-strict` / `multi-binary-drift-check` / `superpowers-deny-list` / `ecc-hooks-schema-drift`(QA 补出)、`loop-engineering-guidelines` / `capability-glossary`(C1 标 `inconclusive` 者)**这 9 个文件名的 `guard` 匹配数实测全为 0**。按先写定的性质判据(断言生产代码或已提交产物对某类输入作出拒绝/放行判定,且违反即缺陷)枚举并**逐点做变异控制组实测**(先预测 → 最小改动删掉/改坏守卫核心判断 → scoped 跑 → 逐次还原、sha256 校验字节一致)。**修正后的分母(C3)**:审计闭集 **22** + 独立检索另找出的同类守卫 **10**(`lockstep-three-packages`、`cli-version-lockstep`、`compact-swallow-invariant`、`command-option-invariants`、`cross-version-isolation`、`settings-local-preserves-user-keys`、`settings-local-hooks-entry-ownership`、`integration-cli-helper-envelope-parity`、`active-skill-json-cleanup`、`no-magic-numbers-config`)+ QA 指出、C4 按**断言粒度**重筛后收进的**键内漏项 13**(H5 的筛子原先是**文件粒度**,把「文件里用过 artifact」整个排除;C4 改为**断言粒度** —— 判据是「该断言的主语是不是已提交产物本身」,而不是「文件里有没有 readFileSync」。据此补收 `tests/unit/services/prd/project-scan-bootstrap-service`(读已提交的 `skills/peaks-code/references/*.md` 并断言产物本身的 `frontendOnly`↔`## Archetype` 绑定)与 `tests/unit/skills/loop-hygiene-block`(读 `skills/**/SKILL.md`、断言每个技能都带 loop-hygiene 块且副本逐字节相同)。按同一判据复核后其余 13 个 H5 命中**仍不收**:它们读的是 tmp/生成产物(`mkdtempSync` 出来的 `.peaks/config.json`、`.codegraph/config.json`、session `_runtime`、memory 目录),不是版本控制里的产物。原 11 个:`doctor/codegraph-index-integrity`、`services/codegraph/codegraph-index-integrity`、`doctor/codegraph-exclude-integrity`、`services/codegraph/codegraph-exclude-integrity`、`cli/codegraph-status-integrity`、`cli/codegraph-status-index-integrity`、`cli/skill-presence-generated-config-drift`、`doctor/l3-memory-health-drift`、`services/workflow/pipeline-verify-contract-drift`,以及 H5 命中的 `tests/lint/readme-downstream-consumer-notes`、`skills/g11-5-title-lock`;唯一排除项是 `capability-guard/J10`,属 request 已划出射程的 capability-guard J 家族),**总数 45,判据相关**。**修正后的分类(C3)**:原 C2 表把 `vitest-concurrency-guard` / `publish-tag-strict` / `capability-glossary` 记为"假控制组",是**只跑了一个变异就贴标签**;C3 补齐第二臂后三条**都变红**(注释掉 `maxWorkers` 行 → 1 failed;把 `[[ =~ ]]` 放宽成 `^v.+$` → 1 failed;清空 `FORBIDDEN_PATTERN` → 1 failed),所以三条的真实形态是**"抓得住删除、抓不住削弱"的活检查**,与第 4 守卫(怎么变都不红)不同类。修正后:**真控制组 21**(18 条含"削弱"臂;`vitest-concurrency-guard` / `publish-tag-strict` / `capability-glossary` 三条原有断言**一条未删**,只补了"削弱"臂,补后三条的削弱变异分别 1 / 1 / 1 failed)、**不可判别 1**(`rotation-guards-tightening` 第 4 守卫,条件改恒假后 11 条全绿)。**原文"10/13 没有控制组"实测为 21/22 有,方向相反。** 分母的早期数字曾**系统性 +5**:harness 的 argv 里混入一个字面量 `node`,被 vitest 当成第二个 filter,额外命中 `tests/unit/services/workflow/provision-dispatch-node.test.ts`(5 条);修正后每个分母**逐条可复现**(单文件跑,合计与 21 文件批量控制组 `235 passed` 逐字相等(**C2 当时是 232**;C3 为三条「抓得住删除、抓不住削弱」的守卫各补一条「削弱」臂,三个文件分别 6→7 / 4→5 / 1→2,故 +3 = 235。改的是本对账段,不是 4.0.x 原文))。**真未做、如实留口**:45 里只有 22 个做过变异实测;上述 10 个同类守卫与 13 个键内漏项**只枚举、未变异**;`scripts/**`、`packages/*/tests/**`、`.github/workflows/ci.yml` 这类脚本/CI 形态的守卫**未枚举**(本片五种检索全键在 `tests/**` 之下)。**C0 残留处置**:`atomic-write.ts` 的 `SENSITIVE_PROSE_TERMS` 补入 `authkey`/`authkeys`(补前实测 `authkey`/`auth-key` 均被接受,与 C0 技术文档 §4 不符 —— 判定为**词表漏项而非文档写错**),且 C3 已在 `memory-title-sensitive-scan.test.ts` 补正/负对照把它钉住(补前 `grep tests/ authkey` 命中 0,删掉不会有任何一条红;补后删该词表项 → 3 failed);`assertSafeMemory` 的 `metadataKey` 分支——**结论(对已发布形状不可达、零覆盖)成立但 C2 的机理描述错误**:`containsSensitiveConfigValue` **会递归进值**(实测 `{…body:{token:'x'}}` → `true`、`{…body:[{secretKey:'x'}]}` → `true`),所以只对 **string 输入**不可达,不是"按构造不可达";且 `assertSafeMemory` 是 **public export**(`src/services/memory/project-memory-service/index.ts:100` 再导出),删它**会**让 JS 调用方的嵌套输入失去检测。**故不删**,机理已改对,见 `.peaks/_runtime/2026-09-17-session-607ead/rd/tech-doc-rid-c3-fixes.md`。
|
|
227
|
+
|
|
143
228
|
## 4.0.47 — 2026-09-13 (90 个文件第一次进 CI 就绿了 + 弹窗的根在守卫射程 + 说"能做"而做不到的地方)
|
|
144
229
|
|
|
145
230
|
**Highlights**:
|
package/README-en.md
CHANGED
|
@@ -49,6 +49,21 @@ peaks-loop is a **Loop Engineering crystallization system**, not a workflow tool
|
|
|
49
49
|
npm i -g peaks-loop
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
> **On npm 11+, pass one flag.** npm prints an `install-scripts` warning for lifecycle scripts that are not
|
|
53
|
+
> covered by its allowlist. **At the current version (npm 11.19) the scripts still run**, so the install works
|
|
54
|
+
> as-is — but npm says that default is about to flip. To avoid silently ending up with "a CLI, no skills", write
|
|
55
|
+
> it out fully:
|
|
56
|
+
>
|
|
57
|
+
> ```bash
|
|
58
|
+
> npm i -g --allow-scripts=peaks-loop peaks-loop
|
|
59
|
+
> ```
|
|
60
|
+
>
|
|
61
|
+
> If you suspect the skills did not land, **no CLI command reports that state today**
|
|
62
|
+
> (`peaks skill search` queries the in-package skill pool, which says nothing about your IDE directory), so
|
|
63
|
+
> look at the directory itself: `ls ~/.claude/skills | grep '^peaks-' | head` (or the IDE dir you actually
|
|
64
|
+
> use). Empty means the CLI installed but the skills did not — the gap is recorded in
|
|
65
|
+
> `.peaks/docs/backlog.md` §2.52a.
|
|
66
|
+
|
|
52
67
|
Then, in the **Claude Code** or **Z Code** chat you already use, send an **explicit slash command** (the leading slash is what triggers peaks-loop — a plain sentence won't always route here):
|
|
53
68
|
|
|
54
69
|
```
|
|
@@ -140,7 +155,7 @@ Every lane opens with **one slash command**.
|
|
|
140
155
|
|
|
141
156
|
| | |
|
|
142
157
|
| --- | --- |
|
|
143
|
-
| **Latest** | [](https://www.npmjs.com/package/peaks-loop) — 4.0
|
|
158
|
+
| **Latest** | [](https://www.npmjs.com/package/peaks-loop) — 4.1.0 (2026-10-03) |
|
|
144
159
|
| **Domains** | Code (`peaks-code`) · Content (`peaks-content`) · Project health (`peaks-doctor`) · Issue sweep (`peaks-issue-fix-orchestrator`) · Custom SOP (`peaks-sop`) · Cross-domain primitives (`peaks-solo` dispatcher · `peaks-resume` · `peaks-status` · `peaks-test` · `peaks-slice-decompose`) |
|
|
145
160
|
| **Sediment pool** | `~/.peaks/` local pool · twice-clean runs auto-promote to a bee · broken runs come back for you to redefine · the bee grows with your taste |
|
|
146
161
|
| **Test suite** | 285+ cases · 4 packages (peaks-loop / peaks-loop-mut / peaks-loop-shared-channel / peaks-loop-shared) · **0 timeouts** · 14 BDD caller-binding edge cases |
|
package/README.md
CHANGED
|
@@ -49,6 +49,20 @@ peaks-loop 是一个 **Loop Engineering 结晶系统**,不是工作流工具 —
|
|
|
49
49
|
npm i -g peaks-loop
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
> **npm 11+ 请带一个 flag**:安装时 npm 会对"未经 allowlist 覆盖"的 install 脚本打一条 `install-scripts` 警告。**当前版本(npm 11.19)仍然会执行**这些脚本,所以装完就能用;但 npm 已明说这个默认值即将翻成"默认不执行"。为了不在那一天静默装到一个"有 CLI、没有 skills"的状态,请写全:
|
|
53
|
+
>
|
|
54
|
+
> ```bash
|
|
55
|
+
> npm i -g --allow-scripts=peaks-loop peaks-loop
|
|
56
|
+
> ```
|
|
57
|
+
>
|
|
58
|
+
> 装好后如果怀疑 skills 没落上,**目前没有一条 CLI 命令报告这个状态**(`peaks skill search` 查的是包内技能池,与 IDE 目录里装了没装无关),所以只能看目录本身:
|
|
59
|
+
>
|
|
60
|
+
> ```bash
|
|
61
|
+
> ls ~/.claude/skills | grep '^peaks-' | head # 或你实际在用的 IDE 目录
|
|
62
|
+
> ```
|
|
63
|
+
>
|
|
64
|
+
> 空目录 = skills 没装上(CLI 本身仍可用)。这个"报告不出自己装了没装"的缺口记在 `.peaks/docs/backlog.md` §2.52a。
|
|
65
|
+
|
|
52
66
|
装好之后,在你已经用的 **Claude Code** 或 **Z Code** 对话框里发一条**显式命令**(必须以斜杠开头,才会触发 peaks-loop):
|
|
53
67
|
|
|
54
68
|
```
|
|
@@ -140,7 +154,7 @@ npm i -g peaks-loop
|
|
|
140
154
|
|
|
141
155
|
| | |
|
|
142
156
|
| --- | --- |
|
|
143
|
-
| **最新版本** | [](https://www.npmjs.com/package/peaks-loop) — 4.0
|
|
157
|
+
| **最新版本** | [](https://www.npmjs.com/package/peaks-loop) — 4.1.0(2026-10-03) |
|
|
144
158
|
| **覆盖域** | 代码(`peaks-code`) · 内容(`peaks-content`) · 项目健康(`peaks-doctor`) · 批量修 issue(`peaks-issue-fix-orchestrator`) · 自定义 SOP(`peaks-sop`) · 通用原语(`peaks-solo` 分诊 / `peaks-resume` 续 / `peaks-status` 看 / `peaks-test` 测 / `peaks-slice-decompose` 切片) |
|
|
145
159
|
| **沉淀池** | `~/.peaks/` 本地池 · 跑两次自动晋升成 bee · 跑翻车让你重定义 · bee 跟着你的口味长 |
|
|
146
160
|
| **测试套件** | 1096 cases · 4 packages (peaks-loop 1015 / runtime 39 / mut 22 / shared-channel 20) · **CI 首次全绿**(ubuntu + windows) · 14 BDD caller-binding coverage |
|
|
@@ -36,7 +36,20 @@ module.exports = {
|
|
|
36
36
|
parserOptions: {
|
|
37
37
|
ecmaVersion: 2022,
|
|
38
38
|
sourceType: 'module',
|
|
39
|
-
|
|
39
|
+
// 2026-09-19 rid-s1-lint-config-coverage: the root tsconfig.json includes
|
|
40
|
+
// only src/** and tests/**, so every file under scripts/** and
|
|
41
|
+
// packages/** belonged to NO project and eslint failed 71 of them with
|
|
42
|
+
// "The file was not found in any of the provided project(s)" BEFORE
|
|
43
|
+
// parsing them. That is not a lint result — it is a hole, and it also
|
|
44
|
+
// masked real syntax errors (a .mjs with a broken string literal was found
|
|
45
|
+
// by prettier only, because eslint never reached the parser). The
|
|
46
|
+
// ESLint-only project below covers those directories without changing what
|
|
47
|
+
// `tsc -p tsconfig.json` sees.
|
|
48
|
+
project: [
|
|
49
|
+
'./tsconfig.json',
|
|
50
|
+
'./tsconfig.build.json',
|
|
51
|
+
'./config/eslint/tsconfig.lint.json'
|
|
52
|
+
],
|
|
40
53
|
// 2026-08-06 lint-dogfood cycle-3 follow-up: the runner now uses
|
|
41
54
|
// `node node_modules/eslint/bin/eslint.js` from the repo root, so
|
|
42
55
|
// tsconfigRootDir must be the repo root (one level above config/).
|
|
@@ -52,16 +65,34 @@ module.exports = {
|
|
|
52
65
|
'plugin:@typescript-eslint/recommended-type-checked'
|
|
53
66
|
],
|
|
54
67
|
settings: {},
|
|
68
|
+
// 2026-09-19 rid-s1-lint-config-coverage: every pattern here used to be a
|
|
69
|
+
// bare trailing-slash name. ESLint reads those the way .gitignore does — a
|
|
70
|
+
// trailing slash with no inner slash matches a directory of that name at ANY
|
|
71
|
+
// depth — so `'skills/'` also swallowed `src/services/skills/`, `src/skills/`
|
|
72
|
+
// and two test directories: 33 tracked files, production source among them,
|
|
73
|
+
// silently reported as "0 findings" without ever being parsed. A LEADING
|
|
74
|
+
// slash anchors a pattern to the config's base path (the repo root), which
|
|
75
|
+
// is what these were always meant to mean: the repo-root prose / artifact /
|
|
76
|
+
// tooling directories.
|
|
77
|
+
//
|
|
78
|
+
// A leading slash alone is not enough for generated output, though: a
|
|
79
|
+
// per-package `dist/`, `coverage/` or `node_modules/` must still stay out of
|
|
80
|
+
// a directory walk, so those three are kept at any depth explicitly.
|
|
81
|
+
// `**/node_modules/` in particular must be spelled out, not left to
|
|
82
|
+
// eslint's own default ignore of `/**/node_modules/*`: a config that sets
|
|
83
|
+
// `ignorePatterns` REPLACES that default rather than adding to it.
|
|
55
84
|
ignorePatterns: [
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
85
|
+
'/dist/',
|
|
86
|
+
'/coverage/',
|
|
87
|
+
'/output-styles/',
|
|
88
|
+
'/skills/',
|
|
89
|
+
'/agents/',
|
|
90
|
+
'/bin/',
|
|
91
|
+
'/scratch/',
|
|
92
|
+
'/examples/',
|
|
93
|
+
'**/dist/',
|
|
94
|
+
'**/coverage/',
|
|
95
|
+
'**/node_modules/'
|
|
65
96
|
],
|
|
66
97
|
rules: {
|
|
67
98
|
// L1 (eslint built-in) — always on, no plugin package required.
|
|
@@ -113,9 +144,28 @@ module.exports = {
|
|
|
113
144
|
{ prefer: 'type-imports' }
|
|
114
145
|
],
|
|
115
146
|
'@typescript-eslint/no-non-null-assertion': 'warn',
|
|
116
|
-
|
|
147
|
+
// 2026-09-19 rid-s1-lint-config-coverage: `@typescript-eslint/no-implicit-any`
|
|
148
|
+
// was REMOVED here, not renamed. It does not exist in
|
|
149
|
+
// @typescript-eslint/eslint-plugin@8.66.0 (134 rules; verified against the
|
|
150
|
+
// shipped plugin's rule index) — typescript-eslint dropped it in v6 — and
|
|
151
|
+
// eslint answered every parsed file with 2 severity-2
|
|
152
|
+
// "Definition for rule ... was not found" messages, 2390 across the repo.
|
|
153
|
+
// Besides inflating the count, that made "a NEW file must be lint- and
|
|
154
|
+
// commit-able" unsatisfiable, since no new file could avoid those two.
|
|
155
|
+
// Its intent is already covered twice over, so nothing needs to replace it:
|
|
156
|
+
// - tsc: this repo builds with `strict: true` (root tsconfig.json), which
|
|
157
|
+
// turns on noImplicitAny at the compiler level;
|
|
158
|
+
// - eslint: `plugin:@typescript-eslint/recommended-type-checked` above
|
|
159
|
+
// already enables the implicit-any surface (`no-unsafe-assignment`,
|
|
160
|
+
// `-argument`, `-call`, `-member-access`, `-return`, …) plus
|
|
161
|
+
// `no-explicit-any`, which is re-declared as `warn` just above.
|
|
117
162
|
// G-lint-1 §二 enum → as const: warn-only (escape hatch preserved).
|
|
118
|
-
|
|
163
|
+
// NOTE: this must stay the CORE `no-restricted-syntax`. The selector below
|
|
164
|
+
// is an ESLint-core selector, and core is where the rule lives —
|
|
165
|
+
// `@typescript-eslint/no-restricted-syntax` does not exist in
|
|
166
|
+
// @typescript-eslint/eslint-plugin@8.66.0 and produced the same phantom
|
|
167
|
+
// "Definition for rule ... was not found" on every file.
|
|
168
|
+
'no-restricted-syntax': [
|
|
119
169
|
'warn',
|
|
120
170
|
{
|
|
121
171
|
selector: 'TSEnumDeclaration',
|
|
@@ -127,7 +177,42 @@ module.exports = {
|
|
|
127
177
|
// Use ESLint built-in `no-duplicate-imports` — `@typescript-eslint/no-duplicate-imports`
|
|
128
178
|
// does NOT exist in @typescript-eslint/eslint-plugin@8.66.0 (broken ruleId, all 820
|
|
129
179
|
// phantom entries were `Definition for rule ... was not found`). PRD-002b 2026-08-07.
|
|
130
|
-
'no-duplicate-imports': 'warn'
|
|
180
|
+
'no-duplicate-imports': 'warn',
|
|
181
|
+
|
|
182
|
+
// 2026-09-20 rid-s9-require-await-decision — DELIBERATE divergence, measured.
|
|
183
|
+
//
|
|
184
|
+
// INHERITED, not chosen. This rule arrives via
|
|
185
|
+
// `plugin:@typescript-eslint/recommended-type-checked` in `extends` above;
|
|
186
|
+
// nothing in this file ever turned it on. Its inherited default is `error`.
|
|
187
|
+
// An absent line here would therefore NOT be "we never enabled it" — it
|
|
188
|
+
// would keep firing at error severity, silently. That is why the override is
|
|
189
|
+
// written out explicitly rather than left out.
|
|
190
|
+
//
|
|
191
|
+
// WHY OFF. Measured over all 291 findings in this repo, classified 291/291
|
|
192
|
+
// by AST: 259 (89%) are the rule being wrong, not debt. `async` here is
|
|
193
|
+
// load-bearing in two ways the rule does not model —
|
|
194
|
+
// (a) it is the mechanism that moves a `throw` out of the synchronous path
|
|
195
|
+
// and into the rejection channel (19 src sites), and
|
|
196
|
+
// (b) it IS the interface contract (`readonly execute: (ctx) => Promise<…>`,
|
|
197
|
+
// with the implementation written `execute: async () => ({…})`).
|
|
198
|
+
// The rule also does NOT exempt an explicit `Promise<…>` annotation — the
|
|
199
|
+
// declared type is consulted only by its autofix suggestion, to rewrite
|
|
200
|
+
// `Promise<T>` → `T`. Acting on that suggestion is a tsc error (measured:
|
|
201
|
+
// stripping `async` from the 314 candidate sites produced 363 tsc errors),
|
|
202
|
+
// so "just remove them" was always an interface rewrite, not a cleanup.
|
|
203
|
+
// Driving the number to zero would mean 259 knowingly-false entries inside
|
|
204
|
+
// the one ratchet axis that is supposed to mean "lint debt".
|
|
205
|
+
//
|
|
206
|
+
// WHAT REPLACES IT. The residual signal — "a later `await` added at the top
|
|
207
|
+
// of this function would silently make everything below it asynchronous" —
|
|
208
|
+
// is carried by an AST + tsc-type-checker guard at
|
|
209
|
+
// `tests/unit/standards/gratuitous-async-guard.test.ts`, which runs with
|
|
210
|
+
// `pnpm test:unit` and is pinned to exactly 14 sites. The 18 genuinely
|
|
211
|
+
// gratuitous `it`/`test` `async` callbacks in `tests/` were removed.
|
|
212
|
+
//
|
|
213
|
+
// Full evidence, the probe table, and the "when to reconsider" triggers:
|
|
214
|
+
// `.peaks/docs/lint-rule-divergences.md` § `@typescript-eslint/require-await`.
|
|
215
|
+
'@typescript-eslint/require-await': 'off'
|
|
131
216
|
},
|
|
132
217
|
overrides: [
|
|
133
218
|
{
|
|
@@ -138,6 +223,66 @@ module.exports = {
|
|
|
138
223
|
'max-lines-per-function': 'off',
|
|
139
224
|
'@typescript-eslint/no-explicit-any': 'off'
|
|
140
225
|
}
|
|
226
|
+
},
|
|
227
|
+
// 2026-09-20 rid-s11-js-type-aware-exemption — a type-aware rule family
|
|
228
|
+
// applied to files the project deliberately refuses to type-check.
|
|
229
|
+
// DELIBERATE divergence, measured; not a blanket rule switch-off.
|
|
230
|
+
//
|
|
231
|
+
// THE CONTRADICTION. `config/eslint/tsconfig.lint.json` sets
|
|
232
|
+
// `allowJs: true` together with `checkJs: false`. Those two are one
|
|
233
|
+
// deliberate statement: a JS file is *parsed* (so it can be linted at all)
|
|
234
|
+
// and is deliberately NOT type-checked — no types are ever established for
|
|
235
|
+
// it. `no-unsafe-*` is a *type-aware* family; every finding it reports is
|
|
236
|
+
// the answer to "what type does this expression have?". Asking that of a
|
|
237
|
+
// property the configuration explicitly declines to establish is not
|
|
238
|
+
// strictness — it is a self-contradiction. Where there are no types, `any`
|
|
239
|
+
// is not a defect the author introduced; it is the only answer the compiler
|
|
240
|
+
// was ever allowed to give.
|
|
241
|
+
//
|
|
242
|
+
// MEASURED REACH (census by file extension, taken before this entry
|
|
243
|
+
// existed; 1273 files in the gate's scope, 1036 findings on JS). Exactly
|
|
244
|
+
// five ruleIds account for 956 of those 1036, on 23 files:
|
|
245
|
+
// no-unsafe-member-access 389, no-unsafe-assignment 214,
|
|
246
|
+
// no-unsafe-argument 156, no-unsafe-call 146, no-unsafe-return 51.
|
|
247
|
+
// No other `no-unsafe-*` rule fires on JS anywhere in the repo. The globs
|
|
248
|
+
// below are the four JS extensions: 31 `.mjs` + 1 `.js` exist today, 0
|
|
249
|
+
// `.cjs` and 0 `.jsx`; the latter two are carried so a new file cannot
|
|
250
|
+
// reopen this hole by being written with a different extension.
|
|
251
|
+
//
|
|
252
|
+
// WHAT IS *NOT* SWITCHED OFF — the reach of this entry is the whole point:
|
|
253
|
+
// - `.ts`/`.tsx`/`.mts`/`.cts` are not matched. The 538 type-aware
|
|
254
|
+
// findings there are real: the root tsconfig.json runs `strict: true`,
|
|
255
|
+
// so a type question has a genuine answer to reject. TS counts must not
|
|
256
|
+
// move by one.
|
|
257
|
+
// - `no-unsafe-finally` is deliberately ABSENT from the list. It is the
|
|
258
|
+
// ESLint *core* rule of that name (control flow out of a `finally`
|
|
259
|
+
// block) — NOT `@typescript-eslint/no-unsafe-finally` — and it needs no
|
|
260
|
+
// type information. It fires twice on JS here, and both are genuine.
|
|
261
|
+
// - every rule that is not type-aware keeps firing on JS (74 findings):
|
|
262
|
+
// no-magic-numbers, complexity, max-lines-per-function, max-lines,
|
|
263
|
+
// no-unused-vars, no-duplicate-imports, prefer-const,
|
|
264
|
+
// no-inner-declarations, no-require-imports.
|
|
265
|
+
// - the type-aware rules OUTSIDE this family also keep firing (6
|
|
266
|
+
// findings): only-throw-error, restrict-plus-operands,
|
|
267
|
+
// no-floating-promises, prefer-promise-reject-errors. They are
|
|
268
|
+
// type-aware but not `no-unsafe-*`, so this authorisation does not reach
|
|
269
|
+
// them. Widening these globs to cover them is a different decision that
|
|
270
|
+
// needs its own evidence.
|
|
271
|
+
// - `no-explicit-any` does NOT fire on JS (0 findings, measured — it does
|
|
272
|
+
// not appear in the JS census at all). JS has no type annotations, so
|
|
273
|
+
// there is no place to write `any` and nothing for the rule to match.
|
|
274
|
+
//
|
|
275
|
+
// Reasoning, the census, and the "when to reconsider" triggers:
|
|
276
|
+
// `.peaks/docs/lint-rule-divergences.md`
|
|
277
|
+
{
|
|
278
|
+
files: ['**/*.js', '**/*.jsx', '**/*.cjs', '**/*.mjs'],
|
|
279
|
+
rules: {
|
|
280
|
+
'@typescript-eslint/no-unsafe-argument': 'off',
|
|
281
|
+
'@typescript-eslint/no-unsafe-assignment': 'off',
|
|
282
|
+
'@typescript-eslint/no-unsafe-call': 'off',
|
|
283
|
+
'@typescript-eslint/no-unsafe-member-access': 'off',
|
|
284
|
+
'@typescript-eslint/no-unsafe-return': 'off'
|
|
285
|
+
}
|
|
141
286
|
}
|
|
142
287
|
]
|
|
143
288
|
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// ESLint-ONLY tsconfig — see config/eslint/.peaks-rules.cjs. Never run tsc on
|
|
2
|
+
// this file; it exists purely so parserOptions.project can see every file eslint
|
|
3
|
+
// is asked to lint. The root tsconfig.json intentionally includes only src/**
|
|
4
|
+
// and tests/**, so scripts/** and packages/** belonged to NO project at all:
|
|
5
|
+
// eslint failed 71 of those files with "The file was not found in any of the
|
|
6
|
+
// provided project(s)" BEFORE parsing them, which is not a lint result but a
|
|
7
|
+
// hole — and one that also masked real syntax errors (a .mjs with a broken
|
|
8
|
+
// string literal was ever only caught by prettier, because eslint never reached
|
|
9
|
+
// the parser).
|
|
10
|
+
//
|
|
11
|
+
// allowJs is what lets the .mjs/.js tools under scripts/ into the program.
|
|
12
|
+
//
|
|
13
|
+
// The explicit `files` list below is NOT redundant. TypeScript's
|
|
14
|
+
// extension-priority pass groups extensions as
|
|
15
|
+
// [[.ts,.tsx,.d.ts,.js,.jsx], [.cts,.d.cts,.cjs], [.mts,.d.mts,.mjs]]
|
|
16
|
+
// and drops a file when a HIGHER-priority sibling exists; it carves out
|
|
17
|
+
// .js/.jsx shadowed by .d.ts, but NOT .mjs shadowed by .d.mts. So a wildcard
|
|
18
|
+
// include silently loses these four. Files named literally bypass that pass.
|
|
19
|
+
// Any new <name>.mjs + <name>.d.mts pair under scripts/ must be added here —
|
|
20
|
+
// tests/unit/lint/eslint-rules-config-coverage.test.ts asserts this program
|
|
21
|
+
// contains every tracked in-scope file, so an omission fails a test instead of
|
|
22
|
+
// silently reopening the coverage hole.
|
|
23
|
+
{
|
|
24
|
+
"extends": "../../tsconfig.json",
|
|
25
|
+
"compilerOptions": {
|
|
26
|
+
"allowJs": true,
|
|
27
|
+
"checkJs": false,
|
|
28
|
+
"noEmit": true
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"../../scripts/_release-shared.mjs",
|
|
32
|
+
"../../scripts/release-pack.mjs",
|
|
33
|
+
"../../scripts/dist-freshness.mjs",
|
|
34
|
+
"../../scripts/install-skills.mjs",
|
|
35
|
+
"../../scripts/packages-build-prerequisite.mjs",
|
|
36
|
+
"../../scripts/verify-version-parity.mjs"
|
|
37
|
+
],
|
|
38
|
+
"include": [
|
|
39
|
+
"../../src/**/*",
|
|
40
|
+
"../../tests/**/*",
|
|
41
|
+
"../../scripts/**/*",
|
|
42
|
+
"../../packages/*/src/**/*",
|
|
43
|
+
"../../packages/*/tests/**/*",
|
|
44
|
+
"../../packages/*/vitest.config.ts"
|
|
45
|
+
],
|
|
46
|
+
"exclude": ["../../dist", "../../node_modules", "../../tests/fixtures/bdd-reporter-tmp"]
|
|
47
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime shape of the JSON envelope `peaks … --json` writes to stdout.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS (S12, 2026-09-20). The CLI envelope was the single largest
|
|
5
|
+
* cluster of unvalidated `JSON.parse` in the repo: 21 test files do
|
|
6
|
+
* `JSON.parse(<spawn result>.stdout)` and then read `out.ok` / `out.code` /
|
|
7
|
+
* `out.data.*`. Because `JSON.parse` returns `any`, none of those reads was
|
|
8
|
+
* checked against anything, and each one is a `no-unsafe-*` finding. Measured
|
|
9
|
+
* at the S12 census: ~196 of the ~448 findings in the R1 root.
|
|
10
|
+
*
|
|
11
|
+
* WHAT IS VALIDATED, AND WHAT IS NOT — stated plainly, because the difference
|
|
12
|
+
* is the whole point. The envelope HEAD is always validated: `ok` must be a
|
|
13
|
+
* boolean; `warnings` / `nextActions`, when present, arrays of strings; `code`
|
|
14
|
+
* / `message` / `errorId`, when present, strings. The PAYLOAD (`data`) is
|
|
15
|
+
* validated only as "a JSON object with string keys" — there is no single
|
|
16
|
+
* payload schema, because `data` is `T` in `ResultEnvelope<T>` and every
|
|
17
|
+
* command has its own shape. That is a measured finding of S12, not an
|
|
18
|
+
* oversight: R1 does not collapse onto one schema.
|
|
19
|
+
*
|
|
20
|
+
* A caller that reads `data.<field>` at depth >= 2 therefore names the payload
|
|
21
|
+
* shape itself, through the same validating primitive:
|
|
22
|
+
*
|
|
23
|
+
* parseCliEnvelopeWith(raw, EvolutionStatusPayload)
|
|
24
|
+
*
|
|
25
|
+
* The alternative — one generic helper with a type parameter and no schema —
|
|
26
|
+
* is the `as T` costume S12 forbids. Here the type parameter is a SCHEMA, so
|
|
27
|
+
* the returned type is derived from a check that actually ran.
|
|
28
|
+
*/
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
declare const baseEnvelopeSchema: z.ZodObject<{
|
|
31
|
+
ok: z.ZodBoolean;
|
|
32
|
+
command: z.ZodOptional<z.ZodString>;
|
|
33
|
+
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
34
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
35
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
36
|
+
code: z.ZodOptional<z.ZodString>;
|
|
37
|
+
message: z.ZodOptional<z.ZodString>;
|
|
38
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
39
|
+
}, z.core.$loose>;
|
|
40
|
+
/**
|
|
41
|
+
* Build the envelope schema with a payload schema — for the callers that read
|
|
42
|
+
* `data.<field>` at depth >= 2 and can say what they expect there.
|
|
43
|
+
*/
|
|
44
|
+
export declare function cliEnvelopeSchema<S extends z.ZodType>(payload: S): z.ZodObject<{
|
|
45
|
+
ok: z.ZodBoolean;
|
|
46
|
+
command: z.ZodOptional<z.ZodString>;
|
|
47
|
+
data: S;
|
|
48
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
49
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
50
|
+
code: z.ZodOptional<z.ZodString>;
|
|
51
|
+
message: z.ZodOptional<z.ZodString>;
|
|
52
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
53
|
+
}, z.core.$loose>;
|
|
54
|
+
/**
|
|
55
|
+
* `ok` + `data` (any JSON object) + the optional head fields.
|
|
56
|
+
*/
|
|
57
|
+
export type CliEnvelope = z.infer<typeof baseEnvelopeSchema>;
|
|
58
|
+
/**
|
|
59
|
+
* Parse a CLI stdout envelope, validating the head. Throws when the text is
|
|
60
|
+
* not JSON, or is JSON that is not an envelope — a caller that fed this
|
|
61
|
+
* something else wants to know, not to read `undefined.ok` further down.
|
|
62
|
+
*/
|
|
63
|
+
export declare function parseCliEnvelope(raw: string): CliEnvelope;
|
|
64
|
+
/**
|
|
65
|
+
* Parse a CLI stdout envelope for a caller that reads `data.<field>` at depth
|
|
66
|
+
* >= 2, validating that field's own shape as well. The caller names the shape;
|
|
67
|
+
* nothing is asserted on its behalf.
|
|
68
|
+
*/
|
|
69
|
+
export declare function parseCliEnvelopeWith<S extends z.ZodType>(raw: string, payload: S): ({
|
|
70
|
+
ok: z.ZodBoolean;
|
|
71
|
+
command: z.ZodOptional<z.ZodString>;
|
|
72
|
+
data: S;
|
|
73
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
74
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
75
|
+
code: z.ZodOptional<z.ZodString>;
|
|
76
|
+
message: z.ZodOptional<z.ZodString>;
|
|
77
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
78
|
+
} extends infer T_1 extends z.core.$ZodLooseShape ? { -readonly [k in keyof T_1 as {
|
|
79
|
+
ok: z.ZodBoolean;
|
|
80
|
+
command: z.ZodOptional<z.ZodString>;
|
|
81
|
+
data: S;
|
|
82
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
83
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
84
|
+
code: z.ZodOptional<z.ZodString>;
|
|
85
|
+
message: z.ZodOptional<z.ZodString>;
|
|
86
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
87
|
+
}[k] extends {
|
|
88
|
+
_zod: {
|
|
89
|
+
optout: "optional";
|
|
90
|
+
};
|
|
91
|
+
} ? never : k]: T_1[k]["_zod"]["output"]; } : never) & ({
|
|
92
|
+
ok: z.ZodBoolean;
|
|
93
|
+
command: z.ZodOptional<z.ZodString>;
|
|
94
|
+
data: S;
|
|
95
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
96
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
97
|
+
code: z.ZodOptional<z.ZodString>;
|
|
98
|
+
message: z.ZodOptional<z.ZodString>;
|
|
99
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
100
|
+
} extends infer T_2 extends z.core.$ZodLooseShape ? { -readonly [k_1 in keyof T_2 as {
|
|
101
|
+
ok: z.ZodBoolean;
|
|
102
|
+
command: z.ZodOptional<z.ZodString>;
|
|
103
|
+
data: S;
|
|
104
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
105
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
106
|
+
code: z.ZodOptional<z.ZodString>;
|
|
107
|
+
message: z.ZodOptional<z.ZodString>;
|
|
108
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}[k_1] extends {
|
|
110
|
+
_zod: {
|
|
111
|
+
optout: "optional";
|
|
112
|
+
};
|
|
113
|
+
} ? k_1 : never]?: T_2[k_1]["_zod"]["output"]; } : never) & Record<string, unknown> extends infer T ? { [K in keyof T]: T[K]; } : never;
|
|
114
|
+
export {};
|