peaks-loop 4.0.0-beta.9 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +910 -141
- package/README-en.md +26 -7
- package/README.md +75 -6
- package/agents/karpathy-reviewer.md +33 -0
- package/bin/peaks.js +0 -0
- package/dist/cli/cli-helpers.d.ts +31 -6
- package/dist/cli/cli-helpers.js +48 -25
- package/dist/cli/commands/_register.d.ts +3 -0
- package/dist/cli/commands/_register.js +139 -0
- package/dist/cli/commands/_super.d.ts +10 -0
- package/dist/cli/commands/_super.js +97 -0
- package/dist/cli/commands/adapter-commands-s2a.js +1 -1
- package/dist/cli/commands/asset-commands.js +33 -16
- package/dist/cli/commands/audit-commands.js +2 -2
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +12 -0
- package/dist/cli/commands/autonomous-swarm-commands.js +120 -0
- package/dist/cli/commands/bee-commands.js +1 -1
- package/dist/cli/commands/capability-commands.js +1 -1
- package/dist/cli/commands/capability-worker-config-sc-commands.js +0 -2
- package/dist/cli/commands/changeset-commands.d.ts +13 -0
- package/dist/cli/commands/changeset-commands.js +46 -0
- package/dist/cli/commands/code-commands.d.ts +11 -1
- package/dist/cli/commands/code-commands.js +19 -699
- package/dist/cli/commands/code-job-shape-commands.d.ts +9 -0
- package/dist/cli/commands/code-job-shape-commands.js +164 -0
- package/dist/cli/commands/code-mode-gate-commands.d.ts +9 -0
- package/dist/cli/commands/code-mode-gate-commands.js +223 -0
- package/dist/cli/commands/code-review-commands.js +2 -2
- package/dist/cli/commands/code-run-command.d.ts +12 -0
- package/dist/cli/commands/code-run-command.js +68 -0
- package/dist/cli/commands/code-runtime-commands.d.ts +11 -0
- package/dist/cli/commands/code-runtime-commands.js +391 -0
- package/dist/cli/commands/codegraph-commands.js +1 -1
- package/dist/cli/commands/compact-command.js +53 -1
- package/dist/cli/commands/complexity-commands.js +1 -1
- package/dist/cli/commands/config-commands.js +4 -75
- package/dist/cli/commands/container-commands.d.ts +28 -0
- package/dist/cli/commands/container-commands.js +221 -0
- package/dist/cli/commands/context-commands.js +3 -2
- package/dist/cli/commands/core/artifacts-command.js +1 -1
- package/dist/cli/commands/core/binding-commands.js +1 -1
- package/dist/cli/commands/core/doctor-command.js +63 -3
- package/dist/cli/commands/core/memory-command.js +1 -1
- package/dist/cli/commands/core/profile-command.js +1 -1
- package/dist/cli/commands/core/proxy-command.js +1 -1
- package/dist/cli/commands/core/session-command.js +9 -7
- package/dist/cli/commands/core/skill-command.js +7 -4
- package/dist/cli/commands/core/standards-command.js +1 -1
- package/dist/cli/commands/cron-commands.d.ts +57 -0
- package/dist/cli/commands/cron-commands.js +257 -0
- package/dist/cli/commands/cron-scheduler-commands.d.ts +47 -0
- package/dist/cli/commands/cron-scheduler-commands.js +284 -0
- package/dist/cli/commands/dashboard-commands.d.ts +4 -0
- package/dist/cli/commands/dashboard-commands.js +10 -0
- package/dist/cli/commands/dashboard-long-run.d.ts +25 -0
- package/dist/cli/commands/dashboard-long-run.js +122 -0
- package/dist/cli/commands/dashboard-summary.d.ts +12 -0
- package/dist/cli/commands/dashboard-summary.js +58 -0
- package/dist/cli/commands/dispatch-commands.d.ts +0 -7
- package/dist/cli/commands/dispatch-commands.js +372 -8
- package/dist/cli/commands/dispatch-from-dag.js +4 -1
- package/dist/cli/commands/doc-commands.js +1 -1
- package/dist/cli/commands/ecc-commands.d.ts +30 -0
- package/dist/cli/commands/ecc-commands.js +119 -0
- package/dist/cli/commands/evolution-commands.js +1 -1
- package/dist/cli/commands/feedback-commands.js +1 -1
- package/dist/cli/commands/final-review-commands.js +1 -1
- package/dist/cli/commands/fixture-commands.js +1 -1
- package/dist/cli/commands/fork-commands.js +1 -1
- package/dist/cli/commands/gate-commands.js +128 -6
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +21 -0
- package/dist/cli/commands/governance-classify-contract-commands.js +273 -0
- package/dist/cli/commands/heartbeat-commands.js +76 -5
- package/dist/cli/commands/heartbeat-watch-command.d.ts +31 -0
- package/dist/cli/commands/heartbeat-watch-command.js +146 -0
- package/dist/cli/commands/hook-handle.js +1 -1
- package/dist/cli/commands/hooks-commands.js +126 -10
- package/dist/cli/commands/ide-commands.js +1 -1
- package/dist/cli/commands/impact-commands.js +1 -1
- package/dist/cli/commands/job-commands.js +34 -1
- package/dist/cli/commands/lease-metrics-commands.d.ts +67 -0
- package/dist/cli/commands/lease-metrics-commands.js +231 -0
- package/dist/cli/commands/lease-stats-commands.d.ts +65 -0
- package/dist/cli/commands/lease-stats-commands.js +107 -0
- package/dist/cli/commands/legacy-commands.js +1 -1
- package/dist/cli/commands/log-commands.js +1 -1
- package/dist/cli/commands/loop-commands.js +1 -1
- package/dist/cli/commands/loop-eval-commands.js +1 -1
- package/dist/cli/commands/memory-commands.js +1 -1
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +1 -1
- package/dist/cli/commands/mut-commands.d.ts +1 -1
- package/dist/cli/commands/mut-commands.js +1 -5
- package/dist/cli/commands/observability-commands.js +1 -1
- package/dist/cli/commands/openspec-commands.js +65 -4
- package/dist/cli/commands/perf-audit-commands.js +3 -3
- package/dist/cli/commands/perf-commands.js +1 -1
- package/dist/cli/commands/polyrepo-commands.js +1 -1
- package/dist/cli/commands/prd-blocks-commands.js +1 -1
- package/dist/cli/commands/prd-commands.js +4 -2
- package/dist/cli/commands/preferences-commands.js +23 -3
- package/dist/cli/commands/project-commands.js +1 -1
- package/dist/cli/commands/qa-business-review-commands.js +1 -1
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +39 -3
- package/dist/cli/commands/release-commands.d.ts +15 -0
- package/dist/cli/commands/release-commands.js +113 -21
- package/dist/cli/commands/request-commands.js +1 -1
- package/dist/cli/commands/retrospective-commands.js +1 -1
- package/dist/cli/commands/reviewer-commands.js +1 -1
- package/dist/cli/commands/role-commands.js +1 -1
- package/dist/cli/commands/runtime-commands-helpers.d.ts +7 -0
- package/dist/cli/commands/runtime-commands-helpers.js +24 -0
- package/dist/cli/commands/runtime-commands.js +1 -2
- package/dist/cli/commands/sc-commands.js +4 -2
- package/dist/cli/commands/scan-commands.js +1 -1
- package/dist/cli/commands/security-audit-commands.js +3 -3
- package/dist/cli/commands/sediment-commands.js +10 -1
- package/dist/cli/commands/session-24h-mode.d.ts +26 -0
- package/dist/cli/commands/session-24h-mode.js +196 -0
- package/dist/cli/commands/share-commands.d.ts +19 -0
- package/dist/cli/commands/share-commands.js +121 -2
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +1 -1
- package/dist/cli/commands/skill-search-commands.js +4 -1
- package/dist/cli/commands/slice-commands.js +1 -1
- package/dist/cli/commands/slice-integrate-commands.js +1 -1
- package/dist/cli/commands/slice-review-commands.js +1 -1
- package/dist/cli/commands/smoke-commands.js +1 -1
- package/dist/cli/commands/sop-commands.js +1 -1
- package/dist/cli/commands/spill-demo-command.d.ts +7 -0
- package/dist/cli/commands/spill-demo-command.js +29 -0
- package/dist/cli/commands/statusline-commands.d.ts +12 -0
- package/dist/cli/commands/statusline-commands.js +79 -17
- package/dist/cli/commands/sub-agent-commands.js +2 -1
- package/dist/cli/commands/sub-agent-shared.d.ts +10 -0
- package/dist/cli/commands/sub-agent-shared.js +24 -1
- package/dist/cli/commands/swarm-commands.d.ts +13 -0
- package/dist/cli/commands/swarm-commands.js +77 -0
- package/dist/cli/commands/tech-commands.d.ts +64 -0
- package/dist/cli/commands/tech-commands.js +195 -0
- package/dist/cli/commands/understand-commands.js +1 -1
- package/dist/cli/commands/upgrade-commands.d.ts +2 -0
- package/dist/cli/commands/upgrade-commands.js +40 -5
- package/dist/cli/commands/user-touchpoint-commands.js +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +1 -1
- package/dist/cli/commands/vm-commands.d.ts +31 -0
- package/dist/cli/commands/vm-commands.js +274 -0
- package/dist/cli/commands/workflow-commands.js +24 -1
- package/dist/cli/commands/workflow-plan-commands.js +1 -1
- package/dist/cli/commands/workspace/init-command.js +1 -1
- package/dist/cli/commands/workspace/migrate-command.js +1 -1
- package/dist/cli/commands/workspace/reconcile-command.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +29 -0
- package/dist/cli/commands/worktree-auth-commands.js +652 -0
- package/dist/cli/index.js +58 -13
- package/dist/cli/program.d.ts +2 -2
- package/dist/cli/program.js +86 -281
- package/dist/services/24h-mode/decider.d.ts +103 -0
- package/dist/services/24h-mode/decider.js +144 -0
- package/dist/services/24h-mode/index.d.ts +12 -0
- package/dist/services/24h-mode/index.js +12 -0
- package/dist/services/24h-mode/state.d.ts +48 -0
- package/dist/services/24h-mode/state.js +51 -0
- package/dist/services/24h-mode/store.d.ts +27 -0
- package/dist/services/24h-mode/store.js +119 -0
- package/dist/services/artifacts/artifact-prerequisites.js +1 -1
- package/dist/services/artifacts/request-artifact-service.js +1 -1
- package/dist/services/artifacts/workspace-service.js +1 -1
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.d.ts +25 -0
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +91 -0
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +31 -0
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.d.ts +23 -0
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +59 -0
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.d.ts +28 -0
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +86 -0
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +41 -0
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +27 -0
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +47 -0
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.d.ts +19 -0
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +47 -0
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.d.ts +18 -0
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +70 -0
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.d.ts +25 -0
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +53 -0
- package/dist/services/audit/red-line-catalog-p2-a.d.ts +0 -6
- package/dist/services/audit/red-line-catalog-p2-a.js +230 -1
- package/dist/services/audit/static-service.d.ts +32 -25
- package/dist/services/audit/static-service.js +30 -109
- package/dist/services/audit-independent/index.d.ts +2 -0
- package/dist/services/audit-independent/index.js +2 -0
- package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +127 -0
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +446 -0
- package/dist/services/changeset/changeset-check-service.d.ts +22 -0
- package/dist/services/changeset/changeset-check-service.js +47 -0
- package/dist/services/code/auto-compact-modes.d.ts +30 -0
- package/dist/services/code/auto-compact-modes.js +38 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +43 -5
- package/dist/services/code/auto-compact-orchestrator.js +101 -21
- package/dist/services/code/dag-orchestrator.d.ts +30 -1
- package/dist/services/code/dag-orchestrator.js +106 -1
- package/dist/services/code/status-line-renderer.d.ts +2 -0
- package/dist/services/code/status-line-renderer.js +21 -3
- package/dist/services/code-review/ocr-service.d.ts +1 -1
- package/dist/services/code-review/ocr-service.js +6 -3
- package/dist/services/compact-history/compact-history-service.d.ts +41 -0
- package/dist/services/compact-history/compact-history-service.js +62 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +16 -0
- package/dist/services/compact-statusline/compact-statusline-service.js +83 -0
- package/dist/services/config/config-service.d.ts +1 -12
- package/dist/services/config/config-service.js +3 -72
- package/dist/services/config/config-types.d.ts +2 -4
- package/dist/services/config/config-types.js +1 -1
- package/dist/services/container/container-lease.d.ts +67 -0
- package/dist/services/container/container-lease.js +135 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +40 -5
- package/dist/services/context/auto-compact-dispatcher.js +32 -102
- package/dist/services/context/auto-compact-reader.js +1 -1
- package/dist/services/context/auto-compact-types.d.ts +27 -2
- package/dist/services/context/auto-compact-types.js +8 -1
- package/dist/services/context/build-dispatch-system-prompt.d.ts +75 -0
- package/dist/services/context/build-dispatch-system-prompt.js +117 -0
- package/dist/services/context/collector.d.ts +2 -2
- package/dist/services/context/context-builder.d.ts +4 -4
- package/dist/services/context/context-schema.d.ts +48 -48
- package/dist/services/context/ide-detect.d.ts +4 -0
- package/dist/services/context/ide-detect.js +24 -0
- package/dist/services/context/main-session-monitor.d.ts +1 -4
- package/dist/services/context/main-session-monitor.js +1 -24
- package/dist/services/context/memory-index-reader.d.ts +8 -0
- package/dist/services/context/memory-index-reader.js +57 -0
- package/dist/services/context/memory-lru-cache.d.ts +12 -0
- package/dist/services/context/memory-lru-cache.js +60 -0
- package/dist/services/context/memory-preflight-config.d.ts +19 -0
- package/dist/services/context/memory-preflight-config.js +25 -0
- package/dist/services/context/memory-preflight-service.d.ts +19 -0
- package/dist/services/context/memory-preflight-service.js +120 -0
- package/dist/services/context/spillover-store.d.ts +23 -0
- package/dist/services/context/spillover-store.js +155 -0
- package/dist/services/context/spillover-types.d.ts +18 -0
- package/dist/services/context/spillover-types.js +1 -0
- package/dist/services/crystallization/crystallization-service.d.ts +22 -5
- package/dist/services/crystallization/crystallization-service.js +8 -14
- package/dist/services/crystallization/crystallization-types.d.ts +6 -6
- package/dist/services/crystallization/evidence-brief-builder.d.ts +1 -1
- package/dist/services/crystallization/index.d.ts +13 -0
- package/dist/services/crystallization/index.js +13 -0
- package/dist/services/dashboard/project-dashboard-service.js +2 -2
- package/dist/services/dispatch/await-batch.d.ts +70 -0
- package/dist/services/dispatch/await-batch.js +272 -0
- package/dist/services/dispatch/batch-counter.js +1 -1
- package/dist/services/dispatch/dispatch-record-writer.d.ts +126 -4
- package/dist/services/dispatch/dispatch-record-writer.js +239 -9
- package/dist/services/dispatch/slice-dag.d.ts +46 -0
- package/dist/services/dispatch/slice-dag.js +6 -0
- package/dist/services/dispatch/stage-enum.d.ts +27 -0
- package/dist/services/dispatch/stage-enum.js +48 -0
- package/dist/services/dispatch/startup-timeout.d.ts +86 -0
- package/dist/services/dispatch/startup-timeout.js +97 -0
- package/dist/services/dispatch/sub-agent-dispatcher.js +40 -89
- package/dist/services/dispatch/test-tool-detection.d.ts +25 -1
- package/dist/services/dispatch/test-tool-detection.js +80 -0
- package/dist/services/doctor/doctor-service/checks/check-id-schema.d.ts +18 -0
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +64 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +69 -0
- package/dist/services/doctor/doctor-service/checks/dist-source-version.d.ts +32 -0
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +110 -0
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.d.ts +24 -0
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +164 -0
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +16 -0
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +57 -0
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +19 -0
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +66 -0
- package/dist/services/doctor/doctor-service/checks/schema-validity.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +33 -0
- package/dist/services/doctor/doctor-service/checks/skill-apply-note.d.ts +20 -0
- package/dist/services/doctor/doctor-service/checks/skill-apply-note.js +85 -0
- package/dist/services/doctor/doctor-service/checks/skill-existence.d.ts +13 -0
- package/dist/services/doctor/doctor-service/checks/skill-existence.js +30 -0
- package/dist/services/doctor/doctor-service/checks/skill-name-match.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/skill-name-match.js +25 -0
- package/dist/services/doctor/doctor-service/checks/skill-parse.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/skill-parse.js +19 -0
- package/dist/services/doctor/doctor-service/checks/skill-presence.d.ts +21 -0
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +75 -0
- package/dist/services/doctor/doctor-service/checks/skill-runbook.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/skill-runbook.js +47 -0
- package/dist/services/doctor/doctor-service/checks/statusline-install.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +32 -0
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.d.ts +13 -0
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +30 -0
- package/dist/services/doctor/doctor-service/checks/user-config.d.ts +11 -0
- package/dist/services/doctor/doctor-service/checks/user-config.js +27 -0
- package/dist/services/doctor/doctor-service/checks/workspace-init.d.ts +16 -0
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +34 -0
- package/dist/services/doctor/doctor-service/checks/workspace-layout.d.ts +33 -0
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +180 -0
- package/dist/services/doctor/doctor-service/index.d.ts +48 -0
- package/dist/services/doctor/doctor-service/index.js +254 -0
- package/dist/services/doctor/doctor-service/plugin-registry.d.ts +41 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +77 -0
- package/dist/services/doctor/doctor-service/report/final-summary.d.ts +20 -0
- package/dist/services/doctor/doctor-service/report/final-summary.js +29 -0
- package/dist/services/doctor/doctor-service/types.d.ts +245 -0
- package/dist/services/doctor/doctor-service/types.js +15 -0
- package/dist/services/doctor/doctor-service.d.ts +15 -146
- package/dist/services/doctor/doctor-service.js +22 -926
- package/dist/services/doctor/index.d.ts +22 -0
- package/dist/services/doctor/index.js +22 -0
- package/dist/services/env/shell-probe.d.ts +71 -0
- package/dist/services/env/shell-probe.js +161 -0
- package/dist/services/evolution/evolution-types.d.ts +39 -39
- package/dist/services/final-review/final-review-service.d.ts +11 -1
- package/dist/services/final-review/index.d.ts +2 -0
- package/dist/services/final-review/index.js +1 -0
- package/dist/services/hooks/auto-compact-hook-install.d.ts +4 -5
- package/dist/services/hooks/auto-compact-hook-install.js +4 -5
- package/dist/services/hooks/worktree-authorization-gate.d.ts +205 -0
- package/dist/services/hooks/worktree-authorization-gate.js +492 -0
- package/dist/services/ide/adapters/claude-code-adapter.js +2 -2
- package/dist/services/ide/adapters/qoder-adapter.d.ts +25 -0
- package/dist/services/ide/adapters/qoder-adapter.js +57 -0
- package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +16 -0
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +45 -0
- package/dist/services/ide/ide-registry.js +6 -0
- package/dist/services/ide/ide-types.d.ts +1 -1
- package/dist/services/job/job-types.d.ts +56 -56
- package/dist/services/job-snapshot/index.d.ts +8 -0
- package/dist/services/job-snapshot/index.js +7 -0
- package/dist/services/{job/job-resource-snapshot.d.ts → job-snapshot/snapshot.d.ts} +1 -1
- package/dist/services/job-snapshot/types.d.ts +7 -0
- package/dist/services/job-snapshot/types.js +1 -0
- package/dist/services/karpathy-cost/karpathy-cost-check-service.d.ts +67 -0
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +108 -0
- package/dist/services/log/retention.d.ts +16 -0
- package/dist/services/log/retention.js +17 -0
- package/dist/services/loop/loop-bee-relation-types.d.ts +6 -6
- package/dist/services/loop/loop-release-types.d.ts +24 -24
- package/dist/services/loop/monotonic-runner.d.ts +17 -11
- package/dist/services/loop/monotonic-runner.js +118 -79
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +8 -0
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +253 -0
- package/dist/services/memory/project-memory-service/index/ranking.d.ts +6 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +171 -0
- package/dist/services/memory/project-memory-service/index/search.d.ts +34 -0
- package/dist/services/memory/project-memory-service/index/search.js +194 -0
- package/dist/services/memory/project-memory-service/index.d.ts +9 -0
- package/dist/services/memory/project-memory-service/index.js +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +9 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +106 -0
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.d.ts +7 -0
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +96 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +5 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +56 -0
- package/dist/services/memory/project-memory-service/store/paths.d.ts +8 -0
- package/dist/services/memory/project-memory-service/store/paths.js +116 -0
- package/dist/services/memory/project-memory-service/types.d.ts +128 -0
- package/dist/services/memory/project-memory-service/types.js +9 -0
- package/dist/services/memory/project-memory-service.d.ts +1 -167
- package/dist/services/memory/project-memory-service.js +19 -816
- package/dist/services/migrate-skill-name/schema.d.ts +2 -2
- package/dist/services/observability/aggregation.d.ts +27 -0
- package/dist/services/observability/aggregation.js +72 -0
- package/dist/services/observability/observability-service.d.ts +73 -7
- package/dist/services/observability/observability-service.js +87 -1
- package/dist/services/openspec/artifact-boundary.d.ts +138 -0
- package/dist/services/openspec/artifact-boundary.js +150 -0
- package/dist/services/openspec/coverage-evidence-reader.d.ts +191 -0
- package/dist/services/openspec/coverage-evidence-reader.js +386 -0
- package/dist/services/openspec/openspec-archive-service.d.ts +70 -0
- package/dist/services/openspec/openspec-archive-service.js +320 -8
- package/dist/services/openspec/openspec-bridge-service.js +1 -1
- package/dist/services/openspec/openspec-init-service.js +1 -1
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-render-service.js +7 -4
- package/dist/services/openspec/openspec-scan-service.js +1 -1
- package/dist/services/openspec/openspec-validate-service.js +5 -4
- package/dist/services/preferences/preferences-service.js +10 -0
- package/dist/services/preferences/preferences-types.d.ts +13 -0
- package/dist/services/preferences/preferences-types.js +11 -0
- package/dist/services/qa/screenshot-archive-service.d.ts +51 -0
- package/dist/services/qa/screenshot-archive-service.js +134 -0
- package/dist/services/rd/rd-service.js +10 -11
- package/dist/services/rd/types.d.ts +32 -32
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +60 -0
- package/dist/services/rd-swarm/rd-swarm-service.js +93 -0
- package/dist/services/recommendations/capability-seed-items.js +0 -1
- package/dist/services/recommendations/capability-seed-mappings.js +0 -1
- package/dist/services/recommendations/capability-seed-sources.js +0 -1
- package/dist/services/release/version-precheck-service.d.ts +51 -0
- package/dist/services/release/version-precheck-service.js +257 -0
- package/dist/services/scan/acceptance-coverage-service.js +1 -1
- package/dist/services/scan/archetype-service.js +1 -1
- package/dist/services/scan/existing-system-service.js +1 -1
- package/dist/services/scan/libraries-service.js +1 -1
- package/dist/services/sediment/json-schema.d.ts +40 -40
- package/dist/services/share/bundle-types.d.ts +12 -12
- package/dist/services/share/run-state-contract.d.ts +2 -2
- package/dist/services/skill/skill-search-service.d.ts +12 -7
- package/dist/services/skill/skill-search-service.js +8 -4
- package/dist/services/skillhub/migrations/001-initial.sql +71 -0
- package/dist/services/skillhub/migrations/002-loop-release.sql +32 -0
- package/dist/services/skillhub/migrations/003-loop-bee-relation.sql +35 -0
- package/dist/services/skillhub/migrations/004-loop-bee-extension.sql +65 -0
- package/dist/services/skillhub/migrations/005-evolution-evaluation.sql +81 -0
- package/dist/services/skillhub/migrations/006-crystallization-event.sql +92 -0
- package/dist/services/skills/hooks-settings-service.d.ts +75 -0
- package/dist/services/skills/hooks-settings-service.js +230 -2
- package/dist/services/skills/skill-registry.d.ts +1 -0
- package/dist/services/skills/skill-registry.js +6 -4
- package/dist/services/skills/skill-runbook-service.js +1 -1
- package/dist/services/slice/slice-check-service.js +1 -1
- package/dist/services/standards/main-session-monitor-ban-hook.d.ts +14 -0
- package/dist/services/standards/main-session-monitor-ban-hook.js +19 -0
- package/dist/services/standards/missing-standards-detector.d.ts +25 -0
- package/dist/services/standards/missing-standards-detector.js +43 -12
- package/dist/services/tech/tech-change-id-service.d.ts +82 -0
- package/dist/services/tech/tech-change-id-service.js +117 -0
- package/dist/services/understand/understand-hybrid-service.js +1 -1
- package/dist/services/understand/understand-scan-service.js +2 -2
- package/dist/services/upgrade/upgrade-service.js +4 -3
- package/dist/services/verdict/envelopes.d.ts +2 -2
- package/dist/services/verdict/envelopes.js +2 -2
- package/dist/services/verdict/verdict-aggregator.d.ts +3 -3
- package/dist/services/vm/vm-lease.d.ts +40 -0
- package/dist/services/vm/vm-lease.js +137 -0
- package/dist/services/workflow/autonomous-resume-writer.js +1 -1
- package/dist/services/workflow/pipeline-verify-gate-support.d.ts +47 -0
- package/dist/services/workflow/pipeline-verify-gate-support.js +194 -0
- package/dist/services/workflow/pipeline-verify-service.d.ts +17 -81
- package/dist/services/workflow/pipeline-verify-service.js +42 -218
- package/dist/services/workflow/pipeline-verify-types.d.ts +90 -0
- package/dist/services/workflow/pipeline-verify-types.js +10 -0
- package/dist/services/workflow/plan-reader.d.ts +1 -1
- package/dist/services/workflow/plan-reader.js +1 -1
- package/dist/services/workflow/plan-refresher.d.ts +1 -1
- package/dist/services/workflow/plan-refresher.js +1 -1
- package/dist/services/workflow/plan-trigger-detector.d.ts +1 -1
- package/dist/services/workflow/plan-trigger-detector.js +1 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +1 -1
- package/dist/services/workflow/workflow-autonomous-service.d.ts +2 -98
- package/dist/services/workflow/workflow-autonomous-types.d.ts +114 -0
- package/dist/services/workflow/workflow-autonomous-types.js +21 -0
- package/dist/services/workflow/workflow-router-service.js +18 -16
- package/dist/services/workflow/workflow-spec-lint.d.ts +13 -0
- package/dist/services/workflow/workflow-spec-lint.js +75 -0
- package/dist/services/workflow/workflow-spec-types.d.ts +100 -0
- package/dist/services/workflow/workflow-spec-types.js +13 -0
- package/dist/services/workflow/workflow-spec-yaml.d.ts +17 -0
- package/dist/services/workflow/workflow-spec-yaml.js +88 -0
- package/dist/services/workflow/workflow-spec.d.ts +11 -91
- package/dist/services/workflow/workflow-spec.js +16 -145
- package/dist/services/workspace/migrate-service.js +1 -1
- package/dist/services/workspace/workspace-service.js +1 -1
- package/dist/services/worktree/worktree-lease.d.ts +170 -0
- package/dist/services/worktree/worktree-lease.js +242 -0
- package/package.json +47 -51
- package/scripts/clean-dist.mjs +31 -1
- package/scripts/copy-templates.mjs +16 -0
- package/scripts/sync-version.mjs +53 -2
- package/skills/bee/peaks-perf-audit/SKILL.md +17 -0
- package/skills/bee/peaks-prd/SKILL.md +16 -0
- package/skills/bee/peaks-prd/test-prompts.json +12 -0
- package/skills/bee/peaks-qa/SKILL.md +16 -1
- package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +22 -0
- package/skills/bee/peaks-qa/test-prompts.json +12 -0
- package/skills/bee/peaks-rd/SKILL.md +29 -20
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +39 -0
- package/skills/bee/peaks-rd/test-prompts.json +12 -0
- package/skills/bee/peaks-reviewer/SKILL.md +17 -0
- package/skills/bee/peaks-sc/SKILL.md +16 -0
- package/skills/bee/peaks-security-audit/SKILL.md +17 -0
- package/skills/bee/peaks-txt/SKILL.md +16 -0
- package/skills/bee/peaks-txt/test-prompts.json +12 -0
- package/skills/bee/peaks-ui/SKILL.md +49 -43
- package/skills/bee/peaks-ui/test-prompts.json +12 -0
- package/skills/peaks-code/SKILL.md +54 -109
- package/skills/peaks-code/references/boundaries.md +15 -1
- package/skills/peaks-code/references/cron-scheduler-deployment.md +313 -0
- package/skills/peaks-code/references/external-skill-invocation.md +27 -0
- package/skills/peaks-code/references/lease-dashboard.html +224 -0
- package/skills/peaks-code/references/lease-stats.sample.json +26 -0
- package/skills/peaks-code/references/peaks-worktree-l2-enforcers.md +208 -0
- package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
- package/skills/peaks-code/references/runbook.md +63 -1
- package/skills/peaks-code/references/startup-sequence.md +110 -0
- package/skills/peaks-code/references/step-0-8-gate.md +1 -1
- package/skills/peaks-code/references/sub-agent-dispatch.md +92 -1
- package/skills/peaks-code/references/worktree-governance.md +123 -0
- package/skills/peaks-code/test-prompts.json +12 -0
- package/skills/peaks-doctor/SKILL.md +1 -1
- package/skills/peaks-ide/SKILL.md +1 -1
- package/skills/peaks-solo/SKILL.md +21 -0
- package/skills/peaks-solo/references/triage-decision-table.md +6 -0
- package/skills/peaks-sop/test-prompts.json +17 -0
- package/dist/cli/commands/agent-commands.d.ts +0 -20
- package/dist/cli/commands/agent-commands.js +0 -48
- package/dist/cli/commands/classify-classify-commands.d.ts +0 -19
- package/dist/cli/commands/classify-classify-commands.js +0 -151
- package/dist/cli/commands/contract-commands.d.ts +0 -26
- package/dist/cli/commands/contract-commands.js +0 -114
- package/dist/cli/commands/session-auto-compact-hook-command.d.ts +0 -37
- package/dist/cli/commands/session-auto-compact-hook-command.js +0 -127
- package/dist/cli/commands/worker-commands.d.ts +0 -3
- package/dist/cli/commands/worker-commands.js +0 -52
- package/dist/services/agent/ecc-agent-service.d.ts +0 -47
- package/dist/services/agent/ecc-agent-service.js +0 -143
- package/dist/services/config/provider-service.d.ts +0 -48
- package/dist/services/config/provider-service.js +0 -143
- package/dist/services/context/dispatch-context-guard.d.ts +0 -27
- package/dist/services/context/dispatch-context-guard.js +0 -192
- package/dist/services/context/shared-channel.d.ts +0 -93
- package/dist/services/context/shared-channel.js +0 -308
- package/dist/services/filesystem/file-lock.d.ts +0 -11
- package/dist/services/filesystem/file-lock.js +0 -152
- package/dist/services/mut/assert-scanner.d.ts +0 -6
- package/dist/services/mut/assert-scanner.js +0 -116
- package/dist/services/mut/index.d.ts +0 -8
- package/dist/services/mut/index.js +0 -7
- package/dist/services/mut/mut-runner.d.ts +0 -39
- package/dist/services/mut/mut-runner.js +0 -29
- package/dist/services/mut/production-stryker.d.ts +0 -2
- package/dist/services/mut/production-stryker.js +0 -75
- package/dist/services/mut/report-builder.d.ts +0 -11
- package/dist/services/mut/report-builder.js +0 -110
- package/dist/services/mut/report-loader.d.ts +0 -31
- package/dist/services/mut/report-loader.js +0 -78
- package/dist/services/mut/thresholds.d.ts +0 -21
- package/dist/services/mut/thresholds.js +0 -22
- package/dist/services/mut/types.d.ts +0 -336
- package/dist/services/mut/types.js +0 -59
- package/dist/services/providers/minimax-provider-service.d.ts +0 -24
- package/dist/services/providers/minimax-provider-service.js +0 -143
- package/dist/services/providers/minimax-worker-service.d.ts +0 -21
- package/dist/services/providers/minimax-worker-service.js +0 -83
- package/dist/shared/fs.d.ts +0 -4
- package/dist/shared/fs.js +0 -26
- package/dist/shared/paths.d.ts +0 -6
- package/dist/shared/paths.js +0 -50
- package/dist/shared/result.d.ts +0 -22
- package/dist/shared/result.js +0 -46
- package/dist/shared/version.d.ts +0 -1
- package/dist/shared/version.js +0 -1
- package/examples/video-demo/README.md +0 -142
- package/examples/video-demo/out/en-closing-960.png +0 -0
- package/examples/video-demo/out/zh-closing-960.png +0 -0
- package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
- package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
- /package/dist/services/{job/job-resource-snapshot.js → job-snapshot/snapshot.js} +0 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# peaks worktree L2 enforcers — reference
|
|
2
|
+
|
|
3
|
+
> **Slice 2026-07-29-rid-prose-only-sweep Part 33.** Companion to
|
|
4
|
+
> the L2 ecosystem shipped across 28 commits. The peaks
|
|
5
|
+
> `peaks audit red-lines --project .` command reports 119
|
|
6
|
+
> catalog red-lines, of which **86+ are cli-backed enforcers**
|
|
7
|
+
> (the rest are discovered prose-only lines still being
|
|
8
|
+
> sweeped). This document is the operator-side reference for
|
|
9
|
+
> the L2 surface.
|
|
10
|
+
|
|
11
|
+
## What is the L2 surface?
|
|
12
|
+
|
|
13
|
+
The **L2 surface** is the worktree / dispatch / observability
|
|
14
|
+
stack peaks-loop owns. Sub-agents touching any of the L2
|
|
15
|
+
verbs (`peaks worktree *`, `peaks container *`,
|
|
16
|
+
`peaks sub-agent dispatch --isolation <mode>`, `peaks lease-*`,
|
|
17
|
+
`peaks cron*`, `peaks audit red-lines`) need to read this
|
|
18
|
+
document to know which enforcers will run against them.
|
|
19
|
+
|
|
20
|
+
## Why this document exists
|
|
21
|
+
|
|
22
|
+
LLM-side runners (skills/peaks-code, peaks-rd, peaks-qa, etc.)
|
|
23
|
+
read the prose-only catalog as guidance but historically
|
|
24
|
+
under-estimated how strict the cli-backed enforcers are.
|
|
25
|
+
Documenting the enforcer surface upfront prevents
|
|
26
|
+
"discovered late in a cycle" surprises.
|
|
27
|
+
|
|
28
|
+
## Enforcers by source
|
|
29
|
+
|
|
30
|
+
### peaks-worktree authority (L2 grant + lease)
|
|
31
|
+
|
|
32
|
+
- **`withSuperpowersSkillDenylist`** (src/services/skills/hooks-settings-service.ts)
|
|
33
|
+
Installs `UseSkill(superpowers:using-git-worktrees)` into
|
|
34
|
+
`permissions.deny`. Triggered by `peaks hooks install`.
|
|
35
|
+
- **`withoutSuperpowersSkillDenylist`** — symmetric uninstall.
|
|
36
|
+
- **`withTriggeredDenyList`** (Part 27 / 29) — appends
|
|
37
|
+
`Edit(deny-trigger:<phrase>)` when the existing settings
|
|
38
|
+
has superpowers / git-worktree / podman-run entries. LLM
|
|
39
|
+
must run `peaks hooks uninstall` to remove.
|
|
40
|
+
- **`decideFromAuthorization`** (src/services/hooks/worktree-authorization-gate.ts)
|
|
41
|
+
Decides allow / deny for a worktree-mutating tool call
|
|
42
|
+
based on `peaks worktree auth grant` file contents.
|
|
43
|
+
- **`decideFromLease`** (Part 2.B) — falls back to the lease
|
|
44
|
+
file when no grant is on file. Activated by
|
|
45
|
+
`PEAKS_WORKTREE_LEASE_ID` env var.
|
|
46
|
+
- **`decideFromContainerLease`** (Part 19) — analogous to
|
|
47
|
+
`decideFromLease` for the L4 container surface.
|
|
48
|
+
Activated by `PEAKS_CONTAINER_LEASE_ID` env var.
|
|
49
|
+
|
|
50
|
+
### L2 section structure (P2-a lint)
|
|
51
|
+
|
|
52
|
+
- **`rl-section-hard-contracts-001`** (lint-style.ts) — peaks-*
|
|
53
|
+
bee SKILL.md must declare `## Hard contracts` section.
|
|
54
|
+
- **`rl-section-mandatory-artifact-001`** — must declare
|
|
55
|
+
`## Mandatory per-request artifact` section.
|
|
56
|
+
- **`rl-section-default-runbook-001`** — must declare
|
|
57
|
+
`## Default runbook` section.
|
|
58
|
+
- **`rl-section-gate-index-001`** — must declare
|
|
59
|
+
`## RD gate index` / `## QA gate index` section.
|
|
60
|
+
- **`rl-section-naming-axiom-001`** — single-scope-axis
|
|
61
|
+
naming convention.
|
|
62
|
+
|
|
63
|
+
### L2 frontmatter (P2-a lint)
|
|
64
|
+
|
|
65
|
+
- **`rl-frontmatter-skills-md-001`** — name / description
|
|
66
|
+
frontmatter on every SKILL.md.
|
|
67
|
+
- **`rl-frontmatter-references-load-strategy-001`** —
|
|
68
|
+
loadStrategy field on references/*.md.
|
|
69
|
+
- **`rl-frontmatter-applicable-task-levels-001`** —
|
|
70
|
+
applicableTaskLevels field on references/*.md.
|
|
71
|
+
|
|
72
|
+
### L2 output style (P2-a lint)
|
|
73
|
+
|
|
74
|
+
- **`rl-output-style-status-header-001`** — every peaks-*
|
|
75
|
+
response carries a `peaks-loop skill: | peaks-loop gate: |
|
|
76
|
+
peaks-loop next:` status header.
|
|
77
|
+
- **`rl-output-style-no-fluff-001`** — no greeting / persona
|
|
78
|
+
fluff in SKILL.md.
|
|
79
|
+
- **`rl-output-style-no-closing-prompt-001`** — no "Should I
|
|
80
|
+
continue?" closing prompt.
|
|
81
|
+
|
|
82
|
+
### L2 reference integrity (P2-a lint)
|
|
83
|
+
|
|
84
|
+
- **`rl-ref-path-resolves-001`** — every `references/*.md`
|
|
85
|
+
link in a SKILL.md resolves to a real file.
|
|
86
|
+
- **`rl-ref-no-broken-mkdir-001`** — no `mkdir -p
|
|
87
|
+
nonexistent/dir` in references code blocks.
|
|
88
|
+
- **`rl-ref-no-pwd-symlink-jumps-001`** — no pwd that
|
|
89
|
+
jumps symlinks.
|
|
90
|
+
- **`rl-ref-no-relative-archive-paths-001`** — no relative
|
|
91
|
+
archive paths in references.
|
|
92
|
+
|
|
93
|
+
### L2 OpenSpec
|
|
94
|
+
|
|
95
|
+
- **`rl-openspec-proposal-has-ac-bullets-001`** — OpenSpec
|
|
96
|
+
proposal must have acceptance criteria bullets.
|
|
97
|
+
- **`rl-openspec-proposal-has-spec-changes-001`** — OpenSpec
|
|
98
|
+
proposal must have spec changes.
|
|
99
|
+
|
|
100
|
+
### L2 CLI back
|
|
101
|
+
|
|
102
|
+
- **`rl-cli-back-mandatory-text-001`** — every CLI command's
|
|
103
|
+
`--help` text matches the canonical `mandatory` keyword.
|
|
104
|
+
- **`rl-cli-back-no-orphan-blocking-001`** — every blocking
|
|
105
|
+
red line has a corresponding enforcer.
|
|
106
|
+
- **`rl-cli-back-no-orphan-must-not-001`** — every MUST-NOT
|
|
107
|
+
red line has a corresponding enforcer.
|
|
108
|
+
- **`rl-cli-back-prose-only-threshold-001`** — the
|
|
109
|
+
prose-only ratio stays ≤ 5% (per §10.2 L2 acceptance).
|
|
110
|
+
- **`rl-cli-back-prose-only-ratio-001`** — secondary
|
|
111
|
+
threshold (7% per slice 2026-07-28).
|
|
112
|
+
|
|
113
|
+
### L2 catalog governance
|
|
114
|
+
|
|
115
|
+
- **`rl-catalog-total-le-45-001`** — the catalog size must
|
|
116
|
+
grow to ≥ 45 (P2-a target).
|
|
117
|
+
- **`rl-catalog-prose-only-ratio-001`** — secondary 7%
|
|
118
|
+
threshold (post-reform).
|
|
119
|
+
|
|
120
|
+
### L2 peaks-* bee runtime contracts (sweep 1-8)
|
|
121
|
+
|
|
122
|
+
- **`rl-skill-presence-mandatory-001`** (sweep 003) —
|
|
123
|
+
peaks-* bee SKILL.md must declare the "Skill presence
|
|
124
|
+
(MANDATORY first action)" section.
|
|
125
|
+
- **`rl-prd-source-snapshot-placement-001`** (sweep 004) —
|
|
126
|
+
peaks-prd SKILL.md must declare the source-snapshot
|
|
127
|
+
placement guidance + Prohibited paths.
|
|
128
|
+
- **`rl-prd-artifact-handoff-001`** (sweep 004) — peaks-prd
|
|
129
|
+
SKILL.md must declare the artifact handoff contract
|
|
130
|
+
(Preserved behavior + step 5.5 + Transition verification
|
|
131
|
+
gates).
|
|
132
|
+
- **`rl-rd-handoff-contract-001`** (sweep 005) — peaks-rd
|
|
133
|
+
SKILL.md must declare the QA-handoff BLOCKING contract
|
|
134
|
+
(tech-doc + perf-baseline).
|
|
135
|
+
- **`rl-rd-coverage-discipline-001`** (sweep 005) —
|
|
136
|
+
peaks-rd SKILL.md must declare the coverage discipline
|
|
137
|
+
(100% target + no-padding rule).
|
|
138
|
+
- **`rl-qa-gateguard-preflight-001`** (sweep 006) — peaks-qa
|
|
139
|
+
SKILL.md must declare the gateguard pre-flight BLOCKING
|
|
140
|
+
section.
|
|
141
|
+
- **`rl-qa-runtime-contract-001`** (sweep 006) — peaks-qa
|
|
142
|
+
SKILL.md must declare the runtime contract (transition
|
|
143
|
+
gates + Playwright MCP fallback + OpenSpec integration).
|
|
144
|
+
- **`rl-peaks-ui-superpowers-chain-001`** (sweep 007) —
|
|
145
|
+
peaks-ui SKILL.md must declare the superpowers chain
|
|
146
|
+
refusal + reference-material contract.
|
|
147
|
+
- **`rl-peaks-ui-involvement-001`** (sweep 007) — peaks-ui
|
|
148
|
+
SKILL.md must declare the UI-involvement identification
|
|
149
|
+
block.
|
|
150
|
+
- **`rl-peaks-txt-upstream-001`** (sweep 007) — peaks-txt
|
|
151
|
+
SKILL.md must declare the upstream-inspection +
|
|
152
|
+
memory-block contract.
|
|
153
|
+
- **`rl-peaks-perf-audit-scope-001`** (sweep 007) —
|
|
154
|
+
peaks-perf-audit SKILL.md must declare the non-perf
|
|
155
|
+
MUST NOT invoke clause.
|
|
156
|
+
- **`rl-peaks-rd-runtime-contract-001`** (sweep 008) —
|
|
157
|
+
peaks-rd SKILL.md must declare the runtime contract
|
|
158
|
+
(OpenSpec usage + Frontend project generation).
|
|
159
|
+
- **`rl-peaks-ui-transition-gates-001`** (sweep 008) —
|
|
160
|
+
peaks-ui SKILL.md must declare the Transition verification
|
|
161
|
+
gates section.
|
|
162
|
+
- **`rl-peaks-sc-transition-gates-001`** (sweep 008) —
|
|
163
|
+
peaks-sc SKILL.md must declare the Transition verification
|
|
164
|
+
gates section.
|
|
165
|
+
- **`rl-peaks-txt-runtime-contract-001`** (sweep 008) —
|
|
166
|
+
peaks-txt SKILL.md must declare the runtime contract
|
|
167
|
+
(Transition verification gates + Memory block embedding
|
|
168
|
+
rule).
|
|
169
|
+
|
|
170
|
+
## How to run
|
|
171
|
+
|
|
172
|
+
```sh
|
|
173
|
+
# Default — list every catalog red line.
|
|
174
|
+
peaks audit red-lines --project .
|
|
175
|
+
|
|
176
|
+
# Just the cli-backed ones (the L2 surface).
|
|
177
|
+
peaks audit red-lines --project . --json | jq '.audit[] | select(.backing == "cli-backed")'
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## How to read the report
|
|
181
|
+
|
|
182
|
+
Each entry has:
|
|
183
|
+
|
|
184
|
+
- `id` — the catalog id (e.g. `rl-skill-presence-mandatory-001`).
|
|
185
|
+
- `rule` — the human-readable description of the contract.
|
|
186
|
+
- `source.file` — the file the marker was found in.
|
|
187
|
+
- `source.line` — the line number (1-indexed).
|
|
188
|
+
- `source.marker` — MANDATORY / BLOCKING / MUST NOT / RED LINE.
|
|
189
|
+
- `backing` — `cli-backed` (an enforcer file exists) or
|
|
190
|
+
`prose-only` (no enforcer; the line is documented in
|
|
191
|
+
skills/ and audited by humans).
|
|
192
|
+
|
|
193
|
+
A red line that is `prose-only` is **not enforced** by
|
|
194
|
+
peaks. The audit report's `proseOnly` count is the backlog
|
|
195
|
+
that has not been closed yet.
|
|
196
|
+
|
|
197
|
+
## Related memory
|
|
198
|
+
|
|
199
|
+
- [[2026-07-29-worktree-l2-extended-part1]] — lease foundation
|
|
200
|
+
- [[2026-07-29-worktree-l2-extended-part2]] — renew/list/gc/status + hook
|
|
201
|
+
- [[2026-07-29-worktree-l2-extended-part3]] — auto-release
|
|
202
|
+
- [[2026-07-29-worktree-l2-extended-part4]] — observability + v3
|
|
203
|
+
- [[2026-07-29-worktree-l2-extended-part5]] — leak rate + cross-session
|
|
204
|
+
- [[2026-07-29-worktree-l2-extended-part6-9]] — final sediment
|
|
205
|
+
- [[2026-07-29-worktree-l1-dispatch-block]] — L1 dispatch hardening
|
|
206
|
+
- [[2026-07-29-worktree-skills-md-shipped]] — SKILL.md npm contract
|
|
207
|
+
- [[2026-07-29-worktree-layer3-deny]] — L3 superpowers deny
|
|
208
|
+
- [[2026-07-27-worktree-user-auth-hard-gate]] — L2 grant token
|
|
@@ -72,10 +72,10 @@ This step is strictly IDE-agnostic. The LLM calls the peaks CLI; no IDE-specific
|
|
|
72
72
|
|
|
73
73
|
## Companion surface — auto-compact (zero-pause)
|
|
74
74
|
|
|
75
|
-
When the runner crosses the v2.13.0 auto-compact thresholds (0.85 pre-compact / 0.95 red-line), `peaks session checkpoint` is NOT enough on its own — the LLM must also fire `peaks
|
|
75
|
+
When the runner crosses the v2.13.0 auto-compact thresholds (0.85 pre-compact / 0.95 red-line), `peaks session checkpoint` is NOT enough on its own — the LLM must also fire `peaks compact auto --execute` (or wait for the in-band PreToolUse hook at ratio ≥ 0.95 to compact the runner itself). See:
|
|
76
76
|
|
|
77
|
-
- `peaks
|
|
78
|
-
- `peaks
|
|
77
|
+
- `peaks compact auto --execute` — orchestrator that writes the convergence plan + dispatches the compact pathway
|
|
78
|
+
- `peaks compact auto` — the PreToolUse hook entrypoint fired by `.claude/settings.local.json` (slice 2026-07-02-auto-compact-zero-pause)
|
|
79
79
|
- `.peaks/memory/2026-06-27-auto-compact-design.md` — zero-human-intervention design rationale
|
|
80
80
|
|
|
81
|
-
The two surfaces compose: `peaks session checkpoint` persists the context state, `peaks
|
|
81
|
+
The two surfaces compose: `peaks session checkpoint` persists the context state, `peaks compact auto` collapses the runner's window. The LLM fires both in the 0.85–0.95 zone; the hook fires alone at ≥ 0.95.
|
|
@@ -45,6 +45,18 @@ peaks standards init --project <repo> --apply --json
|
|
|
45
45
|
# or: peaks standards update --project <repo> --apply --json
|
|
46
46
|
# After apply, verify the files actually exist on disk (see Peaks-Loop Gate G).
|
|
47
47
|
|
|
48
|
+
# ── Step 1.x — `peaks --help` 路由速查(4.x 收敛后:73→9 字节恒等) ─────────
|
|
49
|
+
#
|
|
50
|
+
# peaks --help
|
|
51
|
+
# ├─ doctor / code / skill / session / workflow (5 super-command)
|
|
52
|
+
# ├─ make / learn / sop / sub-agent (4 ops)
|
|
53
|
+
# └─ (其他 60+ top-level subcommand)
|
|
54
|
+
#
|
|
55
|
+
# 全 73 个原命令收敛到 9 个 super-command 后,surface 字节恒等;
|
|
56
|
+
# 4 ops 路由分别管:动态造 skill / 沉淀学习 / SOP 注册 / sub-agent 派发。
|
|
57
|
+
# 若 LLM 看到 peaks-code runbook 里出现老命令(>9 之外的 raw 名字),
|
|
58
|
+
# 先 `peaks --help` 校验当前 surface,再决定改 runbook 还是改命令。
|
|
59
|
+
|
|
48
60
|
# 2. Peaks-Loop PRD (Assisted/Strict: [CONFIRM] before confirmed-by-user)
|
|
49
61
|
# Classify the request type from the PRD: feature | bugfix | refactor | docs | config | chore
|
|
50
62
|
# This drives RD/QA gate strictness — see "Mandatory RD QA repair loop" for the matrix.
|
|
@@ -59,6 +71,25 @@ peaks request lint <rid> --role prd --project <repo> --json
|
|
|
59
71
|
peaks request transition <rid> --role prd --state confirmed-by-user --project <repo> --json
|
|
60
72
|
peaks request transition <rid> --role prd --state handed-off --project <repo> --json
|
|
61
73
|
|
|
74
|
+
# 2.7. Peaks-Loop Superpowers bridge (effective 2026-07-24, slice 2026-07-24-peaks-code-bridge-002-rootcause)
|
|
75
|
+
# Why: peaks-code must coexist with the superpowers skill family without being overridden by it.
|
|
76
|
+
# When the user (or the IDE skill picker) suggests invoking superpowers:brainstorming /
|
|
77
|
+
# superpowers:writing-plans, the LLM MUST:
|
|
78
|
+
# 1. Run the superpowers skill as REFERENCE ONLY — read the brainstorm / plan output.
|
|
79
|
+
# 2. Re-author the borrowed plan as a peaks-rd PRD artefact via:
|
|
80
|
+
# peaks sub-agent dispatch prd --prompt "<brainstorm-seed>" --request-id <rid> --batch-id <uuid> --json
|
|
81
|
+
# 3. Continue peaks-code from Step 3 (sub-agent fan-out). Do NOT dispatch
|
|
82
|
+
# superpowers:executing-plans or superpowers:subagent-driven-development; peaks-rd / peaks-qa
|
|
83
|
+
# own plan execution.
|
|
84
|
+
# Verify junction integrity before any LLM edit to a user-global skill path:
|
|
85
|
+
# fsutil reparsepoint query "$HOME/.claude/skills/peaks-code" # Windows
|
|
86
|
+
# readlink -f "$HOME/.claude/skills/peaks-code" # POSIX
|
|
87
|
+
# → not a junction (or not a symlink) → STOP and re-route via peaks skill sync after junction rebuild.
|
|
88
|
+
# Forbidden: hand-authoring hook scripts at ~/.claude/skills/peaks-code/hooks/*. Hook source MUST
|
|
89
|
+
# come from src/services/hooks/*.sh in the peaks-loop repo, distributed by `peaks hooks install`.
|
|
90
|
+
# Mandatory closure: every peaks-code request MUST finish `peaks request transition` through
|
|
91
|
+
# `spec-locked → implemented → qa-handoff → handed-off` plus `peaks memory extract`.
|
|
92
|
+
|
|
62
93
|
# 3. Peaks-Loop Default sub-agent fan-out (slice 5 contract)
|
|
63
94
|
# Code computes the swarm plan from --type + frontendOnly + frontend-keyword scan,
|
|
64
95
|
# writes it to .peaks/_runtime/<sid>/sc/swarm-plan.json, then writes the slice
|
|
@@ -184,6 +215,28 @@ peaks project dashboard --project <repo> --json
|
|
|
184
215
|
peaks skill doctor --json
|
|
185
216
|
```
|
|
186
217
|
|
|
218
|
+
## 24h mode — bridge surface (rid-020b)
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
# Inspect the current 24h-mode state snapshot (rid-020a backbone)
|
|
222
|
+
peaks session 24h-mode state --json
|
|
223
|
+
|
|
224
|
+
# Code-run with the 24h flag (T3/T4 auto-engage; otherwise brainstorming reference-only bridge)
|
|
225
|
+
peaks code run <change-id> --24h --tier T3 --project <repo> --json
|
|
226
|
+
peaks code run <change-id> --24h --tier T2 --project <repo> --json # non-T3/T4 → Bucket B (reference-only)
|
|
227
|
+
peaks code run <change-id> --24h --trigger T4 --project <repo> --json # T4 also auto-engages 24H_ACTIVE
|
|
228
|
+
|
|
229
|
+
# Read-only 24h long-run indicator dashboard (5 indicator classes + boundary cases)
|
|
230
|
+
peaks dashboard long-run --since 24h --project <repo> --json
|
|
231
|
+
peaks dashboard long-run --since 8h --project <repo> --json
|
|
232
|
+
peaks dashboard long-run --since 30m --project <repo> --json
|
|
233
|
+
peaks dashboard long-run --since 72h --project <repo> --json # capped at 24h
|
|
234
|
+
|
|
235
|
+
# Manual state transition (Bucket C — user-confirm path)
|
|
236
|
+
peaks session 24h-mode transition --state 24H_ACTIVE --reason "T1 keyword match" --project <repo> --json
|
|
237
|
+
peaks session 24h-mode transition --state HANDOFF --exit-condition user_abort --project <repo> --json
|
|
238
|
+
```
|
|
239
|
+
|
|
187
240
|
Repair loop details: see `## Mandatory RD QA repair loop` in SKILL.md for the full 5-step procedure and the 3-cycle cap. Append transition notes via `--reason` rather than rewriting artifacts during repair cycles.
|
|
188
241
|
|
|
189
242
|
```bash
|
|
@@ -236,7 +289,7 @@ peaks code emit-handoff --project <repo> --job-id <jid> --json
|
|
|
236
289
|
# job-shape.json says isJob=true, ≥0.85 is MANDATORY auto-compact.
|
|
237
290
|
# Code MUST call this without confirmation under Job mode.
|
|
238
291
|
peaks code context-now --project <repo> --enforce-job-mode --json
|
|
239
|
-
peaks
|
|
292
|
+
peaks compact auto --execute --project <repo> --json
|
|
240
293
|
|
|
241
294
|
# v3.1.2 PreToolUse gate (installed by `peaks workspace init`):
|
|
242
295
|
# every Bash tool call runs `peaks code gate-step-08` automatically.
|
|
@@ -244,4 +297,13 @@ peaks session auto-compact --execute --project <repo> --json
|
|
|
244
297
|
# progress.json exists). Exit 2 = BLOCKED; LLM must call
|
|
245
298
|
# `peaks code detect-job` first.
|
|
246
299
|
peaks code gate-step-08 --project <repo> --json
|
|
300
|
+
|
|
301
|
+
# rid-020a: 24h mode state machine. The CLI is the muscle; peaks-code
|
|
302
|
+
# is the LLM that drives it. Sub-actions: state, transition, attempts,
|
|
303
|
+
# reset. Persists to .peaks/_runtime/<sessionId>/24h-state.json. The
|
|
304
|
+
# full SKILL.md chapter and rid-020b code-run sub-command ship next.
|
|
305
|
+
peaks session 24h-mode state --project <repo> --session-id <sessionId> --json
|
|
306
|
+
peaks session 24h-mode transition --state 24H_ACTIVE --project <repo> --session-id <sessionId> --json
|
|
307
|
+
peaks session 24h-mode attempts --project <repo> --session-id <sessionId> --json
|
|
308
|
+
peaks session 24h-mode reset --project <repo> --session-id <sessionId> --json
|
|
247
309
|
```
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: peaks-code-startup-sequence
|
|
3
|
+
description: peaks-code startup sequence Steps 0 / 0.5-0.87 / 1 / 2 / 2.3 / 2.5 / N / N+1 / N+2 — extracted from SKILL.md 2026-07-16 to keep SKILL.md under 25,000-byte cap
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Peaks-Loop Startup sequence (MANDATORY — execute in order)
|
|
7
|
+
|
|
8
|
+
> **Extracted from SKILL.md on 2026-07-16.** This file is the
|
|
9
|
+
> authoritative reference; SKILL.md points here with a 1-line pointer.
|
|
10
|
+
> Do not edit `SKILL.md` for content changes — edit this file instead.
|
|
11
|
+
|
|
12
|
+
### Peaks-Loop Slice 011 — workspace consolidate + session checkpoint/resume
|
|
13
|
+
|
|
14
|
+
`peaks workspace consolidate` is the slice-011 umbrella primitive. `peaks session checkpoint` (context-overflow defense) and `peaks session resume` surface as Step 0.75 + Step N. See `references/cross-date-session-check.md`.
|
|
15
|
+
|
|
16
|
+
### Peaks-Loop Step 0.75: Resume from checkpoint (BLOCKING on same-day re-invocation)
|
|
17
|
+
|
|
18
|
+
When a NEW conversation opens on a session whose `lastActivity` is from today AND `.peaks/_runtime/<sessionId>/checkpoints/` has `*.json`, surface via `peaks session info --active --json` + `peaks session resume --from <path> --project <repo>`. Prompt via `AskUserQuestion` (resume / fresh); if "resume", prepend the block. Step 0.75 is no-op on precondition fail. See `references/checkpoint-resume.md`.
|
|
19
|
+
|
|
20
|
+
### Peaks-Loop Step N: Periodic checkpoint (auto-fire, no user action)
|
|
21
|
+
|
|
22
|
+
Proactive context-overflow defense. CLI: `peaks session checkpoint [--reason <r>] [...flags]`. Fire `--reason periodic` every 20 tool calls (G1 hard-coded), `--reason artifact-written` per PRD/RD/QA/TXT write. See `references/periodic-checkpoint.md` (otherwise `tests/unit/code/checkpoint-periodic-frequency.test.ts` fails).
|
|
23
|
+
|
|
24
|
+
### Peaks-Loop Step 0.6: Audit + Goal (NEW)
|
|
25
|
+
|
|
26
|
+
Invoke peaks-audit after need expressed; store approved goal at `.peaks/_runtime/<sessionId>/audit-goal/<rid>.json`. **All autonomous work requires approved goal.** → `references/audit-goal-gate.md`.
|
|
27
|
+
|
|
28
|
+
### Peaks-Loop Step N+1: Final Review (NEW)
|
|
29
|
+
|
|
30
|
+
After autonomous work (RD, QA, security, perf), invoke peaks-final-review for 4-dim evidence. All 4 pass → final delivery; else loop back. See `references/final-review-gate.md`.
|
|
31
|
+
|
|
32
|
+
### Peaks-Loop Step N+2: Main-session context monitor (D6 + slice 2026-07-02)
|
|
33
|
+
|
|
34
|
+
After every 4th tool call, probe via `peaks code context-now --project <repo> --json`. Thresholds: 50% / **0.85 pre-compact / 0.95 red-line** (v2.13.0). **In Job mode ≥ 0.85 is MANDATORY auto-compact** (`peaks compact auto --execute`). Pass `--enforce-job-mode` for single-rid. **≥ 0.95** red line: next Bash/Task fires `peaks compact auto`. **Karpathy §4 exception**: compact red line keeps runner alive — zero-intervention wins; LLM MUST NOT ask user to run `/compact`. Honor `--in-flight-batch` (D6.e).
|
|
35
|
+
|
|
36
|
+
### Peaks-Loop Step 0: Anchor the workflow (MANDATORY FIRST ACTIONS — no bail-out)
|
|
37
|
+
|
|
38
|
+
Run `peaks workspace init` + `peaks skill presence:set peaks-code` BEFORE any analysis, role handoff, or mode-selection question. Even "分析下这个项目" / "看一下代码" / one-line questions anchor first.
|
|
39
|
+
|
|
40
|
+
→ see `references/anchoring-and-session-info.md` for the full Step 0 contract + session-conflict resolution.
|
|
41
|
+
|
|
42
|
+
#### Step 0 bypass — Claude Code [Fact-Forcing Gate] (slice 2.0.1-bug3)
|
|
43
|
+
|
|
44
|
+
`peaks workspace init` materializes `.claude/settings.local.json` (a PreToolUse hook allow-list for `.peaks/**` paths and `peaks <subcommand>` Bash) so the [Fact-Forcing Gate] does not block Step 0. Pass `--no-claude-hooks` to opt out.
|
|
45
|
+
|
|
46
|
+
→ see `references/anchoring-and-session-info.md` for the full bypass contract, recovery flow, and anti-bail-out rule.
|
|
47
|
+
|
|
48
|
+
### Peaks-Loop Step 0.7: Detect unfinished work and offer resume (BLOCKING on first invocation per session)
|
|
49
|
+
|
|
50
|
+
After Step 0, run the resume-detection probe; surface via `AskUserQuestion` if a slice is in flight. **v3.1.2 resume rule:** if `.peaks/_runtime/<sessionId>/job/<jid>/progress.json` exists, read FIRST and surface `Next: slice #N of M`. **v2.11.0 D7 override:** if user just `/compact`ed, run `peaks code post-compact-detect --project <repo> --json` FIRST; `shouldAutoResume: true` skips AskUserQuestion. → `references/resume-detection.md`.
|
|
51
|
+
|
|
52
|
+
### Peaks-Loop Step 0.55: 1.x → 2.0 detection (BLOCKING on first invocation per session, when the project is not on a 2.0 layout)
|
|
53
|
+
|
|
54
|
+
After Step 0.7 returns "fresh", run `peaks upgrade --detect-1x --project <root> --json`. If `isOneX: true`, surface `AskUserQuestion`. → `references/step-0-55-1x-detection.md`.
|
|
55
|
+
|
|
56
|
+
### Peaks-Loop Step 0.8 — Job 启动 (BLOCKING on LLM judgement — v3.1.1 patch + v3.1.2 mechanical gates)
|
|
57
|
+
|
|
58
|
+
> **CLI reality check (D-001 sediment, 2026-07-09):** The CLI surface has changed since this section was last verified. The actual command is **`peaks job init --job-id <jid> --slice-list <list> --main-loop-strategy <single|rotating> [--parallelism-hint <serial|llm-decides>] [--exit-policy <strict|best-effort>] [--project <repo>]`**. The legacy `peaks code detect-job --is-job/--suggested-job-id/--confidence` form described below is **no longer present** in 4.0.0-beta.6. If you find `--is-job` rejected, fall back to `peaks job init`.
|
|
59
|
+
|
|
60
|
+
The CLI is a **recorder + gate** for job-shape (the LLM judges). LLM calls `peaks job init --job-id <jid> --slice-list <list> --main-loop-strategy <single|rotating>` (with `--caller-id <id>` and `--project <repo>` in non-Claude-Code environments), which writes `.peaks/_runtime/<sessionId>/job/<jid>/state.json` and emits a `[job-event] {kind: job-started, jobId, total, strategy}` line. Downstream steps call `peaks job status --job-id <jid>` to read state.
|
|
61
|
+
|
|
62
|
+
**Hard rule (v3.1.1 red-line #10):** LLM MUST NOT skip the job-init call. If `peaks job status` reports `done: 0` and the slice work has begun, the LLM forgot to initialize — re-call `peaks job init` immediately.
|
|
63
|
+
|
|
64
|
+
> **D-003 sediment (2026-07-09):** The historical `JOB_SHAPE_NOT_DECIDED` exception thrown by `read-job-shape` is no longer wired in 4.0.0-beta.6. The current CLI uses `peaks job status` which reports a passive `done: 0` instead of throwing. Both behaviors enforce the same intent (no work may begin before init) but the failure mode is a soft warning rather than a hard exception. LLM should treat `done: 0` after Step 0.8 as a recoverable miss, not an unrecoverable error.
|
|
65
|
+
|
|
66
|
+
**v3.1.2 mechanical gates** (recorder-only was bypassed twice):
|
|
67
|
+
|
|
68
|
+
PreToolUse hook on `peaks code gate-step-08`; size-fear ban on `peaks code emit-handoff`; forced auto-compact at ≥ 0.85 in Job mode; on-disk slice progress via `peaks job checkpoint` (canonical reader `peaks job progress --job-id <jid>`). Full mechanics (judgement criteria, hook table, backup-regex rationale, hook wiring) at `references/step-0-8-gate.md`.
|
|
69
|
+
|
|
70
|
+
### Peaks-Loop Step 0.81 — per-slice 收尾
|
|
71
|
+
|
|
72
|
+
After commit: `peaks job checkpoint --slice-id <rid> --state done --commit-sha $(git rev-parse HEAD)` → `peaks job status` → loop (remaining>0 → Step 1; ==0 → Step 8/9/10/11; blocked → Step 0.85).
|
|
73
|
+
|
|
74
|
+
### Peaks-Loop Step 0.85 — slice 阻塞处理
|
|
75
|
+
|
|
76
|
+
Trigger: `repair-status` atCap=true, context-now red-line ≥5min, or `subagent-cleanup` fails twice. Action: `peaks job block --slice-id <rid> --reason "<reason>"` then STOP.
|
|
77
|
+
|
|
78
|
+
### Peaks-Loop Step 0.86 — main session rotation
|
|
79
|
+
|
|
80
|
+
Active in rotating mode; fires every `rotateEvery` slices or via `peaks job rotate-now`. Sequence: cycle-summary → checkpoint rotate-marker → `peaks session rotate` → resume via `peaks session resume --job-id <jid>`.
|
|
81
|
+
|
|
82
|
+
### Peaks-Loop Step 0.87 — sub-agent cleanup gate
|
|
83
|
+
|
|
84
|
+
After every `peaks sub-agent dispatch --batch-id <id>` inside a Job, BEFORE next slice checkpoint: `peaks job subagent-cleanup --job-id <jid> --batch-id <id> --force`. Non-zero → block.
|
|
85
|
+
|
|
86
|
+
→ see `references/job-loop.md` for state machine, visibility, rotation cadence, cross-day recovery, 9 red lines.
|
|
87
|
+
|
|
88
|
+
### Peaks-Loop Step 1: Mode selection
|
|
89
|
+
|
|
90
|
+
Use `AskUserQuestion` with `Full auto (Recommended)` first when user did not name a profile OR skill presence is stale (run `peaks skill presence:check-stale --project <path> --json` first; `stale: true` ⇒ re-ask). → `references/mode-selection.md`, `references/fast-mode.md`, `references/mode-selection-with-stale-presence.md`.
|
|
91
|
+
|
|
92
|
+
### Peaks-Loop Step 2: Re-set skill presence with the chosen mode
|
|
93
|
+
|
|
94
|
+
Re-run `peaks skill presence:set peaks-code --mode <mode-value> --gate startup`. Install statusline on first run (`peaks statusline install`). → `references/skill-presence-and-title.md`.
|
|
95
|
+
|
|
96
|
+
### Peaks-Loop Step 2.3: Load project memory (durable, LLM-authored memories)
|
|
97
|
+
|
|
98
|
+
Run `peaks project memories --project <repo> --json` to read decisions / conventions / modules / rules / lessons from `.peaks/memory`. → `references/project-memory-loading.md`.
|
|
99
|
+
|
|
100
|
+
### Peaks-Loop Step 2.5: Set session title
|
|
101
|
+
|
|
102
|
+
Extract a short title from the user's first request (8-20 Chinese chars or 4-10 English words). Run `peaks session title <sessionId> "<title>" --json`. Skip if a title is already set. → `references/skill-presence-and-title.md` (same file as Step 2). D-002: sid is positional, NOT `--session-id` flag (rejected with `error: unknown option`).
|
|
103
|
+
|
|
104
|
+
## Sub-agent session sharing (MANDATORY — one conversation = one sid)
|
|
105
|
+
|
|
106
|
+
When peaks-code dispatches a sub-agent (peaks-rd, peaks-qa, peaks-ui, peaks-txt, peaks-sc), the prompt MUST include the parent's sid. The sub-agent MUST NOT call `peaks workspace init` (would orphan the parent's binding).
|
|
107
|
+
|
|
108
|
+
## Boundaries
|
|
109
|
+
|
|
110
|
+
Peaks-Loop Code may identify scenarios, recommend profiles, coordinate role skills via artifacts, coordinate project memory extraction, request user confirmation at risk/commit boundaries. MUST NOT silently install hooks / create agents / enable MCP / modify Claude settings / create GitHub repos / bypass role-skill artifacts. → `references/boundaries.md`.
|
|
@@ -45,7 +45,7 @@ Refuses to emit a final handoff while `remaining > 0` under Job mode. Pass `--fo
|
|
|
45
45
|
|
|
46
46
|
### 3. Forced auto-compact — `--enforce-job-mode`
|
|
47
47
|
|
|
48
|
-
`peaks code context-now --enforce-job-mode` (auto-enabled when `job-shape.json` says `isJob=true`) returns `action: 'auto-compact-now'` at ≥ 0.85; Code MUST call `peaks
|
|
48
|
+
`peaks code context-now --enforce-job-mode` (auto-enabled when `job-shape.json` says `isJob=true`) returns `action: 'auto-compact-now'` at ≥ 0.85; Code MUST call `peaks compact auto --execute` without confirmation.
|
|
49
49
|
|
|
50
50
|
### 4. On-disk slice progress — `progress.json`
|
|
51
51
|
|
|
@@ -85,7 +85,10 @@ peaks sub-agent dispatch <role> --prompt <text> [--request-id <rid>] [--session-
|
|
|
85
85
|
"artifactBytes": 0,
|
|
86
86
|
"totalBytes": 4321
|
|
87
87
|
},
|
|
88
|
-
"artifactMetas": []
|
|
88
|
+
"artifactMetas": [],
|
|
89
|
+
"orchestratorVisibleHint": "⏳ Spawning sub-agent via Task tool: rd for rid=002-2026-06-07, batch-id=… (ETA ~45s)",
|
|
90
|
+
"artifactsPublicPaths": [],
|
|
91
|
+
"expectedCompletionSeconds": 45
|
|
89
92
|
},
|
|
90
93
|
"warnings": [],
|
|
91
94
|
"nextActions": [
|
|
@@ -248,6 +251,94 @@ once the poller has read them.
|
|
|
248
251
|
- AC-25..AC-32: G5 resource lifecycle (RL-1 batch counter, dispatch record schema, reducer dispose, slice archive, cancel dispose)
|
|
249
252
|
- AC-33..AC-37: G6 heartbeat CLI, schema, poller, status line, E2E
|
|
250
253
|
|
|
254
|
+
## G11.5 — visibility contract (slice 2026-07-28-sub-agent-visibility)
|
|
255
|
+
|
|
256
|
+
The dispatch CLI is a `dry-run` primitive — it never spawns the Task
|
|
257
|
+
tool itself. The LLM orchestrator (peaks-code / peaks-rd / peaks-qa)
|
|
258
|
+
executes the returned `data.toolCall` via the IDE's `Task` agent. The
|
|
259
|
+
harness does not always render the spawned agent's progress in the
|
|
260
|
+
user's terminal, so the user frequently sees "peaks dispatched" but
|
|
261
|
+
no Task UI feedback. This rule closes that gap with three
|
|
262
|
+
machine-readable + one prose obligation.
|
|
263
|
+
|
|
264
|
+
**Envelope additions (single dispatch and `--from-dag`):**
|
|
265
|
+
|
|
266
|
+
- `data.orchestratorVisibleHint: string` — a single-line prose string
|
|
267
|
+
the orchestrator MUST echo verbatim in the user-facing turn
|
|
268
|
+
(i.e. in the orchestrator's response, NOT just the tool call).
|
|
269
|
+
Format: `⏳ Spawning sub-agent via Task tool: <role> for rid=<rid>, batch-id=<batchId> (ETA ~<seconds>s)`.
|
|
270
|
+
- `data.artifactsPublicPaths: readonly string[]` — public artifact
|
|
271
|
+
paths the sub-agent will own. Empty when `--write-artifact` is not
|
|
272
|
+
passed; otherwise contains the single user-supplied path. The
|
|
273
|
+
orchestrator surfaces this list before fan-out so the user can see
|
|
274
|
+
what files will appear on disk.
|
|
275
|
+
- `data.expectedCompletionSeconds: number` — ETA budget. Single
|
|
276
|
+
dispatch defaults to 45s; `--from-dag` defaults to 60s. Use as a
|
|
277
|
+
hint, not a hard deadline (the heartbeat poller at §G6 still owns
|
|
278
|
+
the 5-min stale threshold).
|
|
279
|
+
|
|
280
|
+
**Orchestrator obligations (text-locked, no skip):**
|
|
281
|
+
|
|
282
|
+
1. Before every `Agent` tool call that materializes a `data.toolCall`
|
|
283
|
+
returned by `peaks sub-agent dispatch`, the orchestrator MUST emit
|
|
284
|
+
one line of prose to the user containing
|
|
285
|
+
`⏳ Spawning sub-agent via Task tool: <description>`. `<description>`
|
|
286
|
+
MUST be ≥ 6 chars and MUST include the rid. (`description` is the
|
|
287
|
+
short label rendered by the IDE; the prose line is the user-visible
|
|
288
|
+
counter-part.) The line is rendered in the assistant's reply text,
|
|
289
|
+
not in the tool result block.
|
|
290
|
+
2. When the CLI returns a fan-out envelope (`dispatchCount > 1`),
|
|
291
|
+
the orchestrator MUST emit the prose line once for the whole fan-out
|
|
292
|
+
(not once per leaf) and then issue all `Agent` tool calls in the
|
|
293
|
+
same turn. Repeating the line N times defeats the point of fan-out.
|
|
294
|
+
3. If the orchestrator cannot satisfy (1) (e.g. an inline tool call
|
|
295
|
+
failed and the orchestrator wants to retry), it MUST explain the
|
|
296
|
+
retry in the next user-visible message — silent retry is a
|
|
297
|
+
visibility regression.
|
|
298
|
+
|
|
299
|
+
**Why the prose, not just the envelope field**: the
|
|
300
|
+
`orchestratorVisibleHint` field is machine-readable, but a terminal
|
|
301
|
+
user reads prose. The LLM MUST transcribe the hint into the visible
|
|
302
|
+
reply. The two surfaces are not redundant — the field is for
|
|
303
|
+
downstream tooling, the prose is for the human. Same payload,
|
|
304
|
+
different readers.
|
|
305
|
+
|
|
306
|
+
**Regression guard**: `tests/unit/dispatch/dispatch-fanout-mandatory.test.ts`
|
|
307
|
+
parses the same SKILL.md text and asserts the G11.5 paragraph is
|
|
308
|
+
present; do not delete the heading without also updating the guard.
|
|
309
|
+
|
|
310
|
+
---
|
|
311
|
+
|
|
312
|
+
## D21 — LLM-side completion signal (mandatory)
|
|
313
|
+
|
|
314
|
+
`peaks sub-agent dispatch` writes the record in `queued` state. The
|
|
315
|
+
dispatcher has no other way to learn that the spawned Task tool
|
|
316
|
+
actually returned. **The LLM runner MUST call `peaks sub-agent finalize`
|
|
317
|
+
once per dispatched Task, in the post-completion branch** (after the
|
|
318
|
+
Task tool's `tool_result` has been received). Without it, the record
|
|
319
|
+
stays `queued, no-execution` forever.
|
|
320
|
+
|
|
321
|
+
```sh
|
|
322
|
+
# After each Task tool returns:
|
|
323
|
+
peaks sub-agent finalize --request-id <rid> --outcome done
|
|
324
|
+
|
|
325
|
+
# On Task failure:
|
|
326
|
+
peaks sub-agent finalize --request-id <rid> --outcome failed --error "<msg>"
|
|
327
|
+
|
|
328
|
+
# Crash-recovery sweep (only if the runner was interrupted and many
|
|
329
|
+
# records are stuck in queued):
|
|
330
|
+
peaks sub-agent finalize --all-stale --outcome done
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
`finalize` calls `markCompleted` (in dispatch-record-writer.ts), which
|
|
334
|
+
transitions the record to the chosen status and unregisters the path
|
|
335
|
+
from `active-dispatches.json`. The next runner does not see a stale
|
|
336
|
+
ghost.
|
|
337
|
+
|
|
338
|
+
This was added in slice 2026-07-17-D21 after 13 stale records were
|
|
339
|
+
observed in the peaks-loop repo (`active-dispatches.json` would have
|
|
340
|
+
grown unboundedly without this fix).
|
|
341
|
+
|
|
251
342
|
## How to apply
|
|
252
343
|
|
|
253
344
|
When writing a SKILL.md that fans out sub-agents:
|