prizmkit 1.1.153 → 1.1.155

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 (178) hide show
  1. package/bundled/VERSION.json +3 -3
  2. package/bundled/adapters/codex/skill-adapter.js +1 -1
  3. package/bundled/adapters/pi/skill-adapter.js +2 -1
  4. package/bundled/dev-pipeline/.env.example +2 -6
  5. package/bundled/dev-pipeline/README.md +120 -113
  6. package/bundled/dev-pipeline/assets/skill-subagent-integration.md +1 -1
  7. package/bundled/dev-pipeline/prizmkit_runtime/checkpoint_state.py +355 -15
  8. package/bundled/dev-pipeline/prizmkit_runtime/cli.py +189 -110
  9. package/bundled/dev-pipeline/prizmkit_runtime/commands.py +146 -111
  10. package/bundled/dev-pipeline/prizmkit_runtime/daemon.py +4 -20
  11. package/bundled/dev-pipeline/prizmkit_runtime/gitops.py +48 -14
  12. package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +0 -1
  13. package/bundled/dev-pipeline/prizmkit_runtime/paths.py +0 -3
  14. package/bundled/dev-pipeline/prizmkit_runtime/reset.py +122 -15
  15. package/bundled/dev-pipeline/prizmkit_runtime/reset_preserve.py +1 -1
  16. package/bundled/dev-pipeline/prizmkit_runtime/runner_classification.py +50 -2
  17. package/bundled/dev-pipeline/prizmkit_runtime/runner_models.py +1 -10
  18. package/bundled/dev-pipeline/prizmkit_runtime/runner_prompts.py +3 -3
  19. package/bundled/dev-pipeline/prizmkit_runtime/runners.py +139 -74
  20. package/bundled/dev-pipeline/prizmkit_runtime/runtime_commit.py +482 -0
  21. package/bundled/dev-pipeline/prizmkit_runtime/status.py +106 -1
  22. package/bundled/dev-pipeline/prizmkit_runtime/test_result.py +64 -11
  23. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +145 -367
  24. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +91 -62
  25. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +105 -69
  26. package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +2 -2
  27. package/bundled/dev-pipeline/scripts/prompt_framework.py +36 -41
  28. package/bundled/dev-pipeline/scripts/update-bug-status.py +197 -71
  29. package/bundled/dev-pipeline/scripts/update-checkpoint.py +77 -16
  30. package/bundled/dev-pipeline/scripts/update-feature-status.py +46 -121
  31. package/bundled/dev-pipeline/scripts/update-refactor-status.py +46 -123
  32. package/bundled/dev-pipeline/scripts/utils.py +119 -0
  33. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +22 -27
  34. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +71 -104
  35. package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +3 -2
  36. package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +59 -111
  37. package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +37 -72
  38. package/bundled/dev-pipeline/templates/sections/artifact-manifest.md +39 -0
  39. package/bundled/dev-pipeline/templates/sections/bugfix-critical-paths.md +3 -1
  40. package/bundled/dev-pipeline/templates/sections/bugfix-phase-commit-report.md +8 -25
  41. package/bundled/dev-pipeline/templates/sections/bugfix-phase-diagnose-plan.md +3 -3
  42. package/bundled/dev-pipeline/templates/sections/bugfix-phase-implement.md +2 -2
  43. package/bundled/dev-pipeline/templates/sections/bugfix-phase-review.md +3 -3
  44. package/bundled/dev-pipeline/templates/sections/bugfix-phase-test.md +2 -2
  45. package/bundled/dev-pipeline/templates/sections/bugfix-reminders.md +4 -4
  46. package/bundled/dev-pipeline/templates/sections/bugfix-session-context.md +0 -1
  47. package/bundled/dev-pipeline/templates/sections/checkpoint-system.md +7 -4
  48. package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +14 -27
  49. package/bundled/dev-pipeline/templates/sections/feature-completion-summary.md +20 -0
  50. package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +8 -71
  51. package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +7 -7
  52. package/bundled/dev-pipeline/templates/sections/phase-prizmkit-test.md +3 -3
  53. package/bundled/dev-pipeline/templates/sections/phase-review-full.md +4 -4
  54. package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +5 -17
  55. package/bundled/dev-pipeline/templates/sections/refactor-critical-paths.md +3 -1
  56. package/bundled/dev-pipeline/templates/sections/refactor-phase-commit-report.md +10 -23
  57. package/bundled/dev-pipeline/templates/sections/refactor-phase-implement.md +2 -2
  58. package/bundled/dev-pipeline/templates/sections/refactor-phase-plan.md +2 -2
  59. package/bundled/dev-pipeline/templates/sections/refactor-phase-review.md +3 -3
  60. package/bundled/dev-pipeline/templates/sections/refactor-phase-test.md +2 -2
  61. package/bundled/dev-pipeline/templates/sections/refactor-reminders.md +7 -7
  62. package/bundled/dev-pipeline/templates/sections/refactor-session-context.md +0 -1
  63. package/bundled/dev-pipeline/templates/sections/retrospective.md +12 -0
  64. package/bundled/dev-pipeline/templates/sections/runtime-commit-handoff.md +35 -0
  65. package/bundled/dev-pipeline/templates/session-status-schema.json +45 -62
  66. package/bundled/dev-pipeline/tests/test_auto_skip.py +111 -32
  67. package/bundled/dev-pipeline/tests/test_checkpoint_state.py +617 -30
  68. package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +262 -194
  69. package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +62 -23
  70. package/bundled/dev-pipeline/tests/test_generate_refactor_prompt.py +76 -28
  71. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +281 -206
  72. package/bundled/dev-pipeline/tests/test_recovery_workflow.py +322 -0
  73. package/bundled/dev-pipeline/tests/test_reset_modes.py +935 -0
  74. package/bundled/dev-pipeline/tests/test_reset_preserve.py +5 -7
  75. package/bundled/dev-pipeline/tests/test_runtime_commit.py +608 -0
  76. package/bundled/dev-pipeline/tests/test_unified_cli.py +617 -188
  77. package/bundled/skills/_metadata.json +9 -9
  78. package/bundled/skills/app-planner/SKILL.md +3 -3
  79. package/bundled/skills/app-planner/references/generated-plan-review.md +2 -1
  80. package/bundled/skills/app-planner/references/rules/backend/derivation-rules.md +56 -64
  81. package/bundled/skills/app-planner/references/rules/backend/fixed-rules.md +85 -240
  82. package/bundled/skills/app-planner/references/rules/backend/question-bank.md +25 -25
  83. package/bundled/skills/app-planner/references/rules/backend/question-manifest.json +16 -7
  84. package/bundled/skills/app-planner/references/rules/backend/template.md +74 -92
  85. package/bundled/skills/app-planner/references/rules/database/derivation-rules.md +93 -93
  86. package/bundled/skills/app-planner/references/rules/database/fixed-rules.md +66 -173
  87. package/bundled/skills/app-planner/references/rules/database/question-bank.md +31 -26
  88. package/bundled/skills/app-planner/references/rules/database/question-manifest.json +13 -4
  89. package/bundled/skills/app-planner/references/rules/database/template.md +76 -98
  90. package/bundled/skills/app-planner/references/rules/frontend/derivation-rules.md +68 -95
  91. package/bundled/skills/app-planner/references/rules/frontend/fixed-rules.md +93 -166
  92. package/bundled/skills/app-planner/references/rules/frontend/question-bank.md +46 -36
  93. package/bundled/skills/app-planner/references/rules/frontend/question-manifest.json +11 -2
  94. package/bundled/skills/app-planner/references/rules/frontend/template.md +79 -257
  95. package/bundled/skills/app-planner/references/rules/mobile/derivation-rules.md +91 -99
  96. package/bundled/skills/app-planner/references/rules/mobile/fixed-rules.md +73 -246
  97. package/bundled/skills/app-planner/references/rules/mobile/question-bank.md +17 -17
  98. package/bundled/skills/app-planner/references/rules/mobile/question-manifest.json +17 -2
  99. package/bundled/skills/app-planner/references/rules/mobile/template.md +73 -85
  100. package/bundled/skills/app-planner/references/rules-configuration.md +133 -65
  101. package/bundled/skills/app-planner/scripts/validate-rules-configuration.py +291 -0
  102. package/bundled/skills/bug-planner/references/schema-validation.md +1 -1
  103. package/bundled/skills/bug-planner/scripts/validate-bug-list.py +1 -1
  104. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +21 -13
  105. package/bundled/skills/feature-pipeline-launcher/SKILL.md +22 -14
  106. package/bundled/skills/prizmkit/SKILL.md +17 -18
  107. package/bundled/skills/prizmkit/references/workflow-state-protocol.md +22 -18
  108. package/bundled/skills/prizmkit-code-review/SKILL.md +22 -58
  109. package/bundled/skills/prizmkit-code-review/references/independent-code-review.md +6 -6
  110. package/bundled/skills/prizmkit-code-review/references/review-report-template.md +2 -2
  111. package/bundled/skills/prizmkit-committer/SKILL.md +82 -132
  112. package/bundled/skills/prizmkit-deploy/SKILL.md +27 -11
  113. package/bundled/skills/prizmkit-deploy/assets/deploy-document-template.md +89 -0
  114. package/bundled/skills/prizmkit-deploy/references/ci-cd-workflows.md +44 -14
  115. package/bundled/skills/prizmkit-deploy/references/cloud-platform-deploy.md +19 -3
  116. package/bundled/skills/prizmkit-deploy/references/database-setup.md +22 -12
  117. package/bundled/skills/prizmkit-deploy/references/deploy-config-schema.md +3 -1
  118. package/bundled/skills/prizmkit-deploy/references/deploy-history-schema.md +22 -6
  119. package/bundled/skills/prizmkit-deploy/references/deploy-metadata-schema.json +49 -0
  120. package/bundled/skills/prizmkit-deploy/references/live-validation-notes.md +1 -1
  121. package/bundled/skills/prizmkit-deploy/references/pending-input-schema.json +164 -0
  122. package/bundled/skills/prizmkit-deploy/references/ssh-adapter-flow.md +9 -8
  123. package/bundled/skills/prizmkit-deploy/references/ssh-execution-flow.md +6 -6
  124. package/bundled/skills/prizmkit-implement/SKILL.md +30 -66
  125. package/bundled/skills/prizmkit-implement/references/implementation-subagent-procedure.md +4 -4
  126. package/bundled/skills/prizmkit-init/SKILL.md +4 -0
  127. package/bundled/skills/prizmkit-plan/SKILL.md +21 -64
  128. package/bundled/skills/prizmkit-plan/references/artifact-identity.md +38 -0
  129. package/bundled/skills/prizmkit-plan/references/independent-plan-review.md +4 -4
  130. package/bundled/skills/prizmkit-plan/references/review-plan-spec-loop.md +5 -5
  131. package/bundled/skills/prizmkit-prizm-docs/SKILL.md +11 -1
  132. package/bundled/skills/prizmkit-retrospective/SKILL.md +63 -77
  133. package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -3
  134. package/bundled/skills/prizmkit-retrospective/references/retrospective-result-schema.json +138 -0
  135. package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +17 -23
  136. package/bundled/skills/prizmkit-test/SKILL.md +64 -51
  137. package/bundled/skills/prizmkit-test/references/boundary-contract-and-test-double-guidance.md +206 -0
  138. package/bundled/skills/prizmkit-test/references/independent-test-review.md +17 -9
  139. package/bundled/skills/prizmkit-test/references/test-coverage-model.md +45 -21
  140. package/bundled/skills/prizmkit-test/references/test-report-template.md +20 -13
  141. package/bundled/skills/prizmkit-workflow/SKILL.md +35 -37
  142. package/bundled/skills/prizmkit-workflow/references/artifact-identity.md +34 -0
  143. package/bundled/skills/prizmkit-workflow/references/workflow-state-protocol.md +22 -18
  144. package/bundled/skills/recovery-workflow/SKILL.md +9 -6
  145. package/bundled/skills/recovery-workflow/evals/evals.json +2 -2
  146. package/bundled/skills/recovery-workflow/references/detection.md +7 -6
  147. package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +16 -6
  148. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +21 -13
  149. package/bundled/templates/project-memory-template.md +19 -11
  150. package/package.json +1 -1
  151. package/src/scaffold.js +33 -22
  152. package/bundled/dev-pipeline/prizmkit_runtime/runner_recovery.py +0 -228
  153. package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +0 -767
  154. package/bundled/dev-pipeline/templates/sections/bugfix-artifacts.md +0 -16
  155. package/bundled/dev-pipeline/templates/sections/bugfix-session-status.md +0 -31
  156. package/bundled/dev-pipeline/templates/sections/critical-paths-agent.md +0 -7
  157. package/bundled/dev-pipeline/templates/sections/critical-paths-lite.md +0 -7
  158. package/bundled/dev-pipeline/templates/sections/directory-convention-agent.md +0 -9
  159. package/bundled/dev-pipeline/templates/sections/directory-convention-lite.md +0 -6
  160. package/bundled/dev-pipeline/templates/sections/headless-commit-authorization.md +0 -15
  161. package/bundled/dev-pipeline/templates/sections/phase-commit.md +0 -61
  162. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +0 -24
  163. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-lite-suffix.md +0 -12
  164. package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +0 -44
  165. package/bundled/dev-pipeline/templates/sections/phase-implement-lite.md +0 -25
  166. package/bundled/dev-pipeline/templates/sections/phase-plan-agent.md +0 -20
  167. package/bundled/dev-pipeline/templates/sections/phase-plan-lite.md +0 -20
  168. package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +0 -20
  169. package/bundled/dev-pipeline/templates/sections/refactor-artifacts.md +0 -17
  170. package/bundled/dev-pipeline/templates/sections/refactor-session-status.md +0 -28
  171. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-agent.md +0 -52
  172. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-lite.md +0 -52
  173. package/bundled/skills/prizmkit-code-review/references/workflow-state-protocol.md +0 -174
  174. package/bundled/skills/prizmkit-committer/references/workflow-state-protocol.md +0 -174
  175. package/bundled/skills/prizmkit-implement/references/workflow-state-protocol.md +0 -174
  176. package/bundled/skills/prizmkit-plan/references/workflow-state-protocol.md +0 -174
  177. package/bundled/skills/prizmkit-retrospective/references/workflow-state-protocol.md +0 -174
  178. package/bundled/skills/prizmkit-test/references/external-contract-mock-guidance.md +0 -119
