peaks-loop 3.0.0 → 3.0.2

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.
Files changed (244) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +94 -59
  3. package/README-en.md +2 -2
  4. package/README.md +2 -2
  5. package/agents/karpathy-reviewer.md +2 -2
  6. package/dist/src/cli/commands/agent-commands.js +3 -3
  7. package/dist/src/cli/commands/audit-commands.d.ts +1 -1
  8. package/dist/src/cli/commands/audit-commands.js +6 -6
  9. package/dist/src/cli/commands/classify-classify-commands.js +1 -1
  10. package/dist/src/cli/commands/code-review-commands.d.ts +3 -3
  11. package/dist/src/cli/commands/code-review-commands.js +5 -5
  12. package/dist/src/cli/commands/compact-command.d.ts +21 -0
  13. package/dist/src/cli/commands/compact-command.js +252 -0
  14. package/dist/src/cli/commands/context-commands.d.ts +1 -1
  15. package/dist/src/cli/commands/context-commands.js +1 -1
  16. package/dist/src/cli/commands/contract-commands.d.ts +1 -1
  17. package/dist/src/cli/commands/core/session-command.js +17 -7
  18. package/dist/src/cli/commands/core/skill-command.js +1 -1
  19. package/dist/src/cli/commands/feedback-commands.js +1 -1
  20. package/dist/src/cli/commands/hook-handle.d.ts +1 -1
  21. package/dist/src/cli/commands/hook-handle.js +1 -1
  22. package/dist/src/cli/commands/legacy-commands.d.ts +1 -1
  23. package/dist/src/cli/commands/legacy-commands.js +2 -2
  24. package/dist/src/cli/commands/log-commands.js +2 -2
  25. package/dist/src/cli/commands/loop-commands.d.ts +1 -1
  26. package/dist/src/cli/commands/loop-commands.js +1 -1
  27. package/dist/src/cli/commands/loop-eval-commands.d.ts +1 -1
  28. package/dist/src/cli/commands/loop-eval-commands.js +1 -1
  29. package/dist/src/cli/commands/playwright-commands.d.ts +1 -1
  30. package/dist/src/cli/commands/playwright-commands.js +2 -2
  31. package/dist/src/cli/commands/request-commands.js +40 -1
  32. package/dist/src/cli/commands/role-commands.js +1 -1
  33. package/dist/src/cli/commands/slice-commands.js +5 -5
  34. package/dist/src/cli/commands/understand-commands.js +36 -0
  35. package/dist/src/cli/commands/upgrade-commands.d.ts +1 -1
  36. package/dist/src/cli/commands/upgrade-commands.js +6 -6
  37. package/dist/src/cli/commands/workspace/init-command.js +2 -2
  38. package/dist/src/cli/program.js +10 -1
  39. package/dist/src/services/agent/ecc-agent-service.js +5 -5
  40. package/dist/src/services/audit/artifact-writer.d.ts +1 -1
  41. package/dist/src/services/audit/artifact-writer.js +1 -1
  42. package/dist/src/services/audit/decision-writer.d.ts +1 -1
  43. package/dist/src/services/audit/decision-writer.js +1 -1
  44. package/dist/src/services/audit/enforcers/lint-output-style.js +5 -5
  45. package/dist/src/services/audit/enforcers/mock-placement.d.ts +1 -1
  46. package/dist/src/services/audit/enforcers/mock-placement.js +1 -1
  47. package/dist/src/services/audit/enforcers/no-root-pollution.js +1 -1
  48. package/dist/src/services/audit/red-line-catalog-p2-a.js +2 -2
  49. package/dist/src/services/audit/red-line-catalog-p2-b.js +2 -2
  50. package/dist/src/services/audit/static-service.d.ts +1 -1
  51. package/dist/src/services/audit/static-service.js +5 -5
  52. package/dist/src/services/audit/types.d.ts +1 -1
  53. package/dist/src/services/audit/types.js +1 -1
  54. package/dist/src/services/audit-independent/perf-audit-service.js +1 -1
  55. package/dist/src/services/audit-independent/security-audit-service.js +1 -1
  56. package/dist/src/services/classify/classify-service.d.ts +1 -1
  57. package/dist/src/services/classify/classify-service.js +1 -1
  58. package/dist/src/services/classify/classify-types.d.ts +1 -1
  59. package/dist/src/services/classify/classify-types.js +1 -1
  60. package/dist/src/services/code-review/ecc-bridge.d.ts +2 -2
  61. package/dist/src/services/code-review/ecc-bridge.js +2 -2
  62. package/dist/src/services/code-review/ocr-service.d.ts +9 -9
  63. package/dist/src/services/code-review/ocr-service.js +16 -16
  64. package/dist/src/services/compact/decision-tables.d.ts +66 -0
  65. package/dist/src/services/compact/decision-tables.js +127 -0
  66. package/dist/src/services/compact/request-transition-hook.d.ts +20 -0
  67. package/dist/src/services/compact/request-transition-hook.js +110 -0
  68. package/dist/src/services/compact/suggest-service.d.ts +74 -0
  69. package/dist/src/services/compact/suggest-service.js +203 -0
  70. package/dist/src/services/config/config-migration.js +1 -1
  71. package/dist/src/services/config/config-safety.d.ts +1 -1
  72. package/dist/src/services/config/config-safety.js +1 -1
  73. package/dist/src/services/config/config-service.d.ts +1 -1
  74. package/dist/src/services/config/config-service.js +1 -1
  75. package/dist/src/services/context/auto-compact-dispatcher.js +4 -4
  76. package/dist/src/services/context/auto-compact-types.d.ts +6 -6
  77. package/dist/src/services/context/auto-compact-types.js +5 -5
  78. package/dist/src/services/dispatch/sub-agent-dispatcher.js +1 -1
  79. package/dist/src/services/dispatch/test-tool-detection.d.ts +1 -1
  80. package/dist/src/services/dispatch/test-tool-detection.js +1 -1
  81. package/dist/src/services/doctor/doctor-service.d.ts +1 -1
  82. package/dist/src/services/doctor/doctor-service.js +5 -5
  83. package/dist/src/services/hooks/presence-marker-detector.js +5 -5
  84. package/dist/src/services/ide/adapters/claude-code-adapter.d.ts +1 -1
  85. package/dist/src/services/ide/adapters/claude-code-adapter.js +2 -2
  86. package/dist/src/services/ide/adapters/codex-adapter.d.ts +2 -2
  87. package/dist/src/services/ide/adapters/codex-adapter.js +2 -2
  88. package/dist/src/services/ide/adapters/cursor-adapter.d.ts +2 -2
  89. package/dist/src/services/ide/adapters/cursor-adapter.js +2 -2
  90. package/dist/src/services/ide/adapters/hermes-adapter.d.ts +1 -1
  91. package/dist/src/services/ide/adapters/hermes-adapter.js +1 -1
  92. package/dist/src/services/ide/adapters/openclaw-adapter.d.ts +1 -1
  93. package/dist/src/services/ide/adapters/openclaw-adapter.js +1 -1
  94. package/dist/src/services/ide/adapters/trae-adapter.d.ts +1 -1
  95. package/dist/src/services/ide/adapters/trae-adapter.js +1 -1
  96. package/dist/src/services/ide/ide-types.d.ts +9 -9
  97. package/dist/src/services/legacy/legacy-detector.d.ts +1 -1
  98. package/dist/src/services/legacy/legacy-detector.js +1 -1
  99. package/dist/src/services/log/log-commands-service.d.ts +1 -1
  100. package/dist/src/services/log/log-commands-service.js +1 -1
  101. package/dist/src/services/log/logger.d.ts +3 -3
  102. package/dist/src/services/log/logger.js +3 -3
  103. package/dist/src/services/log/redact.d.ts +1 -1
  104. package/dist/src/services/log/redact.js +1 -1
  105. package/dist/src/services/loop/evaluator-dispatcher.d.ts +1 -1
  106. package/dist/src/services/loop/evaluator-dispatcher.js +16 -15
  107. package/dist/src/services/loop/monotonic-guard.js +35 -18
  108. package/dist/src/services/loop/monotonic-runner.d.ts +3 -0
  109. package/dist/src/services/loop/monotonic-runner.js +62 -28
  110. package/dist/src/services/loop/run-driver.js +45 -24
  111. package/dist/src/services/memory/llm-reranker.d.ts +1 -1
  112. package/dist/src/services/memory/llm-reranker.js +1 -1
  113. package/dist/src/services/mut/production-stryker.d.ts +0 -5
  114. package/dist/src/services/mut/production-stryker.js +19 -10
  115. package/dist/src/services/openspec/openspec-propose-from-doctor-service.d.ts +1 -1
  116. package/dist/src/services/openspec/openspec-propose-from-doctor-service.js +1 -1
  117. package/dist/src/services/perf/perf-baseline-service.d.ts +2 -2
  118. package/dist/src/services/perf/perf-baseline-service.js +2 -2
  119. package/dist/src/services/prd/handoff-auto-regen.js +1 -1
  120. package/dist/src/services/prd/project-scan-sediment.js +3 -3
  121. package/dist/src/services/prd/project-scan-types.d.ts +1 -1
  122. package/dist/src/services/preferences/preferences-types.d.ts +3 -3
  123. package/dist/src/services/preferences/preferences-types.js +2 -2
  124. package/dist/src/services/role/role-registry.d.ts +1 -1
  125. package/dist/src/services/role/role-registry.js +1 -1
  126. package/dist/src/services/sc/sc-service.js +3 -3
  127. package/dist/src/services/skill/resume-detector.js +2 -2
  128. package/dist/src/services/skills/sync-service.d.ts +3 -3
  129. package/dist/src/services/skills/sync-service.js +9 -9
  130. package/dist/src/services/slice/calibration-store.d.ts +1 -1
  131. package/dist/src/services/slice/calibration-store.js +1 -1
  132. package/dist/src/services/solo/auto-compact-orchestrator.d.ts +1 -1
  133. package/dist/src/services/solo/auto-compact-orchestrator.js +7 -7
  134. package/dist/src/services/solo/dag-orchestrator.js +1 -1
  135. package/dist/src/services/solo/mode-gate.d.ts +1 -1
  136. package/dist/src/services/solo/mode-gate.js +4 -4
  137. package/dist/src/services/solo/user-touchpoint-classifier.js +1 -1
  138. package/dist/src/services/standards/migrate-claude-rules-service.js +5 -5
  139. package/dist/src/services/standards/migrate-service.d.ts +3 -3
  140. package/dist/src/services/standards/migrate-service.js +5 -5
  141. package/dist/src/services/standards/project-standards-service.js +1 -1
  142. package/dist/src/services/understand/hybrid-types.d.ts +32 -0
  143. package/dist/src/services/understand/hybrid-types.js +1 -0
  144. package/dist/src/services/understand/understand-hybrid-service.d.ts +10 -0
  145. package/dist/src/services/understand/understand-hybrid-service.js +100 -0
  146. package/dist/src/services/upgrade/gitignore-migrate-service.d.ts +3 -3
  147. package/dist/src/services/upgrade/gitignore-migrate-service.js +4 -4
  148. package/dist/src/services/upgrade/upgrade-service.d.ts +1 -1
  149. package/dist/src/services/upgrade/upgrade-service.js +5 -5
  150. package/dist/src/services/verdict/envelopes.d.ts +1 -1
  151. package/dist/src/services/verdict/envelopes.js +1 -1
  152. package/dist/src/services/workflow/workflow-loader.js +1 -1
  153. package/dist/src/services/workspace/migrate-1-4-1-service.d.ts +1 -1
  154. package/dist/src/services/workspace/migrate-1-4-1-service.js +1 -1
  155. package/dist/src/services/workspace/migrate-types.d.ts +1 -1
  156. package/dist/src/services/workspace/migrate-types.js +1 -1
  157. package/dist/src/services/workspace/workspace-claude-settings-materializer.d.ts +2 -2
  158. package/dist/src/services/workspace/workspace-claude-settings-materializer.js +9 -9
  159. package/dist/src/services/workspace/workspace-service.d.ts +1 -1
  160. package/dist/src/services/workspace/workspace-service.js +1 -1
  161. package/dist/src/shared/path-safety.d.ts +1 -1
  162. package/dist/src/shared/path-safety.js +1 -1
  163. package/dist/src/shared/version.d.ts +1 -1
  164. package/dist/src/shared/version.js +1 -1
  165. package/output-styles/peaks-skill-swarm.md +33 -33
  166. package/package.json +5 -4
  167. package/schemas/decomposition-v1.json +1 -1
  168. package/schemas/decomposition-v2.json +1 -1
  169. package/schemas/replay-fixture.schema.json +1 -1
  170. package/schemas/reviewer-envelope.schema.json +1 -1
  171. package/scripts/install-skills.mjs +11 -11
  172. package/skills/peaks-audit/SKILL.md +2 -2
  173. package/skills/peaks-doctor/SKILL.md +4 -4
  174. package/skills/peaks-final-review/SKILL.md +2 -2
  175. package/skills/peaks-ide/SKILL.md +3 -3
  176. package/skills/peaks-perf-audit/SKILL.md +1 -1
  177. package/skills/peaks-prd/SKILL.md +14 -14
  178. package/skills/peaks-prd/references/workflow.md +1 -1
  179. package/skills/peaks-qa/SKILL.md +17 -17
  180. package/skills/peaks-qa/references/artifact-per-request.md +1 -1
  181. package/skills/peaks-qa/references/browser-validation-contracts.md +2 -2
  182. package/skills/peaks-qa/references/codegraph-regression-focus.md +1 -1
  183. package/skills/peaks-qa/references/external-capability-guidance.md +2 -2
  184. package/skills/peaks-qa/references/qa-fanout-contract.md +1 -1
  185. package/skills/peaks-qa/references/qa-gstack-integration.md +3 -3
  186. package/skills/peaks-qa/references/qa-local-artifacts.md +1 -1
  187. package/skills/peaks-qa/references/qa-matt-pocock-integration.md +1 -1
  188. package/skills/peaks-qa/references/qa-runbook.md +3 -3
  189. package/skills/peaks-qa/references/qa-skill-presence.md +1 -1
  190. package/skills/peaks-qa/references/qa-standards-preflight.md +2 -2
  191. package/skills/peaks-qa/references/qa-transition-gates.md +9 -9
  192. package/skills/peaks-qa/references/regression-gates.md +1 -1
  193. package/skills/peaks-rd/SKILL.md +13 -13
  194. package/skills/peaks-rd/references/artifact-and-standards-output.md +1 -1
  195. package/skills/peaks-rd/references/codegraph-project-analysis.md +1 -1
  196. package/skills/peaks-rd/references/external-references.md +3 -3
  197. package/skills/peaks-rd/references/karpathy-reviewer-prompt.md +1 -1
  198. package/skills/peaks-rd/references/mandatory-perf-baseline.md +1 -1
  199. package/skills/peaks-rd/references/matt-pocock-integration.md +2 -2
  200. package/skills/peaks-rd/references/ocr-integration.md +19 -19
  201. package/skills/peaks-rd/references/openspec-cli.md +2 -2
  202. package/skills/peaks-rd/references/rd-gstack-integration.md +5 -5
  203. package/skills/peaks-rd/references/rd-runbook.md +9 -9
  204. package/skills/peaks-rd/references/rd-standards-preflight.md +1 -1
  205. package/skills/peaks-rd/references/rd-transition-gates.md +13 -13
  206. package/skills/peaks-rd/references/skill-presence-and-title.md +1 -1
  207. package/skills/peaks-reviewer/SKILL.md +2 -2
  208. package/skills/peaks-sc/SKILL.md +9 -9
  209. package/skills/peaks-security-audit/SKILL.md +1 -1
  210. package/skills/peaks-slice-decompose/SKILL.md +2 -2
  211. package/skills/peaks-solo/SKILL.md +49 -49
  212. package/skills/peaks-solo/references/a2a-artifact-mapping.md +8 -8
  213. package/skills/peaks-solo/references/anchoring-and-session-info.md +3 -3
  214. package/skills/peaks-solo/references/boundaries.md +4 -4
  215. package/skills/peaks-solo/references/browser-workflow.md +2 -2
  216. package/skills/peaks-solo/references/codegraph-orchestration.md +1 -1
  217. package/skills/peaks-solo/references/completion-handoff.md +2 -2
  218. package/skills/peaks-solo/references/external-references.md +3 -3
  219. package/skills/peaks-solo/references/external-skill-invocation.md +2 -2
  220. package/skills/peaks-solo/references/frontend-only-mode.md +1 -1
  221. package/skills/peaks-solo/references/gstack-integration.md +4 -4
  222. package/skills/peaks-solo/references/local-artifact-workspace.md +2 -2
  223. package/skills/peaks-solo/references/micro-cycle.md +4 -4
  224. package/skills/peaks-solo/references/mode-selection.md +5 -5
  225. package/skills/peaks-solo/references/openspec-workflow.md +2 -2
  226. package/skills/peaks-solo/references/playwright-mcp-multi-terminal.md +1 -1
  227. package/skills/peaks-solo/references/project-memory-loading.md +1 -1
  228. package/skills/peaks-solo/references/project-scan-checklist.md +1 -1
  229. package/skills/peaks-solo/references/quality-gate-cheatsheet.md +1 -1
  230. package/skills/peaks-solo/references/resume-detection.md +1 -1
  231. package/skills/peaks-solo/references/runbook.md +20 -20
  232. package/skills/peaks-solo/references/skill-presence-and-title.md +2 -2
  233. package/skills/peaks-solo/references/standards-preflight.md +2 -2
  234. package/skills/peaks-solo/references/step-0-55-1x-detection.md +3 -3
  235. package/skills/peaks-solo/references/sub-agent-dispatch.md +3 -3
  236. package/skills/peaks-solo/references/swarm-dispatch-contract.md +3 -3
  237. package/skills/peaks-solo/references/workflow-gates-and-types.md +34 -34
  238. package/skills/peaks-solo-resume/SKILL.md +2 -2
  239. package/skills/peaks-solo-status/SKILL.md +4 -4
  240. package/skills/peaks-solo-test/SKILL.md +4 -4
  241. package/skills/peaks-sop/SKILL.md +5 -5
  242. package/skills/peaks-txt/SKILL.md +17 -17
  243. package/skills/peaks-ui/SKILL.md +17 -17
  244. package/skills/peaks-ui/references/workflow.md +1 -1
