prizmkit 1.1.99 → 1.1.101

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 (321) hide show
  1. package/bin/create-prizmkit.js +4 -4
  2. package/bundled/VERSION.json +3 -3
  3. package/bundled/dev-pipeline/.env.example +3 -3
  4. package/bundled/dev-pipeline/README.md +110 -90
  5. package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
  6. package/bundled/dev-pipeline/cli.py +27 -0
  7. package/bundled/dev-pipeline/prizmkit_runtime/__init__.py +13 -0
  8. package/bundled/dev-pipeline/prizmkit_runtime/__main__.py +9 -0
  9. package/bundled/dev-pipeline/prizmkit_runtime/cli.py +193 -0
  10. package/bundled/dev-pipeline/prizmkit_runtime/commands.py +313 -0
  11. package/bundled/dev-pipeline/prizmkit_runtime/compat.py +32 -0
  12. package/bundled/dev-pipeline/prizmkit_runtime/config.py +410 -0
  13. package/bundled/dev-pipeline/prizmkit_runtime/daemon.py +478 -0
  14. package/bundled/dev-pipeline/prizmkit_runtime/gitops.py +734 -0
  15. package/bundled/dev-pipeline/prizmkit_runtime/heartbeat.py +256 -0
  16. package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +109 -0
  17. package/bundled/dev-pipeline/prizmkit_runtime/paths.py +110 -0
  18. package/bundled/dev-pipeline/prizmkit_runtime/processes.py +373 -0
  19. package/bundled/dev-pipeline/prizmkit_runtime/reset.py +389 -0
  20. package/bundled/dev-pipeline/prizmkit_runtime/runner_bookkeeping.py +51 -0
  21. package/bundled/dev-pipeline/prizmkit_runtime/runner_classification.py +179 -0
  22. package/bundled/dev-pipeline/prizmkit_runtime/runner_models.py +345 -0
  23. package/bundled/dev-pipeline/prizmkit_runtime/runner_prompts.py +118 -0
  24. package/bundled/dev-pipeline/prizmkit_runtime/runner_recovery.py +187 -0
  25. package/bundled/dev-pipeline/prizmkit_runtime/runner_status.py +147 -0
  26. package/bundled/dev-pipeline/prizmkit_runtime/runners.py +422 -0
  27. package/bundled/dev-pipeline/prizmkit_runtime/sessions.py +552 -0
  28. package/bundled/dev-pipeline/prizmkit_runtime/status.py +71 -0
  29. package/bundled/dev-pipeline/scripts/check-session-status.py +74 -1
  30. package/bundled/dev-pipeline/scripts/continuation.py +374 -0
  31. package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +64 -52
  32. package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +35 -25
  33. package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +2 -2
  34. package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +15 -20
  35. package/bundled/dev-pipeline/scripts/parse-stream-progress.py +185 -16
  36. package/bundled/dev-pipeline/scripts/update-bug-status.py +214 -6
  37. package/bundled/dev-pipeline/scripts/update-feature-status.py +237 -6
  38. package/bundled/dev-pipeline/scripts/update-refactor-status.py +214 -6
  39. package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +8 -2
  40. package/bundled/dev-pipeline/templates/bootstrap-prompt.md +4 -0
  41. package/bundled/dev-pipeline/templates/bootstrap-tier1.md +14 -5
  42. package/bundled/dev-pipeline/templates/bootstrap-tier2.md +16 -6
  43. package/bundled/dev-pipeline/templates/bootstrap-tier3.md +16 -6
  44. package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +1 -1
  45. package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +3 -3
  46. package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +2 -0
  47. package/bundled/dev-pipeline/templates/sections/log-size-awareness.md +13 -69
  48. package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +15 -7
  49. package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +42 -29
  50. package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +41 -39
  51. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-agent.md +4 -0
  52. package/bundled/dev-pipeline/templates/sections/test-failure-recovery-lite.md +4 -0
  53. package/bundled/dev-pipeline/templates/session-status-schema.json +1 -1
  54. package/bundled/dev-pipeline/tests/conftest.py +1 -0
  55. package/bundled/dev-pipeline/tests/test_auto_skip.py +932 -0
  56. package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +207 -0
  57. package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +100 -0
  58. package/bundled/dev-pipeline/tests/test_generate_refactor_prompt.py +43 -0
  59. package/bundled/dev-pipeline/tests/test_python_runner_parity.py +1138 -0
  60. package/bundled/dev-pipeline/tests/test_unified_cli.py +1045 -0
  61. package/bundled/skills/_metadata.json +1 -1
  62. package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +29 -34
  63. package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +6 -5
  64. package/bundled/skills/feature-pipeline-launcher/SKILL.md +29 -35
  65. package/bundled/skills/feature-pipeline-launcher/references/configuration.md +7 -6
  66. package/bundled/skills/feature-workflow/SKILL.md +3 -6
  67. package/bundled/skills/recovery-workflow/SKILL.md +23 -32
  68. package/bundled/skills/refactor-pipeline-launcher/SKILL.md +29 -35
  69. package/bundled/skills/refactor-pipeline-launcher/references/configuration.md +7 -6
  70. package/bundled/skills/refactor-workflow/SKILL.md +3 -6
  71. package/bundled/templates/hooks/commit-intent.json +2 -2
  72. package/bundled/templates/hooks/diff-prizm-docs.py +226 -0
  73. package/bundled/templates/hooks/prizm-pre-commit.py +45 -0
  74. package/bundled/templates/hooks/validate-prizm-docs.py +240 -0
  75. package/package.json +1 -1
  76. package/src/config.js +33 -12
  77. package/src/index.js +3 -6
  78. package/src/manifest.js +3 -2
  79. package/src/metadata.js +7 -18
  80. package/src/prompts.js +0 -12
  81. package/src/runtimes.js +18 -11
  82. package/src/scaffold.js +133 -116
  83. package/src/upgrade.js +1 -1
  84. package/bundled/dev-pipeline/launch-bugfix-daemon.sh +0 -500
  85. package/bundled/dev-pipeline/launch-feature-daemon.sh +0 -657
  86. package/bundled/dev-pipeline/launch-refactor-daemon.sh +0 -502
  87. package/bundled/dev-pipeline/lib/branch.sh +0 -326
  88. package/bundled/dev-pipeline/lib/common.sh +0 -1257
  89. package/bundled/dev-pipeline/lib/heartbeat.sh +0 -469
  90. package/bundled/dev-pipeline/reset-bug.sh +0 -395
  91. package/bundled/dev-pipeline/reset-feature.sh +0 -406
  92. package/bundled/dev-pipeline/reset-refactor.sh +0 -393
  93. package/bundled/dev-pipeline/run-bugfix.sh +0 -1315
  94. package/bundled/dev-pipeline/run-feature.sh +0 -1602
  95. package/bundled/dev-pipeline/run-recovery.sh +0 -648
  96. package/bundled/dev-pipeline/run-refactor.sh +0 -1348
  97. package/bundled/dev-pipeline/scripts/monitor-log.sh +0 -104
  98. package/bundled/dev-pipeline/tests/test-path-resolution.sh +0 -100
  99. package/bundled/dev-pipeline-windows/.env.example +0 -36
  100. package/bundled/dev-pipeline-windows/README.md +0 -30
  101. package/bundled/dev-pipeline-windows/SCHEMA_ANALYSIS.md +0 -533
  102. package/bundled/dev-pipeline-windows/assets/feature-list-example.json +0 -146
  103. package/bundled/dev-pipeline-windows/assets/prizm-dev-team-integration.md +0 -137
  104. package/bundled/dev-pipeline-windows/launch-bugfix-daemon.ps1 +0 -9
  105. package/bundled/dev-pipeline-windows/launch-feature-daemon.ps1 +0 -9
  106. package/bundled/dev-pipeline-windows/launch-refactor-daemon.ps1 +0 -9
  107. package/bundled/dev-pipeline-windows/lib/branch.ps1 +0 -235
  108. package/bundled/dev-pipeline-windows/lib/common.ps1 +0 -829
  109. package/bundled/dev-pipeline-windows/lib/daemon.ps1 +0 -140
  110. package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +0 -967
  111. package/bundled/dev-pipeline-windows/lib/reset.ps1 +0 -87
  112. package/bundled/dev-pipeline-windows/reset-bug.ps1 +0 -9
  113. package/bundled/dev-pipeline-windows/reset-feature.ps1 +0 -9
  114. package/bundled/dev-pipeline-windows/reset-refactor.ps1 +0 -9
  115. package/bundled/dev-pipeline-windows/run-bugfix.ps1 +0 -9
  116. package/bundled/dev-pipeline-windows/run-feature.ps1 +0 -9
  117. package/bundled/dev-pipeline-windows/run-recovery.ps1 +0 -179
  118. package/bundled/dev-pipeline-windows/run-refactor.ps1 +0 -9
  119. package/bundled/dev-pipeline-windows/scripts/check-session-status.py +0 -228
  120. package/bundled/dev-pipeline-windows/scripts/detect-stuck.py +0 -530
  121. package/bundled/dev-pipeline-windows/scripts/generate-bootstrap-prompt.py +0 -2282
  122. package/bundled/dev-pipeline-windows/scripts/generate-bugfix-prompt.py +0 -767
  123. package/bundled/dev-pipeline-windows/scripts/generate-recovery-prompt.py +0 -805
  124. package/bundled/dev-pipeline-windows/scripts/generate-refactor-prompt.py +0 -845
  125. package/bundled/dev-pipeline-windows/scripts/init-bugfix-pipeline.py +0 -316
  126. package/bundled/dev-pipeline-windows/scripts/init-dev-team.py +0 -134
  127. package/bundled/dev-pipeline-windows/scripts/init-pipeline.py +0 -382
  128. package/bundled/dev-pipeline-windows/scripts/init-refactor-pipeline.py +0 -399
  129. package/bundled/dev-pipeline-windows/scripts/monitor-log.ps1 +0 -102
  130. package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +0 -1232
  131. package/bundled/dev-pipeline-windows/scripts/patch-completion-notes.py +0 -191
  132. package/bundled/dev-pipeline-windows/scripts/prizmkit-test-gate.py +0 -446
  133. package/bundled/dev-pipeline-windows/scripts/update-bug-status.py +0 -913
  134. package/bundled/dev-pipeline-windows/scripts/update-checkpoint.py +0 -173
  135. package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +0 -1558
  136. package/bundled/dev-pipeline-windows/scripts/update-refactor-status.py +0 -1119
  137. package/bundled/dev-pipeline-windows/scripts/utils.py +0 -542
  138. package/bundled/dev-pipeline-windows/templates/agent-prompts/critic-plan-challenge.md +0 -7
  139. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-fix.md +0 -7
  140. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +0 -65
  141. package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-resume.md +0 -5
  142. package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +0 -7
  143. package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +0 -73
  144. package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +0 -589
  145. package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +0 -710
  146. package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +0 -791
  147. package/bundled/dev-pipeline-windows/templates/bug-fix-list-schema.json +0 -263
  148. package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +0 -326
  149. package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +0 -237
  150. package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +0 -340
  151. package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +0 -270
  152. package/bundled/dev-pipeline-windows/templates/sections/ac-verification-checklist.md +0 -7
  153. package/bundled/dev-pipeline-windows/templates/sections/checkpoint-system.md +0 -91
  154. package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +0 -34
  155. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-agent.md +0 -10
  156. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-full.md +0 -12
  157. package/bundled/dev-pipeline-windows/templates/sections/critical-paths-lite.md +0 -7
  158. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-agent.md +0 -8
  159. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-full.md +0 -9
  160. package/bundled/dev-pipeline-windows/templates/sections/directory-convention-lite.md +0 -6
  161. package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +0 -21
  162. package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +0 -21
  163. package/bundled/dev-pipeline-windows/templates/sections/log-size-awareness.md +0 -78
  164. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +0 -283
  165. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +0 -112
  166. package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +0 -168
  167. package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +0 -82
  168. package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +0 -75
  169. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +0 -23
  170. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +0 -14
  171. package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +0 -19
  172. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +0 -63
  173. package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +0 -42
  174. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +0 -44
  175. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +0 -59
  176. package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +0 -39
  177. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +0 -27
  178. package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +0 -27
  179. package/bundled/dev-pipeline-windows/templates/sections/phase-prizmkit-test.md +0 -39
  180. package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +0 -35
  181. package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +0 -35
  182. package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +0 -73
  183. package/bundled/dev-pipeline-windows/templates/sections/phase0-init.md +0 -13
  184. package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +0 -21
  185. package/bundled/dev-pipeline-windows/templates/sections/session-context.md +0 -5
  186. package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +0 -6
  187. package/bundled/dev-pipeline-windows/templates/sections/task-contract.md +0 -34
  188. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-agent.md +0 -48
  189. package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-lite.md +0 -48
  190. package/bundled/dev-pipeline-windows/templates/session-status-schema.json +0 -83
  191. package/bundled/skills-windows/app-planner/SKILL.md +0 -296
  192. package/bundled/skills-windows/app-planner/assets/app-design-guide.md +0 -101
  193. package/bundled/skills-windows/app-planner/references/architecture-decisions.md +0 -52
  194. package/bundled/skills-windows/app-planner/references/brainstorm-guide.md +0 -101
  195. package/bundled/skills-windows/app-planner/references/frontend-design-guide.md +0 -71
  196. package/bundled/skills-windows/app-planner/references/infrastructure-convention-discovery.md +0 -108
  197. package/bundled/skills-windows/app-planner/references/project-brief-guide.md +0 -82
  198. package/bundled/skills-windows/app-planner/references/project-conventions-discovery.md +0 -59
  199. package/bundled/skills-windows/app-planner/references/project-state-detection.md +0 -90
  200. package/bundled/skills-windows/app-planner/references/red-team-checklist.md +0 -40
  201. package/bundled/skills-windows/app-planner/references/rules/backend/derivation-rules.md +0 -619
  202. package/bundled/skills-windows/app-planner/references/rules/backend/fixed-rules.md +0 -285
  203. package/bundled/skills-windows/app-planner/references/rules/backend/question-bank.md +0 -249
  204. package/bundled/skills-windows/app-planner/references/rules/backend/question-manifest.json +0 -46
  205. package/bundled/skills-windows/app-planner/references/rules/backend/template.md +0 -173
  206. package/bundled/skills-windows/app-planner/references/rules/database/derivation-rules.md +0 -382
  207. package/bundled/skills-windows/app-planner/references/rules/database/fixed-rules.md +0 -211
  208. package/bundled/skills-windows/app-planner/references/rules/database/question-bank.md +0 -184
  209. package/bundled/skills-windows/app-planner/references/rules/database/question-manifest.json +0 -39
  210. package/bundled/skills-windows/app-planner/references/rules/database/template.md +0 -158
  211. package/bundled/skills-windows/app-planner/references/rules/frontend/derivation-rules.md +0 -820
  212. package/bundled/skills-windows/app-planner/references/rules/frontend/fixed-rules.md +0 -188
  213. package/bundled/skills-windows/app-planner/references/rules/frontend/question-bank.md +0 -319
  214. package/bundled/skills-windows/app-planner/references/rules/frontend/question-manifest.json +0 -51
  215. package/bundled/skills-windows/app-planner/references/rules/frontend/template.md +0 -339
  216. package/bundled/skills-windows/app-planner/references/rules/mobile/derivation-rules.md +0 -649
  217. package/bundled/skills-windows/app-planner/references/rules/mobile/fixed-rules.md +0 -290
  218. package/bundled/skills-windows/app-planner/references/rules/mobile/question-bank.md +0 -232
  219. package/bundled/skills-windows/app-planner/references/rules/mobile/question-manifest.json +0 -47
  220. package/bundled/skills-windows/app-planner/references/rules/mobile/template.md +0 -175
  221. package/bundled/skills-windows/app-planner/references/rules-configuration.md +0 -46
  222. package/bundled/skills-windows/bug-fix-workflow/SKILL.md +0 -379
  223. package/bundled/skills-windows/bug-fix-workflow/references/bug-diagnosis.md +0 -41
  224. package/bundled/skills-windows/bug-planner/SKILL.md +0 -402
  225. package/bundled/skills-windows/bug-planner/assets/bug-confirmation-template.md +0 -43
  226. package/bundled/skills-windows/bug-planner/references/critic-and-verification.md +0 -44
  227. package/bundled/skills-windows/bug-planner/references/error-recovery.md +0 -73
  228. package/bundled/skills-windows/bug-planner/references/input-formats.md +0 -53
  229. package/bundled/skills-windows/bug-planner/references/schema-validation.md +0 -25
  230. package/bundled/skills-windows/bug-planner/references/severity-rules.md +0 -16
  231. package/bundled/skills-windows/bug-planner/scripts/validate-bug-list.py +0 -322
  232. package/bundled/skills-windows/bugfix-pipeline-launcher/SKILL.md +0 -304
  233. package/bundled/skills-windows/bugfix-pipeline-launcher/references/configuration.md +0 -84
  234. package/bundled/skills-windows/feature-pipeline-launcher/SKILL.md +0 -381
  235. package/bundled/skills-windows/feature-pipeline-launcher/references/configuration.md +0 -67
  236. package/bundled/skills-windows/feature-pipeline-launcher/scripts/preflight-check.py +0 -462
  237. package/bundled/skills-windows/feature-planner/SKILL.md +0 -397
  238. package/bundled/skills-windows/feature-planner/assets/evaluation-guide.md +0 -64
  239. package/bundled/skills-windows/feature-planner/assets/planning-guide.md +0 -214
  240. package/bundled/skills-windows/feature-planner/references/browser-interaction.md +0 -59
  241. package/bundled/skills-windows/feature-planner/references/completeness-review.md +0 -57
  242. package/bundled/skills-windows/feature-planner/references/decomposition-patterns.md +0 -75
  243. package/bundled/skills-windows/feature-planner/references/error-recovery.md +0 -90
  244. package/bundled/skills-windows/feature-planner/references/incremental-feature-planning.md +0 -112
  245. package/bundled/skills-windows/feature-planner/references/new-project-planning.md +0 -85
  246. package/bundled/skills-windows/feature-planner/scripts/validate-and-generate.py +0 -1020
  247. package/bundled/skills-windows/feature-workflow/SKILL.md +0 -374
  248. package/bundled/skills-windows/feature-workflow/references/brainstorm-guide.md +0 -137
  249. package/bundled/skills-windows/prizm-kit/SKILL.md +0 -93
  250. package/bundled/skills-windows/prizmkit-code-review/SKILL.md +0 -161
  251. package/bundled/skills-windows/prizmkit-code-review/references/dev-agent-prompt.md +0 -30
  252. package/bundled/skills-windows/prizmkit-code-review/references/review-report-template.md +0 -31
  253. package/bundled/skills-windows/prizmkit-code-review/references/reviewer-agent-prompt.md +0 -66
  254. package/bundled/skills-windows/prizmkit-code-review/scripts/check_loop.py +0 -186
  255. package/bundled/skills-windows/prizmkit-committer/SKILL.md +0 -89
  256. package/bundled/skills-windows/prizmkit-deploy/SKILL.md +0 -444
  257. package/bundled/skills-windows/prizmkit-deploy/references/ci-cd-workflows.md +0 -115
  258. package/bundled/skills-windows/prizmkit-deploy/references/cloud-platform-deploy.md +0 -93
  259. package/bundled/skills-windows/prizmkit-deploy/references/data-safety-examples.md +0 -120
  260. package/bundled/skills-windows/prizmkit-deploy/references/database-setup.md +0 -46
  261. package/bundled/skills-windows/prizmkit-deploy/references/deploy-config-schema.md +0 -148
  262. package/bundled/skills-windows/prizmkit-deploy/references/deploy-history-schema.md +0 -62
  263. package/bundled/skills-windows/prizmkit-deploy/references/deployment-modes.md +0 -50
  264. package/bundled/skills-windows/prizmkit-deploy/references/direct-upload.md +0 -26
  265. package/bundled/skills-windows/prizmkit-deploy/references/dns-setup.md +0 -42
  266. package/bundled/skills-windows/prizmkit-deploy/references/docker-deploy.md +0 -31
  267. package/bundled/skills-windows/prizmkit-deploy/references/firewall-setup.md +0 -37
  268. package/bundled/skills-windows/prizmkit-deploy/references/live-validation-notes.md +0 -21
  269. package/bundled/skills-windows/prizmkit-deploy/references/nginx-blue-green.md +0 -59
  270. package/bundled/skills-windows/prizmkit-deploy/references/ssh-bootstrap-flow.md +0 -49
  271. package/bundled/skills-windows/prizmkit-deploy/references/ssh-execution-flow.md +0 -41
  272. package/bundled/skills-windows/prizmkit-deploy/references/ssh-takeover.md +0 -20
  273. package/bundled/skills-windows/prizmkit-deploy/references/ssl-setup.md +0 -56
  274. package/bundled/skills-windows/prizmkit-implement/SKILL.md +0 -71
  275. package/bundled/skills-windows/prizmkit-init/SKILL.md +0 -356
  276. package/bundled/skills-windows/prizmkit-init/assets/project-brief-template.md +0 -82
  277. package/bundled/skills-windows/prizmkit-init/references/config-schema.md +0 -70
  278. package/bundled/skills-windows/prizmkit-init/references/rules/layer-detection.md +0 -41
  279. package/bundled/skills-windows/prizmkit-init/references/tech-stack-catalog.md +0 -13
  280. package/bundled/skills-windows/prizmkit-init/references/update-supplement.md +0 -9
  281. package/bundled/skills-windows/prizmkit-plan/SKILL.md +0 -102
  282. package/bundled/skills-windows/prizmkit-plan/assets/plan-template.md +0 -115
  283. package/bundled/skills-windows/prizmkit-plan/assets/spec-template.md +0 -73
  284. package/bundled/skills-windows/prizmkit-plan/references/clarify-guide.md +0 -67
  285. package/bundled/skills-windows/prizmkit-plan/references/examples.md +0 -85
  286. package/bundled/skills-windows/prizmkit-plan/references/verification-checklist.md +0 -60
  287. package/bundled/skills-windows/prizmkit-prizm-docs/SKILL.md +0 -129
  288. package/bundled/skills-windows/prizmkit-prizm-docs/assets/prizm-docs-format.md +0 -613
  289. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-init.md +0 -45
  290. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-rebuild.md +0 -15
  291. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-status.md +0 -14
  292. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-update.md +0 -19
  293. package/bundled/skills-windows/prizmkit-prizm-docs/references/op-validate.md +0 -17
  294. package/bundled/skills-windows/prizmkit-retrospective/SKILL.md +0 -87
  295. package/bundled/skills-windows/prizmkit-retrospective/references/knowledge-injection-steps.md +0 -50
  296. package/bundled/skills-windows/prizmkit-retrospective/references/structural-sync-steps.md +0 -43
  297. package/bundled/skills-windows/prizmkit-test/SKILL.md +0 -227
  298. package/bundled/skills-windows/prizmkit-test/references/boundary-coverage-protocol.md +0 -220
  299. package/bundled/skills-windows/prizmkit-test/references/examples.md +0 -143
  300. package/bundled/skills-windows/prizmkit-test/references/service-boundary-test-catalog.md +0 -225
  301. package/bundled/skills-windows/prizmkit-test/references/test-generation-steps.md +0 -109
  302. package/bundled/skills-windows/prizmkit-test/references/test-report-template.md +0 -111
  303. package/bundled/skills-windows/prizmkit-test/scripts/validate_boundary_report.py +0 -347
  304. package/bundled/skills-windows/recovery-workflow/SKILL.md +0 -355
  305. package/bundled/skills-windows/recovery-workflow/evals/evals.json +0 -46
  306. package/bundled/skills-windows/recovery-workflow/references/detection.md +0 -58
  307. package/bundled/skills-windows/recovery-workflow/scripts/detect-recovery-state.py +0 -544
  308. package/bundled/skills-windows/refactor-pipeline-launcher/SKILL.md +0 -346
  309. package/bundled/skills-windows/refactor-pipeline-launcher/references/configuration.md +0 -72
  310. package/bundled/skills-windows/refactor-planner/SKILL.md +0 -398
  311. package/bundled/skills-windows/refactor-planner/assets/planning-guide.md +0 -292
  312. package/bundled/skills-windows/refactor-planner/references/behavior-preservation.md +0 -301
  313. package/bundled/skills-windows/refactor-planner/references/fast-path.md +0 -59
  314. package/bundled/skills-windows/refactor-planner/references/planning-phases.md +0 -135
  315. package/bundled/skills-windows/refactor-planner/references/refactor-scoping-guide.md +0 -221
  316. package/bundled/skills-windows/refactor-planner/scripts/validate-and-generate-refactor.py +0 -858
  317. package/bundled/skills-windows/refactor-workflow/SKILL.md +0 -343
  318. package/bundled/skills-windows/refactor-workflow/references/brainstorm-guide.md +0 -116
  319. package/bundled/templates/hooks/diff-prizm-docs.sh +0 -158
  320. package/bundled/templates/hooks/prizm-pre-commit.sh +0 -108
  321. package/bundled/templates/hooks/validate-prizm-docs.sh +0 -139
