prizmkit 1.1.148 → 1.1.150

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 (24) hide show
  1. package/bundled/VERSION.json +3 -3
  2. package/bundled/dev-pipeline/README.md +20 -17
  3. package/bundled/dev-pipeline/prizmkit_runtime/checkpoint_state.py +77 -0
  4. package/bundled/dev-pipeline/prizmkit_runtime/gitops.py +234 -39
  5. package/bundled/dev-pipeline/prizmkit_runtime/reset.py +57 -30
  6. package/bundled/dev-pipeline/prizmkit_runtime/reset_preserve.py +822 -0
  7. package/bundled/dev-pipeline/prizmkit_runtime/runner_bookkeeping.py +28 -11
  8. package/bundled/dev-pipeline/prizmkit_runtime/runners.py +71 -28
  9. package/bundled/dev-pipeline/prizmkit_runtime/task_checkout.py +18 -0
  10. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +67 -13
  11. package/bundled/dev-pipeline/tests/test_reset_preserve.py +959 -0
  12. package/bundled/dev-pipeline/tests/test_unified_cli.py +325 -5
  13. package/bundled/skills/_metadata.json +1 -1
  14. package/bundled/skills/app-planner/SKILL.md +27 -27
  15. package/bundled/skills/app-planner/references/architecture-decisions.md +5 -11
  16. package/bundled/skills/app-planner/references/frontend-design-guide.md +1 -1
  17. package/bundled/skills/app-planner/references/generated-plan-review.md +2 -2
  18. package/bundled/skills/app-planner/references/infrastructure-convention-discovery.md +2 -2
  19. package/bundled/skills/app-planner/references/project-conventions-discovery.md +1 -1
  20. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +21 -9
  21. package/bundled/skills/feature-pipeline-launcher/SKILL.md +21 -9
  22. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +21 -9
  23. package/bundled/templates/project-memory-template.md +38 -0
  24. package/package.json +1 -1
@@ -51,7 +51,7 @@ Read `${SKILL_DIR}/references/configuration.md` before constructing prerequisite
51
51
  | Check status | Daemon status and item-level status commands |
52
52
  | Show logs | Recent or follow-log command |
53
53
  | Stop | Daemon stop command plus optional status command |
54
- | Retry one bug | Standard or clean reset-and-run command with safety disclosure |
54
+ | Retry failed bug work | Preserve-runtime, standard, or clean reset plus a separate run command with safety disclosure |
55
55
 
56
56
  Only the start intent uses the execution-mode and configuration rounds.
57
57
 
@@ -151,27 +151,39 @@ Optionally include the daemon status command for the user to run afterward. Do n
151
151
 
152
152
  ## Retry Command
153
153
 
154
- A reset can discard uncommitted changes when the target task branch is currently checked out. Clean reset additionally deletes the task branch and clears its task history/artifacts. Never hide these effects behind the word “retry.”
154
+ Reset changes state only; it never starts execution and rejects `--run`. Always return reset and run as separate commands.
155
155
 
156
- Use `AskUserQuestion` before constructing a retry command:
156
+ A standard reset can discard uncommitted changes when the target task branch is currently checked out and records a fresh-checkout boundary. Clean reset additionally deletes the task branch and clears task history/artifacts. Preserve-runtime failed recovery instead scans the whole selected list, restores every failed root and its causal `auto_skipped` descendants, and retains valid checkout identity, sessions, checkpoints, artifacts, branches, worktrees, and WIP. If a recorded branch is missing, it creates a replacement from the recorded base, retains old artifacts for reference, and rewinds implementation-and-later checkpoint stages. Never hide these effects behind the word “retry.”
157
157
 
158
- - **Standard retry (Recommended)** reset task status and rerun while preserving a non-current task branch; warn that an active task branch may still have uncommitted changes discarded by reset.
159
- - **Clean retry** — perform the standard reset and also delete the task branch and clear task history/artifacts.
160
- - **Cancel** — return no reset command.
158
+ Use `AskUserQuestion` before constructing retry commands:
159
+
160
+ - **Preserve failed runtime (Recommended for continuing failed work)** — recover all failed chains in the selected list without cleanup, then run the list; disclose that this is whole-list recovery rather than a single-ID reset.
161
+ - **Standard fresh retry** — reset one bug, then run that bug separately; warn that the active task branch can lose uncommitted changes.
162
+ - **Clean retry** — reset one bug, delete its task branch/history/artifacts, then run it separately.
163
+ - **Cancel** — return no reset or run command.
164
+
165
+ Preserve-runtime template:
166
+
167
+ ```bash
168
+ python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix --failed --preserve-runtime .prizmkit/plans/bug-fix-list.json
169
+ python3 ./.prizmkit/dev-pipeline/cli.py bugfix run .prizmkit/plans/bug-fix-list.json
170
+ ```
161
171
 