@@ -5,14 +5,14 @@
5
5
  },
6
6
  "plugins": [
7
7
  {
8
- "name": "peaks-cli",
8
+ "name": "peaks-loop",
9
9
  "description": "Cross-AI-IDE workflow-gating CLI + 11-skill family. Turns LLM improvisation into auditable engineering process. Skills cover PRD / R&D / UI / QA / change-control / context / SOP definition / orchestration. Soft-fail gates block irreversible actions mid-conversation (even under --dangerously-skip-permissions).",
10
10
  "version": "2.0.3",
11
11
  "author": {
12
12
  "name": "SquabbyZ"
13
13
  },
14
- "homepage": "https://github.com/SquabbyZ/peaks-cli",
15
- "repository": "https://github.com/SquabbyZ/peaks-cli",
14
+ "homepage": "https://github.com/SquabbyZ/peaks-loop",
15
+ "repository": "https://github.com/SquabbyZ/peaks-loop",
16
16
  "license": "MIT",
17
17
  "tags": [
18
18
  "workflow",
package/CHANGELOG.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased] — 2026-06-29 — change-id shim (cleanup post v2.17.0 hard-kill)
3
+ ## [3.0.2] — 2026-07-02 — change-id shim retirement (v2.19.0) + Understand Anything hybrid context (3.0.2)
4
4
 
5
- **MINOR bump target: v2.19.0**. Full removal of the peaks-cli change-id axis (filesystem axis, code shim, envelope JSON slug, CLI flags). OpenSpec's independent `openspec/changes/<change-id>/` vocabulary (L4) is preserved untouched. One cleanup slice that retires the v2.17.0 shim half-life.
5
+ **PATCH bump from 3.0.1**. Two independent slices bundled into one release:
6
+ - **v2.19.0 change-id shim retirement** — full removal of the peaks-loop change-id axis (filesystem axis, code shim, envelope JSON slug, CLI flags). The change-id was a no-op post-v2.17.0 hard-kill; this slice retires the v2.17.0 shim half-life. OpenSpec's independent `openspec/changes/<change-id>/` vocabulary (L4) is preserved untouched.
7
+ - **3.0.2 Understand Anything hybrid context** — new `peaks understand context` subcommand that encapsulates the UA-first / codegraph-fallback / hybrid-union routing decision in the service layer (per the peaks-loop "skill-first / CLI-auxiliary" architecture). Consumers no longer pick one or the other at the LLM level.
8
+
9
+ The v2.19.0 work shipped as code commits (`f91d71c`, `5186d3d`, `b598612`, `ced835e`, `7ee9d8f`, plus follow-up tests) but was never formally released. v2.19.0 is therefore *not* a separate release line — its changes are rolled forward into 3.0.2. Future releases resume numeric sequence from 3.0.3.
6
10
 
7
11
  ### Removed — change-id shim (cleanup post v2.17.0 hard-kill)
8
12
 
@@ -70,7 +74,38 @@
70
74
  - Existing RD/QA artifacts in `.peaks/_runtime/<sid>/<role>/` remain readable; the planner no longer requires a change-id, and the change-id (if any) is embedded only as a filename slug.
71
75
  - The 2.8.3 hard-ban on `.peaks/_runtime/<YYYY-MM-DD-*>/` sibling directories is still enforced via the rewritten guard test and the inline `lstatSync` in `initWorkspace`.
72
76
 
73
- ## [2.18.4] — 2026-06-29 — peaks-solo first-run step gates: hard-pause 1.x→2.0 upgrade + make `--mode` optional on Step 1
77
+ ## [3.0.2] — 2026-07-02 — change-id shim retirement (v2.19.0) + Understand Anything hybrid context (3.0.2)
78
+
79
+ **PATCH bump from 3.0.1**. Two independent slices bundled into one release:
80
+ - **v2.19.0 change-id shim retirement** — full removal of the peaks-loop change-id axis (filesystem axis, code shim, envelope JSON slug, CLI flags). The change-id was a no-op post-v2.17.0 hard-kill; this slice retires the v2.17.0 shim half-life. OpenSpec's independent `openspec/changes/<change-id>/` vocabulary (L4) is preserved untouched.
81
+ - **3.0.2 Understand Anything hybrid context** — new `peaks understand context` subcommand that encapsulates the UA-first / codegraph-fallback / hybrid-union routing decision in the service layer (per the peaks-loop "skill-first / CLI-auxiliary" architecture). Consumers no longer pick one or the other at the LLM level.
82
+
83
+ The v2.19.0 work shipped as code commits (`f91d71c`, `5186d3d`, `b598612`, `ced835e`, `7ee9d8f`, plus follow-up tests) but was never formally released. v2.19.0 is therefore *not* a separate release line — its changes are rolled forward into 3.0.2. Future releases resume numeric sequence from 3.0.3.
84
+
85
+ ### Added — `peaks understand context` (3.0.2 user-facing feature)
86
+
87
+ The Understand Anything (UA) Claude Code plugin and `@colbymchenry/codegraph` are both complementary project-analysis tools. UA provides a high-level knowledge graph (tours, layers, expert prompts); codegraph provides low-level affected-file analysis. Until 3.0.2, peaks-loop consumers had to choose one or the other at the LLM level — there was no service-layer enforcement of either.
88
+
89
+ This slice adds a single `peaks understand context` subcommand that encapsulates the routing decision in the service layer (per the peaks-loop "skill-first / CLI-auxiliary" architecture — see `peaks-solo` SKILL.md). The envelope carries a `source` tag so downstream consumers can audit which evidence contributed to the context.
90
+
91
+ **Source routing** (deterministic, decided in `buildUnderstandContext`):
92
+ - `ua-only` — UA knowledge graph present, no codegraph
93
+ - `ua-missing-fallback-codegraph` — UA absent, codegraph produced evidence
94
+ - `ua-and-codegraph-hybrid` — both present, both contribute (parallel `Promise.all`)
95
+ - `both-missing` — neither produced evidence, exit code 2
96
+
97
+ **Added files (5):**
98
+ - `src/services/understand/understand-hybrid-service.ts` (133L, new): `buildUnderstandContext({projectRoot, files?, sampleSize?, artifactDir?, codegraphRunner?})` uses `Promise.all` to run UA scan and codegraph affected in parallel; total wall-clock = `max(uaMs, codegraphMs)`, not sum. Failures are caught into `warnings[]` (best-effort); the main envelope is always returned so consumers can audit missing evidence.
99
+ - `src/services/understand/hybrid-types.ts` (39L, new): `UnderstandContextResult` envelope + 4-value source enum + `CodegraphContextBlock`.
100
+ - `src/cli/commands/understand-commands.ts` (208L, +51L net): new `peaks understand context` subcommand at base path `admin/audit-logs` (the only 3rd CLI surface in the understand module family). The subcommand accepts `--project --files --sample --artifact-dir` and emits the envelope as JSON or human-readable summary.
101
+ - `tests/unit/understand-hybrid-service.test.ts` (110L, 4 cases): `ua-only` / `fallback` / `hybrid` / `both-missing`.
102
+ - `tests/integration/understand-hybrid-cli.test.ts` (85L, 3 cases): end-to-end CLI both-missing / ua-only / envelope-shape-stability.
103
+
104
+ **Test evidence:** 7/7 vitest (4 unit + 3 integration), `tsc --noEmit` clean.
105
+
106
+ The peak-loop skill-external-invocation audit pattern (capability discovery + references only + do-not-execute + Peaks authoritative) is preserved: codegraph is consumed via the existing `executeCodegraphInvocation` (no upstream installer calls); UA installation is a text `INSTALL_HINT` only.
107
+
108
+ ### Removed — change-id shim (cleanup post v2.17.0 hard-kill, rolled up from v2.19.0)
74
109
 
75
110
  **PATCH bump from 2.18.3**. Resolves the user-reported "新项目第一次使用 peaks-solo 时初始化完不按流程走、开发效果差、再开 session 后才正常" defect. Two surgical fixes to the first-run Solo gates (3 source files, 1 new test file, 2 test-regression updates; no schema change, no new dependencies, no public API change).
76
111
 
@@ -246,7 +281,7 @@ Each original file gets a sibling `import { ... } from './X-helpers.js'` + `expo
246
281
 
247
282
  ## [2.18.1] — 2026-06-29 — verify-pipeline path-axis + prd check-blocks ESM fix (2 P0 toolchain bugs)
248
283
 
249
- **PATCH bump from 2.18.0**. Resolves 2 P0 peaks-cli toolchain bugs deferred from the v2.18.0 release (CHANGELOG §"Out of scope (deferred)" #5 and #6). No CLI surface change, no new commands, no schema change. Both fixes are surgical: under 10 lines of production-code change each, no refactors.
284
+ **PATCH bump from 2.18.0**. Resolves 2 P0 peaks-loop toolchain bugs deferred from the v2.18.0 release (CHANGELOG §"Out of scope (deferred)" #5 and #6). No CLI surface change, no new commands, no schema change. Both fixes are surgical: under 10 lines of production-code change each, no refactors.
250
285
 
251
286
  ### Feature — `peaks workflow verify-pipeline` session-axis fix (P0 audit #5)
252
287
 
@@ -380,8 +415,8 @@ Each original file gets a sibling `import { ... } from './X-helpers.js'` + `expo
380
415
 
381
416
  - **#1** Legacy v2.16.0 binding callerId rewrite — defer to `peaks doctor --rebuild-binding` slice. v2.18.0 read path is forward-compatible; active rewrite would create write-amplification loops.
382
417
  - **#2** `peaks binding status` CLI (PRD §3.4 nice-to-have) — defer to v2.19 RD.
383
- - **#5** `peaks workflow verify-pipeline` CLI bug (looks for v2.16.0-era change axis) — defer to peaks-cli toolchain fix slice, NOT a v2.18.0 regression.
384
- - **#6** `peaks prd check-blocks` CLI bug (`require is not defined`, ESM/CJS mix) — defer to peaks-cli toolchain fix slice, NOT a v2.18.0 regression.
418
+ - **#5** `peaks workflow verify-pipeline` CLI bug (looks for v2.16.0-era change axis) — defer to peaks-loop toolchain fix slice, NOT a v2.18.0 regression.
419
+ - **#6** `peaks prd check-blocks` CLI bug (`require is not defined`, ESM/CJS mix) — defer to peaks-loop toolchain fix slice, NOT a v2.18.0 regression.
385
420
  - **#7** 4 high-pressure near-cap files (`request-artifact-service.ts` 783 / `slice-decompose-service.ts` 775 / `workflow-autonomous-service.ts` 774 / `workspace-service.ts` 742) — out of v2.18.0 scope; backlog unchanged from v2.15.x.
386
421
 
387
422
  ### Redo additions (v2.18.0 REDO)
@@ -426,7 +461,7 @@ The first v2.18.0 release deferred two open items to a redo slice; both are now
426
461
  - `src/shared/change-id.ts`: 470 → ~210 lines. The substantive logic (change-id validation + path builders + symlink/file binding + LegacyChangeIdBindingError) is **retained as shims** that match the old contract; only the filesystem scope semantics changed.
427
462
  - `--change-id` option is preserved on 13 CLI commands as a metadata-only slug (does not affect CLI behavior).
428
463
  - `tests/unit/change-id.test.ts` (270 lines) and `tests/unit/workspace/workspace-init-change-id-redirect.test.ts` (441 lines) deleted.
429
- - 12 change-id-related memories archived under `.peaks/memory/archived/` (recoverable; documented in `peaks-cli-archive` policy).
464
+ - 12 change-id-related memories archived under `.peaks/memory/archived/` (recoverable; documented in `peaks-loop-archive` policy).
430
465
 
431
466
  ### Behavior changes (user-visible)
432
467
 
@@ -467,7 +502,7 @@ Recommended scenarios before next release (see `peaks/_runtime/2026-06-29-sessio
467
502
 
468
503
  ## [2.15.1] — 2026-06-28 — 12 Gaps CLI 全套落地 + ice-cola dogfood 验证
469
504
 
470
- **PATCH bump from 2.15.0**. Follow-up ship for the 12 Gaps positioning memory (peaks-cli 真实定位 + 全套 15 个 Gap CLI 落地). No breaking changes. All new commands are additive top-level (no conflict with existing `peaks solo` / `peaks qa` / `peaks slice` role commands).
505
+ **PATCH bump from 2.15.0**. Follow-up ship for the 12 Gaps positioning memory (peaks-loop 真实定位 + 全套 15 个 Gap CLI 落地). No breaking changes. All new commands are additive top-level (no conflict with existing `peaks solo` / `peaks qa` / `peaks slice` role commands).
471
506
 
472
507
  ### Feature — slice DAG layered parallelism + foundation/upstreamSync/complexity 字段
473
508
 
@@ -499,7 +534,7 @@ Recommended scenarios before next release (see `peaks/_runtime/2026-06-29-sessio
499
534
 
500
535
  ### Documentation
501
536
 
502
- - 6 new memory files: `peaks-cli-24h-ai-programmer-positioning` / `user-role-and-tech-decision` / `prd-template-design` / `slice-review-and-qa-perspective` / `fork-sync-and-layered-parallel` / `fast-iteration-quality-loop`
537
+ - 6 new memory files: `peaks-loop-24h-ai-programmer-positioning` / `user-role-and-tech-decision` / `prd-template-design` / `slice-review-and-qa-perspective` / `fork-sync-and-layered-parallel` / `fast-iteration-quality-loop`
503
538
  - 4 SKILL.md 校准注: peaks-solo / peaks-prd / peaks-rd / peaks-qa 加 2026-06-28 校准 anchor
504
539
  - 12 Gaps 完整定位: 24h 程序员场景 / 唯一蜂群 / 反伪选择 / 业务审阅 / 轻量回归 / 上线观察期等
505
540
 
@@ -531,7 +566,7 @@ Recommended scenarios before next release (see `peaks/_runtime/2026-06-29-sessio
531
566
  - 真实 k8s rollout / LB config / 监控集成(G15)
532
567
  - 2 个 pre-existing 全量并发 race test 留后续
533
568
 
534
- ## [2.15.0] — 2026-06-28 — Sticky-mode forced re-ask + user-feedback → peaks-cli enforcement (slice 002)
569
+ ## [2.15.0] — 2026-06-28 — Sticky-mode forced re-ask + user-feedback → peaks-loop enforcement (slice 002)
535
570
 
536
571
  **MINOR bump from 2.14.2** (slice `2026-06-28-sticky-mode-and-feedback-promotion`). Closes defect A (sticky-mode) and defect B (advisory-only feedback) from PRD-002. Two system-level fixes ship together because both are triggered by the same root cause: user-given rules were not machine-enforced.
537
572
 
@@ -547,7 +582,7 @@ Recommended scenarios before next release (see `peaks/_runtime/2026-06-29-sessio
547
582
  - **`skills/peaks-solo/references/mode-selection-with-stale-presence.md`** (NEW) — Detection protocol + worked example (88b27d defect) + ACL.
548
583
  - **`src/services/skills/skill-presence-service.ts`** — New exports: `checkStalePresence`, `clearStalePresenceOnRotation`, types `StalenessCheck`, `StaleReason`.
549
584
 
550
- ### Feature — User-feedback → peaks-cli enforcement (defect B fix)
585
+ ### Feature — User-feedback → peaks-loop enforcement (defect B fix)
551
586
 
552
587
  - **`sops/feedback-promotion-sop.md`** (NEW) — SOP that requires every feedback memory (`.peaks/memory/<name>.md` with `metadata.type === 'feedback'`) to be promoted to at least one enforcement layer: A (peaks-sop gate), B (peaks-hooks PreToolUse), or C (mode-gate hardFloorCategory). When a rule spans multiple layers, promote to ALL of them.
553
588
  - **`peaks feedback promote <memory-file> [--layer A|B|C] [--dry-run]`** (NEW) — Reads the feedback memory, generates a code stub for the chosen layer, writes the promotion marker (HTML comment + `.promotion.json` sidecar), and writes the envelope at `.peaks/_runtime/<sid>/rd/feedback-promote-<name>.json`.
@@ -683,16 +718,16 @@ slice-2026-06-28-layered-dag PRD: 大需求(1 周内做不完)= 基础先行 +
683
718
  - peaks role add senior-fe --preset senior-fe + role list + role check (granted/not)
684
719
  - peaks complexity-estimate (auth files → complex, 41 lines + hasAsync)
685
720
  - peaks doc changelog-suggest (12 commits parsed into [Unreleased])
686
- - peaks doc generate-skill (peaks-cli 自己 75+ commands 扫到)
721
+ - peaks doc generate-skill (peaks-loop 自己 75+ commands 扫到)
687
722
  - peaks slice-integrate (no contracts → graceful empty, 正确路径)
688
723
 
689
724
  **不触动:** transition gates / hard contracts / Karpathy 4 / sub-agent 协议。**新增 10 个新文件**(5 services + 5 CLIs + 5 tests)。
690
725
 
691
- ### Documentation — peaks-cli 真实定位 + 12 Gaps 沉淀 (2026-06-28 follow-up)
726
+ ### Documentation — peaks-loop 真实定位 + 12 Gaps 沉淀 (2026-06-28 follow-up)
692
727
 
693
728
  会话期间从资深前端 + 后端半盲 + 极致工期 + 24h AI 程序员 + 存量无 UT 的真实场景,沉淀 6 个 memory 文件 + 索引 + 4 个 SKILL.md 校准注。**核心叙事:** `90% 效率 + 80% 质量` > `80% 效率 + 90% 质量`;user 在循环里 = 业务/产品审阅者不参与技术决策;主路径 = 唯一蜂群模式;prd 质量前置 = 4 必填块;QA = 业务视角 + 轻量回归 + 上线观察期。
694
729
 
695
- - **6 new memory files** — `.peaks/memory/peaks-cli-{24h-ai-programmer-positioning, user-role-and-tech-decision, prd-template-design, slice-review-and-qa-perspective, fork-sync-and-layered-parallel, fast-iteration-quality-loop}.md` (warm.project index 18 → 24)
730
+ - **6 new memory files** — `.peaks/memory/peaks-loop-{24h-ai-programmer-positioning, user-role-and-tech-decision, prd-template-design, slice-review-and-qa-perspective, fork-sync-and-layered-parallel, fast-iteration-quality-loop}.md` (warm.project index 18 → 24)
696
731
  - **4 SKILL.md 校准注** — peaks-solo / peaks-prd / peaks-rd / peaks-qa 各加精简 anchor(均通过 25KB cap,只引用 memory 不重复内容)
697
732
  - **不触动** transition gates / hard contracts / Karpathy 4 / 模式枚举 / mode-gate.ts / sub-agent 协议
698
733
 
@@ -750,7 +785,7 @@ slice-2026-06-28-layered-dag PRD: 大需求(1 周内做不完)= 基础先行 +
750
785
 
751
786
  ---
752
787
 
753
- All notable changes to peaks-cli are documented here.
788
+ All notable changes to peaks-loop are documented here.
754
789
 
755
790
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
756
791
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
@@ -1075,14 +1110,14 @@ peaks-solo previously received 5 heterogeneous signals (security-audit, perf-aud
1075
1110
 
1076
1111
  ---
1077
1112
 
1078
- ## [2.13.0] — 2026-06-27 — Zero-human-intervention auto-compact (peaks-cli drives context compression on any AI CLI)
1113
+ ## [2.13.0] — 2026-06-27 — Zero-human-intervention auto-compact (peaks-loop drives context compression on any AI CLI)
1079
1114
 
1080
1115
  **MINOR bump from 2.12.0** (slice `v2-13-0-auto-compact-protocol`, 5-sub-task plan AC-1..AC-5, red-line scope ~6 source files + 2 IDE adapter fields).
1081
1116
 
1082
1117
  peaks-solo now autonomously drives context compaction so the LLM-runner stays alive with context < 95% on **any AI CLI**, with **zero human / zero LLM intervention**. Two-tier threshold model:
1083
1118
 
1084
- - **85% pre-compact zone** — peaks-cli writes a pre-compact checkpoint + convergence plan + auto-decisions log + IDE-side compact dispatch (async-friendly).
1085
- - **95% RED LINE** — peaks-cli refuses sub-agent dispatch and forces synchronous IDE compact; mandatory, LLM cannot opt out.
1119
+ - **85% pre-compact zone** — peaks-loop writes a pre-compact checkpoint + convergence plan + auto-decisions log + IDE-side compact dispatch (async-friendly).
1120
+ - **95% RED LINE** — peaks-loop refuses sub-agent dispatch and forces synchronous IDE compact; mandatory, LLM cannot opt out.
1086
1121
 
1087
1122
  Adapter-driven protocol (no hard-coded IDE names): `IdeAdapter.compact?: IdeCompactProfile` is a 4-field per-IDE profile (`envVarForContextPercent` + `compactCommand` + `compactPathway` + `postCompactDetectCommand`). Claude Code is the MVP fill; trae / codex / cursor / qoder / tongyi-lingma / hermes / openclaw ship without `compact` and fall through to the conservative-zero probe (no auto-fire on missing signal).
1088
1123
 
@@ -1636,7 +1671,7 @@ are unchanged by this release), `pnpm build` clean.
1636
1671
  Rationale: `cc-connect@1.3.1`'s postinstall script runs
1637
1672
  `node scripts/install.js` which downloads a Go binary from
1638
1673
  `github.com/alibaba/open-code-review/releases` via HTTPS. This was
1639
- the dominant cause of slow `npm i -g peaks-cli` installs in
1674
+ the dominant cause of slow `npm i -g peaks-loop` installs in
1640
1675
  restricted/proxied environments; `peaks companion` itself is also
1641
1676
  low-traffic (no Claude Code / Trae workflows depend on it). The
1642
1677
  `peaks-companion` skill directory remains in `skills/` for users
@@ -1658,7 +1693,7 @@ are unchanged by this release), `pnpm build` clean.
1658
1693
  `npm i -g @alibaba-group/open-code-review`. Install hint copy in
1659
1694
  `ocr-service.ts` and `code-review-commands.ts` updated to reflect
1660
1695
  the peer-dependency status. `pnpm.onlyBuiltDependencies` is now an
1661
- empty array (no peaks-cli dep needs postinstall approval).
1696
+ empty array (no peaks-loop dep needs postinstall approval).
1662
1697
  - **Refreshed stale JSDoc** on `src/services/config/config-service.ts#hasLegacyGlobalFields` to describe the current 2.0 schema (`version` + `ocr`) — the old comment still described the deleted `companion` block from slice 2026-06-14-cc-connect-weixin.
1663
1698
  - **Removed dead `commander.invalidArgument` channel-not-supported block** in `src/cli/index.ts` — the only path that raised this exact error was the now-deleted `peaks companion` command.
1664
1699
 
@@ -1728,7 +1763,7 @@ are unchanged by this release), `pnpm build` clean.
1728
1763
  ### Added
1729
1764
 
1730
1765
  - **Slice DAG dependency analysis + parallel sub-agent dispatch (slice 1.2)** —
1731
- the `peaks-cli` repo now ships a typed DAG model for slicing work across
1766
+ the `peaks-loop` repo now ships a typed DAG model for slicing work across
1732
1767
  parallel sub-agents. `src/services/dispatch/slice-dag.ts` exports
1733
1768
  `validateDag` (cycle detection with path-in-error-message),
1734
1769
  `topologicalLevels` (linear / diamond / parallel DAGs), and
@@ -1866,7 +1901,7 @@ are unchanged by this release), `pnpm build` clean.
1866
1901
  ### Added
1867
1902
 
1868
1903
  - **Multi-IDE agent install (Slice 2.6.1.E)** — the `karpathy-reviewer`
1869
- sub-agent now auto-installs on `npm i -g peaks-cli@latest` to **5
1904
+ sub-agent now auto-installs on `npm i -g peaks-loop@latest` to **5
1870
1905
  platforms** instead of 1. Previously only `~/.claude/agents/`
1871
1906
  (claude-code) was populated; 2.6.1 extends to `~/.trae/agents/`,
1872
1907
  `~/.trae-cn/agents/`, `~/.codex/agents/`, and `~/.cursor/agents/`.
@@ -1882,7 +1917,7 @@ are unchanged by this release), `pnpm build` clean.
1882
1917
 