@@ -40,16 +40,16 @@ Record dynamic or unprovable coupling as a remaining edge. An edge that can chan
40
40
 
41
41
  ## Truth Precedence
42
42
 
43
- Resolve expected behavior in this order:
43
+ Resolve expected business behavior from confirmed specifications and acceptance criteria before lower-authority observations. For a producer-consumer boundary, apply the boundary-specific authority in `boundary-contract-and-test-double-guidance.md`:
44
44
 
45
45
  1. confirmed specification;
46
- 2. machine-readable contract;
47
- 3. acceptance criteria;
48
- 4. trusted existing tests;
49
- 5. callers and consumers;
50
- 6. current implementation.
46
+ 2. machine-readable wire contract;
47
+ 3. traceably generated type, client, server stub, or fixture;
48
+ 4. provider raw-wire contract evidence or authorized isolated observation;
49
+ 5. provider implementation, locked SDK behavior, and matching official documentation;
50
+ 6. trusted existing tests, callers and consumers, consumer-local types/fixtures/mocks, and other current implementation evidence.
51
51
 
52
- Do not encode a possible implementation defect as expected behavior. Conflicting higher-precedence truth that cannot be resolved produces `TEST_BLOCKED`.
52
+ Lower-authority material cannot override a higher-authority source or prove a property outside its boundary. Do not encode a possible implementation defect as expected behavior. Conflicting higher-precedence truth that cannot be resolved produces `TEST_BLOCKED`.
53
53
 