162
172
  Standard template:
163
173
 
164
174
  ```bash
165
- python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix B-001 --run .prizmkit/plans/bug-fix-list.json
175
+ python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix B-001 .prizmkit/plans/bug-fix-list.json
176
+ python3 ./.prizmkit/dev-pipeline/cli.py bugfix run B-001 .prizmkit/plans/bug-fix-list.json
166
177
  ```
167
178
 
168
179
  Clean template:
169
180
 
170
181
  ```bash
171
- python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix B-001 --clean --run .prizmkit/plans/bug-fix-list.json
182
+ python3 ./.prizmkit/dev-pipeline/cli.py reset bugfix B-001 --clean .prizmkit/plans/bug-fix-list.json
183
+ python3 ./.prizmkit/dev-pipeline/cli.py bugfix run B-001 .prizmkit/plans/bug-fix-list.json
172
184
  ```
173
185
 
174
- For clean retry, require explicit acknowledgement of branch deletion and possible uncommitted-change loss before displaying the command.
186
+ `--preserve-runtime` requires `--failed` and cannot be combined with `--clean`, an ID, a range, or another reset filter. Retry-budget flags such as `--max-retries` and `--max-infra-retries` belong on the run command, never reset. For clean retry, require explicit acknowledgement of branch deletion and possible uncommitted-change loss before displaying either command.
175
187
 
176
188
  ## Output Contract
177
189
 
@@ -54,7 +54,7 @@ Classify the request before asking configuration questions:
54
54
  | Check status | Daemon status and item-level status commands |
55
55
  | Show logs | Recent or follow-log command |
56
56
  | Stop | Daemon stop command plus optional status command |
57
- | Retry one feature | Standard or clean reset-and-run command with safety disclosure |
57
+ | Retry failed feature work | Preserve-runtime, standard, or clean reset plus a separate run command with safety disclosure |
58
58
 
59
59
  Only the start intent uses the execution-mode and configuration rounds.
60
60
 
@@ -169,27 +169,39 @@ Optionally include the daemon status command for the user to run afterward. Do n
169
169
 
170
170
  ## Retry Command
171
171
 
172
- A reset can discard uncommitted changes when the target task branch is currently checked out. Clean reset additionally deletes the task branch and clears its task history/artifacts. Never hide these effects behind the word “retry.”
172
+ Reset changes state only; it never starts execution and rejects `--run`. Always return reset and run as separate commands.
173
173
 
174
- Use `AskUserQuestion` before constructing a retry command:
174
+ A standard reset can discard uncommitted changes when the target task branch is currently checked out and records a fresh-checkout boundary. Clean reset additionally deletes the task branch and clears task history/artifacts. Preserve-runtime failed recovery instead scans the whole selected list, restores every failed root and its causal `auto_skipped` descendants, and retains valid checkout identity, sessions, checkpoints, artifacts, branches, worktrees, and WIP. If a recorded branch is missing, it creates a replacement from the recorded base, retains old artifacts for reference, and rewinds implementation-and-later checkpoint stages. Never hide these effects behind the word “retry.”
175
175
 
176
- - **Standard retry (Recommended)** reset task status and rerun while preserving a non-current task branch; warn that an active task branch may still have uncommitted changes discarded by reset.
177
- - **Clean retry** — perform the standard reset and also delete the task branch and clear task history/artifacts.
178
- - **Cancel** — return no reset command.
176
+ Use `AskUserQuestion` before constructing retry commands:
177
+
178
+ - **Preserve failed runtime (Recommended for continuing failed work)** — recover all failed chains in the selected list without cleanup, then run the list; disclose that this is whole-list recovery rather than a single-ID reset.
179
+ - **Standard fresh retry** — reset one feature, then run that feature separately; warn that the active task branch can lose uncommitted changes.
180
+ - **Clean retry** — reset one feature, delete its task branch/history/artifacts, then run it separately.
181
+ - **Cancel** — return no reset or run command.
182
+
183
+ Preserve-runtime template:
184
+
185
+ ```bash
186
+ python3 ./.prizmkit/dev-pipeline/cli.py reset feature --failed --preserve-runtime .prizmkit/plans/feature-list.json
187
+ python3 ./.prizmkit/dev-pipeline/cli.py feature run .prizmkit/plans/feature-list.json
188
+ ```
179
189
 
180
190
  Standard template:
181
191
 
