prizmkit 1.1.140 → 1.1.142

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 (83) hide show
  1. package/bundled/VERSION.json +3 -3
  2. package/bundled/dev-pipeline/README.md +1 -1
  3. package/bundled/dev-pipeline/prizmkit_runtime/checkpoint_state.py +165 -125
  4. package/bundled/dev-pipeline/prizmkit_runtime/runner_classification.py +13 -1
  5. package/bundled/dev-pipeline/prizmkit_runtime/runner_models.py +0 -6
  6. package/bundled/dev-pipeline/prizmkit_runtime/runners.py +5 -3
  7. package/bundled/dev-pipeline/prizmkit_runtime/test_result.py +160 -0
  8. package/bundled/dev-pipeline/scripts/check-session-status.py +11 -1
  9. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +23 -806
  10. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +6 -8
  11. package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +1 -1
  12. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +6 -8
  13. package/bundled/dev-pipeline/scripts/prompt_framework.py +68 -56
  14. package/bundled/dev-pipeline/scripts/update-bug-status.py +21 -2
  15. package/bundled/dev-pipeline/scripts/update-checkpoint.py +52 -131
  16. package/bundled/dev-pipeline/scripts/update-feature-status.py +21 -2
  17. package/bundled/dev-pipeline/scripts/update-refactor-status.py +21 -2
  18. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +3 -3
  19. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +8 -19
  20. package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +6 -6
  21. package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +5 -5
  22. package/bundled/dev-pipeline/templates/sections/bugfix-phase-commit-report.md +1 -1
  23. package/bundled/dev-pipeline/templates/sections/bugfix-phase-diagnose-plan.md +1 -1
  24. package/bundled/dev-pipeline/templates/sections/bugfix-phase-manual-verification.md +1 -1
  25. package/bundled/dev-pipeline/templates/sections/bugfix-phase-review.md +1 -1
  26. package/bundled/dev-pipeline/templates/sections/bugfix-phase-test.md +13 -10
  27. package/bundled/dev-pipeline/templates/sections/bugfix-reminders.md +1 -1
  28. package/bundled/dev-pipeline/templates/sections/checkpoint-system.md +18 -9
  29. package/bundled/dev-pipeline/templates/sections/headless-commit-authorization.md +1 -1
  30. package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +1 -1
  31. package/bundled/dev-pipeline/templates/sections/phase-commit.md +1 -1
  32. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +2 -2
  33. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-base.md +1 -1
  34. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-lite-suffix.md +1 -1
  35. package/bundled/dev-pipeline/templates/sections/phase-implement-lite.md +1 -1
  36. package/bundled/dev-pipeline/templates/sections/phase-prizmkit-test.md +14 -26
  37. package/bundled/dev-pipeline/templates/sections/phase-review-full.md +2 -2
  38. package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +3 -3
  39. package/bundled/dev-pipeline/templates/sections/refactor-phase-review.md +1 -1
  40. package/bundled/dev-pipeline/templates/sections/refactor-phase-test.md +13 -10
  41. package/bundled/dev-pipeline/templates/sections/refactor-reminders.md +1 -1
  42. package/bundled/dev-pipeline/templates/session-status-schema.json +1 -1
  43. package/bundled/dev-pipeline/tests/test_checkpoint_state.py +494 -413
  44. package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +144 -684
  45. package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +20 -41
  46. package/bundled/dev-pipeline/tests/test_generate_refactor_prompt.py +24 -24
  47. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +176 -36
  48. package/bundled/skills/_metadata.json +6 -6
  49. package/bundled/skills/prizmkit/SKILL.md +13 -18
  50. package/bundled/skills/prizmkit/references/workflow-state-protocol.md +73 -80
  51. package/bundled/skills/prizmkit-code-review/SKILL.md +7 -7
  52. package/bundled/skills/prizmkit-code-review/references/workflow-state-protocol.md +73 -80
  53. package/bundled/skills/prizmkit-committer/SKILL.md +8 -7
  54. package/bundled/skills/prizmkit-committer/references/workflow-state-protocol.md +73 -80
  55. package/bundled/skills/prizmkit-implement/SKILL.md +3 -2
  56. package/bundled/skills/prizmkit-implement/references/workflow-state-protocol.md +73 -80
  57. package/bundled/skills/prizmkit-plan/SKILL.md +2 -1
  58. package/bundled/skills/prizmkit-plan/references/workflow-state-protocol.md +73 -80
  59. package/bundled/skills/prizmkit-retrospective/SKILL.md +8 -6
  60. package/bundled/skills/prizmkit-retrospective/references/workflow-state-protocol.md +73 -80
  61. package/bundled/skills/prizmkit-test/SKILL.md +217 -189
  62. package/bundled/skills/prizmkit-test/references/external-contract-mock-guidance.md +119 -0
  63. package/bundled/skills/prizmkit-test/references/independent-test-review.md +269 -0
  64. package/bundled/skills/prizmkit-test/references/test-coverage-model.md +193 -0
  65. package/bundled/skills/prizmkit-test/references/test-report-template.md +164 -79
  66. package/bundled/skills/prizmkit-workflow/SKILL.md +28 -36
  67. package/bundled/skills/prizmkit-workflow/references/workflow-state-protocol.md +73 -80
  68. package/package.json +1 -1
  69. package/bundled/skills/prizmkit-test/assets/authoritative-records.schema.json +0 -477
  70. package/bundled/skills/prizmkit-test/assets/behavior-risk-matrix.schema.json +0 -116
  71. package/bundled/skills/prizmkit-test/assets/evidence-manifest.schema.json +0 -111
  72. package/bundled/skills/prizmkit-test/assets/evidence-package-template.json +0 -66
  73. package/bundled/skills/prizmkit-test/references/boundary-coverage-protocol.md +0 -104
  74. package/bundled/skills/prizmkit-test/references/contract-mock-protocol.md +0 -65
  75. package/bundled/skills/prizmkit-test/references/evidence-protocol.md +0 -208
  76. package/bundled/skills/prizmkit-test/references/evidence-request-protocol.md +0 -80
  77. package/bundled/skills/prizmkit-test/references/examples.md +0 -100
  78. package/bundled/skills/prizmkit-test/references/service-boundary-test-catalog.md +0 -228
  79. package/bundled/skills/prizmkit-test/references/test-generation-steps.md +0 -118
  80. package/bundled/skills/prizmkit-test/references/trusted-evidence-execution.md +0 -107
  81. package/bundled/skills/prizmkit-test/references/workflow-state-protocol.md +0 -181
  82. package/bundled/skills/prizmkit-test/scripts/build_test_evidence.py +0 -1930
  83. package/bundled/skills/prizmkit-test/scripts/validate_test_evidence.py +0 -1847