@@ -1,8 +1,10 @@
1
1
  """Tests for generate-bootstrap-prompt.py core functions."""
2
2
 
3
+ import json
3
4
  import os
4
5
  import re
5
6
  import time
7
+ from argparse import Namespace
6
8
  from pathlib import Path
7
9
 
8
10
  from generate_bootstrap_prompt import (
@@ -16,9 +18,13 @@ from generate_bootstrap_prompt import (
16
18
  process_conditional_blocks,
17
19
  process_mode_blocks,
18
20
  assemble_sections,
21
+ build_replacements,
19
22
  generate_checkpoint_definition,
20
23
  merge_checkpoint_state,
24
+ load_log_size_section,
25
+ main as generate_bootstrap_main,
21
26
  )
27
+ from continuation import append_continuation_handoff, checkpoint_cursor
22
28
 
23
29
 
24
30
  def scoped_report_text(verdict="PASS", boundary_missing=0,
@@ -172,6 +178,107 @@ class TestFormatGlobalContext:
172
178
  assert "**lang**: TypeScript" in result
173
179
 
174
180
 
181
+ class TestExplicitProjectRoot:
182
+ def test_build_replacements_uses_cli_project_root_for_rendered_paths(self, tmp_path, monkeypatch):
183
+ monkeypatch.setenv("PRIZMKIT_PLATFORM", "claude")
184
+ execution_root = tmp_path / "worktree"
185
+ main_checkout = tmp_path / "main"
186
+ execution_root.mkdir()
187
+ main_checkout.mkdir()
188
+ (execution_root / ".prizmkit" / "plans").mkdir(parents=True)
189
+ (execution_root / ".prizmkit" / "plans" / "project-brief.md").write_text("worktree brief", encoding="utf-8")
190
+ args = Namespace(
191
+ feature_list=str(main_checkout / ".prizmkit" / "plans" / "feature-list.json"),
192
+ feature_id="F-001",
193
+ session_id="session-1",
194
+ run_id="run-1",
195
+ retry_count="0",
196
+ resume_phase="null",
197
+ state_dir=str(main_checkout / ".prizmkit" / "state" / "features"),
198
+ output=str(main_checkout / ".prizmkit" / "state" / "features" / "F-001" / "sessions" / "session-1" / "bootstrap-prompt.md"),
199
+ template=None,
200
+ mode=None,
201
+ critic=None,
202
+ extract_baselines=False,
203
+ project_root=str(execution_root),
204
+ )
205
+ feature = {"id": "F-001", "title": "Worktree Prompt", "estimated_complexity": "medium"}
206
+
207
+ replacements, _resume, _browser_enabled, _browser_tool = build_replacements(
208
+ args,
209
+ feature,
210
+ [feature],
211
+ {},
212
+ str(main_checkout / "dev-pipeline" / "scripts"),
213
+ )
214
+
215
+ assert replacements["{{PROJECT_ROOT}}"] == str(execution_root.resolve())
216
+ assert replacements["{{SESSION_STATUS_PATH}}"] == str(
217
+ main_checkout / ".prizmkit" / "state" / "features" / "F-001" /
218
+ "sessions" / "session-1" / "session-status.json"
219
+ )
220
+ assert not replacements["{{SESSION_STATUS_PATH}}"].startswith(str(execution_root.resolve()))
221
+ assert replacements["{{PROJECT_BRIEF}}"] == "worktree brief"
222
+ assert replacements["{{DEV_SUBAGENT_PATH}}"].startswith(str(execution_root.resolve()))
223
+
224
+
225
+ def test_main_writes_checkpoint_under_cli_project_root_and_status_under_state_dir(self, tmp_path, monkeypatch):
226
+ monkeypatch.setenv("PRIZMKIT_PLATFORM", "claude")
227
+ execution_root = tmp_path / "worktree"
228
+ main_checkout = tmp_path / "main"
229
+ pipeline_root = Path(__file__).resolve().parents[1]
230
+ feature_list = main_checkout / ".prizmkit" / "plans" / "feature-list.json"
231
+ state_dir = main_checkout / ".prizmkit" / "state" / "features"
232
+ output_path = state_dir / "F-001" / "sessions" / "session-1" / "bootstrap-prompt.md"
233
+ feature_list.parent.mkdir(parents=True)
234
+ state_dir.mkdir(parents=True)
235
+ execution_root.mkdir(parents=True)
236
+ (execution_root / ".claude" / "agents").mkdir(parents=True)
237
+ (execution_root / ".claude" / "agents" / "prizm-dev-team-dev.md").write_text("dev", encoding="utf-8")
238
+ (execution_root / ".claude" / "agents" / "prizm-dev-team-reviewer.md").write_text("reviewer", encoding="utf-8")
239
+ feature_list.write_text(
240
+ json.dumps({"features": [{"id": "F-001", "title": "Worktree Prompt", "estimated_complexity": "medium", "status": "pending"}]}),
241
+ encoding="utf-8",
242
+ )
243
+
244
+ monkeypatch.setattr(
245
+ "sys.argv",
246
+ [
247
+ "generate-bootstrap-prompt.py",
248
+ "--feature-list",
249
+ str(feature_list),
250
+ "--feature-id",
251
+ "F-001",
252
+ "--session-id",
253
+ "session-1",
254
+ "--run-id",
255
+ "run-1",
256
+ "--retry-count",
257
+ "0",
258
+ "--resume-phase",
259
+ "null",
260
+ "--state-dir",
261
+ str(state_dir),
262
+ "--project-root",
263
+ str(execution_root),
264
+ "--output",
265
+ str(output_path),
266
+ "--template",
267
+ str(pipeline_root / "templates" / "bootstrap-tier1.md"),
268
+ ],
269
+ )
270
+
271
+ try:
272
+ generate_bootstrap_main()
273
+ except SystemExit as exc:
274
+ assert exc.code == 0
275
+
276
+ main_checkpoint = main_checkout / ".prizmkit" / "specs" / "001-worktree-prompt" / "workflow-checkpoint.json"
277
+ rendered = output_path.read_text(encoding="utf-8")
278
+ assert not main_checkpoint.exists()
279
+ assert str(execution_root.resolve()) in rendered
280
+
281
+
175
282
  # ---------------------------------------------------------------------------
176
283
  # get_completed_dependencies
177
284
  # ---------------------------------------------------------------------------
@@ -656,3 +763,103 @@ class TestScopedFeatureTestGate:
656
763
  merged = merge_checkpoint_state(existing, fresh, str(tmp_path))
657
764
 
658
765
  assert merged["steps"][0]["status"] == "pending"
766
+
767
+
768
+ # ---------------------------------------------------------------------------
769
+ # Active compaction harness rollback
770
+ # ---------------------------------------------------------------------------
771
+
772
+ class TestHeadlessRecoveryReframing:
773
+ def test_log_size_awareness_is_passive_checkpoint_guidance(self):
774
+ content = load_log_size_section(str(Path("dev-pipeline/scripts").resolve()))
775
+
776
+ assert "Session Log Budget Awareness" in content
777
+ assert "passive checkpoint guidance" in content
778
+ assert "durable checkpoints and artifacts" in content
779
+ assert "fresh continuation session" in content
780
+ assert "optional interactive convenience only" in content
781
+ assert "COMPACT_NEEDED" not in content
782
+ assert "monitor-log" not in content
783
+ assert "background monitoring subagent" not in content
784
+ assert "Execute `/compact`" not in content
785
+ assert "run `/compact`" not in content.lower()
786
+
787
+ def test_assembled_prompts_do_not_spawn_log_monitor_or_require_compact(self):
788
+ sections_dir = Path("dev-pipeline/templates/sections").resolve()
789
+
790
+ for mode in ("lite", "standard", "full"):
791
+ rendered = "\n".join(
792
+ section for _name, section in assemble_sections(
793
+ mode, str(sections_dir), init_done=True, is_resume=False,
794
+ critic_enabled=False, browser_enabled=False,
795
+ )
796
+ )
797
+ assert "Headless recovery must rely on durable checkpoints" in rendered
798
+ assert "fresh continuation session" in rendered
799
+ assert "monitor-log" not in rendered
800
+ assert "COMPACT_NEEDED" not in rendered
801
+ assert "log-size monitor" not in rendered
802
+ assert "The log-size monitor is the only allowed" not in rendered
803
+ assert "Run this command and keep it running" not in rendered
804
+ assert "Execute `/compact`" not in rendered
805
+ assert "run `/compact` after" not in rendered
806
+
807
+
808
+ # ---------------------------------------------------------------------------
809
+ # continuation handoff
810
+ # ---------------------------------------------------------------------------
811
+
812
+ class TestContinuationHandoff:
813
+ def test_addendum_and_summary_include_required_context(self, tmp_path):
814
+ args = Namespace(
815
+ output=str(tmp_path / ".prizmkit/state/features/F-123/sessions/F-123-new/bootstrap-prompt.md"),
816
+ state_dir=str(tmp_path / ".prizmkit/state/features"),
817
+ continuation_mode="context_overflow",
818
+ previous_session_id="F-123-old",
819
+ continuation_count="2",
820
+ context_overflow_count="2",
821
+ active_dev_branch="dev/F-123",
822
+ base_branch="main",
823
+ continuation_summary_path="",
824
+ )
825
+ checkpoint = {"steps": [
826
+ {"id": "S01", "skill": "test-baseline", "status": "completed"},
827
+ {"id": "S02", "skill": "context-snapshot", "status": "skipped"},
828
+ {"id": "S03", "skill": "prizmkit-implement", "status": "pending"},
829
+ ]}
830
+
831
+ rendered = append_continuation_handoff(
832
+ "NORMAL BOOTSTRAP", args, str(tmp_path), "feature", "F-123",
833
+ "123-continuation", checkpoint,
834
+ )
835
+
836
+ assert rendered.startswith("NORMAL BOOTSTRAP")
837
+ assert "## Continuation Addendum" in rendered
838
+ assert "This is an automatic continuation after context overflow." in rendered
839
+ assert "This is a fresh headless AI CLI session for the same task." in rendered
840
+ assert "Continue on the current branch/worktree." in rendered
841
+ assert "Do not reset, clean, switch branches, or discard work." in rendered
842
+ assert "Start with `git status` and `git diff`." in rendered
843
+ assert "Treat completed/skipped checkpoint steps as already done." in rendered
844
+ assert "Do not read the previous full `session.log` unless explicitly necessary." in rendered
845
+ assert "prefer synthesized artifacts and summaries over logs" in rendered
846
+ assert "Do not attempt `/compact` as the recovery mechanism." in rendered
847
+ assert ".prizmkit/specs/123-continuation/workflow-checkpoint.json" in rendered
848
+ assert ".prizmkit/state/features/F-123/sessions/F-123-new/logs/session.log" in rendered
849
+ assert ".prizmkit/state/features/F-123/sessions/F-123-new/logs/progress.json" in rendered
850
+ assert ".prizmkit/state/features/F-123/sessions/F-123-new/logs/ai.pid" in rendered
851
+
852
+ summary = tmp_path / ".prizmkit/specs/123-continuation/continuation-summary.md"
853
+ assert summary.exists()
854
+ summary_text = summary.read_text(encoding="utf-8")
855
+ assert "Previous session id: F-123-old" in summary_text
856
+ assert "First pending/in-progress checkpoint step: S03 (prizmkit-implement)" in summary_text
857
+ assert "Workflow checkpoint: .prizmkit/specs/123-continuation/workflow-checkpoint.json" in summary_text
858
+
859
+ def test_checkpoint_cursor_prefers_in_progress_before_pending(self):
860
+ checkpoint = {"steps": [
861
+ {"id": "S01", "skill": "done", "status": "completed"},
862
+ {"id": "S02", "skill": "active", "status": "in_progress"},
863
+ {"id": "S03", "skill": "later", "status": "pending"},
864
+ ]}
865
+ assert checkpoint_cursor(checkpoint)["first_cursor"] == "S02 (active)"
@@ -1,6 +1,10 @@
1
1
  """Tests for generate-bugfix-prompt.py core functions."""
2
2
 
3
+ from argparse import Namespace
4
+ from pathlib import Path
5
+
3
6
  from generate_bugfix_prompt import (
7
+ build_replacements,
4
8
  find_bug,
5
9
  format_acceptance_criteria,
6
10
  format_global_context,
@@ -8,7 +12,9 @@ from generate_bugfix_prompt import (
8
12
  format_environment,
9
13
  process_conditional_blocks,
10
14
  render_template,
15
+ load_log_size_section,
11
16
  )
17
+ from continuation import append_continuation_handoff
12
18
 
13
19
 
14
20
  # ---------------------------------------------------------------------------
@@ -150,6 +156,45 @@ class TestRenderTemplate:
150
156
  assert "id=B-001" in result
151
157
 
152
158
 
159
+ class TestExplicitProjectRoot:
160
+ def test_build_replacements_uses_cli_project_root_for_rendered_paths(self, tmp_path, monkeypatch):
161
+ monkeypatch.setenv("PRIZMKIT_PLATFORM", "claude")
162
+ execution_root = tmp_path / "worktree"
163
+ main_checkout = tmp_path / "main"
164
+ execution_root.mkdir()
165
+ main_checkout.mkdir()
166
+ args = Namespace(
167
+ bug_list=str(main_checkout / ".prizmkit" / "plans" / "bug-fix-list.json"),
168
+ bug_id="B-001",
169
+ session_id="session-1",
170
+ run_id="run-1",
171
+ retry_count="0",
172
+ resume_phase="null",
173
+ state_dir=str(main_checkout / ".prizmkit" / "state" / "bugfix"),
174
+ output=str(main_checkout / ".prizmkit" / "state" / "bugfix" / "B-001" / "sessions" / "session-1" / "bootstrap-prompt.md"),
175
+ template=None,
176
+ mode=None,
177
+ critic=None,
178
+ project_root=str(execution_root),
179
+ )
180
+ bug = {"id": "B-001", "title": "Worktree Bug", "description": "d"}
181
+
182
+ replacements = build_replacements(
183
+ args,
184
+ bug,
185
+ {},
186
+ str(main_checkout / "dev-pipeline" / "scripts"),
187
+ )
188
+
189
+ assert replacements["{{PROJECT_ROOT}}"] == str(execution_root.resolve())
190
+ assert replacements["{{SESSION_STATUS_PATH}}"] == str(
191
+ main_checkout / ".prizmkit" / "state" / "bugfix" / "B-001" /
192
+ "sessions" / "session-1" / "session-status.json"
193
+ )
194
+ assert not replacements["{{SESSION_STATUS_PATH}}"].startswith(str(execution_root.resolve()))
195
+ assert replacements["{{DEV_SUBAGENT_PATH}}"].startswith(str(execution_root.resolve()))
196
+
197
+
153
198
  # ---------------------------------------------------------------------------
154
199
  # Reuse shared helpers (same as bootstrap prompt — verify they are present)
155
200
  # ---------------------------------------------------------------------------
@@ -166,3 +211,58 @@ class TestSharedHelpers:
166
211
  def test_format_global_context_dict(self):
167
212
  result = format_global_context({"lang": "Python"})
168
213
  assert "**lang**: Python" in result
214
+
215
+
216
+ # ---------------------------------------------------------------------------
217
+ # Active compaction harness rollback
218
+ # ---------------------------------------------------------------------------
219
+
220
+ class TestHeadlessRecoveryReframing:
221
+ def test_bugfix_log_size_section_is_passive_checkpoint_guidance(self):
222
+ content = load_log_size_section(str(Path("dev-pipeline/scripts").resolve()))
223
+
224
+ assert "passive checkpoint guidance" in content
225
+ assert "Headless recovery must rely on durable checkpoints" in content
226
+ assert "fresh continuation session" in content
227
+ assert "optional interactive convenience only" in content
228
+ assert "COMPACT_NEEDED" not in content
229
+ assert "monitor-log" not in content
230
+ assert "background monitoring subagent" not in content
231
+ assert "Execute `/compact`" not in content
232
+ assert "run `/compact`" not in content.lower()
233
+
234
+ def test_bugfix_template_does_not_spawn_monitor_or_require_compact(self):
235
+ content = Path("dev-pipeline/templates/bugfix-bootstrap-prompt.md").read_text(encoding="utf-8")
236
+
237
+ assert "Do not spawn persistent background subagents for headless recovery" in content
238
+ assert "log-size monitor" not in content
239
+ assert "monitor-log" not in content
240
+ assert "COMPACT_NEEDED" not in content
241
+ assert "Run this command and keep it running" not in content
242
+ assert "Execute `/compact`" not in content
243
+ assert "run `/compact` after" not in content
244
+
245
+
246
+ class TestBugfixContinuationHandoff:
247
+ def test_writes_specs_and_task_local_summaries(self, tmp_path):
248
+ args = Namespace(
249
+ output=str(tmp_path / ".prizmkit/state/bugfix/B-007/sessions/B-007-new/bootstrap-prompt.md"),
250
+ state_dir=str(tmp_path / ".prizmkit/state/bugfix"),
251
+ continuation_mode="context_overflow",
252
+ previous_session_id="B-007-old",
253
+ continuation_count="1",
254
+ context_overflow_count="1",
255
+ active_dev_branch="bugfix/B-007",
256
+ base_branch="main",
257
+ continuation_summary_path=".prizmkit/specs/B-007/continuation-summary.md",
258
+ )
259
+ prompt = append_continuation_handoff(
260
+ "BUGFIX PROMPT", args, str(tmp_path), "bugfix", "B-007", "B-007",
261
+ {"steps": [{"id": "S01", "skill": "diagnose", "status": "pending"}]},
262
+ )
263
+
264
+ assert prompt.startswith("BUGFIX PROMPT")
265
+ assert "This is an automatic continuation after context overflow." in prompt
266
+ assert "Do not attempt `/compact` as the recovery mechanism." in prompt
267
+ assert (tmp_path / ".prizmkit/specs/B-007/continuation-summary.md").exists()
268
+ assert (tmp_path / ".prizmkit/bugfix/B-007/continuation-summary.md").exists()
@@ -0,0 +1,43 @@
1
+ """Tests for generate-refactor-prompt.py continuation behavior."""
2
+
3
+ from argparse import Namespace
4
+
5
+ from continuation import append_continuation_handoff
6
+ from generate_refactor_prompt import generate_refactor_checkpoint, merge_refactor_checkpoint_state
7
+
8
+
9
+ class TestRefactorContinuationHandoff:
10
+ def test_writes_specs_and_task_local_summaries(self, tmp_path):
11
+ args = Namespace(
12
+ output=str(tmp_path / ".prizmkit/state/refactor/R-007/sessions/R-007-new/bootstrap-prompt.md"),
13
+ state_dir=str(tmp_path / ".prizmkit/state/refactor"),
14
+ continuation_mode="context_overflow",
15
+ previous_session_id="R-007-old",
16
+ continuation_count="1",
17
+ context_overflow_count="1",
18
+ active_dev_branch="refactor/R-007",
19
+ base_branch="main",
20
+ continuation_summary_path=".prizmkit/specs/R-007/continuation-summary.md",
21
+ )
22
+ prompt = append_continuation_handoff(
23
+ "REFACTOR PROMPT", args, str(tmp_path), "refactor", "R-007", "R-007",
24
+ {"steps": [{"id": "S01", "skill": "plan", "status": "pending"}]},
25
+ )
26
+
27
+ assert prompt.startswith("REFACTOR PROMPT")
28
+ assert "This is a fresh headless AI CLI session for the same task." in prompt
29
+ assert "Do not attempt `/compact` as the recovery mechanism." in prompt
30
+ assert (tmp_path / ".prizmkit/specs/R-007/continuation-summary.md").exists()
31
+ assert (tmp_path / ".prizmkit/refactor/R-007/continuation-summary.md").exists()
32
+
33
+
34
+ class TestRefactorCheckpointMerge:
35
+ def test_preserves_skipped_without_artifacts(self, tmp_path):
36
+ fresh = generate_refactor_checkpoint("R-008", "R-008-new")
37
+ existing = generate_refactor_checkpoint("R-008", "R-008-old")
38
+ existing["steps"][0]["status"] = "skipped"
39
+
40
+ merged = merge_refactor_checkpoint_state(existing, fresh, str(tmp_path))
41
+
42
+ assert merged["steps"][0]["status"] == "skipped"
43
+ assert merged["steps"][1]["status"] == "pending"