54
54
  ## Behavior Inventory
55
55
 
@@ -88,6 +88,21 @@ Cover validation, dependency, malformed-response, timeout, cancellation, cleanup
88
88
 
89
89
  Cover valid and invalid transitions, retries, repeated calls, writes, events, call counts, ordering, rollback, and cleanup.
90
90
 
91
+ For every applicable state-changing user or system workflow, model and test the complete mutation lifecycle:
92
+
93
+ 1. precondition;
94
+ 2. input or selection;
95
+ 3. explicit commit point;
96
+ 4. cancel without side effects before commit;
97
+ 5. pending and duplicate-action protection;
98
+ 6. success visibility;
99
+ 7. failure recovery and absence of partial effects;
100
+ 8. reload or re-entry, including process restart when relevant;
101
+ 9. retry, conflict, and idempotency behavior;
102
+ 10. downstream read or consumption of the committed result.
103
+
104
+ If the confirmed specification does not establish the commit point or interaction semantics, request clarification or return `TEST_BLOCKED` when the ambiguity affects the verdict. Do not infer the expected workflow from the current implementation.
105
+
91
106
  ### Permission
92
107
 
93
108
  Apply to identity, role, tenant, ownership, policy, entitlement, secret, or protected-resource behavior. Include missing/invalid identity, wrong owner or tenant, insufficient grants, and default-deny behavior.
@@ -112,20 +127,26 @@ Apply to databases, filesystems, queues, providers, clocks/randomness, cross-mod
112
127
 
113
128
  Apply when callers depend on return shape, errors, side effects, ordering, generated assets, shared types, contracts, state, or invocation conventions.
114
129
 
115
- ## Layer Selection
130
+ ## Layer Selection and Proof Capability
116
131
 
117
- Use the lowest layer that proves a property without removing relevant composition.
132
+ Use the lowest layer that proves a property without removing relevant composition. Classify tests by components actually executed:
118
133
 
119
134
  | Layer | Use For |
120
135
  |---|---|
121
- | Focused/unit | Critical pure logic, exact boundaries, deterministic errors, fast localization. |
122
- | Module/component | Public module behavior with internal collaborators composed as production uses them. |
123
- | Contract/integration | Shared protocol compatibility or isolated infrastructure that mocks cannot adequately prove. |
124
- | Code-level E2E | User-visible CLI, API, or UI composition when an applicable native harness exists. |
136
+ | Focused / Unit Test | Critical pure logic, exact boundaries, deterministic errors, and fast localization; dependencies may be replaced. |
137
+ | Module / Component Test | Public module behavior or UI component behavior under supplied dependencies. |
138
+ | UI Component Test | Rendering and interaction with provider compatibility explicitly out of scope. |
139
+ | Mock Browser Test | Browser workflow with an intercepted or fixture-backed critical boundary; not Full-stack evidence. |
140
+ | Consumer Contract Test | Consumer handling against a contract-validated test double. |
141
+ | Provider Contract Test | Provider raw wire payload at its serialization boundary. |
142
+ | Integration Test | A named module/infrastructure combination with that combination kept real. |
143
+ | Full-stack E2E | Complete user path with critical application boundaries not replaced. |
125
144
  | Affected-module regression | Every required test for the complete affected module. |
126
145
  | Regression Ring | Concrete callers, consumers, contracts, adapters, and shared state dependencies. |
127
146
 
128
- Not every behavior needs every layer. Record a concise reason for omitted higher layers, such as a pure library having no process or UI boundary.
147
+ Browser execution alone does not determine the layer. Every test claim must state the property proved and any property not proven because a test double removes relevant composition.
148
+
149
+ Not every behavior needs every layer. Record a concise reason for omitted higher layers, such as a pure library having no process or UI boundary. A missing layer blocks `TEST_PASS` only when it is needed to preserve a verdict-capable combination.
129
150
 
130
151
  ## Critical Low-Level Logic
131
152
 
@@ -182,12 +203,15 @@ Coverage is complete enough for `TEST_PASS` only when:
182
203
  1. every discoverable observable behavior is represented;
183
204
  2. every applicable risk has a credible project-native test;
184
205
  3. critical low-level logic has direct focused coverage when justified;
185
- 4. selected layers preserve the property being proved;
186
- 5. complete affected-module regression passes;
187
- 6. Regression Ring verification passes;
188
- 7. concrete unresolved coupling no longer affects the verdict;
189
- 8. Main-Agent review converges;
190
- 9. applicable independent review converges or is strictly downgraded;
191
- 10. no mutation follows final review and execution.
206
+ 4. every verdict-relevant boundary and test double has contract authority, fidelity proof, removed-composition, proof-limit, and remaining-risk analysis;
207
+ 5. selected layers preserve the property being proved and composition-preserving evidence covers every verdict-capable removed combination;
208
+ 6. provider contracts inspect risk-relevant raw wire output;
209
+ 7. applicable state-changing workflows cover commit, cancellation, failure, re-entry, and repeated-operation semantics;
210
+ 8. complete affected-module regression passes;
211
+ 9. Regression Ring verification passes;
212
+ 10. concrete unresolved coupling no longer affects the verdict;
213
+ 11. Main-Agent review converges;
214
+ 12. applicable independent review converges or is strictly downgraded;
215
+ 13. no mutation follows final review and execution.
192
216
 