@@ -1,6 +1,6 @@
1
1
  # PrizmKit Workflow State Protocol
2
2
 
3
- `workflow-state.json` is lifecycle runtime metadata for one formal requirement. It preserves stage handoff, repair routing, orchestrator ownership, and resume information without replacing authoritative artifacts or any host-owned execution checkpoint.
3
+ `workflow-state.json` is lifecycle metadata for one formal requirement. It preserves stage handoff, orchestrator ownership, and resume information without replacing skill-owned artifacts or any host-owned execution checkpoint.
4
4
 
5
5
  ## Location and Identity
6
6
 
@@ -8,7 +8,7 @@
8
8
  .prizmkit/state/workflows/<requirement-slug>.json
9
9
  ```
10
10
 
11
- The state file is created only when a lifecycle runs. The active `artifact_dir` is the generic requirement artifact root and must be preserved exactly across every stage:
11
+ The active `artifact_dir` is preserved exactly across every stage:
12
12
 
13
13
  ```text
14
14
  .prizmkit/specs/<requirement-slug>/
@@ -16,7 +16,7 @@ The state file is created only when a lifecycle runs. The active `artifact_dir`
16
16
  .prizmkit/refactor/<refactor-id>/
17
17
  ```
18
18
 
19
- Never select a different most-recent plan when resuming or handing off. Any execution checkpoint maintained by an external host remains separate from this lifecycle state. Never merge, substitute, or infer one schema from the other. The target project controls whether generated `.prizmkit/` files are committed, ignored, or shared.
19
+ Never select another recent plan when resuming. Any external execution checkpoint remains separate from this state. Never merge, substitute, or infer one schema from the other.
20
20
 
21
21
  ## Authority
22
22
 
@@ -26,16 +26,16 @@ The state file is an index, not the authority for stage completion:
26
26
  |---|---|
27
27
  | Requirement goals and acceptance criteria | `{artifact_dir}/spec.md` |
28
28
  | Implementation tasks and completion | `{artifact_dir}/plan.md` plus current workspace |
29
- | Review findings and verdict | `{artifact_dir}/review-report.md` final result |
30
- | Test execution, verdict, and repair scope | Validated evidence package and authoritative `verdict.json` |
31
- | Test report presentation | `{artifact_dir}/test-report.md` as a derived view only |
32
- | Retrospective completion and result | `{artifact_dir}/retrospective-result.json` |
29
+ | Review findings and result | `{artifact_dir}/review-report.md` |
30
+ | Test semantics and native execution | `{artifact_dir}/test-report.md` |
31
+ | Terminal testing result | `{artifact_dir}/test-result.json` |
32
+ | Retrospective completion | `{artifact_dir}/retrospective-result.json` |
33
33
  | Durable architecture knowledge | `.prizmkit/prizm-docs/` |
34
34
  | Local commit | Git history and confirmed or authorized commit identity |
35
35
  | Current stage, orchestrator, and resume entry | Workflow state |
36
- | External orchestration progress | The external host's own checkpoint, never this state |
36
+ | External orchestration progress | External host checkpoint |
37
37
 
38
- Every consumer compares workflow state with authoritative artifacts and the current workspace. Missing or stale state is reconstructed from those sources and is never accepted as success by itself.
38
+ Every consumer compares workflow state with the skill-owned artifacts and current workspace. Missing or stale state is reconstructed from those sources and is never accepted as success by itself.
39
39
 
40
40
  ## Schema
41
41
 
@@ -45,7 +45,7 @@ Every consumer compares workflow state with authoritative artifacts and the curr
45
45
  "artifact_dir": ".prizmkit/specs/example",
46
46
  "orchestrator": "prizmkit-workflow",
47
47
  "stage": "test",
48
- "status": "TEST_PASS",
48
+ "status": "completed",
49
49
  "stage_result": "TEST_PASS",
50
50
  "completed_stages": ["plan", "implement", "code-review", "test"],
51
51
  "repair_scope": null,
@@ -59,88 +59,83 @@ Every consumer compares workflow state with authoritative artifacts and the curr
59
59
 
60
60
  | Field | Meaning |
61
61
  |---|---|
62
- | `schema_version` | State schema version. Current value is `1`. |
63
- | `artifact_dir` | The single generic requirement artifact root reused by every stage. |
64
- | `orchestrator` | `prizmkit-workflow`, another semantic coordinator identifier, or `null` for direct stage use. |
65
- | `stage` | The stage that most recently wrote state. |
66
- | `status` | Lifecycle progression status, distinct from the domain `stage_result`. |
67
- | `stage_result` | Domain result such as `PASS`, `NEEDS_FIXES`, `TEST_*`, `DOCS_UPDATED`, or `NO_DOC_CHANGE`. |
62
+ | `schema_version` | State schema version. |
63
+ | `artifact_dir` | Generic requirement artifact root reused by every stage. |
64
+ | `orchestrator` | Semantic coordinator identifier, or null for direct stage use. |
65
+ | `stage` | Stage that most recently wrote state. |
66
+ | `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`. |
68
68
  | `completed_stages` | Ordered stages completed for this requirement. |
69
- | `repair_scope` | `null`, `test-infrastructure`, `production`, `runtime`, `schema`, `dependency`, `public-interface`, or `unknown`. |
70
- | `repair_round` | Outer cross-stage repair round, from `0` through `3`. |
71
- | `next_stage` | Next semantic stage, or `null` after commit. |
72
- | `resume_from` | Exact atomic skill that can resume, or `null` after commit. |
69
+ | `repair_scope` | Optional caller-owned routing scope. The test skill reports high-risk repairs through `test-result.json` instead of scheduling another stage. |
70
+ | `repair_round` | Optional outer cross-stage repair round, from 0 through 3. It is not a test-internal repair counter. |
71
+ | `next_stage` | Next semantic stage, or null when stopped. |
72
+ | `resume_from` | Exact atomic skill that can resume, or null when none is selected. |
73
73
 
74
- ## Lifecycle and Verdict Mappings
74
+ `status` and `stage_result` are deliberately separate. Lifecycle status values must never be replaced with domain result values.
75
75
 
76
- The mandatory formal lifecycle is:
76
+ ## Lifecycle and Result Mappings
77
77
 
78
78
  ```text
