prizmkit 1.0.111 → 1.0.113
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/bundled/VERSION.json +3 -3
- package/bundled/dev-pipeline/run.sh +8 -2
- package/bundled/dev-pipeline/scripts/update-feature-status.py +14 -11
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +24 -18
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +19 -18
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +22 -23
- package/bundled/skills/_metadata.json +1 -1
- package/package.json +1 -1
package/bundled/VERSION.json
CHANGED
|
@@ -218,7 +218,7 @@ spawn_and_wait_session() {
|
|
|
218
218
|
uncommitted=$(git -C "$project_root" status --porcelain 2>/dev/null | head -1 || true)
|
|
219
219
|
if [[ -n "$uncommitted" ]]; then
|
|
220
220
|
log_warn "Session exited cleanly but produced no commits (uncommitted changes found) — auto-committing..."
|
|
221
|
-
git -C "$project_root" add -
|
|
221
|
+
git -C "$project_root" add -u 2>/dev/null || true
|
|
222
222
|
if git -C "$project_root" commit --no-verify -m "chore($feature_id): auto-commit session work" 2>/dev/null; then
|
|
223
223
|
log_info "Auto-commit succeeded"
|
|
224
224
|
session_status="success"
|
|
@@ -241,7 +241,7 @@ spawn_and_wait_session() {
|
|
|
241
241
|
dirty_files=$(git -C "$project_root" status --porcelain 2>/dev/null || true)
|
|
242
242
|
if [[ -n "$dirty_files" ]]; then
|
|
243
243
|
log_info "Auto-committing remaining session artifacts..."
|
|
244
|
-
git -C "$project_root" add -
|
|
244
|
+
git -C "$project_root" add -u 2>/dev/null || true
|
|
245
245
|
git -C "$project_root" commit --no-verify --amend --no-edit -a 2>/dev/null \
|
|
246
246
|
|| git -C "$project_root" commit --no-verify -m "chore($feature_id): include remaining session artifacts" 2>/dev/null \
|
|
247
247
|
|| true
|
|
@@ -314,6 +314,12 @@ sys.exit(1)
|
|
|
314
314
|
log_error "feature-list.json may be out of sync. Manual intervention needed."
|
|
315
315
|
}
|
|
316
316
|
|
|
317
|
+
# Commit feature status update (pipeline management commit)
|
|
318
|
+
if ! git -C "$project_root" diff --quiet feature-list.json 2>/dev/null; then
|
|
319
|
+
git -C "$project_root" add feature-list.json
|
|
320
|
+
git -C "$project_root" commit --no-verify -m "chore($feature_id): update feature status" 2>/dev/null || true
|
|
321
|
+
fi
|
|
322
|
+
|
|
317
323
|
# Return status via global variable (avoids $() swallowing stdout)
|
|
318
324
|
_SPAWN_RESULT="$session_status"
|
|
319
325
|
}
|
|
@@ -341,17 +341,9 @@ def action_get_next(feature_list_data, state_dir, feature_filter=None):
|
|
|
341
341
|
print("PIPELINE_COMPLETE")
|
|
342
342
|
return
|
|
343
343
|
|
|
344
|
-
#
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
f for f in features
|
|
348
|
-
if isinstance(f, dict) and f.get("id") in feature_filter
|
|
349
|
-
]
|
|
350
|
-
if not features:
|
|
351
|
-
print("PIPELINE_COMPLETE")
|
|
352
|
-
return
|
|
353
|
-
|
|
354
|
-
# Build a map of feature statuses from state dir
|
|
344
|
+
# Build status map from ALL features (for dependency checking).
|
|
345
|
+
# This must happen BEFORE the feature filter is applied, because
|
|
346
|
+
# filtered features may depend on features outside the filter.
|
|
355
347
|
status_map = {} # feature_id -> status string
|
|
356
348
|
status_data_map = {} # feature_id -> full status data
|
|
357
349
|
for feature in features:
|
|
@@ -364,6 +356,17 @@ def action_get_next(feature_list_data, state_dir, feature_filter=None):
|
|
|
364
356
|
status_map[fid] = fs.get("status", "pending")
|
|
365
357
|
status_data_map[fid] = fs
|
|
366
358
|
|
|
359
|
+
# Apply feature filter: only consider these features as candidates
|
|
360
|
+
# for execution, but dependency checking still uses the full status_map
|
|
361
|
+
if feature_filter is not None:
|
|
362
|
+
features = [
|
|
363
|
+
f for f in features
|
|
364
|
+
if isinstance(f, dict) and f.get("id") in feature_filter
|
|
365
|
+
]
|
|
366
|
+
if not features:
|
|
367
|
+
print("PIPELINE_COMPLETE")
|
|
368
|
+
return
|
|
369
|
+
|
|
367
370
|
# Check if all features are in terminal state
|
|
368
371
|
non_terminal = [
|
|
369
372
|
f for f in features
|
|
@@ -40,7 +40,7 @@ You are running in headless mode with a FINITE context window. Exceeding it will
|
|
|
40
40
|
3. **Stay focused** — Do NOT explore code unrelated to this feature. No curiosity-driven reads.
|
|
41
41
|
4. **One task at a time** — In Phase 3 (implement), complete and test one task before starting the next.
|
|
42
42
|
5. **Minimize tool output** — When running commands, use `| head -20` or `| tail -20` to limit output. Never dump entire test suites or logs.
|
|
43
|
-
6. **
|
|
43
|
+
6. **No intermediate commits** — Do NOT run `git add`/`git commit` during Phase 1-3. All changes are committed once at the end in Phase 4 via `/prizmkit-committer`.
|
|
44
44
|
7. **Capture test output once** — When running the test suite, always use `$TEST_CMD 2>&1 | tee /tmp/test-out.txt | tail -20`. Then grep `/tmp/test-out.txt` for details. Never re-run the suite just to apply a different filter.
|
|
45
45
|
|
|
46
46
|
---
|
|
@@ -109,6 +109,13 @@ If plan.md missing, write it directly:
|
|
|
109
109
|
|
|
110
110
|
### Phase 3: Implement + Test
|
|
111
111
|
|
|
112
|
+
**Build artifacts**: After any build/compile command (`go build`, `npm run build`, `tsc`, etc.), ensure the output binary or build directory is in `.gitignore`:
|
|
113
|
+
```bash
|
|
114
|
+
# Example for Go
|
|
115
|
+
grep -q '^/binary-name$' .gitignore || echo '/binary-name' >> .gitignore
|
|
116
|
+
```
|
|
117
|
+
Never commit compiled binaries, build output, or generated artifacts.
|
|
118
|
+
|
|
112
119
|
**Before starting**: detect the test command and record baseline:
|
|
113
120
|
```bash
|
|
114
121
|
# Try in order, use first that exits 0
|
|
@@ -140,33 +147,31 @@ Files changed/created: [list]
|
|
|
140
147
|
Key decisions: [list]
|
|
141
148
|
```
|
|
142
149
|
|
|
143
|
-
### Phase 4: Architecture Sync & Commit
|
|
150
|
+
### Phase 4: Architecture Sync & Commit (SINGLE COMMIT)
|
|
144
151
|
|
|
145
152
|
**4a.** Run `/prizmkit-retrospective` — maintains `.prizm-docs/` (architecture index):
|
|
146
153
|
1. **Structural sync**: Use `git diff --cached --name-status` to locate changed modules, update KEY_FILES/INTERFACES/DEPENDENCIES/file counts in affected `.prizm-docs/` files
|
|
147
154
|
2. **Architecture knowledge** (feature sessions only): Extract TRAPS/RULES/DECISIONS from completed work into `.prizm-docs/`
|
|
148
|
-
3. Stage
|
|
155
|
+
3. Stage doc changes: `git add .prizm-docs/`
|
|
156
|
+
⚠️ Do NOT commit here. Only stage.
|
|
149
157
|
|
|
150
|
-
|
|
158
|
+
**4b.** Stage all feature code explicitly (NEVER use `git add -A` or `git add .`):
|
|
159
|
+
```bash
|
|
160
|
+
git add <specific-files-created-or-modified>
|
|
161
|
+
git add .prizm-docs/
|
|
162
|
+
```
|
|
151
163
|
|
|
152
|
-
**
|
|
164
|
+
**4c.** Run `/prizmkit-committer` → THE ONLY commit for this feature:
|
|
165
|
+
`feat({{FEATURE_ID}}): {{FEATURE_TITLE}}`
|
|
166
|
+
This single commit includes: feature code + tests + .prizm-docs/ updates. Do NOT push.
|
|
153
167
|
- MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
154
168
|
- Do NOT run `update-feature-status.py` here — the pipeline runner handles feature-list.json updates automatically after session exit.
|
|
155
169
|
|
|
156
|
-
**
|
|
157
|
-
|
|
170
|
+
**4d.** Final verification:
|
|
158
171
|
```bash
|
|
159
172
|
git status --short
|
|
160
173
|
```
|
|
161
|
-
|
|
162
|
-
**Note**: The pipeline runner will auto-commit any remaining dirty files after your session exits. You do NOT need to manually commit pipeline state files (`dev-pipeline/state/`) or runtime logs — just focus on committing your feature code via `/prizmkit-committer`.
|
|
163
|
-
|
|
164
|
-
If any feature-related source files remain uncommitted, stage them **explicitly by name** (do NOT use `git add -A`) and create a follow-up commit:
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
git add <specific-file-1> <specific-file-2>
|
|
168
|
-
git commit -m "chore({{FEATURE_ID}}): include session artifacts"
|
|
169
|
-
```
|
|
174
|
+
Working tree MUST be clean after this step. If any feature-related files remain, stage them into the SAME commit via `git add <file> && git commit --amend --no-edit`, do NOT create a separate commit.
|
|
170
175
|
|
|
171
176
|
## Critical Paths
|
|
172
177
|
|
|
@@ -204,5 +209,6 @@ rm -f .prizmkit/specs/{{FEATURE_SLUG}}/failure-log.md
|
|
|
204
209
|
- MANDATORY skills: `/prizmkit-retrospective`, `/prizmkit-committer` — never skip these
|
|
205
210
|
- Build context-snapshot.md FIRST; use it throughout instead of re-reading files
|
|
206
211
|
- `/prizmkit-committer` is mandatory — do NOT skip the commit phase, and do NOT replace it with manual git commit commands
|
|
207
|
-
-
|
|
208
|
-
-
|
|
212
|
+
- Do NOT run `git add`/`git commit` during Phase 1-3 — all changes are committed once in Phase 4
|
|
213
|
+
- If any files remain after the commit, amend the existing commit — do NOT create a follow-up commit
|
|
214
|
+
- When staging files, always use explicit file names — NEVER use `git add -A` or `git add .`
|
|
@@ -40,7 +40,7 @@ You are running in headless mode with a FINITE context window. Exceeding it will
|
|
|
40
40
|
3. **Stay focused** — Do NOT explore code unrelated to this feature. No curiosity-driven reads.
|
|
41
41
|
4. **One task at a time** — In Phase 3 (implement), complete and test one task before starting the next.
|
|
42
42
|
5. **Minimize tool output** — When running commands, use `| head -20` or `| tail -20` to limit output. Never dump entire test suites or logs.
|
|
43
|
-
6. **
|
|
43
|
+
6. **No intermediate commits** — Do NOT run `git add`/`git commit` during Phase 1-4. All changes are committed once at the end in Phase 5 via `/prizmkit-committer`.
|
|
44
44
|
7. **Capture test output once** — When running the test suite, always use `$TEST_CMD 2>&1 | tee /tmp/test-out.txt | tail -20`. Then grep `/tmp/test-out.txt` for details. Never re-run the suite just to apply a different filter.
|
|
45
45
|
|
|
46
46
|
---
|
|
@@ -130,6 +130,8 @@ If either missing, write them yourself:
|
|
|
130
130
|
|
|
131
131
|
### Phase 3: Implement — Dev Subagent
|
|
132
132
|
|
|
133
|
+
**Build artifacts rule** (passed to Dev): After any build/compile command (`go build`, `npm run build`, `tsc`, etc.), ensure the output binary or build directory is in `.gitignore`. Never commit compiled binaries, build output, or generated artifacts.
|
|
134
|
+
|
|
133
135
|
Spawn Dev subagent (Agent tool, subagent_type="prizm-dev-team-dev", run_in_background=false).
|
|
134
136
|
|
|
135
137
|
Prompt:
|
|
@@ -187,33 +189,31 @@ If GATE:MISSING — send message to Reviewer (re-spawn if needed): "Write the '#
|
|
|
187
189
|
|
|
188
190
|
**CP-2**: Tests pass, verdict is not NEEDS_FIXES.
|
|
189
191
|
|
|
190
|
-
### Phase 5: Architecture Sync & Commit
|
|
192
|
+
### Phase 5: Architecture Sync & Commit (SINGLE COMMIT)
|
|
191
193
|
|
|
192
194
|
**5a.** Run `/prizmkit-retrospective` — maintains `.prizm-docs/` (architecture index):
|
|
193
195
|
1. **Structural sync**: Use `git diff --cached --name-status` to locate changed modules, update KEY_FILES/INTERFACES/DEPENDENCIES/file counts in affected `.prizm-docs/` files
|
|
194
196
|
2. **Architecture knowledge** (feature sessions only): Extract TRAPS/RULES/DECISIONS from completed work into `.prizm-docs/`
|
|
195
|
-
3. Stage
|
|
197
|
+
3. Stage doc changes: `git add .prizm-docs/`
|
|
198
|
+
⚠️ Do NOT commit here. Only stage.
|
|
196
199
|
|
|
197
|
-
|
|
200
|
+
**5b.** Stage all feature code explicitly (NEVER use `git add -A` or `git add .`):
|
|
201
|
+
```bash
|
|
202
|
+
git add <specific-files-created-or-modified>
|
|
203
|
+
git add .prizm-docs/
|
|
204
|
+
```
|
|
198
205
|
|
|
199
|
-
**
|
|
206
|
+
**5c.** Run `/prizmkit-committer` → THE ONLY commit for this feature:
|
|
207
|
+
`feat({{FEATURE_ID}}): {{FEATURE_TITLE}}`
|
|
208
|
+
This single commit includes: feature code + tests + .prizm-docs/ updates. Do NOT push.
|
|
200
209
|
- MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
201
210
|
- Do NOT run `update-feature-status.py` here — the pipeline runner handles feature-list.json updates automatically after session exit.
|
|
202
211
|
|
|
203
|
-
**
|
|
204
|
-
|
|
212
|
+
**5d.** Final verification:
|
|
205
213
|
```bash
|
|
206
214
|
git status --short
|
|
207
215
|
```
|
|
208
|
-
|
|
209
|
-
**Note**: The pipeline runner will auto-commit any remaining dirty files after your session exits. You do NOT need to manually commit pipeline state files (`dev-pipeline/state/`) or runtime logs — just focus on committing your feature code via `/prizmkit-committer`.
|
|
210
|
-
|
|
211
|
-
If any feature-related source files remain uncommitted, stage them **explicitly by name** (do NOT use `git add -A`) and create a follow-up commit:
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
git add <specific-file-1> <specific-file-2>
|
|
215
|
-
git commit -m "chore({{FEATURE_ID}}): include session artifacts"
|
|
216
|
-
```
|
|
216
|
+
Working tree MUST be clean after this step. If any feature-related files remain, stage them into the SAME commit via `git add <file> && git commit --amend --no-edit`, do NOT create a separate commit.
|
|
217
217
|
|
|
218
218
|
## Critical Paths
|
|
219
219
|
|
|
@@ -255,6 +255,7 @@ rm -f .prizmkit/specs/{{FEATURE_SLUG}}/failure-log.md
|
|
|
255
255
|
- Gate checks enforce Implementation Log and Review Notes are written before proceeding
|
|
256
256
|
- Do NOT use `run_in_background=true` when spawning subagents
|
|
257
257
|
- `/prizmkit-committer` is mandatory, and must not be replaced with manual git commit commands
|
|
258
|
-
-
|
|
259
|
-
-
|
|
258
|
+
- Do NOT run `git add`/`git commit` during Phase 1-4 — all changes are committed once in Phase 5
|
|
259
|
+
- If any files remain after the commit, amend the existing commit — do NOT create a follow-up commit
|
|
260
|
+
- When staging files, always use explicit file names — NEVER use `git add -A` or `git add .`
|
|
260
261
|
- On timeout: check snapshot + git diff HEAD → model:lite → remaining steps only → max 2 retries per phase → orchestrator fallback
|
|
@@ -72,7 +72,7 @@ You are running in headless mode with a FINITE context window. Exceeding it will
|
|
|
72
72
|
3. **Stay focused** — Do NOT explore code unrelated to this feature. No curiosity-driven reads.
|
|
73
73
|
4. **One task at a time** — In Phase 4 (implement), complete and test one task before starting the next.
|
|
74
74
|
5. **Minimize tool output** — When running commands, use `| head -20` or `| tail -20` to limit output. Never dump entire test suites or logs.
|
|
75
|
-
6. **
|
|
75
|
+
6. **No intermediate commits** — Do NOT run `git add`/`git commit` during Phase 1-5. All changes are committed once at the end in Phase 6 via `/prizmkit-committer`.
|
|
76
76
|
7. **Batch independent operations** — Issue multiple independent `Write`/`Read` calls in a single message turn when they have no dependencies. Combine multiple `mkdir -p` into one command. Never run `npm test` twice just to apply a different grep filter — capture output to `/tmp/test-out.txt` once and grep the file.
|
|
77
77
|
|
|
78
78
|
---
|
|
@@ -231,6 +231,8 @@ Wait for Reviewer to return.
|
|
|
231
231
|
|
|
232
232
|
### Phase 4: Implement — Dev Agent
|
|
233
233
|
|
|
234
|
+
**Build artifacts rule** (passed to Dev): After any build/compile command (`go build`, `npm run build`, `tsc`, etc.), ensure the output binary or build directory is in `.gitignore`. Never commit compiled binaries, build output, or generated artifacts.
|
|
235
|
+
|
|
234
236
|
Before spawning Dev, check plan.md Tasks section:
|
|
235
237
|
```bash
|
|
236
238
|
grep -c '^\- \[ \]' .prizmkit/specs/{{FEATURE_SLUG}}/plan.md 2>/dev/null || echo 0
|
|
@@ -339,7 +341,7 @@ If GATE:MISSING — send message to Reviewer (re-spawn if needed): "Write the '#
|
|
|
339
341
|
**CP-3**: Integration tests pass, verdict is not NEEDS_FIXES.
|
|
340
342
|
|
|
341
343
|
|
|
342
|
-
### Phase 6: Retrospective & Commit — DO NOT SKIP
|
|
344
|
+
### Phase 6: Retrospective & Commit (SINGLE COMMIT) — DO NOT SKIP
|
|
343
345
|
|
|
344
346
|
{{IF_MODE_SELF_EVOLVE}}
|
|
345
347
|
**Framework Validation Gate (self-evolve mode)**:
|
|
@@ -361,37 +363,33 @@ bash {{VALIDATOR_SCRIPTS_DIR}}/validate-framework.sh
|
|
|
361
363
|
```bash
|
|
362
364
|
git log --oneline | grep "{{FEATURE_ID}}" | head -3
|
|
363
365
|
```
|
|
364
|
-
- If a commit for `{{FEATURE_ID}}` already exists → **skip
|
|
365
|
-
- If no existing commit → proceed normally with
|
|
366
|
+
- If a commit for `{{FEATURE_ID}}` already exists → **skip 6d** (do NOT run /prizmkit-committer, do NOT run git reset, do NOT stage or unstage anything). Proceed directly to 6e Final verification.
|
|
367
|
+
- If no existing commit → proceed normally with 6b–6d.
|
|
366
368
|
|
|
367
369
|
**6b.** Run `/prizmkit-retrospective` (**before commit**, maintains `.prizm-docs/` architecture index):
|
|
368
370
|
- **Structural sync**: update KEY_FILES/INTERFACES/DEPENDENCIES/file counts for changed modules
|
|
369
371
|
- **Architecture knowledge** (feature sessions only): extract TRAPS, RULES, DECISIONS from completed work into `.prizm-docs/`
|
|
370
|
-
- Stage
|
|
372
|
+
- Stage doc changes: `git add .prizm-docs/`
|
|
373
|
+
⚠️ Do NOT commit here. Only stage.
|
|
371
374
|
- **For bug-fix sessions**: structural sync only, skip knowledge injection unless a genuinely new pitfall was discovered
|
|
372
375
|
|
|
373
|
-
**6c.**
|
|
374
|
-
|
|
375
|
-
**6d.** MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
376
|
-
|
|
377
|
-
**6e.** Do NOT run `update-feature-status.py` here — the pipeline runner handles feature-list.json updates automatically after session exit.
|
|
378
|
-
|
|
379
|
-
### Final Clean Check (before exit)
|
|
380
|
-
|
|
381
|
-
Verify repository is clean:
|
|
382
|
-
|
|
376
|
+
**6c.** Stage all feature code explicitly (NEVER use `git add -A` or `git add .`):
|
|
383
377
|
```bash
|
|
384
|
-
git
|
|
378
|
+
git add <specific-files-created-or-modified>
|
|
379
|
+
git add .prizm-docs/
|
|
385
380
|
```
|
|
386
381
|
|
|
387
|
-
**
|
|
388
|
-
|
|
389
|
-
|
|
382
|
+
**6d.** Run `/prizmkit-committer` → THE ONLY commit for this feature:
|
|
383
|
+
`feat({{FEATURE_ID}}): {{FEATURE_TITLE}}`
|
|
384
|
+
This single commit includes: feature code + tests + .prizm-docs/ updates. Do NOT push.
|
|
385
|
+
- MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
386
|
+
- Do NOT run `update-feature-status.py` here — the pipeline runner handles feature-list.json updates automatically after session exit.
|
|
390
387
|
|
|
388
|
+
**6e.** Final verification:
|
|
391
389
|
```bash
|
|
392
|
-
git
|
|
393
|
-
git commit -m "chore({{FEATURE_ID}}): include session artifacts"
|
|
390
|
+
git status --short
|
|
394
391
|
```
|
|
392
|
+
Working tree MUST be clean after this step. If any feature-related files remain, stage them into the SAME commit via `git add <file> && git commit --amend --no-edit`, do NOT create a separate commit.
|
|
395
393
|
|
|
396
394
|
## Critical Paths
|
|
397
395
|
|
|
@@ -434,6 +432,7 @@ rm -f .prizmkit/specs/{{FEATURE_SLUG}}/failure-log.md
|
|
|
434
432
|
- Gate checks enforce Implementation Log and Review Notes are written before proceeding
|
|
435
433
|
- Do NOT use `run_in_background=true` when spawning agents
|
|
436
434
|
- Commit phase must use `/prizmkit-committer`; do NOT replace with manual git commit commands
|
|
437
|
-
-
|
|
438
|
-
-
|
|
435
|
+
- Do NOT run `git add`/`git commit` during Phase 1-5 — all changes are committed once in Phase 6
|
|
436
|
+
- If any files remain after the commit, amend the existing commit — do NOT create a follow-up commit
|
|
437
|
+
- When staging files, always use explicit file names — NEVER use `git add -A` or `git add .`
|
|
439
438
|
- On timeout: check snapshot → model:lite → remaining steps only → max 2 retries → orchestrator fallback
|