182
192
  ```bash
183
- python3 ./.prizmkit/dev-pipeline/cli.py reset feature F-001 --run .prizmkit/plans/feature-list.json
193
+ python3 ./.prizmkit/dev-pipeline/cli.py reset feature F-001 .prizmkit/plans/feature-list.json
194
+ python3 ./.prizmkit/dev-pipeline/cli.py feature run F-001 .prizmkit/plans/feature-list.json
184
195
  ```
185
196
 
186
197
  Clean template:
187
198
 
188
199
  ```bash
189
- python3 ./.prizmkit/dev-pipeline/cli.py reset feature F-001 --clean --run .prizmkit/plans/feature-list.json
200
+ python3 ./.prizmkit/dev-pipeline/cli.py reset feature F-001 --clean .prizmkit/plans/feature-list.json
201
+ python3 ./.prizmkit/dev-pipeline/cli.py feature run F-001 .prizmkit/plans/feature-list.json
190
202
  ```
191
203
 
192
- For clean retry, require explicit acknowledgement of branch deletion and possible uncommitted-change loss before displaying the command.
204
+ `--preserve-runtime` requires `--failed` and cannot be combined with `--clean`, an ID, a range, or another reset filter. Retry-budget flags such as `--max-retries` and `--max-infra-retries` belong on the run command, never reset. For clean retry, require explicit acknowledgement of branch deletion and possible uncommitted-change loss before displaying either command.
193
205
 
194
206
  ## Output Contract
195
207
 
@@ -52,7 +52,7 @@ Read `${SKILL_DIR}/references/configuration.md` before constructing prerequisite
52
52
  | Check status | Daemon status and item-level status commands |
53
53
  | Show logs | Recent or follow-log command |
54
54
  | Stop | Daemon stop command plus optional status command |
55
- | Retry one refactor | Standard or clean reset-and-run command with safety disclosure |
55
+ | Retry failed refactor work | Preserve-runtime, standard, or clean reset plus a separate run command with safety disclosure |
56
56
 
57
57
  Only the start intent uses the execution-mode and configuration rounds.
58
58
 
@@ -164,27 +164,39 @@ Optionally include the daemon status command for the user to run afterward. Do n
164
164
 
165
165
  ## Retry Command
166
166
 
167
- A reset can discard uncommitted changes when the target task branch is currently checked out. Clean reset additionally deletes the task branch and clears its task history/artifacts. Never hide these effects behind the word “retry.”
167
+ Reset changes state only; it never starts execution and rejects `--run`. Always return reset and run as separate commands.
168
168
 
169
- Use `AskUserQuestion` before constructing a retry command:
169
+ A standard reset can discard uncommitted changes when the target task branch is currently checked out and records a fresh-checkout boundary. Clean reset additionally deletes the task branch and clears task history/artifacts. Preserve-runtime failed recovery instead scans the whole selected list, restores every failed root and its causal `auto_skipped` descendants, and retains valid checkout identity, sessions, checkpoints, artifacts, branches, worktrees, and WIP. If a recorded branch is missing, it creates a replacement from the recorded base, retains old artifacts for reference, and rewinds implementation-and-later checkpoint stages. Never hide these effects behind the word “retry.”
170
170
 
171
- - **Standard retry (Recommended)** reset task status and rerun while preserving a non-current task branch; warn that an active task branch may still have uncommitted changes discarded by reset.
172
- - **Clean retry** — perform the standard reset and also delete the task branch and clear task history/artifacts.
173
- - **Cancel** — return no reset command.
171
+ Use `AskUserQuestion` before constructing retry commands:
172
+
173
+ - **Preserve failed runtime (Recommended for continuing failed work)** — recover all failed chains in the selected list without cleanup, then run the list; disclose that this is whole-list recovery rather than a single-ID reset.
174
+ - **Standard fresh retry** — reset one refactor, then run that refactor separately; warn that the active task branch can lose uncommitted changes.
175
+ - **Clean retry** — reset one refactor, delete its task branch/history/artifacts, then run it separately.
176
+ - **Cancel** — return no reset or run command.
177
+
178
+ Preserve-runtime template:
179
+
180
+ ```bash
181
+ python3 ./.prizmkit/dev-pipeline/cli.py reset refactor --failed --preserve-runtime .prizmkit/plans/refactor-list.json
182
+ python3 ./.prizmkit/dev-pipeline/cli.py refactor run .prizmkit/plans/refactor-list.json
183
+ ```
174
184
 
175
185
  Standard template:
176
186
 
177
187
  ```bash
178
- python3 ./.prizmkit/dev-pipeline/cli.py reset refactor R-001 --run .prizmkit/plans/refactor-list.json
188
+ python3 ./.prizmkit/dev-pipeline/cli.py reset refactor R-001 .prizmkit/plans/refactor-list.json
189
+ python3 ./.prizmkit/dev-pipeline/cli.py refactor run R-001 .prizmkit/plans/refactor-list.json
179
190
  ```