79
79
  PLAN_READY
80
- → IMPLEMENTED
81
- → REVIEW_PASS
82
- → TEST_PASS
83
- → RETRO_COMPLETE
84
- → COMMIT_PENDING
85
- → COMMITTED
80
+ → IMPLEMENTED
81
+ → REVIEW_PASS
82
+ → TEST_PASS
83
+ → RETRO_COMPLETE
84
+ → COMMIT_PENDING
85
+ → COMMITTED
86
86
  ```
87
87
 
88
- No formal stage is silently optional. Domain evidence maps as follows:
88
+ No formal stage is silently optional. Domain artifacts map to workflow state as follows:
89
89
 
90
90
  ```text
91
- review-report final PASS → status=REVIEW_PASS, stage_result=PASS
92
- review-report final NEEDS_FIXES → status=REVIEW_NEEDS_FIXES, stage_result=NEEDS_FIXES
93
- validated verdict TEST_PASS → status=TEST_PASS, stage_result=TEST_PASS
94
- validated verdict TEST_FAIL → status=TEST_FAIL, stage_result=TEST_FAIL
95
- validated verdict TEST_BLOCKED → status=TEST_BLOCKED, stage_result=TEST_BLOCKED
96
- retrospective result DOCS_UPDATED → status=RETRO_COMPLETE, stage_result=DOCS_UPDATED
97
- retrospective result NO_DOC_CHANGE → status=RETRO_COMPLETE, stage_result=NO_DOC_CHANGE
91
+ plan PLAN_READY → status=completed, stage_result=PLAN_READY
92
+ plan PLAN_BLOCKED → status=failed, stage_result=PLAN_BLOCKED
93
+ implementation IMPLEMENTED → status=completed, stage_result=IMPLEMENTED
94
+ implementation repair/block → status=failed, stage_result=IMPLEMENT_REPAIR or IMPLEMENT_BLOCKED
95
+ review-report PASS → status=completed, stage_result=REVIEW_PASS
96
+ review-report NEEDS_FIXES → status=failed, stage_result=REVIEW_NEEDS_FIXES
97
+ test-result TEST_PASS → status=completed, stage_result=TEST_PASS
98
+ test-result TEST_NEEDS_FIXES → status=failed, stage_result=TEST_NEEDS_FIXES
99
+ 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
104
+ local commit confirmed → status=completed, stage_result=COMMITTED
105
+ commit blocked → status=failed, stage_result=COMMIT_BLOCKED
98
106
  ```
99
107
 
100
- `RETRO_COMPLETE` is the stable completion status. `DOCS_UPDATED` and `NO_DOC_CHANGE` are mutually exclusive retrospective results, not substitute statuses. A derived Markdown test report never establishes a `TEST_*` status without validated authoritative evidence.
108
+ `DOCS_UPDATED` and `NO_DOC_CHANGE` remain retrospective artifact `result` values. The workflow `stage_result` is the retrospective stage result `RETRO_COMPLETE`.
101
109
 
102
- ## Repair Routing
110
+ `TEST_PASS` requires both `test-report.md` and a consistent `test-result.json`. No manifest, attestation, evidence package, or test-internal checkpoint is part of this contract.
103
111
 
104
- ```text
105
- REVIEW_NEEDS_FIXES
106
- → implement
107
- → code-review
108
- → test
109
-
110
- TEST_FAIL with repair_scope=test-infrastructure
111
- → implement
112
- → test
112
+ ## Non-Pass Results and Routing Boundary
113
113
 