193
217
  Absolute completeness cannot be guaranteed. State remaining informational risks honestly without presenting them as proven behavior.
@@ -49,7 +49,7 @@ Coverage metrics, when available: <diagnostic values or not collected>. Percenta
49
49
 
50
50
  | Path | Layer | Behaviors and Risks | Change |
51
51
  |---|---|---|---|
52
- | <path> | focused / module / contract / integration / E2E / regression | <coverage> | added / updated / existing |
52
+ | <path> | focused/unit / module/component / UI component / Mock Browser / consumer contract / provider contract / integration / Full-stack E2E / regression | <coverage and proof boundary> | added / updated / existing |
53
53
 
54
54
  - Existing native framework reused: <yes/no and framework>
55
55
  - Infrastructure changes: <none or concise list>
@@ -104,12 +104,19 @@ Coverage metrics, when available: <diagnostic values or not collected>. Percenta
104
104
  - Review scope: delta / none
105
105
  - Rationale: <contract and risk analysis>
106
106
 
107
- ## External Contracts and Mocks
107
+ ## Boundary Contracts and Test Doubles
108
108
 
109
- | Dependency | Contract Source | Test Double / Isolation | Variants | Remaining Risk |
109
+ | Boundary | Contract Authority | Fidelity Proof | Test Double | Composition Removed |
110
110
  |---|---|---|---|---|
111
- | <dependency> | <project path or public official source/version> | <mock/fake/server/container/isolated service> | <success/boundary/failure variants> | <none or risk> |
111
+ | <producer → consumer; protocol> | <boundary-appropriate source and provenance> | <generation/schema/raw-wire/shared fixture/isolated observation/contract framework> | <mock/fake/fixture/interception/server/container/service or none> | <serializer/adapter/network/provider/persistence/process or none> |
112
112
 
113
+ | Property Not Proven | Composition-Preserving Test | Evidence Classification | Remaining Risk / Verdict Impact |
114
+ |---|---|---|---|
115
+ | <property outside the double-backed proof boundary> | <provider/consumer contract, integration, Full-stack E2E, or missing> | <local / consumer contract / provider contract / integration / Mock Browser / Full-stack> | <none, informational, TEST_NEEDS_FIXES correction, or TEST_BLOCKED prerequisite> |
116
+
117
+ - Test-layer claims match actual composition: yes / no
118
+ - Every verdict-capable removed combination has preserving evidence: yes / no
119
+ - Provider raw wire asserted where serialization affects the verdict: yes / no / not-applicable
113
120
  - Production credentials or resources used: no
114
121
  - Real deployed environment validated: no
115
122
 
@@ -125,15 +132,18 @@ Render `TEST_PASS` only when:
125
132
  - mandatory Main-Agent review converged;
126
133
  - independent review converged or was visibly downgraded under its strict capability gate;
127
134
  - all required native tests pass on the exact final state;
135
+ - every verdict-relevant test double has boundary-specific authority and fidelity proof;
136
+ - every verdict-capable property removed by a double has composition-preserving evidence, and every layer claim matches actual composition;
137
+ - applicable provider contract tests assert risk-relevant raw wire payload and state-changing workflows cover commit, cancellation, failure, re-entry, and repeated-operation semantics;
128
138
  - no accepted or unresolved finding remains;
129
- - no high-risk production repair awaits delta Code Review;
139
+ - no high-risk production defect or correction remains;
130
140
  - no mutation occurred after final applicable review and execution.
131
141
 
132
- Render `TEST_NEEDS_FIXES` for a known remaining correction, exhausted review/repair budget with known work, or a completed high-risk repair requiring delta Code Review.
142
+ Render `TEST_NEEDS_FIXES` for a known remaining correction, an exhausted testing-local review/repair budget with known work, or a proven high-risk production defect that this invocation must not repair.
133
143
 
134
- Render `TEST_BLOCKED` when truth, required input, safe environment, execution reliability, external-target safety, or required Reviewer input prevents a safe verdict.
144
+ Render `TEST_BLOCKED` when truth, required input, safe environment, execution reliability, external-target safety, or required Reviewer input prevents a safe verdict. This includes unavailable required composition-preserving execution and unresolved contract authority or test-double fidelity that affects the verdict; lower-layer green tests cannot substitute.
135
145
 
136
- No conditional pass, commit authorization, release authorization, runtime classification, target hash, manifest, attestation, or package lifecycle belongs in the report.
146
+ No conditional pass, commit authorization, release authorization, runtime classification, target hash, manifest, attestation, or package state belongs in the report.
137
147
 
138
148
  ## Terminal Machine Projection
139
149
 
@@ -153,8 +163,6 @@ Write `test-result.json` together with the report:
153
163
  },
154
164
  "repair_rounds": 0,
155
165
  "production_changed": false,
156
- "review_required": false,
157
- "review_scope": null,
158
166
  "unresolved_items": []
159
167
  }
160
168
  ```
@@ -170,7 +178,6 @@ Constraints:
170
178
  - `downgraded` requires `responses=0`, a non-empty `downgrade_reason`, and `final_state_rechecked=false`.
171
179
  - `not_applicable` requires `responses=0`, `downgrade_reason=null`, and `final_state_rechecked=false`.
172
180
  - `independent_review.responses` is otherwise bounded from `0` through `5`.
173
- - `review_scope` is `delta` exactly when `review_required=true`; otherwise it is null.
174
- - `unresolved_items` contains concise strings and agrees with the report.
175
- - Report and JSON agree on final result and production-review requirement.
181
+ - `TEST_PASS` requires an empty `unresolved_items`; `TEST_NEEDS_FIXES` and `TEST_BLOCKED` each require at least one concise correction or blocker string, and the list agrees with the report.
182
+ - Report and JSON agree on final result and production-change diagnostics.
176
183
  - The JSON is terminal output only and is never updated as an internal checkpoint.
@@ -46,7 +46,7 @@ Accept:
46
46
 
47
47
  - `description`: the natural-language formal requirement;
48
48
  - `artifact_dir`: optional explicit requirement artifact root;
49
- - `execution_mode`: `interactive` by default; headless only when a trusted host explicitly authorizes it;
49
+ - `execution_mode`: `interactive`; external headless automation must invoke atomic stages directly and use its Python runtime for commit execution;
50
50
  - `resume`: optional workflow state path or requirement slug for recovery.
51
51
 
52
52
  If `description` is missing and no resumable workflow is supplied, ask for the requirement before invoking `prizmkit-plan`. External automation must invoke atomic stages directly with its own execution checkpoint rather than nesting this composite workflow.
@@ -57,11 +57,11 @@ If `description` is missing and no resumable workflow is supplied, ask for the r
57
57
 
58
58
  Invoke `/prizmkit-plan` with the requirement and any explicit `artifact_dir`. Do not write a second plan in this orchestrator.
59
59
 
60
- If initialization context is missing, allow `prizmkit-plan` to recommend initialization and continue with source fallback when the user chooses to proceed. Initialization is a soft prerequisite, not a hidden lifecycle stage.
60
+ If initialization context is missing, let `prizmkit-plan` use its source fallback. Initialization is not a hidden lifecycle stage.
61
61
 
62
62
  ### 2. Preserve Requirement Identity
63
63
 
64
- Once `prizmkit-plan` resolves an `artifact_dir`, capture it and pass the exact same value to every later stage. The artifact root is generic and is not restricted to one directory family:
64
+ Once `prizmkit-plan` resolves an `artifact_dir`, capture it and pass the exact same value to every later stage. Read `${SKILL_DIR}/references/artifact-identity.md` before deriving or opening workflow state. The artifact root is generic and is not restricted to one directory family:
65
65
 
66
66
  ```text