1883
1918
  - **orphan-service false-positive reductions (Slice 2.6.1.A)** —
1884
1919
  `peaks scan orphan` had been reporting 77 `cliSubcommandOrphans` for
1885
- the peaks-cli repo. Four surgical fixes bring this down to 35
1920
+ the peaks-loop repo. Four surgical fixes bring this down to 35
1886
1921
  (54% reduction):
1887
1922
  1. The `usageCount` algorithm now excludes the declaration file
1888
1923
  itself, so the threshold is "wired iff referenced in any other
@@ -2013,10 +2048,10 @@ are unchanged by this release), `pnpm build` clean.
2013
2048
  (`passed` / `violations[]` / `gateAction`), file-write contract
2014
2049
  (title-case `## Karpathy-Gate` + 4 guideline sections), 8 hard
2015
2050
  prohibitions, 5 anti-patterns. Project-internal 2-line pointer at
2016
- `skills/peaks-rd/references/karpathy-reviewer-prompt.md` (peaks-cli
2051
+ `skills/peaks-rd/references/karpathy-reviewer-prompt.md` (peaks-loop
2017
2052
  2.0 rules convention).
2018
- - **Auto-install on `npm i -g peaks-cli@latest`** (slice 7) — the
2019
- `peaks-cli` postinstall (`scripts/install-skills.mjs`) now copies
2053
+ - **Auto-install on `npm i -g peaks-loop@latest`** (slice 7) — the
2054
+ `peaks-loop` postinstall (`scripts/install-skills.mjs`) now copies
2020
2055
  bundled agents from the tarball to `~/.claude/agents/` with
2021
2056
  content-hash drift detection (`.peaks-managed` marker + SHA-256).
2022
2057
  Mirrors the existing `output-styles` install contract. New function
@@ -2084,7 +2119,7 @@ are unchanged by this release), `pnpm build` clean.
2084
2119
  - **L2-install test for Slice 7** — the auto-install path is