114
- TEST_FAIL with repair_scope=production|runtime|schema|dependency|public-interface
115
- → implement
116
- → code-review
117
- → test
114
+ `prizmkit-test` performs its own bounded failure repair and review loops before returning. The test skill never invokes another lifecycle stage.
118
115
 
119
- TEST_FAIL with repair_scope=unknown
120
- → conservative production route only when safe
121
- otherwise WORKFLOW_BLOCKED
116
+ ```text
117
+ TEST_NEEDS_FIXES
118
+ known correction or required delta review remains
119
+ → caller decides whether and how to arrange another stage
122
120
 
123
121
  TEST_BLOCKED
124
- never make speculative production edits
125
- interactive execution stops with a prizmkit-test resume entry
126
- a trusted headless host may perform bounded environment recovery, then records WORKFLOW_BLOCKED if unresolved
127
-
128
- RETRO_BLOCKED
129
- → WORKFLOW_BLOCKED
130
- WORKFLOW_BLOCKED
131
- → resume only after the recorded blocker is resolved
122
+ truth, input, safe environment, or reliable execution prevents a verdict
123
+ never make speculative production edits
124
+ caller or external host owns recovery policy
132
125
  ```
133
126
 
134
- The outer workflow permits at most three automatic repair rounds. These are cross-stage rounds (`repair_round` `0` through `3`). The code-review internal loop permits at most ten completed review rounds and is separate; review-internal repairs do not increment the outer counter.
127
+ A test result is not an AI CLI session classification. `TEST_NEEDS_FIXES` and `TEST_BLOCKED` must not be rewritten as crash or infrastructure failure merely because they stop lifecycle progression.
128
+
129
+ Any outer repair or continuation policy is independently owned by the caller and cannot alter the test report. The Main-Agent test review limit of ten rounds, independent Test Reviewer limit of five responses, and execution-failure repair limit of three rounds are internal to one test invocation and do not update outer counters.
135
130
 
136
131
  ## Orchestrator Ownership and Handoff
137
132
 
138
- 1. An atomic stage performs only its own stage, writes the truthful terminal result and `next_stage`, and returns control.
139
- 2. When `orchestrator` is non-null, only that orchestrator invokes the next skill. The atomic stage must not auto-invoke it again.
140
- 3. Direct stage use may report one deterministic next invocation but does not claim the next stage ran.
133
+ 1. An atomic stage performs only its own stage, writes its truthful result and artifact paths, and returns control.
134
+ 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.
141
136
  4. Every handoff preserves the same `artifact_dir`.
142
- 5. External automation invokes atomic stages directly and does not invoke `prizmkit-workflow` as a nested coordinator.
143
- 6. Workflow state never replaces or absorbs an external host's checkpoint.
137
+ 5. External automation invokes atomic stages directly and does not nest the composite workflow.
138
+ 6. Workflow state never replaces or absorbs an external host checkpoint.
144
139
 
145
140
  ## Commit Authorization
146
141
 
@@ -148,34 +143,32 @@ Interactive execution:
148
143
 
149
144
  ```text
150
145
  committer previews intended files and message
151
- → waits for explicit confirmation from the current user
146
+ → waits for explicit current-user confirmation
152
147
  → creates the local commit
153
148
  ```
154
149
 
155
150
  Trusted headless execution:
156
151
 
157
152
  ```text
158
- a trusted host explicitly authorizes the current local task commit
159
- → host injects mode=<host-defined-headless-mode>, owner=<trusted-host-identifier>,
160
- local_commit_authorized=true
153
+ trusted host explicitly authorizes the current local task commit
161
154
  → committer verifies gates and commits automatically
162
- no question or wait is permitted
155
+ remote publication remains separate
163
156
  ```
164
157
 
165
- A self-declared or otherwise untrusted headless context does not authorize a commit. Remote publication remains a separate host-runtime decision.
158
+ A self-declared or untrusted headless context does not authorize a commit.
166
159
 
167
160
  ## Recovery
168
161
 
169
162
  When state is missing, stale, or inconsistent:
170
163
 