67
67
  .prizmkit/specs/<requirement-slug>/
@@ -69,35 +69,38 @@ Once `prizmkit-plan` resolves an `artifact_dir`, capture it and pass the exact s
69
69
  .prizmkit/refactor/<refactor-id>/
70
70
  ```
71
71
 
72
- Never select a different most-recent plan when resuming or handing off. The workflow state path is:
72
+ Never select a different most-recent plan when resuming or handing off. Derive the workflow state path from the exact artifact-directory basename, validate its safe identity, and fail closed if an existing state path belongs to another artifact:
73
73
 
74
74
  ```text
75
- .prizmkit/state/workflows/<requirement-slug>.json
75
+ .prizmkit/state/workflows/<requirement-identity>.json
76
76
  ```
77
77
 
78
- Read `${SKILL_DIR}/references/workflow-state-protocol.md` for the shared state contract. This workflow state remains distinct from any external host execution checkpoint. The target project controls whether generated `.prizmkit/` files are committed, ignored, or shared; do not modify its Git policy.
78
+ Read `${SKILL_DIR}/references/artifact-identity.md` for path/collision rules and `${SKILL_DIR}/references/workflow-state-protocol.md` for the shared state content contract. This workflow state remains distinct from any external host execution checkpoint. The target project controls whether generated `.prizmkit/` files are committed, ignored, or shared; do not modify its Git policy.
79
79
 
80
80
  ### 3. Advance Only on Truthful Success
81
81
 
82
82
  After each atomic stage:
83
83
 
84
- 1. Read the stage's actual output and terminal status.
85
- 2. Validate the expected authoritative artifact or evidence and workflow-state transition.
86
- 3. Preserve the same `artifact_dir`.
87
- 4. Continue only on the permitted success status.
88
- 5. Because this composite is the active orchestrator, atomic skills return terminal state and `next_stage` to it; they must not invoke the next stage recursively.
89
- 6. If the host cannot invoke another skill automatically, stop with exactly one deterministic next skill, its `artifact_dir`, and the workflow-state path.
84
+ 1. Read the stage-local result and stage-owned artifacts.
85
+ 2. Validate those artifacts independently.
86
+ 3. Map the domain result to this composite's lifecycle status and update workflow state itself.
87
+ 4. Preserve the same `artifact_dir`.
88
+ 5. Continue only on the permitted success result.
89
+ 6. Supply explicit stage-local inputs to the next invocation; atomic Skills never read this composite's state or choose routing.
90
+ 7. If the host cannot invoke another Skill automatically, stop with one deterministic next invocation and caller-owned state path.
90
91
 
91
92
  Expected transitions:
92
93
 
93
94
  | Stage | Required success | Next stage |
94
95
  |---|---|---|
95
- | `prizmkit-plan` | `status=completed`, `stage_result=PLAN_READY` | `prizmkit-implement` |
96
- | `prizmkit-implement` | `status=completed`, `stage_result=IMPLEMENTED` | `prizmkit-code-review` |
97
- | `prizmkit-code-review` | `status=completed`, `stage_result=REVIEW_PASS` | `prizmkit-test` |
98
- | `prizmkit-test` | `status=completed`, `stage_result=TEST_PASS` | `prizmkit-retrospective` |
99
- | `prizmkit-retrospective` | `status=completed`, `stage_result=RETRO_COMPLETE`, with artifact result `DOCS_UPDATED` or `NO_DOC_CHANGE` | `prizmkit-committer` |
100
- | `prizmkit-committer` | explicit interactive confirmation, then `status=completed` with `stage_result=COMMITTED` | end |
96
+ | `prizmkit-plan` | `PLAN_READY` plus valid `spec.md`/`plan.md` | `prizmkit-implement` |
97
+ | `prizmkit-implement` | `IMPLEMENTED` plus completed task markers | `prizmkit-code-review` |
98
+ | `prizmkit-code-review` | `PASS` plus valid `review-report.md` | `prizmkit-test` |
99
+ | `prizmkit-test` | `TEST_PASS` plus consistent report/result pair | `prizmkit-retrospective` |
100
+ | `prizmkit-retrospective` | `RETRO_COMPLETE` plus an artifact whose `outcome` and `result` agree | `prizmkit-committer` |
101
+ | `prizmkit-committer` | `COMMITTED` after explicit interactive confirmation | end |
102
+
103
+ Before invoking `prizmkit-retrospective`, derive the exact changed project paths outside `.prizmkit/` and pass them as `change_paths` with a concise `change_summary`. Do not ask that atomic Skill to infer scope from this composite's state or earlier artifacts.
101
104
 
102
105
  `TEST_NOT_APPLICABLE` is not a valid lifecycle success. Lightweight changes must execute deterministic verification and return `TEST_PASS`.
103
106
 
@@ -106,16 +109,16 @@ Expected transitions:
106
109
  The composite must not:
107
110
 
108
111
  - reinterpret a plan as implementation;
109
- - repair production code outside `prizmkit-implement` or the Main-Agent review loop;
112
+ - repair production code itself instead of invoking the appropriate atomic stage with explicit repair input;
110
113
  - claim tests passed without a consistent `test-report.md` and terminal `test-result.json`;
111
114
  - reinterpret testing-domain results as runtime/session outcomes;
112
115
  - perform retrospective documentation changes itself;
113
- - stage or commit before `prizmkit-committer` applies the current execution's authorization boundary;
116
+ - stage or commit before `prizmkit-committer` completes the interactive preview and confirmation boundary;
114
117
  - invoke `prizmkit-deploy` as a hidden seventh stage.
115
118
 
116
119
  ## Failure and Repair Routing
117
120
 
118
- Use the shared workflow state and authoritative stage evidence to determine routing. Do not blindly retry every failure.
121
+ Use caller-owned workflow state and authoritative stage artifacts to determine routing. Atomic Skills never own this decision.
119
122
 
120
123
  ### Review Failure
121
124
 
@@ -136,15 +139,16 @@ The Main-Agent review skill owns its internal review repairs and its internal te
136
139
  ```text