180
191
 
181
192
  Clean template:
182
193
 
183
194
  ```bash
184
- python3 ./.prizmkit/dev-pipeline/cli.py reset refactor R-001 --clean --run .prizmkit/plans/refactor-list.json
195
+ python3 ./.prizmkit/dev-pipeline/cli.py reset refactor R-001 --clean .prizmkit/plans/refactor-list.json
196
+ python3 ./.prizmkit/dev-pipeline/cli.py refactor run R-001 .prizmkit/plans/refactor-list.json
185
197
  ```
186
198
 
187
- For clean retry, require explicit acknowledgement of branch deletion and possible uncommitted-change loss before displaying the command.
199
+ `--preserve-runtime` requires `--failed` and cannot be combined with `--clean`, an ID, a range, or another reset filter. Retry-budget flags such as `--max-retries` and `--max-infra-retries` belong on the run command, never reset. For clean retry, require explicit acknowledgement of branch deletion and possible uncommitted-change loss before displaying either command.
188
200
 
189
201
  ## Output Contract
190
202
 
@@ -32,6 +32,44 @@ This project uses PrizmKit with the Prizm documentation system for AI-optimized
32
32
  ### Available Commands
33
33
  Run `/prizmkit` to see all available PrizmKit commands.
34
34
 
35
+ ### Python Runtime CLI Quick Reference
36
+
37
+ Placeholders: `<family> = feature | bugfix | refactor`; `<task-id> = F-NNN | B-NNN | R-NNN`; `<list>` is optional and defaults by family:
38
+
39
+ | `<family>` | Default `<list>` |
40
+ |---|---|
41
+ | `feature` | `.prizmkit/plans/feature-list.json` |
42
+ | `bugfix` | `.prizmkit/plans/bug-fix-list.json` |
43
+ | `refactor` | `.prizmkit/plans/refactor-list.json` |
44
+
45
+ ```bash
46
+ # Run/resume the whole list or one task
47
+ python3 ./.prizmkit/dev-pipeline/cli.py <family> run [<list>] [--max-retries N] [--max-infra-retries N]
48
+ python3 ./.prizmkit/dev-pipeline/cli.py <family> run <task-id> [<list>] [--max-retries N] [--max-infra-retries N]
49
+
50
+ # Inspect or recover task state
51
+ python3 ./.prizmkit/dev-pipeline/cli.py <family> status [<list>]
52
+ python3 ./.prizmkit/dev-pipeline/cli.py <family> unskip [<task-id>] [<list>]
53
+ python3 ./.prizmkit/dev-pipeline/cli.py recovery detect
54
+
55
+ # Reset state (never starts execution)
56
+ python3 ./.prizmkit/dev-pipeline/cli.py reset <family> <task-id> [<list>]
57
+ python3 ./.prizmkit/dev-pipeline/cli.py reset <family> --failed --preserve-runtime [<list>]
58
+ python3 ./.prizmkit/dev-pipeline/cli.py reset <family> <task-id> --clean [<list>]
59
+
60
+ # Background operation
61
+ python3 ./.prizmkit/dev-pipeline/cli.py daemon <family> start [<list>]
62
+ python3 ./.prizmkit/dev-pipeline/cli.py daemon <family> status
63
+ python3 ./.prizmkit/dev-pipeline/cli.py daemon <family> logs [--lines N|--follow]
64
+ python3 ./.prizmkit/dev-pipeline/cli.py daemon <family> stop
65
+ ```
66
+
67
+ Runtime boundaries:
68
+ - Reset and run are separate operations; reset rejects `--run`. Retry ceilings belong to `run`, not reset.
69
+ - `--preserve-runtime` requires `--failed`, scans the whole selected list, and cannot be combined with `--clean`, an ID/range, or another reset filter.
70
+ - Preserve-runtime recovery keeps valid checkout identity, sessions, checkpoints, artifacts, branches, worktrees, and WIP. If the recorded branch is missing, it creates a replacement from the recorded base and rewinds implementation-and-later checkpoint stages while retaining old artifacts for reference. Clean reset is destructive.
71
+ - In zsh/Bash multiline commands, `\` must be the final character on the line with no trailing space.
72
+
35
73
  ### Lightweight Planning Path
36
74
  Not every change needs the full formal-requirement lifecycle. Use the lightweight path for:
37
75
  - Bug fixes with clear root cause, config tweaks, typo fixes, simple refactors
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prizmkit",
3
- "version": "1.1.148",
3
+ "version": "1.1.150",
4
4
  "description": "Create a new PrizmKit-powered project with clean initialization — no framework dev files, just what you need.",
5
5
  "type": "module",
6
6
  "bin": {