171
- 1. Read `spec.md` and `plan.md` from `artifact_dir` only when they are not already available in current context.
172
- 2. Inspect task markers and the current workspace.
173
- 3. Read the latest review report and final result when needed to establish review authority.
174
- 4. Validate authoritative test evidence and `repair_scope`.
164
+ 1. Reuse current context, then read `spec.md` and `plan.md` only when needed.
165
+ 2. Inspect task markers and current workspace.
166
+ 3. Read the current review report when needed to establish review authority.
167
+ 4. Validate that `test-report.md` and terminal `test-result.json` exist, agree, and reflect the claimed result.
175
168
  5. Validate `retrospective-result.json` when retrospective is claimed complete.
176
169
  6. Verify the commit when commit is claimed complete.
177
- 7. When an external host is active, let that host validate its own checkpoint independently; never merge the schemas.
170
+ 7. Let an active external host validate its own checkpoint independently.
178
171
  8. Reconstruct the latest safe predecessor and report the reconstruction.
179
172
  9. Continue only from the first incomplete or invalid stage.
180
173
 
181
- Stale state never bypasses review, testing, retrospective, commit authorization, or external host checkpoint enforcement.
174
+ Stale state never bypasses review, testing, retrospective, commit authorization, or external checkpoint enforcement.
@@ -40,7 +40,7 @@ prizmkit-plan
40
40
  ## When NOT to Use
41
41
 
42
42
  - The requirement has not passed code review and testing.
43
- - `TEST_FAIL` or `TEST_BLOCKED` remains unresolved.
43
+ - `TEST_NEEDS_FIXES` or `TEST_BLOCKED` remains unresolved.
44
44
  - The request is a direct edit outside the formal requirement lifecycle, unless the user explicitly asks for documentation maintenance.
45
45
  - First-time docs initialization or out-of-band docs repair; use `/prizmkit-prizm-docs` instead.
46
46
 
@@ -49,7 +49,7 @@ prizmkit-plan
49
49
  1. Reuse the caller's `artifact_dir`; do not select another requirement.
50
50
  2. Confirm the latest review result is `PASS`.
51
51
  3. Confirm the latest testing result is `TEST_PASS`.
52
- 4. Read the final source diff with `.prizmkit/` excluded, then use `spec.md`, `plan.md`, the final `review-report.md`, and final test evidence only as supporting context for the non-`.prizmkit/` changes.
52
+ 4. Read the final source diff with `.prizmkit/` excluded, then use `spec.md`, `plan.md`, the final `review-report.md`, `test-report.md`, and `test-result.json` only as supporting context for the non-`.prizmkit/` changes.
53
53
  5. If the workflow state is missing or stale, reconstruct it from those authoritative artifacts and report the reconstruction.
54
54
 
55
55
  `.prizmkit/` is always excluded from retrospective project-change input scope. Do not treat any file under `.prizmkit/`—including plans, artifacts, state, evidence, or existing Prizm docs—as a changed project file from which structural or durable knowledge is inferred. Required lifecycle state/evidence writes and targeted `.prizmkit/prizm-docs/` updates remain outputs; documentation changes must be justified only by observed non-`.prizmkit/` project changes.
@@ -102,7 +102,8 @@ Write `{artifact_dir}/retrospective-result.json` for every formal requirement:
102
102
 
103
103
  ```json
104
104
  {
105
- "status": "RETRO_COMPLETE",
105
+ "status": "completed",
106
+ "stage_result": "RETRO_COMPLETE",
106
107
  "result": "DOCS_UPDATED",
107
108
  "reason": "Durable module interfaces and traps changed",
108
109
  "review_verdict": "PASS",
@@ -110,7 +111,7 @@ Write `{artifact_dir}/retrospective-result.json` for every formal requirement:
110
111
  }
111
112
  ```
112
113
 
113
- `status=RETRO_COMPLETE` is the stable completion status. `result` must be exactly `DOCS_UPDATED` or `NO_DOC_CHANGE`; do not use either result as a substitute for completion status. Use `result=NO_DOC_CHANGE` with a concrete reason when no documentation update is warranted. This artifact is the retrospective gate evidence consumed by the committer and external automation; workflow state alone does not prove completion.
114
+ `status=completed` is the stable lifecycle status. `stage_result=RETRO_COMPLETE` marks successful retrospective completion; `result` must be exactly `DOCS_UPDATED` or `NO_DOC_CHANGE`. Use `result=NO_DOC_CHANGE` with a concrete reason when no documentation update is warranted. This artifact is the retrospective gate evidence consumed by the committer and external automation; workflow state alone does not prove completion.
114
115
 
115
116
  ## Workflow State and Handoff
116
117
 
@@ -121,14 +122,15 @@ On successful completion, update `.prizmkit/state/workflows/<requirement-slug>.j
121
122
  ```json
122
123
  {
123
124
  "stage": "retrospective",
124
- "status": "RETRO_COMPLETE",
125
+ "status": "completed",
126
+ "stage_result": "RETRO_COMPLETE",
125
127
  "completed_stages": ["plan", "implement", "code-review", "test", "retrospective"],
126
128
  "next_stage": "committer",
127
129
  "resume_from": "prizmkit-committer"
128
130
  }