137
140
  TEST_NEEDS_FIXES
138
141
  → preserve test-report.md and test-result.json
139
- stop with the known remaining correction or delta-review requirement
140
- caller owns any later review/retest decision
142
+ when the outer repair budget remains, supply the exact correction to prizmkit-implement
143
+ require fresh prizmkit-code-review and prizmkit-test results
144
+ → otherwise stop with WORKFLOW_BLOCKED
141
145
 
142
146
  TEST_BLOCKED
143
147
  → preserve test-report.md and test-result.json
144
148
  → stop with the unresolved truth, input, safety, environment, or reliability blocker
145
149
  ```
146
150
 
147
- The composite must not invoke implementation or Code Review automatically from inside the returned testing result unless its own explicitly authorized outer policy defines a new invocation. It must never treat either result as an AI CLI crash.
151
+ The composite's bounded outer repair policy owns that fresh invocation route; it does not recreate the testing-local repair loop. It must never treat either non-pass result as an AI CLI crash.
148
152
 
149
153
  ### Environment Block
150
154
 
@@ -159,7 +163,7 @@ TEST_BLOCKED
159
163
  → stop with a deterministic prizmkit-test resume entry
160
164
  ```
161
165
 
162
- A trusted headless host performs its own bounded automatic environment recovery when invoking atomic stages. It does not invoke this composite workflow or silently turn a blocked result into success.
166
+ An external headless runtime may perform its own bounded environment recovery when invoking atomic stages. It does not invoke this interactive composite workflow or silently turn a blocked result into success.
163
167
 
164
168
  ### Repair Limit
165
169
 
@@ -179,19 +183,13 @@ When the limit is reached:
179
183
 
180
184
  The internal `prizmkit-code-review` limit of ten completed review rounds remains separate and does not increment `repair_round`.
181
185
 
182
- ## Commit Authorization Boundary
183
-
184
- The composite may automatically reach `/prizmkit-committer`, but it must not silently create a Git commit.
186
+ ## Interactive Commit Boundary
185
187
 
186
- Interactive execution requires the committer to:
188
+ The composite reaches `/prizmkit-committer operation=interactive-commit` but must not silently create a Git commit.
187
189
 
188
- 1. verify all five preceding stage results for the same `artifact_dir`;
189
- 2. inspect the final workspace;
190
- 3. present intended files, diff summary, sensitive-file warnings, and the proposed Conventional Commit message;
191
- 4. wait for explicit user confirmation from the current user;
192
- 5. create and verify the local commit only after confirmation.
190
+ The composite must validate all prior stage artifacts, derive exact non-`.prizmkit/` change paths for the retrospective input, and validate its result. It then invokes the committer with the same `artifact_dir`, exact `evidence_paths`, caller-state paths in `excluded_paths`, and `operation=interactive-commit`. The committer inspects the supplied final change, presents the exact commit, waits for confirmation, and creates it only after approval.
193
191
 
194
- Trusted headless execution is a separate atomic-stage path. It requires a host-defined non-interactive `mode`, a trusted `owner` identifier, and `local_commit_authorized=true`; it does not ask or wait. Unknown headless contexts are blocked. Remote publication is a separate host-runtime operation and is never decided by this composite workflow.
192
+ External headless orchestration supplies explicit evidence to `operation=prepare-runtime-commit`, maps `COMMIT_REQUEST_READY` to its own pending state, and lets Python Runtime validate and execute the request. Remote publication remains separate.
195
193
 
196
194
  ## Automatic Handoff and Manual Fallback
197
195
 
@@ -206,7 +204,7 @@ When it does not:
206
204
  ```text
207
205
  Next stage: /prizmkit-<skill>
208
206
  artifact_dir: <same resolved artifact_dir>
209
- workflow_state: .prizmkit/state/workflows/<requirement-slug>.json
207
+ workflow_state: .prizmkit/state/workflows/<requirement-identity>.json
210
208
  ```
211
209
 
212
210
  The user can invoke that one atomic skill and this composite can resume with `resume` later.
@@ -242,7 +240,7 @@ push: not performed automatically
242
240
  next_action: invoke /prizmkit-deploy separately if deployment is needed
243
241
  ```
244
242
 
245
- If the user declines interactive commit confirmation, report `status=in_progress`, `stage_result=COMMIT_PENDING` rather than `WORKFLOW_COMPLETE` and provide the exact `/prizmkit-committer` resume entry.
243
+ If the user declines interactive commit confirmation, preserve the committer stage as pending or in progress without a workflow `stage_result`, report the atomic operation result `COMMIT_DECLINED`, and provide the exact `/prizmkit-committer operation=interactive-commit` resume entry. `COMMIT_PENDING` is reserved for a validated Runtime commit request and must not represent an interactive decline.
246
244
 
247
245
  If blocked, report:
248
246
 
@@ -0,0 +1,34 @@
1
+ # Interactive Workflow Artifact Identity
2
+
3
+ The interactive workflow derives state identity from the exact caller/planning artifact directory; it never generates a second slug.
4
+
5
+ ## Derivation
6
+
7
+ 1. Resolve `artifact_dir` as a project-relative path inside the active checkout.
8
+ 2. Take its final path component unchanged as `<requirement-identity>`.
9
+ 3. Require 1-96 Unicode code points and at most 200 UTF-8 bytes, containing only letters, decimal digits, ASCII hyphens, or ASCII underscores, with a letter or digit at both ends. Reject control characters, separators, `.`/`..`, symlink escape, and empty identity. The byte limit leaves portable filename space for the `.json` suffix.
10
+ 4. Use exactly:
11
+
12
+ ```text
13
+ .prizmkit/state/workflows/<requirement-identity>.json
14
+ ```
15
+
16
+ Examples:
17
+
18
+ ```text
19
+ .prizmkit/specs/070-skill-generated-artifact-contracts/
20
+ → .prizmkit/state/workflows/070-skill-generated-artifact-contracts.json
21
+
22
+ .prizmkit/bugfix/B-001/
23
+ → .prizmkit/state/workflows/B-001.json
24
+ ```
25
+
26
+ ## Collision and Resume Safety
27
+
28
+ - Store the exact normalized project-relative `artifact_dir` in state.
29
+ - Before creating state, if the target file already exists, read it and require its `artifact_dir` to equal the active artifact directory exactly.
30
+ - A state file naming collision with a different artifact directory is blocking. Do not overwrite, merge, suffix, or silently select a recent state; require the caller to resolve the conflicting record explicitly.
31
+ - When `resume` supplies a state path, require it to equal the derived path, remain under `.prizmkit/state/workflows/`, and point to the exact artifact directory recorded inside it.
32
+ - Continue using the same state path and artifact directory for every stage and repair round.
33
+
34
+ External checkpoints use their own identity and are never derived from or merged into this path.
@@ -4,11 +4,13 @@
4
4
 
5
5
  ## Location and Identity
6
6
 
7
+ Derive the path through `${SKILL_DIR}/references/artifact-identity.md`:
8
+
7
9
  ```text
