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.
- package/bin/create-prizmkit.js +4 -4
- package/bundled/VERSION.json +3 -3
- package/bundled/dev-pipeline/.env.example +3 -3
- package/bundled/dev-pipeline/README.md +110 -90
- package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
- package/bundled/dev-pipeline/cli.py +27 -0
- package/bundled/dev-pipeline/prizmkit_runtime/__init__.py +13 -0
- package/bundled/dev-pipeline/prizmkit_runtime/__main__.py +9 -0
- package/bundled/dev-pipeline/prizmkit_runtime/cli.py +193 -0
- package/bundled/dev-pipeline/prizmkit_runtime/commands.py +313 -0
- package/bundled/dev-pipeline/prizmkit_runtime/compat.py +32 -0
- package/bundled/dev-pipeline/prizmkit_runtime/config.py +410 -0
- package/bundled/dev-pipeline/prizmkit_runtime/daemon.py +478 -0
- package/bundled/dev-pipeline/prizmkit_runtime/gitops.py +734 -0
- package/bundled/dev-pipeline/prizmkit_runtime/heartbeat.py +256 -0
- package/bundled/dev-pipeline/prizmkit_runtime/interoperability.py +109 -0
- package/bundled/dev-pipeline/prizmkit_runtime/paths.py +110 -0
- package/bundled/dev-pipeline/prizmkit_runtime/processes.py +373 -0
- package/bundled/dev-pipeline/prizmkit_runtime/reset.py +389 -0
- package/bundled/dev-pipeline/prizmkit_runtime/runner_bookkeeping.py +51 -0
- package/bundled/dev-pipeline/prizmkit_runtime/runner_classification.py +179 -0
- package/bundled/dev-pipeline/prizmkit_runtime/runner_models.py +345 -0
- package/bundled/dev-pipeline/prizmkit_runtime/runner_prompts.py +118 -0
- package/bundled/dev-pipeline/prizmkit_runtime/runner_recovery.py +187 -0
- package/bundled/dev-pipeline/prizmkit_runtime/runner_status.py +147 -0
- package/bundled/dev-pipeline/prizmkit_runtime/runners.py +422 -0
- package/bundled/dev-pipeline/prizmkit_runtime/sessions.py +552 -0
- package/bundled/dev-pipeline/prizmkit_runtime/status.py +71 -0
- package/bundled/dev-pipeline/scripts/check-session-status.py +74 -1
- package/bundled/dev-pipeline/scripts/continuation.py +374 -0
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +64 -52
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +35 -25
- package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +2 -2
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +15 -20
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +185 -16
- package/bundled/dev-pipeline/scripts/update-bug-status.py +214 -6
- package/bundled/dev-pipeline/scripts/update-feature-status.py +237 -6
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +214 -6
- package/bundled/dev-pipeline/templates/agent-prompts/dev-implement.md +8 -2
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +4 -0
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +14 -5
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +16 -6
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +16 -6
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +1 -1
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +3 -3
- package/bundled/dev-pipeline/templates/sections/context-budget-rules.md +2 -0
- package/bundled/dev-pipeline/templates/sections/log-size-awareness.md +13 -69
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +15 -7
- package/bundled/dev-pipeline/templates/sections/phase-implement-agent.md +42 -29
- package/bundled/dev-pipeline/templates/sections/phase-implement-full.md +41 -39
- package/bundled/dev-pipeline/templates/sections/test-failure-recovery-agent.md +4 -0
- package/bundled/dev-pipeline/templates/sections/test-failure-recovery-lite.md +4 -0
- package/bundled/dev-pipeline/templates/session-status-schema.json +1 -1
- package/bundled/dev-pipeline/tests/conftest.py +1 -0
- package/bundled/dev-pipeline/tests/test_auto_skip.py +932 -0
- package/bundled/dev-pipeline/tests/test_generate_bootstrap_prompt.py +207 -0
- package/bundled/dev-pipeline/tests/test_generate_bugfix_prompt.py +100 -0
- package/bundled/dev-pipeline/tests/test_generate_refactor_prompt.py +43 -0
- package/bundled/dev-pipeline/tests/test_python_runner_parity.py +1138 -0
- package/bundled/dev-pipeline/tests/test_unified_cli.py +1045 -0
- package/bundled/skills/_metadata.json +1 -1
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +29 -34
- package/bundled/skills/bugfix-pipeline-launcher/references/configuration.md +6 -5
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +29 -35
- package/bundled/skills/feature-pipeline-launcher/references/configuration.md +7 -6
- package/bundled/skills/feature-workflow/SKILL.md +3 -6
- package/bundled/skills/recovery-workflow/SKILL.md +23 -32
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +29 -35
- package/bundled/skills/refactor-pipeline-launcher/references/configuration.md +7 -6
- package/bundled/skills/refactor-workflow/SKILL.md +3 -6
- package/bundled/templates/hooks/commit-intent.json +2 -2
- package/bundled/templates/hooks/diff-prizm-docs.py +226 -0
- package/bundled/templates/hooks/prizm-pre-commit.py +45 -0
- package/bundled/templates/hooks/validate-prizm-docs.py +240 -0
- package/package.json +1 -1
- package/src/config.js +33 -12
- package/src/index.js +3 -6
- package/src/manifest.js +3 -2
- package/src/metadata.js +7 -18
- package/src/prompts.js +0 -12
- package/src/runtimes.js +18 -11
- package/src/scaffold.js +133 -116
- package/src/upgrade.js +1 -1
- package/bundled/dev-pipeline/launch-bugfix-daemon.sh +0 -500
- package/bundled/dev-pipeline/launch-feature-daemon.sh +0 -657
- package/bundled/dev-pipeline/launch-refactor-daemon.sh +0 -502
- package/bundled/dev-pipeline/lib/branch.sh +0 -326
- package/bundled/dev-pipeline/lib/common.sh +0 -1257
- package/bundled/dev-pipeline/lib/heartbeat.sh +0 -469
- package/bundled/dev-pipeline/reset-bug.sh +0 -395
- package/bundled/dev-pipeline/reset-feature.sh +0 -406
- package/bundled/dev-pipeline/reset-refactor.sh +0 -393
- package/bundled/dev-pipeline/run-bugfix.sh +0 -1315
- package/bundled/dev-pipeline/run-feature.sh +0 -1602
- package/bundled/dev-pipeline/run-recovery.sh +0 -648
- package/bundled/dev-pipeline/run-refactor.sh +0 -1348
- package/bundled/dev-pipeline/scripts/monitor-log.sh +0 -104
- package/bundled/dev-pipeline/tests/test-path-resolution.sh +0 -100
- package/bundled/dev-pipeline-windows/.env.example +0 -36
- package/bundled/dev-pipeline-windows/README.md +0 -30
- package/bundled/dev-pipeline-windows/SCHEMA_ANALYSIS.md +0 -533
- package/bundled/dev-pipeline-windows/assets/feature-list-example.json +0 -146
- package/bundled/dev-pipeline-windows/assets/prizm-dev-team-integration.md +0 -137
- package/bundled/dev-pipeline-windows/launch-bugfix-daemon.ps1 +0 -9
- package/bundled/dev-pipeline-windows/launch-feature-daemon.ps1 +0 -9
- package/bundled/dev-pipeline-windows/launch-refactor-daemon.ps1 +0 -9
- package/bundled/dev-pipeline-windows/lib/branch.ps1 +0 -235
- package/bundled/dev-pipeline-windows/lib/common.ps1 +0 -829
- package/bundled/dev-pipeline-windows/lib/daemon.ps1 +0 -140
- package/bundled/dev-pipeline-windows/lib/pipeline.ps1 +0 -967
- package/bundled/dev-pipeline-windows/lib/reset.ps1 +0 -87
- package/bundled/dev-pipeline-windows/reset-bug.ps1 +0 -9
- package/bundled/dev-pipeline-windows/reset-feature.ps1 +0 -9
- package/bundled/dev-pipeline-windows/reset-refactor.ps1 +0 -9
- package/bundled/dev-pipeline-windows/run-bugfix.ps1 +0 -9
- package/bundled/dev-pipeline-windows/run-feature.ps1 +0 -9
- package/bundled/dev-pipeline-windows/run-recovery.ps1 +0 -179
- package/bundled/dev-pipeline-windows/run-refactor.ps1 +0 -9
- package/bundled/dev-pipeline-windows/scripts/check-session-status.py +0 -228
- package/bundled/dev-pipeline-windows/scripts/detect-stuck.py +0 -530
- package/bundled/dev-pipeline-windows/scripts/generate-bootstrap-prompt.py +0 -2282
- package/bundled/dev-pipeline-windows/scripts/generate-bugfix-prompt.py +0 -767
- package/bundled/dev-pipeline-windows/scripts/generate-recovery-prompt.py +0 -805
- package/bundled/dev-pipeline-windows/scripts/generate-refactor-prompt.py +0 -845
- package/bundled/dev-pipeline-windows/scripts/init-bugfix-pipeline.py +0 -316
- package/bundled/dev-pipeline-windows/scripts/init-dev-team.py +0 -134
- package/bundled/dev-pipeline-windows/scripts/init-pipeline.py +0 -382
- package/bundled/dev-pipeline-windows/scripts/init-refactor-pipeline.py +0 -399
- package/bundled/dev-pipeline-windows/scripts/monitor-log.ps1 +0 -102
- package/bundled/dev-pipeline-windows/scripts/parse-stream-progress.py +0 -1232
- package/bundled/dev-pipeline-windows/scripts/patch-completion-notes.py +0 -191
- package/bundled/dev-pipeline-windows/scripts/prizmkit-test-gate.py +0 -446
- package/bundled/dev-pipeline-windows/scripts/update-bug-status.py +0 -913
- package/bundled/dev-pipeline-windows/scripts/update-checkpoint.py +0 -173
- package/bundled/dev-pipeline-windows/scripts/update-feature-status.py +0 -1558
- package/bundled/dev-pipeline-windows/scripts/update-refactor-status.py +0 -1119
- package/bundled/dev-pipeline-windows/scripts/utils.py +0 -542
- package/bundled/dev-pipeline-windows/templates/agent-prompts/critic-plan-challenge.md +0 -7
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-fix.md +0 -7
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-implement.md +0 -65
- package/bundled/dev-pipeline-windows/templates/agent-prompts/dev-resume.md +0 -5
- package/bundled/dev-pipeline-windows/templates/agent-prompts/reviewer-review.md +0 -7
- package/bundled/dev-pipeline-windows/templates/bootstrap-prompt.md +0 -73
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier1.md +0 -589
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier2.md +0 -710
- package/bundled/dev-pipeline-windows/templates/bootstrap-tier3.md +0 -791
- package/bundled/dev-pipeline-windows/templates/bug-fix-list-schema.json +0 -263
- package/bundled/dev-pipeline-windows/templates/bugfix-bootstrap-prompt.md +0 -326
- package/bundled/dev-pipeline-windows/templates/feature-list-schema.json +0 -237
- package/bundled/dev-pipeline-windows/templates/refactor-bootstrap-prompt.md +0 -340
- package/bundled/dev-pipeline-windows/templates/refactor-list-schema.json +0 -270
- package/bundled/dev-pipeline-windows/templates/sections/ac-verification-checklist.md +0 -7
- package/bundled/dev-pipeline-windows/templates/sections/checkpoint-system.md +0 -91
- package/bundled/dev-pipeline-windows/templates/sections/context-budget-rules.md +0 -34
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-agent.md +0 -10
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-full.md +0 -12
- package/bundled/dev-pipeline-windows/templates/sections/critical-paths-lite.md +0 -7
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-agent.md +0 -8
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-full.md +0 -9
- package/bundled/dev-pipeline-windows/templates/sections/directory-convention-lite.md +0 -6
- package/bundled/dev-pipeline-windows/templates/sections/failure-capture.md +0 -21
- package/bundled/dev-pipeline-windows/templates/sections/feature-context.md +0 -21
- package/bundled/dev-pipeline-windows/templates/sections/log-size-awareness.md +0 -78
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-auto.md +0 -283
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification-opencli.md +0 -112
- package/bundled/dev-pipeline-windows/templates/sections/phase-browser-verification.md +0 -168
- package/bundled/dev-pipeline-windows/templates/sections/phase-commit-full.md +0 -82
- package/bundled/dev-pipeline-windows/templates/sections/phase-commit.md +0 -75
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-agent-suffix.md +0 -23
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-base.md +0 -14
- package/bundled/dev-pipeline-windows/templates/sections/phase-context-snapshot-lite-suffix.md +0 -19
- package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan-full.md +0 -63
- package/bundled/dev-pipeline-windows/templates/sections/phase-critic-plan.md +0 -42
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-agent.md +0 -44
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-full.md +0 -59
- package/bundled/dev-pipeline-windows/templates/sections/phase-implement-lite.md +0 -39
- package/bundled/dev-pipeline-windows/templates/sections/phase-plan-agent.md +0 -27
- package/bundled/dev-pipeline-windows/templates/sections/phase-plan-lite.md +0 -27
- package/bundled/dev-pipeline-windows/templates/sections/phase-prizmkit-test.md +0 -39
- package/bundled/dev-pipeline-windows/templates/sections/phase-review-agent.md +0 -35
- package/bundled/dev-pipeline-windows/templates/sections/phase-review-full.md +0 -35
- package/bundled/dev-pipeline-windows/templates/sections/phase-specify-plan-full.md +0 -73
- package/bundled/dev-pipeline-windows/templates/sections/phase0-init.md +0 -13
- package/bundled/dev-pipeline-windows/templates/sections/phase0-test-baseline.md +0 -21
- package/bundled/dev-pipeline-windows/templates/sections/session-context.md +0 -5
- package/bundled/dev-pipeline-windows/templates/sections/subagent-timeout-recovery.md +0 -6
- package/bundled/dev-pipeline-windows/templates/sections/task-contract.md +0 -34
- package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-agent.md +0 -48
- package/bundled/dev-pipeline-windows/templates/sections/test-failure-recovery-lite.md +0 -48
- package/bundled/dev-pipeline-windows/templates/session-status-schema.json +0 -83
- package/bundled/skills-windows/app-planner/SKILL.md +0 -296
- package/bundled/skills-windows/app-planner/assets/app-design-guide.md +0 -101
- package/bundled/skills-windows/app-planner/references/architecture-decisions.md +0 -52
- package/bundled/skills-windows/app-planner/references/brainstorm-guide.md +0 -101
- package/bundled/skills-windows/app-planner/references/frontend-design-guide.md +0 -71
- package/bundled/skills-windows/app-planner/references/infrastructure-convention-discovery.md +0 -108
- package/bundled/skills-windows/app-planner/references/project-brief-guide.md +0 -82
- package/bundled/skills-windows/app-planner/references/project-conventions-discovery.md +0 -59
- package/bundled/skills-windows/app-planner/references/project-state-detection.md +0 -90
- package/bundled/skills-windows/app-planner/references/red-team-checklist.md +0 -40
- package/bundled/skills-windows/app-planner/references/rules/backend/derivation-rules.md +0 -619
- package/bundled/skills-windows/app-planner/references/rules/backend/fixed-rules.md +0 -285
- package/bundled/skills-windows/app-planner/references/rules/backend/question-bank.md +0 -249
- package/bundled/skills-windows/app-planner/references/rules/backend/question-manifest.json +0 -46
- package/bundled/skills-windows/app-planner/references/rules/backend/template.md +0 -173
- package/bundled/skills-windows/app-planner/references/rules/database/derivation-rules.md +0 -382
- package/bundled/skills-windows/app-planner/references/rules/database/fixed-rules.md +0 -211
- package/bundled/skills-windows/app-planner/references/rules/database/question-bank.md +0 -184
- package/bundled/skills-windows/app-planner/references/rules/database/question-manifest.json +0 -39
- package/bundled/skills-windows/app-planner/references/rules/database/template.md +0 -158
- package/bundled/skills-windows/app-planner/references/rules/frontend/derivation-rules.md +0 -820
- package/bundled/skills-windows/app-planner/references/rules/frontend/fixed-rules.md +0 -188
- package/bundled/skills-windows/app-planner/references/rules/frontend/question-bank.md +0 -319
- package/bundled/skills-windows/app-planner/references/rules/frontend/question-manifest.json +0 -51
- package/bundled/skills-windows/app-planner/references/rules/frontend/template.md +0 -339
- package/bundled/skills-windows/app-planner/references/rules/mobile/derivation-rules.md +0 -649
- package/bundled/skills-windows/app-planner/references/rules/mobile/fixed-rules.md +0 -290
- package/bundled/skills-windows/app-planner/references/rules/mobile/question-bank.md +0 -232
- package/bundled/skills-windows/app-planner/references/rules/mobile/question-manifest.json +0 -47
- package/bundled/skills-windows/app-planner/references/rules/mobile/template.md +0 -175
- package/bundled/skills-windows/app-planner/references/rules-configuration.md +0 -46
- package/bundled/skills-windows/bug-fix-workflow/SKILL.md +0 -379
- package/bundled/skills-windows/bug-fix-workflow/references/bug-diagnosis.md +0 -41
- package/bundled/skills-windows/bug-planner/SKILL.md +0 -402
- package/bundled/skills-windows/bug-planner/assets/bug-confirmation-template.md +0 -43
- package/bundled/skills-windows/bug-planner/references/critic-and-verification.md +0 -44
- package/bundled/skills-windows/bug-planner/references/error-recovery.md +0 -73
- package/bundled/skills-windows/bug-planner/references/input-formats.md +0 -53
- package/bundled/skills-windows/bug-planner/references/schema-validation.md +0 -25
- package/bundled/skills-windows/bug-planner/references/severity-rules.md +0 -16
- package/bundled/skills-windows/bug-planner/scripts/validate-bug-list.py +0 -322
- package/bundled/skills-windows/bugfix-pipeline-launcher/SKILL.md +0 -304
- package/bundled/skills-windows/bugfix-pipeline-launcher/references/configuration.md +0 -84
- package/bundled/skills-windows/feature-pipeline-launcher/SKILL.md +0 -381
- package/bundled/skills-windows/feature-pipeline-launcher/references/configuration.md +0 -67
- package/bundled/skills-windows/feature-pipeline-launcher/scripts/preflight-check.py +0 -462
- package/bundled/skills-windows/feature-planner/SKILL.md +0 -397
- package/bundled/skills-windows/feature-planner/assets/evaluation-guide.md +0 -64
- package/bundled/skills-windows/feature-planner/assets/planning-guide.md +0 -214
- package/bundled/skills-windows/feature-planner/references/browser-interaction.md +0 -59
- package/bundled/skills-windows/feature-planner/references/completeness-review.md +0 -57
- package/bundled/skills-windows/feature-planner/references/decomposition-patterns.md +0 -75
- package/bundled/skills-windows/feature-planner/references/error-recovery.md +0 -90
- package/bundled/skills-windows/feature-planner/references/incremental-feature-planning.md +0 -112
- package/bundled/skills-windows/feature-planner/references/new-project-planning.md +0 -85
- package/bundled/skills-windows/feature-planner/scripts/validate-and-generate.py +0 -1020
- package/bundled/skills-windows/feature-workflow/SKILL.md +0 -374
- package/bundled/skills-windows/feature-workflow/references/brainstorm-guide.md +0 -137
- package/bundled/skills-windows/prizm-kit/SKILL.md +0 -93
- package/bundled/skills-windows/prizmkit-code-review/SKILL.md +0 -161
- package/bundled/skills-windows/prizmkit-code-review/references/dev-agent-prompt.md +0 -30
- package/bundled/skills-windows/prizmkit-code-review/references/review-report-template.md +0 -31
- package/bundled/skills-windows/prizmkit-code-review/references/reviewer-agent-prompt.md +0 -66
- package/bundled/skills-windows/prizmkit-code-review/scripts/check_loop.py +0 -186
- package/bundled/skills-windows/prizmkit-committer/SKILL.md +0 -89
- package/bundled/skills-windows/prizmkit-deploy/SKILL.md +0 -444
- package/bundled/skills-windows/prizmkit-deploy/references/ci-cd-workflows.md +0 -115
- package/bundled/skills-windows/prizmkit-deploy/references/cloud-platform-deploy.md +0 -93
- package/bundled/skills-windows/prizmkit-deploy/references/data-safety-examples.md +0 -120
- package/bundled/skills-windows/prizmkit-deploy/references/database-setup.md +0 -46
- package/bundled/skills-windows/prizmkit-deploy/references/deploy-config-schema.md +0 -148
- package/bundled/skills-windows/prizmkit-deploy/references/deploy-history-schema.md +0 -62
- package/bundled/skills-windows/prizmkit-deploy/references/deployment-modes.md +0 -50
- package/bundled/skills-windows/prizmkit-deploy/references/direct-upload.md +0 -26
- package/bundled/skills-windows/prizmkit-deploy/references/dns-setup.md +0 -42
- package/bundled/skills-windows/prizmkit-deploy/references/docker-deploy.md +0 -31
- package/bundled/skills-windows/prizmkit-deploy/references/firewall-setup.md +0 -37
- package/bundled/skills-windows/prizmkit-deploy/references/live-validation-notes.md +0 -21
- package/bundled/skills-windows/prizmkit-deploy/references/nginx-blue-green.md +0 -59
- package/bundled/skills-windows/prizmkit-deploy/references/ssh-bootstrap-flow.md +0 -49
- package/bundled/skills-windows/prizmkit-deploy/references/ssh-execution-flow.md +0 -41
- package/bundled/skills-windows/prizmkit-deploy/references/ssh-takeover.md +0 -20
- package/bundled/skills-windows/prizmkit-deploy/references/ssl-setup.md +0 -56
- package/bundled/skills-windows/prizmkit-implement/SKILL.md +0 -71
- package/bundled/skills-windows/prizmkit-init/SKILL.md +0 -356
- package/bundled/skills-windows/prizmkit-init/assets/project-brief-template.md +0 -82
- package/bundled/skills-windows/prizmkit-init/references/config-schema.md +0 -70
- package/bundled/skills-windows/prizmkit-init/references/rules/layer-detection.md +0 -41
- package/bundled/skills-windows/prizmkit-init/references/tech-stack-catalog.md +0 -13
- package/bundled/skills-windows/prizmkit-init/references/update-supplement.md +0 -9
- package/bundled/skills-windows/prizmkit-plan/SKILL.md +0 -102
- package/bundled/skills-windows/prizmkit-plan/assets/plan-template.md +0 -115
- package/bundled/skills-windows/prizmkit-plan/assets/spec-template.md +0 -73
- package/bundled/skills-windows/prizmkit-plan/references/clarify-guide.md +0 -67
- package/bundled/skills-windows/prizmkit-plan/references/examples.md +0 -85
- package/bundled/skills-windows/prizmkit-plan/references/verification-checklist.md +0 -60
- package/bundled/skills-windows/prizmkit-prizm-docs/SKILL.md +0 -129
- package/bundled/skills-windows/prizmkit-prizm-docs/assets/prizm-docs-format.md +0 -613
- package/bundled/skills-windows/prizmkit-prizm-docs/references/op-init.md +0 -45
- package/bundled/skills-windows/prizmkit-prizm-docs/references/op-rebuild.md +0 -15
- package/bundled/skills-windows/prizmkit-prizm-docs/references/op-status.md +0 -14
- package/bundled/skills-windows/prizmkit-prizm-docs/references/op-update.md +0 -19
- package/bundled/skills-windows/prizmkit-prizm-docs/references/op-validate.md +0 -17
- package/bundled/skills-windows/prizmkit-retrospective/SKILL.md +0 -87
- package/bundled/skills-windows/prizmkit-retrospective/references/knowledge-injection-steps.md +0 -50
- package/bundled/skills-windows/prizmkit-retrospective/references/structural-sync-steps.md +0 -43
- package/bundled/skills-windows/prizmkit-test/SKILL.md +0 -227
- package/bundled/skills-windows/prizmkit-test/references/boundary-coverage-protocol.md +0 -220
- package/bundled/skills-windows/prizmkit-test/references/examples.md +0 -143
- package/bundled/skills-windows/prizmkit-test/references/service-boundary-test-catalog.md +0 -225
- package/bundled/skills-windows/prizmkit-test/references/test-generation-steps.md +0 -109
- package/bundled/skills-windows/prizmkit-test/references/test-report-template.md +0 -111
- package/bundled/skills-windows/prizmkit-test/scripts/validate_boundary_report.py +0 -347
- package/bundled/skills-windows/recovery-workflow/SKILL.md +0 -355
- package/bundled/skills-windows/recovery-workflow/evals/evals.json +0 -46
- package/bundled/skills-windows/recovery-workflow/references/detection.md +0 -58
- package/bundled/skills-windows/recovery-workflow/scripts/detect-recovery-state.py +0 -544
- package/bundled/skills-windows/refactor-pipeline-launcher/SKILL.md +0 -346
- package/bundled/skills-windows/refactor-pipeline-launcher/references/configuration.md +0 -72
- package/bundled/skills-windows/refactor-planner/SKILL.md +0 -398
- package/bundled/skills-windows/refactor-planner/assets/planning-guide.md +0 -292
- package/bundled/skills-windows/refactor-planner/references/behavior-preservation.md +0 -301
- package/bundled/skills-windows/refactor-planner/references/fast-path.md +0 -59
- package/bundled/skills-windows/refactor-planner/references/planning-phases.md +0 -135
- package/bundled/skills-windows/refactor-planner/references/refactor-scoping-guide.md +0 -221
- package/bundled/skills-windows/refactor-planner/scripts/validate-and-generate-refactor.py +0 -858
- package/bundled/skills-windows/refactor-workflow/SKILL.md +0 -343
- package/bundled/skills-windows/refactor-workflow/references/brainstorm-guide.md +0 -116
- package/bundled/templates/hooks/diff-prizm-docs.sh +0 -158
- package/bundled/templates/hooks/prizm-pre-commit.sh +0 -108
- 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"
|