129
131
  ```
130
132
 
131
- Use `status=RETRO_COMPLETE` for both successful outcomes, with `result=DOCS_UPDATED` when durable docs changed or `result=NO_DOC_CHANGE` when the stage completed without a docs update. Both result values permit the commit stage.
133
+ Use `status=completed` and `stage_result=RETRO_COMPLETE` for both successful outcomes, with `result=DOCS_UPDATED` when durable docs changed or `result=NO_DOC_CHANGE` when the stage completed without a docs update. Both result values permit the commit stage.
132
134
 
133
135
  If documentation validation or synchronization cannot safely complete, return `RETRO_BLOCKED`, do not commit, and provide the exact recovery entry.
134
136
 
@@ -1,6 +1,6 @@
1
1
  # PrizmKit Workflow State Protocol
2
2
 
3
- `workflow-state.json` is lifecycle runtime metadata for one formal requirement. It preserves stage handoff, repair routing, orchestrator ownership, and resume information without replacing authoritative artifacts or any host-owned execution checkpoint.
3
+ `workflow-state.json` is lifecycle metadata for one formal requirement. It preserves stage handoff, orchestrator ownership, and resume information without replacing skill-owned artifacts or any host-owned execution checkpoint.
4
4
 
5
5
  ## Location and Identity
6
6
 
@@ -8,7 +8,7 @@
8
8
  .prizmkit/state/workflows/<requirement-slug>.json
9
9
  ```
10
10
 
11
- The state file is created only when a lifecycle runs. The active `artifact_dir` is the generic requirement artifact root and must be preserved exactly across every stage:
11
+ The active `artifact_dir` is preserved exactly across every stage:
12
12
 
13
13
  ```text
14
14
  .prizmkit/specs/<requirement-slug>/
@@ -16,7 +16,7 @@ The state file is created only when a lifecycle runs. The active `artifact_dir`
16
16
  .prizmkit/refactor/<refactor-id>/
17
17
  ```
18
18
 
19
- Never select a different most-recent plan when resuming or handing off. Any execution checkpoint maintained by an external host remains separate from this lifecycle state. Never merge, substitute, or infer one schema from the other. The target project controls whether generated `.prizmkit/` files are committed, ignored, or shared.
19
+ Never select another recent plan when resuming. Any external execution checkpoint remains separate from this state. Never merge, substitute, or infer one schema from the other.
20
20
 
21
21
  ## Authority
22
22
 
@@ -26,16 +26,16 @@ The state file is an index, not the authority for stage completion:
26
26
  |---|---|
27
27
  | Requirement goals and acceptance criteria | `{artifact_dir}/spec.md` |
28
28
  | Implementation tasks and completion | `{artifact_dir}/plan.md` plus current workspace |
29
- | Review findings and verdict | `{artifact_dir}/review-report.md` final result |
30
- | Test execution, verdict, and repair scope | Validated evidence package and authoritative `verdict.json` |
31
- | Test report presentation | `{artifact_dir}/test-report.md` as a derived view only |
32
- | Retrospective completion and result | `{artifact_dir}/retrospective-result.json` |
29
+ | Review findings and result | `{artifact_dir}/review-report.md` |
30
+ | Test semantics and native execution | `{artifact_dir}/test-report.md` |
31
+ | Terminal testing result | `{artifact_dir}/test-result.json` |
32
+ | Retrospective completion | `{artifact_dir}/retrospective-result.json` |
33
33
  | Durable architecture knowledge | `.prizmkit/prizm-docs/` |
34
34
  | Local commit | Git history and confirmed or authorized commit identity |
35
35
  | Current stage, orchestrator, and resume entry | Workflow state |
36
- | External orchestration progress | The external host's own checkpoint, never this state |
36
+ | External orchestration progress | External host checkpoint |
37
37
 
38
- Every consumer compares workflow state with authoritative artifacts and the current workspace. Missing or stale state is reconstructed from those sources and is never accepted as success by itself.
38
+ Every consumer compares workflow state with the skill-owned artifacts and current workspace. Missing or stale state is reconstructed from those sources and is never accepted as success by itself.
39
39
 
40
40
  ## Schema
41
41
 
@@ -45,7 +45,7 @@ Every consumer compares workflow state with authoritative artifacts and the curr
45
45
  "artifact_dir": ".prizmkit/specs/example",
46
46
  "orchestrator": "prizmkit-workflow",
47
47
  "stage": "test",
48
- "status": "TEST_PASS",
48
+ "status": "completed",
49
49
  "stage_result": "TEST_PASS",
50
50
  "completed_stages": ["plan", "implement", "code-review", "test"],
51
51
  "repair_scope": null,
@@ -59,88 +59,83 @@ Every consumer compares workflow state with authoritative artifacts and the curr
59
59
 
60
60
  | Field | Meaning |
61
61
  |---|---|
62
- | `schema_version` | State schema version. Current value is `1`. |
63
- | `artifact_dir` | The single generic requirement artifact root reused by every stage. |
64
- | `orchestrator` | `prizmkit-workflow`, another semantic coordinator identifier, or `null` for direct stage use. |
65
- | `stage` | The stage that most recently wrote state. |
66
- | `status` | Lifecycle progression status, distinct from the domain `stage_result`. |
67
- | `stage_result` | Domain result such as `PASS`, `NEEDS_FIXES`, `TEST_*`, `DOCS_UPDATED`, or `NO_DOC_CHANGE`. |
62
+ | `schema_version` | State schema version. |
63
+ | `artifact_dir` | Generic requirement artifact root reused by every stage. |
64
+ | `orchestrator` | Semantic coordinator identifier, or null for direct stage use. |
65
+ | `stage` | Stage that most recently wrote state. |
66
+ | `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`. |
68
68
  | `completed_stages` | Ordered stages completed for this requirement. |
