prizmkit 1.1.47 → 1.1.49
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/scripts/update-checkpoint.py +173 -0
- package/bundled/dev-pipeline/templates/sections/checkpoint-system.md +39 -9
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification-auto.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification-opencli.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-browser-verification.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +14 -1
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +14 -1
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-lite-suffix.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-critic-plan-full.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-critic-plan.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-implement-lite.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-plan-agent.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-plan-lite.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-review-full.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase0-init.md +7 -1
- package/bundled/dev-pipeline/templates/sections/phase0-test-baseline.md +7 -1
- package/bundled/skills/_metadata.json +1 -1
- package/bundled/skills/bug-planner/SKILL.md +17 -5
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +234 -64
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +16 -9
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +16 -11
- package/bundled/skills/feature-planner/SKILL.md +16 -9
- package/bundled/skills/feature-planner/references/browser-interaction.md +13 -1
- package/bundled/skills/feature-planner/scripts/validate-and-generate.py +82 -0
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +16 -9
- package/bundled/skills/refactor-planner/SKILL.md +11 -6
- package/bundled/skills/refactor-planner/scripts/validate-and-generate-refactor.py +72 -0
- package/package.json +1 -1
package/bundled/VERSION.json
CHANGED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Safely update a workflow-checkpoint.json step status.
|
|
3
|
+
|
|
4
|
+
Instead of having the AI hand-write JSON, this script reads the checkpoint,
|
|
5
|
+
validates the update, and writes it back atomically.
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
python3 update-checkpoint.py --checkpoint-path <path> --step <skill-or-id> --status <status>
|
|
9
|
+
python3 update-checkpoint.py --checkpoint-path <path> --step prizmkit-implement --status completed
|
|
10
|
+
python3 update-checkpoint.py --checkpoint-path <path> --step S04 --status in_progress
|
|
11
|
+
python3 update-checkpoint.py --checkpoint-path <path> --step prizmkit-code-review --status failed --note "max rounds exhausted"
|
|
12
|
+
|
|
13
|
+
Exit codes:
|
|
14
|
+
0 = success
|
|
15
|
+
1 = validation error (step not found, invalid status, etc.)
|
|
16
|
+
2 = file error (not found, corrupted JSON)
|
|
17
|
+
|
|
18
|
+
Output (stdout): JSON with {ok: true, step_id, skill, old_status, new_status} or {ok: false, error}
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
import argparse
|
|
22
|
+
import json
|
|
23
|
+
import os
|
|
24
|
+
import sys
|
|
25
|
+
import tempfile
|
|
26
|
+
|
|
27
|
+
VALID_STATUSES = {"pending", "in_progress", "completed", "skipped", "failed"}
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _load_checkpoint(path):
|
|
31
|
+
"""Load checkpoint JSON. Returns (data, error_string)."""
|
|
32
|
+
if not os.path.isfile(path):
|
|
33
|
+
return None, "File not found: {}".format(path)
|
|
34
|
+
try:
|
|
35
|
+
with open(path, "r", encoding="utf-8") as f:
|
|
36
|
+
data = json.load(f)
|
|
37
|
+
except json.JSONDecodeError as e:
|
|
38
|
+
return None, "Corrupted JSON: {}".format(e)
|
|
39
|
+
except IOError as e:
|
|
40
|
+
return None, "Cannot read file: {}".format(e)
|
|
41
|
+
|
|
42
|
+
if "steps" not in data or not isinstance(data["steps"], list):
|
|
43
|
+
return None, "Invalid checkpoint: missing 'steps' array"
|
|
44
|
+
return data, None
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _write_checkpoint(path, data):
|
|
48
|
+
"""Write checkpoint JSON atomically using a temp file + rename."""
|
|
49
|
+
parent = os.path.dirname(os.path.abspath(path))
|
|
50
|
+
if parent and not os.path.isdir(parent):
|
|
51
|
+
os.makedirs(parent, exist_ok=True)
|
|
52
|
+
|
|
53
|
+
tmp_path = None
|
|
54
|
+
try:
|
|
55
|
+
fd, tmp_path = tempfile.mkstemp(
|
|
56
|
+
dir=parent, suffix=".tmp", prefix=".checkpoint-"
|
|
57
|
+
)
|
|
58
|
+
with os.fdopen(fd, "w", encoding="utf-8") as f:
|
|
59
|
+
json.dump(data, f, indent=2, ensure_ascii=False)
|
|
60
|
+
f.write("\n")
|
|
61
|
+
os.replace(tmp_path, os.path.abspath(path))
|
|
62
|
+
except (IOError, OSError) as e:
|
|
63
|
+
# Clean up temp file on error
|
|
64
|
+
if tmp_path is not None and os.path.exists(tmp_path):
|
|
65
|
+
os.unlink(tmp_path)
|
|
66
|
+
return "Cannot write file: {}".format(e)
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _find_step(steps, identifier):
|
|
71
|
+
"""Find a step by skill name or step ID.
|
|
72
|
+
|
|
73
|
+
Returns (index, step_dict) or (None, None).
|
|
74
|
+
"""
|
|
75
|
+
for i, step in enumerate(steps):
|
|
76
|
+
if step.get("skill") == identifier or step.get("id") == identifier:
|
|
77
|
+
return i, step
|
|
78
|
+
return None, None
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def update_checkpoint(checkpoint_path, step_identifier, new_status, note=None):
|
|
82
|
+
"""Update a single step's status in the checkpoint file.
|
|
83
|
+
|
|
84
|
+
Returns a result dict: {ok, step_id, skill, old_status, new_status} or {ok, error}.
|
|
85
|
+
"""
|
|
86
|
+
if new_status not in VALID_STATUSES:
|
|
87
|
+
return {
|
|
88
|
+
"ok": False,
|
|
89
|
+
"error": "Invalid status '{}'. Must be one of: {}".format(
|
|
90
|
+
new_status, ", ".join(sorted(VALID_STATUSES))
|
|
91
|
+
),
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
data, err = _load_checkpoint(checkpoint_path)
|
|
95
|
+
if err:
|
|
96
|
+
return {"ok": False, "error": err}
|
|
97
|
+
|
|
98
|
+
idx, step = _find_step(data["steps"], step_identifier)
|
|
99
|
+
if step is None:
|
|
100
|
+
available = [
|
|
101
|
+
"{} ({})".format(s.get("id", "?"), s.get("skill", "?"))
|
|
102
|
+
for s in data["steps"]
|
|
103
|
+
]
|
|
104
|
+
return {
|
|
105
|
+
"ok": False,
|
|
106
|
+
"error": "Step '{}' not found. Available: {}".format(
|
|
107
|
+
step_identifier, ", ".join(available)
|
|
108
|
+
),
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
old_status = step.get("status", "unknown")
|
|
112
|
+
step["status"] = new_status
|
|
113
|
+
|
|
114
|
+
if note:
|
|
115
|
+
step["note"] = note
|
|
116
|
+
|
|
117
|
+
err = _write_checkpoint(checkpoint_path, data)
|
|
118
|
+
if err:
|
|
119
|
+
return {"ok": False, "error": err}
|
|
120
|
+
|
|
121
|
+
return {
|
|
122
|
+
"ok": True,
|
|
123
|
+
"step_id": step.get("id"),
|
|
124
|
+
"skill": step.get("skill"),
|
|
125
|
+
"old_status": old_status,
|
|
126
|
+
"new_status": new_status,
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def main():
|
|
131
|
+
parser = argparse.ArgumentParser(
|
|
132
|
+
description="Safely update a workflow-checkpoint.json step status.",
|
|
133
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
134
|
+
epilog=(
|
|
135
|
+
"Examples:\n"
|
|
136
|
+
" %(prog)s --checkpoint-path .prizmkit/specs/my-feature/workflow-checkpoint.json "
|
|
137
|
+
"--step prizmkit-implement --status completed\n"
|
|
138
|
+
" %(prog)s --checkpoint-path .prizmkit/bugfix/B-001/workflow-checkpoint.json "
|
|
139
|
+
"--step S04 --status in_progress\n"
|
|
140
|
+
" %(prog)s --checkpoint-path .prizmkit/refactor/R-001/workflow-checkpoint.json "
|
|
141
|
+
"--step prizmkit-code-review --status failed --note 'max rounds exhausted'"
|
|
142
|
+
),
|
|
143
|
+
)
|
|
144
|
+
parser.add_argument(
|
|
145
|
+
"--checkpoint-path", required=True, help="Path to workflow-checkpoint.json"
|
|
146
|
+
)
|
|
147
|
+
parser.add_argument(
|
|
148
|
+
"--step",
|
|
149
|
+
required=True,
|
|
150
|
+
help="Step identifier (skill name like 'prizmkit-implement' or step ID like 'S04')",
|
|
151
|
+
)
|
|
152
|
+
parser.add_argument(
|
|
153
|
+
"--status",
|
|
154
|
+
required=True,
|
|
155
|
+
choices=sorted(VALID_STATUSES),
|
|
156
|
+
help="New status for the step",
|
|
157
|
+
)
|
|
158
|
+
parser.add_argument(
|
|
159
|
+
"--note",
|
|
160
|
+
default=None,
|
|
161
|
+
help="Optional note to attach to the step (e.g., failure reason)",
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
args = parser.parse_args()
|
|
165
|
+
result = update_checkpoint(
|
|
166
|
+
args.checkpoint_path, args.step, args.status, args.note
|
|
167
|
+
)
|
|
168
|
+
print(json.dumps(result, indent=2, ensure_ascii=False))
|
|
169
|
+
return 0 if result.get("ok") else (2 if "File not found" in result.get("error", "") or "Corrupted" in result.get("error", "") else 1)
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
if __name__ == "__main__":
|
|
173
|
+
sys.exit(main())
|
|
@@ -8,23 +8,53 @@ A checkpoint file tracks your progress through this workflow:
|
|
|
8
8
|
|
|
9
9
|
1. **Before each skill**: Read `workflow-checkpoint.json`, verify the previous step has `status: "completed"` or `status: "skipped"`. If it is still `"pending"` or `"in_progress"`, you MUST complete it first before moving on.
|
|
10
10
|
|
|
11
|
-
2. **Starting a skill**:
|
|
11
|
+
2. **Starting a skill**: Use the update script to set the current step to `status: "in_progress"`.
|
|
12
12
|
|
|
13
|
-
3. **After each skill completes**:
|
|
13
|
+
3. **After each skill completes**: Use the update script to set the current step to `status: "completed"`.
|
|
14
14
|
|
|
15
|
-
4. **On failure**:
|
|
15
|
+
4. **On failure**: Use the update script to set the step to `status: "failed"` and continue to the next step if possible, or halt and write failure-log.md.
|
|
16
16
|
|
|
17
17
|
5. **On session exit**: The checkpoint file reflects your actual progress. Do NOT manually set future steps to "completed".
|
|
18
18
|
|
|
19
19
|
### Checkpoint Update Pattern
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**IMPORTANT: NEVER hand-write or edit `workflow-checkpoint.json` directly. Always use the update script.**
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
After completing each skill, run:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
27
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
28
|
+
--step <SKILL_NAME> \
|
|
29
|
+
--status completed
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
For example, after completing `prizmkit-implement`:
|
|
33
|
+
```bash
|
|
34
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
35
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
36
|
+
--step prizmkit-implement \
|
|
37
|
+
--status completed
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Before starting the next skill:
|
|
41
|
+
```bash
|
|
42
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
43
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
44
|
+
--step <NEXT_SKILL_NAME> \
|
|
45
|
+
--status in_progress
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
On failure:
|
|
49
|
+
```bash
|
|
50
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
51
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
52
|
+
--step <SKILL_NAME> \
|
|
53
|
+
--status failed \
|
|
54
|
+
--note "brief failure reason"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The script outputs JSON: `{"ok": true, ...}` on success, `{"ok": false, "error": "..."}` on failure.
|
|
28
58
|
|
|
29
59
|
### Resume Behavior
|
|
30
60
|
|
|
@@ -150,4 +150,10 @@ Append results to `context-snapshot.md`:
|
|
|
150
150
|
If verification fails, log the failure details but continue to commit. Failures do NOT block the commit, but you MUST attempt verification and MUST clean up the dev server.
|
|
151
151
|
|
|
152
152
|
|
|
153
|
-
**Checkpoint update**:
|
|
153
|
+
**Checkpoint update**: Run the update script to set step `browser-verification` to `"completed"`:
|
|
154
|
+
```bash
|
|
155
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
156
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
157
|
+
--step browser-verification \
|
|
158
|
+
--status completed
|
|
159
|
+
```
|
|
@@ -121,4 +121,10 @@ Append results to `context-snapshot.md`:
|
|
|
121
121
|
If verification fails, log the failure details but continue to commit. Failures do NOT block the commit, but you MUST attempt verification and MUST clean up the dev server.
|
|
122
122
|
|
|
123
123
|
|
|
124
|
-
**Checkpoint update**:
|
|
124
|
+
**Checkpoint update**: Run the update script to set step `browser-verification` to `"completed"`:
|
|
125
|
+
```bash
|
|
126
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
127
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
128
|
+
--step browser-verification \
|
|
129
|
+
--status completed
|
|
130
|
+
```
|
|
@@ -143,4 +143,10 @@ Browser cleanup: confirmed
|
|
|
143
143
|
If verification fails, log the failure details but continue to commit. Failures do NOT block the commit, but you MUST attempt verification and MUST clean up the dev server.
|
|
144
144
|
|
|
145
145
|
|
|
146
|
-
**Checkpoint update**:
|
|
146
|
+
**Checkpoint update**: Run the update script to set step `browser-verification` to `"completed"`:
|
|
147
|
+
```bash
|
|
148
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
149
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
150
|
+
--step browser-verification \
|
|
151
|
+
--status completed
|
|
152
|
+
```
|
|
@@ -55,4 +55,17 @@ Rules for writing completion notes:
|
|
|
55
55
|
- If this feature has no downstream dependents, still write the summary (it serves as documentation)
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
**Checkpoint update**: After `/prizmkit-retrospective` completes,
|
|
58
|
+
**Checkpoint update**: After `/prizmkit-retrospective` completes, run the update script to set step `prizmkit-retrospective` to `"completed"`:
|
|
59
|
+
```bash
|
|
60
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
61
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
62
|
+
--step prizmkit-retrospective \
|
|
63
|
+
--status completed
|
|
64
|
+
```
|
|
65
|
+
After `/prizmkit-committer` completes, set step `prizmkit-committer` to `"completed"`:
|
|
66
|
+
```bash
|
|
67
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
68
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
69
|
+
--step prizmkit-committer \
|
|
70
|
+
--status completed
|
|
71
|
+
```
|
|
@@ -48,4 +48,17 @@ Rules for writing completion notes:
|
|
|
48
48
|
- If this feature has no downstream dependents, still write the summary (it serves as documentation)
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
**Checkpoint update**: After `/prizmkit-retrospective` completes,
|
|
51
|
+
**Checkpoint update**: After `/prizmkit-retrospective` completes, run the update script to set step `prizmkit-retrospective` to `"completed"`:
|
|
52
|
+
```bash
|
|
53
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
54
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
55
|
+
--step prizmkit-retrospective \
|
|
56
|
+
--status completed
|
|
57
|
+
```
|
|
58
|
+
After `/prizmkit-committer` completes, set step `prizmkit-committer` to `"completed"`:
|
|
59
|
+
```bash
|
|
60
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
61
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
62
|
+
--step prizmkit-committer \
|
|
63
|
+
--status completed
|
|
64
|
+
```
|
|
@@ -14,4 +14,10 @@
|
|
|
14
14
|
- <trap entries extracted from L1/L2 docs>
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
**Checkpoint update**:
|
|
17
|
+
**Checkpoint update**: Run the update script to set step `context-snapshot` to `"completed"`:
|
|
18
|
+
```bash
|
|
19
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
20
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
21
|
+
--step context-snapshot \
|
|
22
|
+
--status completed
|
|
23
|
+
```
|
|
@@ -3,4 +3,10 @@
|
|
|
3
3
|
- **Section 5 — Existing Tests**: full content of related test files as code block
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
**Checkpoint update**:
|
|
6
|
+
**Checkpoint update**: Run the update script to set step `context-snapshot` to `"completed"`:
|
|
7
|
+
```bash
|
|
8
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
9
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
10
|
+
--step context-snapshot \
|
|
11
|
+
--status completed
|
|
12
|
+
```
|
|
@@ -44,4 +44,10 @@ After all critics return, read all 3 reports:
|
|
|
44
44
|
**CP-2.5**: Plan challenges reviewed and resolved.
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
**Checkpoint update**:
|
|
47
|
+
**Checkpoint update**: Run the update script to set step `critic-plan-review` to `"completed"`:
|
|
48
|
+
```bash
|
|
49
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
50
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
51
|
+
--step critic-plan-review \
|
|
52
|
+
--status completed
|
|
53
|
+
```
|
|
@@ -23,4 +23,10 @@ Wait for Critic to return.
|
|
|
23
23
|
**CP-2.5**: Plan challenges reviewed and resolved.
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
**Checkpoint update**:
|
|
26
|
+
**Checkpoint update**: Run the update script to set step `critic-plan-review` to `"completed"`:
|
|
27
|
+
```bash
|
|
28
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
29
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
30
|
+
--step critic-plan-review \
|
|
31
|
+
--status completed
|
|
32
|
+
```
|
|
@@ -28,4 +28,10 @@ grep -q "## Implementation Log" .prizmkit/specs/{{FEATURE_SLUG}}/context-snapsho
|
|
|
28
28
|
If GATE:MISSING — send message to Dev (re-spawn if needed): "Write the '## Implementation Log' section to context-snapshot.md before I can proceed to review. Include: files changed/created, key decisions, deviations from plan, notable discoveries."
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
**Checkpoint update**:
|
|
31
|
+
**Checkpoint update**: Run the update script to set step `prizmkit-implement` to `"completed"`:
|
|
32
|
+
```bash
|
|
33
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
34
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
35
|
+
--step prizmkit-implement \
|
|
36
|
+
--status completed
|
|
37
|
+
```
|
|
@@ -41,4 +41,10 @@ Wait for Dev to return. **If Dev times out before all tasks are `[x]`**:
|
|
|
41
41
|
All tasks `[x]`, tests pass.
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
**Checkpoint update**:
|
|
44
|
+
**Checkpoint update**: Run the update script to set step `prizmkit-implement` to `"completed"`:
|
|
45
|
+
```bash
|
|
46
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
47
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
48
|
+
--step prizmkit-implement \
|
|
49
|
+
--status completed
|
|
50
|
+
```
|
|
@@ -39,4 +39,10 @@ You know this project's tech stack. Identify ALL test commands that apply (e.g.,
|
|
|
39
39
|
**CP-2**: All acceptance criteria met, all tests pass.
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
**Checkpoint update**:
|
|
42
|
+
**Checkpoint update**: Run the update script to set step `prizmkit-implement` to `"completed"`:
|
|
43
|
+
```bash
|
|
44
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
45
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
46
|
+
--step prizmkit-implement \
|
|
47
|
+
--status completed
|
|
48
|
+
```
|
|
@@ -18,4 +18,10 @@ Before proceeding past CP-1, verify:
|
|
|
18
18
|
**CP-1**: plan.md exists with Tasks section.
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
**Checkpoint update**:
|
|
21
|
+
**Checkpoint update**: Run the update script to set step `prizmkit-plan` to `"completed"`:
|
|
22
|
+
```bash
|
|
23
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
24
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
25
|
+
--step prizmkit-plan \
|
|
26
|
+
--status completed
|
|
27
|
+
```
|
|
@@ -18,4 +18,10 @@ Before proceeding past CP-1:
|
|
|
18
18
|
**CP-1**: plan.md exists with Tasks section.
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
**Checkpoint update**:
|
|
21
|
+
**Checkpoint update**: Run the update script to set step `prizmkit-plan` to `"completed"`:
|
|
22
|
+
```bash
|
|
23
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
24
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
25
|
+
--step prizmkit-plan \
|
|
26
|
+
--status completed
|
|
27
|
+
```
|
|
@@ -18,4 +18,10 @@ Read `review-report.md` and check the Verdict:
|
|
|
18
18
|
**CP-3**: Review complete, report written.
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
**Checkpoint update**:
|
|
21
|
+
**Checkpoint update**: Run the update script to set step `prizmkit-code-review` to `"completed"`:
|
|
22
|
+
```bash
|
|
23
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
24
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
25
|
+
--step prizmkit-code-review \
|
|
26
|
+
--status completed
|
|
27
|
+
```
|
|
@@ -20,4 +20,10 @@ Run the full test suite: `({{TEST_CMD}}) 2>&1 | tee /tmp/review-test-out.txt | t
|
|
|
20
20
|
**CP-3**: Review complete, tests pass, report written.
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
**Checkpoint update**:
|
|
23
|
+
**Checkpoint update**: Run the update script to set step `prizmkit-code-review` to `"completed"`:
|
|
24
|
+
```bash
|
|
25
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
26
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
27
|
+
--step prizmkit-code-review \
|
|
28
|
+
--status completed
|
|
29
|
+
```
|
|
@@ -64,4 +64,10 @@ Before proceeding past CP-1, verify:
|
|
|
64
64
|
**CP-1**: Both spec.md and plan.md exist.
|
|
65
65
|
|
|
66
66
|
|
|
67
|
-
**Checkpoint update**:
|
|
67
|
+
**Checkpoint update**: Run the update script to set step `context-snapshot-and-plan` to `"completed"`:
|
|
68
|
+
```bash
|
|
69
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
70
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
71
|
+
--step context-snapshot-and-plan \
|
|
72
|
+
--status completed
|
|
73
|
+
```
|
|
@@ -4,4 +4,10 @@
|
|
|
4
4
|
- **CP-0**: Verify `.prizmkit/prizm-docs/root.prizm`, `.prizmkit/config.json` exist
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
**Checkpoint update**:
|
|
7
|
+
**Checkpoint update**: Run the update script to set step `prizmkit-init` to `"completed"`:
|
|
8
|
+
```bash
|
|
9
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
10
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
11
|
+
--step prizmkit-init \
|
|
12
|
+
--status completed
|
|
13
|
+
```
|
|
@@ -12,4 +12,10 @@ Save the list of **pre-existing failing tests** (if any) as `BASELINE_FAILURES`.
|
|
|
12
12
|
> **Test Output Rule**: Always capture test output to a temp file (`tee /tmp/test-out.txt`). Then grep the file instead of re-running the suite.
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
**Checkpoint update**:
|
|
15
|
+
**Checkpoint update**: Run the update script to set step `test-baseline` to `"completed"`:
|
|
16
|
+
```bash
|
|
17
|
+
python3 $PIPELINE_DIR/scripts/update-checkpoint.py \
|
|
18
|
+
--checkpoint-path {{CHECKPOINT_PATH}} \
|
|
19
|
+
--step test-baseline \
|
|
20
|
+
--status completed
|
|
21
|
+
```
|
|
@@ -223,9 +223,13 @@ Only proceed to Phase 5 after user confirms.
|
|
|
223
223
|
|
|
224
224
|
### Phase 5: Generate & Validate
|
|
225
225
|
|
|
226
|
-
1. **
|
|
227
|
-
2. **
|
|
228
|
-
|
|
226
|
+
1. **Write draft JSON**: Write a draft `.prizmkit/plans/bug-fix-list.draft.json` with all collected bug data. Conform to `.prizmkit/dev-pipeline/templates/bug-fix-list-schema.json`.
|
|
227
|
+
2. **Generate and validate**: Run the generate script to validate and produce the final file:
|
|
228
|
+
```bash
|
|
229
|
+
python3 ${SKILL_DIR}/scripts/validate-bug-list.py generate --input .prizmkit/plans/bug-fix-list.draft.json --output .prizmkit/plans/bug-fix-list.json
|
|
230
|
+
```
|
|
231
|
+
The script fills in defaults (`$schema`, `created_at`, `created_by`), validates all fields, and writes the final file only if validation passes.
|
|
232
|
+
3. **If validation fails**: Fix the draft and retry (max 3 attempts). If the script is unavailable, use the checklist in `${SKILL_DIR}/references/schema-validation.md`.
|
|
229
233
|
4. **Output**: File path, summary, and next steps
|
|
230
234
|
|
|
231
235
|
**Gate → CP-BP-5**: `bug-fix-list.json` passes validation script with zero errors.
|
|
@@ -269,8 +273,12 @@ Batch-parse error logs to generate bug entries without interactive prompts:
|
|
|
269
273
|
- error_source: populated from log content
|
|
270
274
|
- verification_type: default to `automated`
|
|
271
275
|
- acceptance_criteria: auto-generate "Error no longer occurs in [scenario]"
|
|
272
|
-
4.
|
|
276
|
+
4. Write draft to `.prizmkit/plans/bug-fix-list.draft.json` for user review
|
|
273
277
|
5. Ask: "Review and confirm? You can edit individual entries."
|
|
278
|
+
6. After user confirms, call the generate script:
|
|
279
|
+
```bash
|
|
280
|
+
python3 ${SKILL_DIR}/scripts/validate-bug-list.py generate --input .prizmkit/plans/bug-fix-list.draft.json --output .prizmkit/plans/bug-fix-list.json
|
|
281
|
+
```
|
|
274
282
|
|
|
275
283
|
## Operation: From Tests
|
|
276
284
|
|
|
@@ -280,7 +288,11 @@ Batch-parse failed test output:
|
|
|
280
288
|
2. Parse each failed test case as a separate bug entry
|
|
281
289
|
3. Auto-populate `failed_test_path`, `error_message`
|
|
282
290
|
4. Set verification_type to `automated` (test already exists)
|
|
283
|
-
5.
|
|
291
|
+
5. Write draft to `.prizmkit/plans/bug-fix-list.draft.json`
|
|
292
|
+
6. After user confirms, call the generate script:
|
|
293
|
+
```bash
|
|
294
|
+
python3 ${SKILL_DIR}/scripts/validate-bug-list.py generate --input .prizmkit/plans/bug-fix-list.draft.json --output .prizmkit/plans/bug-fix-list.json
|
|
295
|
+
```
|
|
284
296
|
|
|
285
297
|
## Operation: Validate
|
|
286
298
|
|