2085
2120
  L1-verified (vitest + end-to-end postinstall against a temp HOME)
2086
2121
  but not yet L2-verified on a real consumer machine. A real
2087
- `npm i -g peaks-cli@2.6.0` + postinstall + content-hash drift
2122
+ `npm i -g peaks-loop@2.6.0` + postinstall + content-hash drift
2088
2123
  check + uninstall + reinstall cycle is the next L2 step (Slice 8
2089
2124
  follow-up if issues surface).
2090
2125
  - **Trae / Codex / Cursor / Qoder / Tongyi Lingma / Hermes /
@@ -2108,8 +2143,8 @@ are unchanged by this release), `pnpm build` clean.
2108
2143
  011 added `peaks session checkpoint` / `peaks session resume` CLIs plus
2109
2144
  `references/checkpoint-resume.md` + `references/periodic-checkpoint.md`, but
2110
2145
  SKILL.md body only mentioned them in a single line. New Claude Code sessions
2111
- that load SKILL.md never learned the optimization existed. `### Peaks-Cli
2112
- Step 0.75: Resume from checkpoint` and `### Peaks-Cli Step N: Periodic
2146
+ that load SKILL.md never learned the optimization existed. `### Peaks-Loop
2147
+ Step 0.75: Resume from checkpoint` and `### Peaks-Loop Step N: Periodic
2113
2148
  checkpoint` headings are now in the body (≥ 5 lines each), with explicit
2114
2149
  `peaks session checkpoint` / `peaks session resume` CLI mentions and
2115
2150
  reference-doc pointers. Byte cap bumped 22K → 24K (precedent: 18K → 20K → 22K).
@@ -2242,7 +2277,7 @@ are unchanged by this release), `pnpm build` clean.
2242
2277
  artifacts under `.peaks/_runtime/<change-id>/...` (per-change layout) but this
2243
2278
  session writes under `.peaks/_runtime/<session-id>/...` (per-session
2244
2279
  runtime layout). The pipeline may report `gateC: fail` despite a
2245
- PASS verdict; reconcile in a future slice (peaks-cli tooling fix,
2280
+ PASS verdict; reconcile in a future slice (peaks-loop tooling fix,
2246
2281
  not a 2.4.0 blocker).
2247
2282
 
2248
2283
  ---
@@ -2473,7 +2508,7 @@ Full suite: **2957 passed, 12 skipped, 0 failed**.
2473
2508
  now derive from `parallelBatches` (with legacy `--type` lookup as
2474
2509
  the fallback path).
2475
2510
 
2476
- - **Extended `peaks-solo/SKILL.md`** — adds "Peaks-Cli Slice
2511
+ - **Extended `peaks-solo/SKILL.md`** — adds "Peaks-Loop Slice
2477
2512
  Decomposition (Step 0.6 — pre-mode-selection)" section.
2478
2513
 
2479
2514
  - **Extended `runbook.md`** — adds "Step 2.5: Slice Decomposition"
@@ -2530,13 +2565,13 @@ Full suite: **2957 passed, 12 skipped, 0 failed**.
2530
2565
  (baseline 229/2894 -> delta +3 files / +45 tests).
2531
2566
  - `npx tsc --noEmit` clean.
2532
2567
  - `npm run build` clean.
2533
- - End-to-end CLI smoke test on peaks-cli repo:
2568
+ - End-to-end CLI smoke test on peaks-loop repo:
2534
2569
  `peaks slice decompose 2026-06-13-slice-decompose-impl --json` returns
2535
2570
  `ok: true`, writes 9 work units, 1 dep edge, p50=247.5 within the
2536
2571
  expected [202, 248] range (8-WU 2.1.0 dry-run p50=225 +-10%).
2537
2572
  - `peaks doctor` clean (no L3 regressions from the new path).
2538
2573
  - QA verdict: pass (10 of 10 ACs pass; AC10 has 1 partial
2539
- regarding peaks-cli's existing `review-fanout` path mapping, but
2574
+ regarding peaks-loop's existing `review-fanout` path mapping, but
2540
2575
  the partial is a pre-existing architecture issue, NOT a regression
2541
2576
  from this slice).
2542
2577
 
@@ -2803,9 +2838,9 @@ Full suite: **2957 passed, 12 skipped, 0 failed**.
2803
2838
  (was promoted to a hard `dependency` in 2.0.1 and carried through
2804
2839
  2.0.2). The ocr npm package's `postinstall` downloads a Go binary
2805
2840
  via HTTPS, which fails in restricted/proxied environments and was
2806
- aborting the whole `npm i -g peaks-cli` flow. The 5-state detector
2841
+ aborting the whole `npm i -g peaks-loop` flow. The 5-state detector
2807
2842
  (`ready` / `package-missing` / `binary-missing` / `config-missing` /
2808
- `detection-failed`) and the soft-fail policy are unchanged — peaks-cli
2843
+ `detection-failed`) and the soft-fail policy are unchanged — peaks-loop
2809
2844
  never blocks on ocr being installed; it just no longer forces the
2810
2845
  install. Users who want the second-opinion review run
2811
2846
  `npm i -g @alibaba-group/open-code-review` explicitly. Under pnpm
@@ -2819,7 +2854,7 @@ Full suite: **2957 passed, 12 skipped, 0 failed**.
2819
2854
 
2820
2855
  ### 🎯 Headline
2821
2856
 
2822
- **One-key 1.x → 2.0 upgrade.** `npm i -g peaks-cli@2.0` runs the full
2857
+ **One-key 1.x → 2.0 upgrade.** `npm i -g peaks-loop@2.0` runs the full
2823
2858
  upgrade umbrella in the consuming project automatically (gated by the
2824
2859
  1.x detector). The manual fallback is `peaks upgrade --to 2.0 --auto`.
2825
2860
 
@@ -2839,11 +2874,11 @@ a slice. New CLI: `peaks code-review detect-ocr` / `run-ocr`. See
2839
2874
 
2840
2875
  > **Note:** This `optionalDependency` classification was briefly
2841
2876
  > promoted to a hard `dependency` in 2.0.1 (alongside the source-of-truth
2842
- > refactor) because the user feedback was "peaks-cli should not leave
2877
+ > refactor) because the user feedback was "peaks-loop should not leave
2843
2878
  > install to the user". 2.0.3 reverts just the classification — the
2844
2879
  > source-of-truth refactor stays — because the ocr postinstall
2845
2880
  > downloads a Go binary via HTTPS, which fails in restricted/proxied
2846
- > environments and was aborting `npm i -g peaks-cli`. See the 2.0.3
2881
+ > environments and was aborting `npm i -g peaks-loop`. See the 2.0.3
2847
2882
  > entry above for the full rationale.
2848
2883
 
2849
2884
  ### Breaking Changes
@@ -2864,27 +2899,27 @@ a slice. New CLI: `peaks code-review detect-ocr` / `run-ocr`. See
2864
2899
  `economyMode`, `swarmMode`, headroom settings, etc. are now per-project.
2865
2900
  The upgrade umbrella runs `peaks config migrate --apply` automatically.
2866
2901
 
2867
- - **Postinstall behavior changed.** `npm i -g peaks-cli@2.0` now:
2902
+ - **Postinstall behavior changed.** `npm i -g peaks-loop@2.0` now:
2868
2903
  1. Symlinks bundled skills to **all 8 supported IDE platforms**
2869
2904
  (Claude Code, Trae, Cursor, Qoder, Codex, Tongyi Lingma, Aider, Roo Code),
2870
2905
  not just the auto-detected one. Per real Trae user feedback 2026-06-11.
2871
2906
  2. Installs bundled output styles.
2872
- 3. If `cwd` contains a 1.x peaks-cli project, fire-and-forgets
2907
+ 3. If `cwd` contains a 1.x peaks-loop project, fire-and-forgets
2873
2908
  `peaks upgrade --to 2.0 --auto`. Opt out with `PEAKS_SKIP_AUTO_UPGRADE=1`.
2874
2909
 
2875
- ### Changed — ocr source-of-truth moved into peaks-cli's config
2910
+ ### Changed — ocr source-of-truth moved into peaks-loop's config
2876
2911
 
2877
2912
  Following the same-release user feedback that the original 2.0.0 ocr
2878
2913
  config lived in `~/.opencodereview/config.json` (a file outside
2879
- peaks-cli's reach) and was set via the `ocr config set` CLI from the
2914
+ peaks-loop's reach) and was set via the `ocr config set` CLI from the
2880
2915
  upstream package, the ocr LLM endpoint config now lives under
2881
2916
  `peaksConfig.ocr.llm` in `~/.peaks/config.json`. This makes the
2882
- user-managed LLM endpoint discoverable from a single, peaks-cli-owned
2917
+ user-managed LLM endpoint discoverable from a single, peaks-loop-owned
2883
2918
  config surface.
2884
2919
 
2885
2920
  - **`@alibaba-group/open-code-review` is now a hard `dependency`** (was
2886
2921
  `optionalDependency`). The user no longer has to remember to install
2887
- it; `npm i -g peaks-cli` pulls it. Network-blocked installs that fail
2922
+ it; `npm i -g peaks-loop` pulls it. Network-blocked installs that fail
2888
2923
  to download the platform binary still soft-fail at runtime
2889
2924
  (`binary-missing` state) — the install-time failure risk is the
2890
2925
  trade-off.
@@ -2892,7 +2927,7 @@ config surface.
2892
2927
  > **Reverted in 2.0.3.** The install-time failure risk turned out
2893
2928
  > to bite too many real-world installs (corporate proxies, region
2894
2929
  > firewalls, sandboxed dev environments all abort the whole
2895
- > `npm i -g peaks-cli`). 2.0.3 puts ocr back under
2930
+ > `npm i -g peaks-loop`). 2.0.3 puts ocr back under
2896
2931
  > `optionalDependencies`; everything else in this section
2897
2932
  > (env-var injection, `config-template` CLI, `missingKeys`,
2898
2933
  > source-of-truth under `peaksConfig.ocr.llm`) is unchanged.
@@ -2905,17 +2940,17 @@ config surface.
2905
2940
  `OCR_LLM_URL` / `OCR_LLM_TOKEN` / `OCR_LLM_MODEL` /
2906
2941
  `OCR_USE_ANTHROPIC` / `OCR_LLM_AUTH_HEADER` from `peaksConfig.ocr.llm`
2907
2942
  when spawning the ocr subprocess — the ocr package's highest-priority
2908
- config path. peaks-cli never has to materialise
2943
+ config path. peaks-loop never has to materialise
2909
2944
  `~/.opencodereview/config.json`, and does NOT auto-configure the
2910
2945
  endpoint — the user is the only party that touches the LLM
2911
2946
  token / URL.
2912
2947
  - **New CLI: `peaks code-review config-template`.** Prints the JSON
2913
2948
  snippet the user pastes into `~/.peaks/config.json`. It does NOT
2914
2949
  write anything. No `peaks ocr config set`, no `ocr config set` — just
2915
- edit peaks-cli's config.json (or use
2950
+ edit peaks-loop's config.json (or use
2916
2951
  `peaks config set --key ocr.llm.url --value '...'` if preferred).
2917
2952
  - **JSON envelope contract change:** `OcrDetectResult.configPath` now
2918
- points at the peaks-cli config (e.g. `~/.peaks/config.json`) instead
2953
+ points at the peaks-loop config (e.g. `~/.peaks/config.json`) instead
2919
2954
  of the OCR package's legacy file. A new `missingKeys` field lists the
2920
2955
  required `ocr.llm.*` keys the user has not yet populated. The
2921
2956
  five-state contract and the soft-fail policy are unchanged.
@@ -2928,14 +2963,14 @@ soft-optional 2.0.0 release should:
2928
2963
  1. Run `peaks code-review config-template --json` to see the JSON
2929
2964
  snippet.
2930
2965
  2. Paste the equivalent values into `~/.peaks/config.json` under
2931
- `ocr.llm` (peaks-cli handles the camelCase conversion; the
2966
+ `ocr.llm` (peaks-loop handles the camelCase conversion; the
2932
2967
  template shows the canonical shape).
2933
2968
  3. Re-run `peaks code-review detect-ocr --json` to verify
2934
2969
  `state == "ready"`.
2935
2970
 
2936
2971
  The old `~/.opencodereview/config.json` is no longer consulted by
2937
- peaks-cli. The user may delete it at their discretion (the ocr
2938
- subprocess ignores it when peaks-cli's env vars are present).
2972
+ peaks-loop. The user may delete it at their discretion (the ocr
2973
+ subprocess ignores it when peaks-loop's env vars are present).
2939
2974
 
2940
2975
  ### Added
2941
2976
 
@@ -2961,7 +2996,7 @@ subprocess ignores it when peaks-cli's env vars are present).
2961
2996
 
2962
2997
  - **`peaks agent run`** — ECC 64 agents soft-optional integration
2963
2998
  (spec §7.2). When the L3 stack is installed, peaks delegates to it;
2964
- otherwise degrades to peaks-cli's own core diagnostics.
2999
+ otherwise degrades to peaks-loop's own core diagnostics.
2965
3000
 
2966
3001
  - **`peaks memory search` / `peaks retrospective search`** — new search
2967
3002
  subcommands for the durable memory / retrospective stores.
@@ -2972,7 +3007,7 @@ subprocess ignores it when peaks-cli's env vars are present).
2972
3007
  - **`peaks preferences set / get / reset`** — per-project preferences
2973
3008
  read/write CLI.
2974
3009
 
2975
- - **Two paired tenets** captured in `.peaks/memory/peaks-cli-tenet-one-key-completion.md`:
3010
+ - **Two paired tenets** captured in `.peaks/memory/peaks-loop-tenet-one-key-completion.md`:
2976
3011
  - **One-key completion** — actions that can be done in one step
2977
3012
  should not be designed as two-step operations.
2978
3013
  - **Minimal user operation** — features can be powerful, but the
@@ -3083,7 +3118,7 @@ is skipped (`PEAKS_SKIP_AUTO_UPGRADE=1` or `npm i --ignore-scripts`).
3083
3118
  `economyMode` / `swarmMode` with a pointer to
3084
3119
  `<project>/.peaks/preferences.json` (do not silently migrate).
3085
3120
 
3086
- The net effect: a freshly-installed peaks-cli writes a 2-key
3121
+ The net effect: a freshly-installed peaks-loop writes a 2-key
3087
3122
  `~/.peaks/config.json`; legacy 1.x files migrate to the same
3088
3123
  2-key form; the ocr second-opinion config is now the only
3089
3124
  discoverable surface the user needs to populate to make
@@ -3112,9 +3147,9 @@ same animations, same anchor links); only the tagline and
3112
3147
  call-to-action text differ.
3113
3148
 
3114
3149
  - `README.md` updated to the new layout (typing animation uses the
3115
- Chinese tagline: `peaks-cli: 跨 AI IDE 的工程门禁与编排`).
3150
+ Chinese tagline: `peaks-loop: 跨 AI IDE 的工程门禁与编排`).
3116
3151
  - `README-en.md` synced to mirror the new layout (typing animation
3117
- uses the English tagline: `peaks-cli: cross-AI-IDE engineering
3152
+ uses the English tagline: `peaks-loop: cross-AI-IDE engineering
3118
3153
  gates & orchestration`).