69
- | `repair_scope` | `null`, `test-infrastructure`, `production`, `runtime`, `schema`, `dependency`, `public-interface`, or `unknown`. |
70
- | `repair_round` | Outer cross-stage repair round, from `0` through `3`. |
71
- | `next_stage` | Next semantic stage, or `null` after commit. |
72
- | `resume_from` | Exact atomic skill that can resume, or `null` after commit. |
69
+ | `repair_scope` | Optional caller-owned routing scope. The test skill reports high-risk repairs through `test-result.json` instead of scheduling another stage. |
70
+ | `repair_round` | Optional outer cross-stage repair round, from 0 through 3. It is not a test-internal repair counter. |
71
+ | `next_stage` | Next semantic stage, or null when stopped. |
72
+ | `resume_from` | Exact atomic skill that can resume, or null when none is selected. |
73
73
 
74
- ## Lifecycle and Verdict Mappings
74
+ `status` and `stage_result` are deliberately separate. Lifecycle status values must never be replaced with domain result values.
75
75
 
76
- The mandatory formal lifecycle is:
76
+ ## Lifecycle and Result Mappings
77
77
 
78
78
  ```text
79
79
  PLAN_READY
80
- → IMPLEMENTED
81
- → REVIEW_PASS
82
- → TEST_PASS
83
- → RETRO_COMPLETE
84
- → COMMIT_PENDING
85
- → COMMITTED
80
+ → IMPLEMENTED
81
+ → REVIEW_PASS
82
+ → TEST_PASS
83
+ → RETRO_COMPLETE
84
+ → COMMIT_PENDING
85
+ → COMMITTED
86
86
  ```
87
87
 
88
- No formal stage is silently optional. Domain evidence maps as follows:
88
+ No formal stage is silently optional. Domain artifacts map to workflow state as follows:
89
89
 
90
90
  ```text
91
- review-report final PASS → status=REVIEW_PASS, stage_result=PASS
92
- review-report final NEEDS_FIXES → status=REVIEW_NEEDS_FIXES, stage_result=NEEDS_FIXES
93
- validated verdict TEST_PASS → status=TEST_PASS, stage_result=TEST_PASS
94
- validated verdict TEST_FAIL → status=TEST_FAIL, stage_result=TEST_FAIL
95
- validated verdict TEST_BLOCKED → status=TEST_BLOCKED, stage_result=TEST_BLOCKED
96
- retrospective result DOCS_UPDATED → status=RETRO_COMPLETE, stage_result=DOCS_UPDATED
97
- retrospective result NO_DOC_CHANGE → status=RETRO_COMPLETE, stage_result=NO_DOC_CHANGE
91
+ plan PLAN_READY → status=completed, stage_result=PLAN_READY
92
+ plan PLAN_BLOCKED → status=failed, stage_result=PLAN_BLOCKED
93
+ implementation IMPLEMENTED → status=completed, stage_result=IMPLEMENTED
94
+ implementation repair/block → status=failed, stage_result=IMPLEMENT_REPAIR or IMPLEMENT_BLOCKED
95
+ review-report PASS → status=completed, stage_result=REVIEW_PASS
96
+ review-report NEEDS_FIXES → status=failed, stage_result=REVIEW_NEEDS_FIXES
97
+ test-result TEST_PASS → status=completed, stage_result=TEST_PASS
98
+ test-result TEST_NEEDS_FIXES → status=failed, stage_result=TEST_NEEDS_FIXES
99
+ 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
104
+ local commit confirmed → status=completed, stage_result=COMMITTED
105
+ commit blocked → status=failed, stage_result=COMMIT_BLOCKED
98
106
  ```
99
107
 
100
- `RETRO_COMPLETE` is the stable completion status. `DOCS_UPDATED` and `NO_DOC_CHANGE` are mutually exclusive retrospective results, not substitute statuses. A derived Markdown test report never establishes a `TEST_*` status without validated authoritative evidence.
108
+ `DOCS_UPDATED` and `NO_DOC_CHANGE` remain retrospective artifact `result` values. The workflow `stage_result` is the retrospective stage result `RETRO_COMPLETE`.
101
109
 
102
- ## Repair Routing
110
+ `TEST_PASS` requires both `test-report.md` and a consistent `test-result.json`. No manifest, attestation, evidence package, or test-internal checkpoint is part of this contract.
103
111
 