8
- .prizmkit/state/workflows/<requirement-slug>.json
10
+ .prizmkit/state/workflows/<requirement-identity>.json
9
11
  ```
10
12
 
11
- The active `artifact_dir` is preserved exactly across every stage:
13
+ The identity is the validated artifact-directory basename. An existing state file for a different `artifact_dir` is a blocking collision and is never overwritten or suffixed automatically. The active `artifact_dir` is preserved exactly across every stage:
12
14
 
13
15
  ```text
14
16
  .prizmkit/specs/<requirement-slug>/
@@ -31,7 +33,7 @@ The state file is an index, not the authority for stage completion:
31
33
  | Terminal testing result | `{artifact_dir}/test-result.json` |
32
34
  | Retrospective completion | `{artifact_dir}/retrospective-result.json` |
33
35
  | Durable architecture knowledge | `.prizmkit/prizm-docs/` |
34
- | Local commit | Git history and confirmed or authorized commit identity |
36
+ | Local commit | Git history and runtime- or user-verified commit identity |
35
37
  | Current stage, orchestrator, and resume entry | Workflow state |
36
38
  | External orchestration progress | External host checkpoint |
37
39
 
@@ -64,7 +66,7 @@ Every consumer compares workflow state with the skill-owned artifacts and curren
64
66
  | `orchestrator` | Semantic coordinator identifier, or null for direct stage use. |
65
67
  | `stage` | Stage that most recently wrote state. |
66
68
  | `status` | Lifecycle status: `pending`, `in_progress`, `completed`, `failed`, or `skipped`. |
67
- | `stage_result` | Domain result for the current stage, such as `PLAN_READY`, `IMPLEMENTED`, `REVIEW_PASS`, `REVIEW_NEEDS_FIXES`, `TEST_*`, `RETRO_COMPLETE`, or `COMMITTED`. |
69
+ | `stage_result` | Coordinator-recorded lifecycle result mapped from a validated atomic result and its required artifacts, such as `PLAN_READY`, `IMPLEMENTED`, `REVIEW_PASS`, `REVIEW_NEEDS_FIXES`, `TEST_*`, `RETRO_COMPLETE`, or `COMMITTED`. |
68
70
  | `completed_stages` | Ordered stages completed for this requirement. |
69
71
  | `repair_scope` | Optional caller-owned routing scope. The test skill reports high-risk repairs through `test-result.json` instead of scheduling another stage. |
70
72
  | `repair_round` | Optional outer cross-stage repair round, from 0 through 3. It is not a test-internal repair counter. |
@@ -97,10 +99,10 @@ review-report NEEDS_FIXES → status=failed, stage_result=REVIEW_NEED
97
99
  test-result TEST_PASS → status=completed, stage_result=TEST_PASS
98
100
  test-result TEST_NEEDS_FIXES → status=failed, stage_result=TEST_NEEDS_FIXES
99
101
  test-result TEST_BLOCKED → status=failed, stage_result=TEST_BLOCKED
100
- retrospective DOCS_UPDATED → status=completed, stage_result=RETRO_COMPLETE
101
- retrospective NO_DOC_CHANGE → status=completed, stage_result=RETRO_COMPLETE
102
- retrospective blocked → status=failed, stage_result=RETRO_BLOCKED
103
- commit authorization pending → status=in_progress, stage_result=COMMIT_PENDING
102
+ retrospective outcome=RETRO_COMPLETE, result=DOCS_UPDATED → status=completed, stage_result=RETRO_COMPLETE
103
+ retrospective outcome=RETRO_COMPLETE, result=NO_DOC_CHANGE → status=completed, stage_result=RETRO_COMPLETE
104
+ retrospective outcome=RETRO_BLOCKED → status=failed, stage_result=RETRO_BLOCKED
105
+ runtime commit preparation → status=in_progress, stage_result=COMMIT_PENDING
104
106
  local commit confirmed → status=completed, stage_result=COMMITTED
105
107
  commit blocked → status=failed, stage_result=COMMIT_BLOCKED
106
108
  ```
@@ -115,8 +117,8 @@ commit blocked → status=failed, stage_result=COMMIT_BLOC
115
117
 
116
118
  ```text
117
119
  TEST_NEEDS_FIXES
118
- → known correction or required delta review remains
119
- → caller decides whether and how to arrange another stage
120
+ a known correction remains
121
+ → caller decides whether and how to arrange another invocation
120
122
 
121
123
  TEST_BLOCKED
122
124
  → truth, input, safe environment, or reliable execution prevents a verdict
@@ -132,30 +134,32 @@ Any outer repair or continuation policy is independently owned by the caller and
132
134
 
133
135
  1. An atomic stage performs only its own stage, writes its truthful result and artifact paths, and returns control.
134
136
  2. When `orchestrator` is non-null, only that orchestrator invokes the next skill.
135
- 3. Direct stage use may report a possible next invocation but does not claim it ran.
137
+ 3. Direct atomic use returns only its local result and artifacts; it does not report or select another invocation.
136
138
  4. Every handoff preserves the same `artifact_dir`.
137
139
  5. External automation invokes atomic stages directly and does not nest the composite workflow.
138
140
  6. Workflow state never replaces or absorbs an external host checkpoint.
139
141
 
140
- ## Commit Authorization
142
+ ## Commit Execution Ownership
141
143
 
142
144
  Interactive execution:
143
145
 
144
146
  ```text
145
147
  committer previews intended files and message
146
148
  → waits for explicit current-user confirmation
147
- → creates the local commit
149
+ stages, creates, and verifies the local commit
148
150
  ```
149
151
 
150
- Trusted headless execution:
152
+ Pipeline execution:
151
153
 
152
154
  ```text
153
- trusted host explicitly authorizes the current local task commit
154
- → committer verifies gates and commits automatically
155
+ external coordinator validates its required gates and supplies exact readiness evidence
156
+ → committer validates only that evidence and writes an exact runtime-commit-request.json
157
+ → external coordinator maps COMMIT_REQUEST_READY to its checkpoint's in_progress/COMMIT_PENDING state
158
+ → Python runtime validates the request, commits, verifies Git, and writes checkpoint completed/COMMITTED
155
159
  → remote publication remains separate
156
160
  ```
157
161
 
158
- A self-declared or untrusted headless context does not authorize a commit.
162
+ The preparation request is data for runtime validation, not prompt-level authorization. The committer must not stage, commit, or predeclare COMMITTED in pipeline preparation mode.
159
163
 