3119
3154
  - Card anchors renamed to ASCII-friendly slugs on the English file
3120
3155
  (`30-seconds-to-running`, `5-minute-onboarding`, `11-skills-in-the-family`,
@@ -3131,6 +3166,6 @@ No code, CLI, or schema changes. The CLI still reports
3131
3166
 
3132
3167
  Last 1.x release. See git history pre-2.0.0 for details.
3133
3168
 
3134
- [2.0.2]: https://github.com/SquabbyZ/peaks-cli/releases/tag/v2.0.2
3135
- [2.0.1]: https://github.com/SquabbyZ/peaks-cli/releases/tag/v2.0.1
3136
- [2.0.0]: https://github.com/SquabbyZ/peaks-cli/releases/tag/v2.0.0
3169
+ [2.0.2]: https://github.com/SquabbyZ/peaks-loop/releases/tag/v2.0.2
3170
+ [2.0.1]: https://github.com/SquabbyZ/peaks-loop/releases/tag/v2.0.1
3171
+ [2.0.0]: https://github.com/SquabbyZ/peaks-loop/releases/tag/v2.0.0
package/README-en.md CHANGED
@@ -262,10 +262,10 @@ See [`CHANGELOG.md`](./CHANGELOG.md) and [`docs/`](./docs/) for details.
262
262
 
263
263
  ## 💬 Join the WeChat community
264
264
 
265
- Got usage questions, feature requests, or want to chat with the team and other peaks-loop users? Scan to join the **Peaks-Cli** WeChat group:
265
+ Got usage questions, feature requests, or want to chat with the team and other peaks-loop users? Scan to join the **Peaks-Loop** WeChat group:
266
266
 
267
267
  <div align="center">
268
- <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Cli WeChat group QR code" width="240" />
268
+ <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Loop WeChat group QR code" width="240" />
269
269
  </div>
270
270
 
271
271
  > When the QR code expires, feel free to open a GitHub Issue / Discussion instead.
package/README.md CHANGED
@@ -346,10 +346,10 @@ peaks gate bypass --sop <id> --phase <phase> --reason "<why>"
346
346
 
347
347
  ## 💬 加入微信交流群
348
348
 
349
- 遇到使用问题、功能建议、或者想和other peaks-loop users直接交流?扫码加入 **Peaks-Cli** 微信群:
349
+ 遇到使用问题、功能建议、或者想和other peaks-loop users直接交流?扫码加入 **Peaks-Loop** 微信群:
350
350
 
351
351
  <div align="center">
352
- <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Cli 微信群二维码" width="240" />
352
+ <img src="./docs/images/wechat-group-qr.png" alt="Peaks-Loop 微信群二维码" width="240" />
353
353
  </div>
354
354
 
355
355
  > 二维码图片过期后,欢迎在 GitHub Issues / Discussions 提反馈。
@@ -7,9 +7,9 @@ model: sonnet
7
7
 
8
8
  # Karpathy Reviewer (peaks-rd 5-way fanout — Slice 5/6 + Slice 6/6 + Slice 7/7 LLM prompt)
9
9
 
10
- > **Shipped source** (Slice 7/7): this file is the canonical source for the karpathy-reviewer sub-agent prompt. The `peaks-cli` postinstall (`scripts/install-skills.mjs#installBundledAgents`) copies this file to `~/.claude/agents/karpathy-reviewer.md` on every `npm i -g peaks-cli@latest` invocation, with content-hash drift detection (a `.peaks-managed` marker + SHA-256 compare). Edit here; do not edit the copy in `~/.claude/agents/` (it will be overwritten on the next upgrade).
10
+ > **Shipped source** (Slice 7/7): this file is the canonical source for the karpathy-reviewer sub-agent prompt. The `peaks-loop` postinstall (`scripts/install-skills.mjs#installBundledAgents`) copies this file to `~/.claude/agents/karpathy-reviewer.md` on every `npm i -g peaks-loop@latest` invocation, with content-hash drift detection (a `.peaks-managed` marker + SHA-256 compare). Edit here; do not edit the copy in `~/.claude/agents/` (it will be overwritten on the next upgrade).
11
11
  >
12
- > **Project-internal pointer**: `skills/peaks-rd/references/karpathy-reviewer-prompt.md` is a 2-line pointer to this file (peaks-cli 2.0 rules convention).
12
+ > **Project-internal pointer**: `skills/peaks-rd/references/karpathy-reviewer-prompt.md` is a 2-line pointer to this file (peaks-loop 2.0 rules convention).
13
13
 
14
14
  You are a **Karpathy-guidelines enforcement reviewer** for peaks-rd. You inspect a slice's RD outputs against the 4 Karpathy guidelines and emit a compact JSON envelope that blocks the `rd → qa-handoff` transition if any guideline fails. You do **not** review style, performance, security, or code quality — those are owned by the parallel 4 sub-agents.
15
15
 
@@ -4,7 +4,7 @@ import { fail, ok } from '../../shared/result.js';
4
4
  export function registerAgentCommands(program, io) {
5
5
  const agent = program
6
6
  .command('agent')
7
- .description('Run an ECC agent (soft-optional per spec §7.2). 64 agents are npm-installable via npx ecc; peaks-cli shells out when ECC is installed and soft-fails with a 4-option install prompt when it is not. Native peaks-cli diagnostics still run via `peaks doctor scan`.');
7
+ .description('Run an ECC agent (soft-optional per spec §7.2). 64 agents are npm-installable via npx ecc; peaks-loop shells out when ECC is installed and soft-fails with a 4-option install prompt when it is not. Native peaks-loop diagnostics still run via `peaks doctor scan`.');
8
8
  addJsonOption(agent
9
9
  .command('run <name>')
10
10
  .description(`Run an ECC agent by name (e.g. 'security-reviewer', 'code-reviewer'). The canonical subprocess is \`npx ecc agent run <name> --target <path> --json\`.`)
@@ -28,7 +28,7 @@ export function registerAgentCommands(program, io) {
28
28
  const data = { ...result, projectRoot };
29
29
  const nextActions = [];
30
30
  if (result.reason === 'flag-enabled-but-ecc-missing') {
31
- nextActions.push('ECC not installed. Pick one of the four options below:', ' a) Install: run `npx ecc --help` to install, then re-run `peaks agent run`.', ' b) Skip this run: use the peaks-cli native diagnostic via `peaks doctor scan`.', ' c) Skip forever: run `peaks preferences set agentShieldEnabled false`.', ' d) Learn more: see docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §7.2.');
31
+ nextActions.push('ECC not installed. Pick one of the four options below:', ' a) Install: run `npx ecc --help` to install, then re-run `peaks agent run`.', ' b) Skip this run: use the peaks-loop native diagnostic via `peaks doctor scan`.', ' c) Skip forever: run `peaks preferences set agentShieldEnabled false`.', ' d) Learn more: see docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §7.2.');
32
32
  }
33
33
  const envelope = ok('agent.run', data, [...result.warnings], nextActions);
34
34
  printResult(io, envelope, options.json);
@@ -41,7 +41,7 @@ export function registerAgentCommands(program, io) {
41
41
  });
42
42
  addJsonOption(agent
43
43
  .command('list')
44
- .description(`List the 12 canonical ECC agents (peaks-cli ships a static subset; the full 64 are ECC-discovered).`)).action((options) => {
44
+ .description(`List the 12 canonical ECC agents (peaks-loop ships a static subset; the full 64 are ECC-discovered).`)).action((options) => {
45
45
  const envelope = ok('agent.list', { agents: CANONICAL_ECC_AGENTS.map((a) => ({ name: a.name, description: a.description })) }, [], ['Run any agent with: `peaks agent run <name> --target <path>`']);
46
46
  printResult(io, envelope, options.json);
47
47
  });
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Registers the new `peaks audit` top-level command with the
5
5
  * `red-lines` (L2.1) and `static` (L2.3 P2-a) subcommands.
6
- * Per `peaks-cli-when-adding-a-new-subcommand-check-for-existing-top-level-first.md`
6
+ * Per `peaks-loop-when-adding-a-new-subcommand-check-for-existing-top-level-first.md`
7
7
  * we verified that no `peaks audit` top-level exists; this is the only
8
8
  * file that owns the registration.
9
9
  */
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Registers the new `peaks audit` top-level command with the
5
5
  * `red-lines` (L2.1) and `static` (L2.3 P2-a) subcommands.
6
- * Per `peaks-cli-when-adding-a-new-subcommand-check-for-existing-top-level-first.md`
6
+ * Per `peaks-loop-when-adding-a-new-subcommand-check-for-existing-top-level-first.md`
7
7
  * we verified that no `peaks audit` top-level exists; this is the only
8
8
  * file that owns the registration.
9
9
  */
@@ -50,7 +50,7 @@ function validateProjectRoot(projectArg) {
50
50
  export function registerAuditCommands(program, io) {
51
51
  const audit = program
52
52
  .command('audit')
53
- .description('Audit a project for compliance with peaks-cli red lines (P0 / P1 / P2 tiers)');
53
+ .description('Audit a project for compliance with peaks-loop red lines (P0 / P1 / P2 tiers)');
54
54
  addJsonOption(audit
55
55
  .command('red-lines')
56
56
  .description('Scan skills/, .claude/rules/, and openspec/changes/ for MANDATORY / BLOCKING / MUST NOT / RED LINE markers; classify each as cli-backed / partial / prose-only')
@@ -88,12 +88,12 @@ export function registerAuditCommands(program, io) {
88
88
  // project-memory decision at `.peaks/memory/audit-decisions/<slug>.md`.
89
89
  // `--rid <id>` is an optional disambiguator for multiple audits on
90
90
  // the same day (slug becomes `audit-decision-<date>-<rid>`).
91
- // Per `peaks-cli-when-adding-a-new-subcommand-check-for-existing-top-level-first`
91
+ // Per `peaks-loop-when-adding-a-new-subcommand-check-for-existing-top-level-first`
92
92
  // and the dev-preference red line "Default-no on new CLI commands",
93
93
  // we extend the existing command rather than register a new subcommand.
94
94
  addJsonOption(audit
95
95
  .command('static')
96
- .description('Run the static audit (peaks-cli lint + optional ECC AgentShield subprocess). Per spec §5.3.')
96
+ .description('Run the static audit (peaks-loop lint + optional ECC AgentShield subprocess). Per spec §5.3.')
97
97
  .requiredOption('--project <path>', 'target project root')
98
98
  .option('--enable-agent-shield', 'force-enable ECC AgentShield subprocess for this call (overrides preference)')
99
99
  .option('--disable-agent-shield', 'force-disable ECC AgentShield subprocess for this call (overrides preference)')
@@ -155,7 +155,7 @@ export function registerAuditCommands(program, io) {
155
155
  const nextActions = [];
156
156
  // Per spec §5.3 + §7.2: when ECC is not installed, surface
157
157
  // the canonical 4-option user opt-in UX (a/b/c/d) via
158
- // nextActions. The peaks-cli `peaks audit static` CLI is
158
+ // nextActions. The peaks-loop `peaks audit static` CLI is
159
159
  // non-interactive (JSON envelope by default), so the 4
160
160
  // options are surfaced as machine-readable action strings
161
161
  // — same pattern as understand-commands.ts `INSTALL_HINT`.
@@ -164,7 +164,7 @@ export function registerAuditCommands(program, io) {
164
164
  nextActions.push(' a) Install: run `npx ecc-agentshield --help` to install, then re-run `peaks audit static`.');
165
165
  nextActions.push(' b) Skip this run: pass `--disable-agent-shield` to suppress the subprocess for this call.');
166
166
  nextActions.push(' c) Skip forever: run `peaks preferences set agentShieldEnabled false` (writes to `.peaks/preferences.json`).');
167
- nextActions.push(' d) Learn more: see docs/superpowers/specs/2026-06-11-peaks-cli-l1-l2-l3-redesign.md §5.3 + §7.2.');
167
+ nextActions.push(' d) Learn more: see docs/superpowers/specs/2026-06-11-peaks-loop-l1-l2-l3-redesign.md §5.3 + §7.2.');
168
168
  }
169
169
  if (result.agentShield.spawned && result.agentShield.findings.length > 0) {
170
170
  nextActions.push(`${result.agentShield.findings.length} ECC findings merged into the audit. Review with \`peaks audit static --json\`.`);
@@ -139,7 +139,7 @@ export function registerClassifyCommands(program, io) {
139
139
  // Downgrade is REFUSED per spec §4. Surface this as a hard fail.
140
140
  classify
141
141
  .command('downgrade')
142
- .description('REFUSED per spec §4 — peaks-cli never downgrades a classification; ask the user to override explicitly')
142
+ .description('REFUSED per spec §4 — peaks-loop never downgrades a classification; ask the user to override explicitly')
143
143
  .requiredOption('--level <level>', 'attempted level')
144
144
  .requiredOption('--reason <text>', 'reason for the attempt (always rejected)')
145
145
  .requiredOption('--project <path>', 'target project root')