104
- ```text
105
- REVIEW_NEEDS_FIXES
106
- → implement
107
- → code-review
108
- → test
109
-
110
- TEST_FAIL with repair_scope=test-infrastructure
111
- → implement
112
- → test
112
+ ## Non-Pass Results and Routing Boundary
113
113
 
114
- TEST_FAIL with repair_scope=production|runtime|schema|dependency|public-interface
115
- → implement
116
- → code-review
117
- → test
114
+ `prizmkit-test` performs its own bounded failure repair and review loops before returning. The test skill never invokes another lifecycle stage.
118
115
 
119
- TEST_FAIL with repair_scope=unknown
120
- → conservative production route only when safe
121
- otherwise WORKFLOW_BLOCKED
116
+ ```text
117
+ TEST_NEEDS_FIXES
118
+ known correction or required delta review remains
119
+ → caller decides whether and how to arrange another stage
122
120
 
123
121
  TEST_BLOCKED
124
- never make speculative production edits
125
- interactive execution stops with a prizmkit-test resume entry
126
- a trusted headless host may perform bounded environment recovery, then records WORKFLOW_BLOCKED if unresolved
127
-
128
- RETRO_BLOCKED
129
- → WORKFLOW_BLOCKED
130
- WORKFLOW_BLOCKED
131
- → resume only after the recorded blocker is resolved
122
+ truth, input, safe environment, or reliable execution prevents a verdict
123
+ never make speculative production edits
124
+ caller or external host owns recovery policy
132
125
  ```
133
126
 
134
- The outer workflow permits at most three automatic repair rounds. These are cross-stage rounds (`repair_round` `0` through `3`). The code-review internal loop permits at most ten completed review rounds and is separate; review-internal repairs do not increment the outer counter.
127
+ A test result is not an AI CLI session classification. `TEST_NEEDS_FIXES` and `TEST_BLOCKED` must not be rewritten as crash or infrastructure failure merely because they stop lifecycle progression.
128
+
129
+ Any outer repair or continuation policy is independently owned by the caller and cannot alter the test report. The Main-Agent test review limit of ten rounds, independent Test Reviewer limit of five responses, and execution-failure repair limit of three rounds are internal to one test invocation and do not update outer counters.
135
130
 
136
131
  ## Orchestrator Ownership and Handoff
137
132
 
138
- 1. An atomic stage performs only its own stage, writes the truthful terminal result and `next_stage`, and returns control.
139
- 2. When `orchestrator` is non-null, only that orchestrator invokes the next skill. The atomic stage must not auto-invoke it again.
140
- 3. Direct stage use may report one deterministic next invocation but does not claim the next stage ran.
133
+ 1. An atomic stage performs only its own stage, writes its truthful result and artifact paths, and returns control.
134
+ 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.
141
136
  4. Every handoff preserves the same `artifact_dir`.
142
- 5. External automation invokes atomic stages directly and does not invoke `prizmkit-workflow` as a nested coordinator.
143
- 6. Workflow state never replaces or absorbs an external host's checkpoint.
137
+ 5. External automation invokes atomic stages directly and does not nest the composite workflow.
138
+ 6. Workflow state never replaces or absorbs an external host checkpoint.
144
139
 
145
140
  ## Commit Authorization
146
141
 
@@ -148,34 +143,32 @@ Interactive execution:
148
143
 
149
144
  ```text
150
145
  committer previews intended files and message
151
- → waits for explicit confirmation from the current user
146
+ → waits for explicit current-user confirmation
152
147
  → creates the local commit
153
148
  ```
154
149
 
155
150
  Trusted headless execution:
156
151
 
157
152
  ```text
158
- a trusted host explicitly authorizes the current local task commit
159
- → host injects mode=<host-defined-headless-mode>, owner=<trusted-host-identifier>,
160
- local_commit_authorized=true
153
+ trusted host explicitly authorizes the current local task commit
161
154
  → committer verifies gates and commits automatically
162
- no question or wait is permitted
155
+ remote publication remains separate
163
156
  ```
164
157
 
165
- A self-declared or otherwise untrusted headless context does not authorize a commit. Remote publication remains a separate host-runtime decision.
158
+ A self-declared or untrusted headless context does not authorize a commit.
166
159
 
167
160
  ## Recovery
168
161
 
169
162
  When state is missing, stale, or inconsistent:
170
163
 
171
- 1. Read `spec.md` and `plan.md` from `artifact_dir` only when they are not already available in current context.
172
- 2. Inspect task markers and the current workspace.
173
- 3. Read the latest review report and final result when needed to establish review authority.
174
- 4. Validate authoritative test evidence and `repair_scope`.
164
+ 1. Reuse current context, then read `spec.md` and `plan.md` only when needed.
165
+ 2. Inspect task markers and current workspace.
166
+ 3. Read the current review report when needed to establish review authority.
167
+ 4. Validate that `test-report.md` and terminal `test-result.json` exist, agree, and reflect the claimed result.
175
168
  5. Validate `retrospective-result.json` when retrospective is claimed complete.
176
169
  6. Verify the commit when commit is claimed complete.
177
- 7. When an external host is active, let that host validate its own checkpoint independently; never merge the schemas.
170
+ 7. Let an active external host validate its own checkpoint independently.
178
171
  8. Reconstruct the latest safe predecessor and report the reconstruction.
179
172
  9. Continue only from the first incomplete or invalid stage.
180
173
 
181
- Stale state never bypasses review, testing, retrospective, commit authorization, or external host checkpoint enforcement.
174
+ Stale state never bypasses review, testing, retrospective, commit authorization, or external checkpoint enforcement.