160
164
  ## Recovery
161
165
 
@@ -171,4 +175,4 @@ When state is missing, stale, or inconsistent:
171
175
  8. Reconstruct the latest safe predecessor and report the reconstruction.
172
176
  9. Continue only from the first incomplete or invalid stage.
173
177
 
174
- Stale state never bypasses review, testing, retrospective, commit authorization, or external checkpoint enforcement.
178
+ Stale state never bypasses review, testing, retrospective, commit preparation/execution, or external checkpoint enforcement.
@@ -7,12 +7,14 @@ description: "Return the exact PrizmKit CLI command that continues an interrupte
7
7
 
8
8
  Find an interrupted pipeline task's durable checkout record and return the existing runtime command that continues that task on its recorded branch. The runtime already owns branch reuse, checkpoint interpretation, session continuation, and task execution; this skill must not reproduce those mechanisms.
9
9
 
10
+ This skill invokes its own bundled detector. The canonical runtime exposes no separate Recovery command namespace, prompt generator, or Recovery AI-session launcher.
11
+
10
12
  ## Boundary
11
13
 
12
14
  This workflow:
13
15
  - Detects active feature, bugfix, and refactor task checkout records.
14
16
  - Confirms that each recorded task branch still exists.
15
- - Returns the exact item-specific `cli.py ... run <TASK_ID>` command.
17
+ - Returns the exact item-specific `cli.py run <family> <TASK_ID>` command.
16
18
  - Shows the branch, task family, task ID, and checkout record that justify the command.
17
19
 
18
20
  This workflow does not:
@@ -40,7 +42,8 @@ The detector reads only active checkout records:
40
42
 
41
43
  A candidate is resumable only when:
42
44
  - `state` is `active`;
43
- - `task_id` matches its task family;
45
+ - `task_type` equals the checkout directory family;
46
+ - `task_id` is explicitly recorded, matches the exact `F-NNN`, `B-NNN`, or `R-NNN` family form, and equals its parent state-directory name;
44
47
  - `active_dev_branch` is present; and
45
48
  - the recorded local branch still exists.
46
49
 
@@ -71,9 +74,9 @@ Report that no active interrupted pipeline task branch was found. Do not fall ba
71
74
  Return the detector-provided command verbatim. The canonical forms are:
72
75
 
73
76
  ```bash
74
- python3 ./.prizmkit/dev-pipeline/cli.py feature run F-001
75
- python3 ./.prizmkit/dev-pipeline/cli.py bugfix run B-001
76
- python3 ./.prizmkit/dev-pipeline/cli.py refactor run R-001
77
+ python3 ./.prizmkit/dev-pipeline/cli.py run feature F-001
78
+ python3 ./.prizmkit/dev-pipeline/cli.py run bugfix B-001
79
+ python3 ./.prizmkit/dev-pipeline/cli.py run refactor R-001
77
80
  ```
78
81
 
79
82
  Do not prepend `git checkout`. The runtime resolves the durable checkout identity and continues the task on its recorded branch or linked worktree.
@@ -91,7 +94,7 @@ task_id: <F-NNN | B-NNN | R-NNN>
91
94
  branch: <recorded active_dev_branch>
92
95
  checkout: <project-relative checkout.json path>
93
96
  command:
94
- python3 ./.prizmkit/dev-pipeline/cli.py <family> run <TASK_ID>
97
+ python3 ./.prizmkit/dev-pipeline/cli.py run <family> <TASK_ID>
95
98
 
96
99
  execution: not performed
97
100
  ```
@@ -6,7 +6,7 @@
6
6
  "id": 1,
7
7
  "name": "single-feature-interruption",
8
8
  "prompt": "My feature pipeline process stopped. Give me the command to continue it.",
9
- "expected_output": "Detect one active feature checkout record with an existing branch and return python3 ./.prizmkit/dev-pipeline/cli.py feature run F-001 without executing it.",
9
+ "expected_output": "Detect one active feature checkout record with an existing branch and return python3 ./.prizmkit/dev-pipeline/cli.py run feature F-001 without executing it.",
10
10
  "setup_description": "Create .prizmkit/state/features/F-001/checkout.json with state active and an existing dev/F-001-* local branch.",
11
11
  "files": []
12
12
  },
@@ -14,7 +14,7 @@
14
14
  "id": 2,
15
15
  "name": "single-bugfix-interruption",
16
16
  "prompt": "Resume the interrupted bugfix task.",
17
- "expected_output": "Detect the active bugfix checkout and return python3 ./.prizmkit/dev-pipeline/cli.py bugfix run B-001 without reconstructing phases or executing the command.",
17
+ "expected_output": "Detect the active bugfix checkout and return python3 ./.prizmkit/dev-pipeline/cli.py run bugfix B-001 without reconstructing phases or executing the command.",
18
18
  "setup_description": "Create .prizmkit/state/bugfix/B-001/checkout.json with state active and an existing bugfix/B-001-* local branch.",
19
19
  "files": []
20
20
  },
@@ -13,9 +13,10 @@ Recovery uses the runtime's durable task checkout identity rather than reconstru
13
13
  A record is resumable only when:
14
14
 
15
15
  1. `state` equals `active`.
16
- 2. `task_id` matches the directory family.
17
- 3. `active_dev_branch` is non-empty.
18
- 4. `refs/heads/<active_dev_branch>` exists locally.
16
+ 2. `task_type` equals the checkout directory family.
17
+ 3. `task_id` is explicitly present, matches the exact `F-NNN`, `B-NNN`, or `R-NNN` family form, and equals its parent state-directory name.
18
+ 4. `active_dev_branch` is non-empty.
19
+ 5. `refs/heads/<active_dev_branch>` exists locally.
19
20
 
20
21
  Ignore records whose state is `completed` or `reset`. Also ignore session logs, plan lists, artifact directories, and checkpoint files when no active checkout record exists. Those files may remain after completed or historical work and are not evidence of an interrupted task.
21
22
 
@@ -24,9 +25,9 @@ Ignore records whose state is `completed` or `reset`. Also ignore session logs,
24
25
  The item-specific foreground command reloads the active checkout record and reuses its branch or linked worktree:
25
26
 
26
27
  ```bash
27
- python3 ./.prizmkit/dev-pipeline/cli.py feature run <F-NNN>
28
- python3 ./.prizmkit/dev-pipeline/cli.py bugfix run <B-NNN>
29
- python3 ./.prizmkit/dev-pipeline/cli.py refactor run <R-NNN>
28
+ python3 ./.prizmkit/dev-pipeline/cli.py run feature <F-NNN>
29
+ python3 ./.prizmkit/dev-pipeline/cli.py run bugfix <B-NNN>
30
+ python3 ./.prizmkit/dev-pipeline/cli.py run refactor <R-NNN>
30
31
  ```
31
32
 
32
33
  The command does not need an explicit branch argument. Do not prepend `git checkout`, because the runtime owns checkout identity and branch/worktree reuse.