peaks-cli 1.0.15 → 1.0.16

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.
@@ -25,6 +25,17 @@ Then display: `Peaks Skill: peaks-sc | Gate: startup | Next: <one short action>`
25
25
  - track artifact repository pointers when external sync or git retention is explicitly authorized;
26
26
  - record sync state and rollback points.
27
27
 
28
+ ## Mandatory per-request artifact
29
+
30
+ Every SC invocation must write a change-control record at `.peaks/<id>/sc/change-control/<rid>.md` linking:
31
+
32
+ - impact evidence (`peaks sc impact` output);
33
+ - retention evidence (`peaks sc retention` output);
34
+ - validation result (`peaks sc validate` output);
35
+ - boundary record (`peaks sc boundary` output).
36
+
37
+ Solo reads this record before declaring the workflow complete.
38
+
28
39
  ## Refactor role
29
40
 
30
41
  Each refactor slice must leave a traceable local artifact boundary in `.peaks/<session-id>/` by default. A git commit boundary containing code changes and PRD/RD/QA/TXT intermediate artifacts is required only when the user or active profile explicitly authorizes committing artifacts.
@@ -41,14 +52,20 @@ Use gstack as a concrete source-control and release workflow reference for the `
41
52
 
42
53
  Project `.claude/memory` is the primary source for durable project memory. At approved checkpoints, use `peaks memory sync --project <path> --workspace <artifact-workspace> --apply` to back up the full project memory directory into the artifact repository workspace; do not treat the artifact backup as a second writable memory source.
43
54
 
44
- ## OpenSpec-derived commit boundaries
55
+ ## Commit boundary derivation
45
56
 
46
- When `openspec/changes/<id>/tasks.md` exists, derive commit boundaries from it through the Peaks CLI instead of redesigning them:
57
+ **Primary path — OpenSpec available:** When `openspec/changes/<id>/tasks.md` exists, derive commit boundaries from it:
47
58
 
48
59
  - `peaks openspec to-rd <id> --project <repo> --json` returns `commitBoundaries[]`, one entry per tasks.md heading.
49
60
  - Default to one commit per heading. Each commit message references the change-id and the section heading.
50
61
  - If implementation produces diffs outside any todo, surface that as out-of-scope before closing SC.
51
62
 
63
+ **Fallback — OpenSpec missing:** When `openspec/` does not exist or `peaks openspec to-rd` fails:
64
+
65
+ - derive commit boundaries from the RD request artifact's slice spec and the current `git diff --stat`;
66
+ - group changed files by module or feature area, one commit per group;
67
+ - record in the change-control artifact that boundaries were derived from git diff, not OpenSpec, so downstream reviewers know the source.
68
+
52
69
  Concrete rules: `references/openspec-commit-boundaries.md`.
53
70
 
54
71
  ## Default runbook
@@ -57,29 +74,45 @@ Use this sequence when SC owns the change-control pass for a refactor or release
57
74
 
58
75
  ```bash
59
76
  # 0. Confirm SC's own runbook integrity before recording boundary evidence
77
+ # in: none
78
+ # out: runbook version, presence set
60
79
  peaks skill runbook peaks-sc --json
61
80
  peaks skill presence:set peaks-sc # show persistent skill presence every turn
62
81
 
63
- # 1. Derive commit boundaries from OpenSpec when openspec/ exists
82
+ # 1. Derive commit boundaries (OpenSpec preferred, git diff fallback)
83
+ # in: change-id, repo path
84
+ # out: commitBoundaries[] or fallback git diff grouping
64
85
  peaks openspec to-rd <change-id> --project <repo> --json
65
86
 
66
87
  # 2. Inventory artifacts already produced by other roles for this session
88
+ # in: repo path, session-id
89
+ # out: artifact list with paths and statuses
67
90
  peaks artifacts status --project <repo> --json
68
91
  peaks artifacts workspace --workspace <session-id> --json
69
92
 
70
93
  # 3. Record change impact for the slice
94
+ # in: change-id, module, file path
95
+ # out: impact record (JSON)
71
96
  peaks sc impact --change-id <change-id> --module <module> --file <path> --json
72
97
 
73
- # 4. Record retention evidence linking PRD / RD / QA / coverage / review artifacts
98
+ # 4. Record retention evidence linking PRD / RD / QA artifacts
99
+ # in: slice-id, artifact paths from other roles
100
+ # out: retention record (JSON)
74
101
  peaks sc retention --slice-id <slice-id> --prd <prd-path> --rd <rd-path> --qa <qa-path> --json
75
102
 
76
103
  # 5. Validate retention completeness
104
+ # in: slice-id
105
+ # out: validation result (pass/fail + missing items)
77
106
  peaks sc validate --slice-id <slice-id> --json
78
107
 
79
108
  # 6. Record the commit boundary for the slice
109
+ # in: slice-id, artifact path, code file path
110
+ # out: boundary record (JSON)
80
111
  peaks sc boundary --slice-id <slice-id> --artifact <artifact-path> --code <code-file> --json
81
112
 
82
- # 7. Sync memory and artifacts only when the user or active profile authorizes durable writes
113
+ # 7. Sync memory and artifacts (requires explicit authorization)
114
+ # in: repo path, workspace
115
+ # out: sync result or dry-run preview
83
116
  peaks memory sync --project <repo> --workspace <workspace> --apply --json
84
117
  peaks artifacts sync --workspace <workspace> --apply --json
85
118
  peaks skill presence:clear # SC complete, remove presence indicator
@@ -87,6 +120,24 @@ peaks skill presence:clear # SC complete, remove presence i
87
120
 
88
121
  The final two `--apply` calls require explicit authorization. Without it, default to `--dry-run` or omit the sync calls entirely and keep the boundary evidence local under `.peaks/<session-id>/`.
89
122
 
123
+ ### Transition verification gates (MANDATORY — run the command, see the output)
124
+
125
+ You cannot declare SC complete from memory. Each gate below is a `ls` command you **MUST run** and whose output you **MUST see** before proceeding.
126
+
127
+ **Gate A — After impact + retention + validate + boundary:**
128
+ ```bash
129
+ ls .peaks/<id>/sc/change-control/<rid>.md
130
+ # Expected output: .peaks/<id>/sc/change-control/<rid>.md
131
+ # "No such file" → STOP, write the change-control record first.
132
+ ```
133
+
134
+ **Gate B — Before declaring SC complete (verify commit boundary is recorded):**
135
+ ```bash
136
+ git log --oneline -5
137
+ # Expected: at least one recent commit whose message references the change-id or slice-id.
138
+ # No matching commit → STOP, the boundary was not recorded. Re-run steps 3-6.
139
+ ```
140
+
90
141
  ## Boundaries
91
142
 
92
143
  Do not implement code or test logic. Do not create GitHub repositories directly from the skill body. Use the Peaks CLI artifact commands.