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.
- package/bundled/VERSION.json +3 -3
- package/bundled/adapters/codex/skill-adapter.js +1 -1
- package/bundled/adapters/pi/skill-adapter.js +2 -1
- package/bundled/dev-pipeline/.env.example +2 -6
- package/bundled/dev-pipeline/README.md +120 -113
- package/bundled/dev-pipeline/assets/skill-subagent-integration.md +1 -1
- package/bundled/dev-pipeline/prizmkit_runtime/checkpoint_state.py +355 -15
- package/bundled/dev-pipeline/prizmkit_runtime/cli.py +189 -110
- package/bundled/dev-pipeline/prizmkit_runtime/commands.py +146 -111
- package/bundled/dev-pipeline/prizmkit_runtime/daemon.py +4 -20
- package/bundled/dev-pipeline/prizmkit_runtime/gitops.py +48 -14
- package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +0 -1
- package/bundled/dev-pipeline/prizmkit_runtime/paths.py +0 -3
- package/bundled/dev-pipeline/prizmkit_runtime/reset.py +122 -15
- package/bundled/dev-pipeline/prizmkit_runtime/reset_preserve.py +1 -1
- package/bundled/dev-pipeline/prizmkit_runtime/runner_classification.py +50 -2
- package/bundled/dev-pipeline/prizmkit_runtime/runner_models.py +1 -10
- package/bundled/dev-pipeline/prizmkit_runtime/runner_prompts.py +3 -3
- package/bundled/dev-pipeline/prizmkit_runtime/runners.py +139 -74
- package/bundled/dev-pipeline/prizmkit_runtime/runtime_commit.py +482 -0
- package/bundled/dev-pipeline/prizmkit_runtime/status.py +106 -1
- package/bundled/dev-pipeline/prizmkit_runtime/test_result.py +64 -11
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +145 -367
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +91 -62
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +105 -69
- package/bundled/dev-pipeline/scripts/init-bugfix-pipeline.py +2 -2
- package/bundled/dev-pipeline/scripts/prompt_framework.py +36 -41
- package/bundled/dev-pipeline/scripts/update-bug-status.py +197 -71
- package/bundled/dev-pipeline/scripts/update-checkpoint.py +77 -16
- package/bundled/dev-pipeline/scripts/update-feature-status.py +46 -121
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +46 -123
- package/bundled/dev-pipeline/scripts/utils.py +119 -0
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +22 -27
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +71 -104
- package/bundled/dev-pipeline/templates/bug-fix-list-schema.json +3 -2
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +59 -111
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +37 -72
- package/bundled/dev-pipeline/templates/sections/artifact-manifest.md +39 -0
- package/bundled/dev-pipeline/templates/sections/bugfix-critical-paths.md +3 -1
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-commit-report.md +8 -25
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-diagnose-plan.md +3 -3
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-implement.md +2 -2
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-review.md +3 -3
- package/bundled/dev-pipeline/templates/sections/bugfix-phase-test.md +2 -2
- package/bundled/dev-pipeline/templates/sections/bugfix-reminders.md +4 -4
- package/bundled/dev-pipeline/templates/sections/bugfix-session-context.md +0 -1
- package/bundled/dev-pipeline/templates/sections/checkpoint-system.md +7 -4
- package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +14 -27
- package/bundled/dev-pipeline/templates/sections/feature-completion-summary.md +20 -0
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +8 -71
- package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +7 -7
- package/bundled/dev-pipeline/templates/sections/phase-prizmkit-test.md +3 -3
- package/bundled/dev-pipeline/templates/sections/phase-review-full.md +4 -4
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +5 -17
- package/bundled/dev-pipeline/templates/sections/refactor-critical-paths.md +3 -1
- package/bundled/dev-pipeline/templates/sections/refactor-phase-commit-report.md +10 -23
- package/bundled/dev-pipeline/templates/sections/refactor-phase-implement.md +2 -2
- package/bundled/dev-pipeline/templates/sections/refactor-phase-plan.md +2 -2
- package/bundled/dev-pipeline/templates/sections/refactor-phase-review.md +3 -3
- package/bundled/dev-pipeline/templates/sections/refactor-phase-test.md +2 -2
- package/bundled/dev-pipeline/templates/sections/refactor-reminders.md +7 -7
- package/bundled/dev-pipeline/templates/sections/refactor-session-context.md +0 -1
- package/bundled/dev-pipeline/templates/sections/retrospective.md +12 -0
- package/bundled/dev-pipeline/templates/sections/runtime-commit-handoff.md +35 -0
- package/bundled/dev-pipeline/templates/session-status-schema.json +45 -62
- package/bundled/dev-pipeline/tests/test_auto_skip.py +111 -32
- package/bundled/dev-pipeline/tests/test_checkpoint_state.py +617 -30
- package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +262 -194
- package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +62 -23
- package/bundled/dev-pipeline/tests/test_generate_refactor_prompt.py +76 -28
- package/bundled/dev-pipeline/tests/test_python_runner_parity.py +281 -206
- package/bundled/dev-pipeline/tests/test_recovery_workflow.py +322 -0
- package/bundled/dev-pipeline/tests/test_reset_modes.py +935 -0
- package/bundled/dev-pipeline/tests/test_reset_preserve.py +5 -7
- package/bundled/dev-pipeline/tests/test_runtime_commit.py +608 -0
- package/bundled/dev-pipeline/tests/test_unified_cli.py +617 -188
- package/bundled/skills/_metadata.json +9 -9
- package/bundled/skills/app-planner/SKILL.md +3 -3
- package/bundled/skills/app-planner/references/generated-plan-review.md +2 -1
- package/bundled/skills/app-planner/references/rules/backend/derivation-rules.md +56 -64
- package/bundled/skills/app-planner/references/rules/backend/fixed-rules.md +85 -240
- package/bundled/skills/app-planner/references/rules/backend/question-bank.md +25 -25
- package/bundled/skills/app-planner/references/rules/backend/question-manifest.json +16 -7
- package/bundled/skills/app-planner/references/rules/backend/template.md +74 -92
- package/bundled/skills/app-planner/references/rules/database/derivation-rules.md +93 -93
- package/bundled/skills/app-planner/references/rules/database/fixed-rules.md +66 -173
- package/bundled/skills/app-planner/references/rules/database/question-bank.md +31 -26
- package/bundled/skills/app-planner/references/rules/database/question-manifest.json +13 -4
- package/bundled/skills/app-planner/references/rules/database/template.md +76 -98
- package/bundled/skills/app-planner/references/rules/frontend/derivation-rules.md +68 -95
- package/bundled/skills/app-planner/references/rules/frontend/fixed-rules.md +93 -166
- package/bundled/skills/app-planner/references/rules/frontend/question-bank.md +46 -36
- package/bundled/skills/app-planner/references/rules/frontend/question-manifest.json +11 -2
- package/bundled/skills/app-planner/references/rules/frontend/template.md +79 -257
- package/bundled/skills/app-planner/references/rules/mobile/derivation-rules.md +91 -99
- package/bundled/skills/app-planner/references/rules/mobile/fixed-rules.md +73 -246
- package/bundled/skills/app-planner/references/rules/mobile/question-bank.md +17 -17
- package/bundled/skills/app-planner/references/rules/mobile/question-manifest.json +17 -2
- package/bundled/skills/app-planner/references/rules/mobile/template.md +73 -85
- package/bundled/skills/app-planner/references/rules-configuration.md +133 -65
- package/bundled/skills/app-planner/scripts/validate-rules-configuration.py +291 -0
- package/bundled/skills/bug-planner/references/schema-validation.md +1 -1
- package/bundled/skills/bug-planner/scripts/validate-bug-list.py +1 -1
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +21 -13
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +22 -14
- package/bundled/skills/prizmkit/SKILL.md +17 -18
- package/bundled/skills/prizmkit/references/workflow-state-protocol.md +22 -18
- package/bundled/skills/prizmkit-code-review/SKILL.md +22 -58
- package/bundled/skills/prizmkit-code-review/references/independent-code-review.md +6 -6
- package/bundled/skills/prizmkit-code-review/references/review-report-template.md +2 -2
- package/bundled/skills/prizmkit-committer/SKILL.md +82 -132
- package/bundled/skills/prizmkit-deploy/SKILL.md +27 -11
- package/bundled/skills/prizmkit-deploy/assets/deploy-document-template.md +89 -0
- package/bundled/skills/prizmkit-deploy/references/ci-cd-workflows.md +44 -14
- package/bundled/skills/prizmkit-deploy/references/cloud-platform-deploy.md +19 -3
- package/bundled/skills/prizmkit-deploy/references/database-setup.md +22 -12
- package/bundled/skills/prizmkit-deploy/references/deploy-config-schema.md +3 -1
- package/bundled/skills/prizmkit-deploy/references/deploy-history-schema.md +22 -6
- package/bundled/skills/prizmkit-deploy/references/deploy-metadata-schema.json +49 -0
- package/bundled/skills/prizmkit-deploy/references/live-validation-notes.md +1 -1
- package/bundled/skills/prizmkit-deploy/references/pending-input-schema.json +164 -0
- package/bundled/skills/prizmkit-deploy/references/ssh-adapter-flow.md +9 -8
- package/bundled/skills/prizmkit-deploy/references/ssh-execution-flow.md +6 -6
- package/bundled/skills/prizmkit-implement/SKILL.md +30 -66
- package/bundled/skills/prizmkit-implement/references/implementation-subagent-procedure.md +4 -4
- package/bundled/skills/prizmkit-init/SKILL.md +4 -0
- package/bundled/skills/prizmkit-plan/SKILL.md +21 -64
- package/bundled/skills/prizmkit-plan/references/artifact-identity.md +38 -0
- package/bundled/skills/prizmkit-plan/references/independent-plan-review.md +4 -4
- package/bundled/skills/prizmkit-plan/references/review-plan-spec-loop.md +5 -5
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +11 -1
- package/bundled/skills/prizmkit-retrospective/SKILL.md +63 -77
- package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -3
- package/bundled/skills/prizmkit-retrospective/references/retrospective-result-schema.json +138 -0
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +17 -23
- package/bundled/skills/prizmkit-test/SKILL.md +64 -51
- package/bundled/skills/prizmkit-test/references/boundary-contract-and-test-double-guidance.md +206 -0
- package/bundled/skills/prizmkit-test/references/independent-test-review.md +17 -9
- package/bundled/skills/prizmkit-test/references/test-coverage-model.md +45 -21
- package/bundled/skills/prizmkit-test/references/test-report-template.md +20 -13
- package/bundled/skills/prizmkit-workflow/SKILL.md +35 -37
- package/bundled/skills/prizmkit-workflow/references/artifact-identity.md +34 -0
- package/bundled/skills/prizmkit-workflow/references/workflow-state-protocol.md +22 -18
- package/bundled/skills/recovery-workflow/SKILL.md +9 -6
- package/bundled/skills/recovery-workflow/evals/evals.json +2 -2
- package/bundled/skills/recovery-workflow/references/detection.md +7 -6
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +16 -6
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +21 -13
- package/bundled/templates/project-memory-template.md +19 -11
- package/package.json +1 -1
- package/src/scaffold.js +33 -22
- package/bundled/dev-pipeline/prizmkit_runtime/runner_recovery.py +0 -228
- package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +0 -767
- package/bundled/dev-pipeline/templates/sections/bugfix-artifacts.md +0 -16
- package/bundled/dev-pipeline/templates/sections/bugfix-session-status.md +0 -31
- package/bundled/dev-pipeline/templates/sections/critical-paths-agent.md +0 -7
- package/bundled/dev-pipeline/templates/sections/critical-paths-lite.md +0 -7
- package/bundled/dev-pipeline/templates/sections/directory-convention-agent.md +0 -9
- package/bundled/dev-pipeline/templates/sections/directory-convention-lite.md +0 -6
- package/bundled/dev-pipeline/templates/sections/headless-commit-authorization.md +0 -15
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +0 -61
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +0 -24
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-lite-suffix.md +0 -12
- package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +0 -44
- package/bundled/dev-pipeline/templates/sections/phase-implement-lite.md +0 -25
- package/bundled/dev-pipeline/templates/sections/phase-plan-agent.md +0 -20
- package/bundled/dev-pipeline/templates/sections/phase-plan-lite.md +0 -20
- package/bundled/dev-pipeline/templates/sections/phase-review-agent.md +0 -20
- package/bundled/dev-pipeline/templates/sections/refactor-artifacts.md +0 -17
- package/bundled/dev-pipeline/templates/sections/refactor-session-status.md +0 -28
- package/bundled/dev-pipeline/templates/sections/test-failure-recovery-agent.md +0 -52
- package/bundled/dev-pipeline/templates/sections/test-failure-recovery-lite.md +0 -52
- package/bundled/skills/prizmkit-code-review/references/workflow-state-protocol.md +0 -174
- package/bundled/skills/prizmkit-committer/references/workflow-state-protocol.md +0 -174
- package/bundled/skills/prizmkit-implement/references/workflow-state-protocol.md +0 -174
- package/bundled/skills/prizmkit-plan/references/workflow-state-protocol.md +0 -174
- package/bundled/skills/prizmkit-retrospective/references/workflow-state-protocol.md +0 -174
- 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
|
|
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.
|
|
48
|
-
4.
|
|
49
|
-
5.
|
|
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/
|
|
122
|
-
| Module/
|
|
123
|
-
|
|
|
124
|
-
|
|
|
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
|
-
|
|
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.
|
|
186
|
-
5.
|
|
187
|
-
6.
|
|
188
|
-
7.
|
|
189
|
-
8.
|
|
190
|
-
9.
|
|
191
|
-
10.
|
|
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
|
-
##
|
|
107
|
+
## Boundary Contracts and Test Doubles
|
|
108
108
|
|
|
109
|
-
|
|
|
109
|
+
| Boundary | Contract Authority | Fidelity Proof | Test Double | Composition Removed |
|
|
110
110
|
|---|---|---|---|---|
|
|
111
|
-
| <
|
|
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
|
|
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
|
|
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
|
|
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
|
-
- `
|
|
174
|
-
-
|
|
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
|
|
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,
|
|
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.
|
|
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-
|
|
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
|
|
85
|
-
2. Validate
|
|
86
|
-
3.
|
|
87
|
-
4.
|
|
88
|
-
5.
|
|
89
|
-
6.
|
|
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` | `
|
|
96
|
-
| `prizmkit-implement` | `
|
|
97
|
-
| `prizmkit-code-review` | `
|
|
98
|
-
| `prizmkit-test` | `
|
|
99
|
-
| `prizmkit-retrospective` | `
|
|
100
|
-
| `prizmkit-committer` | explicit interactive confirmation
|
|
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
|
|
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`
|
|
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
|
|
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
|
-
→
|
|
140
|
-
→
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
188
|
+
The composite reaches `/prizmkit-committer operation=interactive-commit` but must not silently create a Git commit.
|
|
187
189
|
|
|
188
|
-
|
|
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
|
-
|
|
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-
|
|
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,
|
|
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-
|
|
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
|
|
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` |
|
|
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
|
|
101
|
-
retrospective NO_DOC_CHANGE
|
|
102
|
-
retrospective
|
|
103
|
-
commit
|
|
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
|
|
119
|
-
→ caller decides whether and how to arrange another
|
|
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
|
|
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
|
|
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
|
-
|
|
152
|
+
Pipeline execution:
|
|
151
153
|
|
|
152
154
|
```text
|
|
153
|
-
|
|
154
|
-
→ committer
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
- `
|
|
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
|
|
75
|
-
python3 ./.prizmkit/dev-pipeline/cli.py bugfix
|
|
76
|
-
python3 ./.prizmkit/dev-pipeline/cli.py refactor
|
|
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>
|
|
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
|
|
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
|
|
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. `
|
|
17
|
-
3. `
|
|
18
|
-
4. `
|
|
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
|
|
28
|
-
python3 ./.prizmkit/dev-pipeline/cli.py bugfix
|
|
29
|
-
python3 ./.prizmkit/dev-pipeline/cli.py refactor
|
|
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.
|