@opengsd/gsd-path 1.0.0 → 1.2.0
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/AGENTS.md +33 -13
- package/CHANGELOG.md +68 -0
- package/DOCS.md +75 -6
- package/FULL.md +12 -15
- package/HOOKS.md +18 -9
- package/QUICK.md +8 -6
- package/README.md +218 -14
- package/RUNTIME.md +16 -5
- package/UPDATE.md +30 -11
- package/WORKFLOW.md +35 -16
- package/package.json +23 -1
- package/platforms/claude/dispatch.md +4 -4
- package/platforms/copilot/dispatch.md +4 -4
- package/platforms/cursor/dispatch.md +5 -10
- package/platforms/grok/dispatch.md +4 -6
- package/platforms/kimi/dispatch.md +4 -4
- package/platforms/kiro/dispatch.md +4 -6
- package/platforms/opencode/dispatch.md +4 -4
- package/platforms/qwen/dispatch.md +4 -4
- package/platforms/shared-agents/dispatch.md +12 -19
- package/scripts/_common.py +5 -0
- package/scripts/archive_milestone.py +30 -124
- package/scripts/bootstrap_repository.py +33 -4
- package/scripts/build_recovery.py +292 -0
- package/scripts/build_state.py +2 -0
- package/scripts/check_docs_audit.py +7 -3
- package/scripts/check_handoffs.py +7 -1
- package/scripts/check_task_briefs.py +3 -0
- package/scripts/detect_project.py +22 -3
- package/scripts/discussion_records.py +3 -0
- package/scripts/discussion_validate.py +8 -3
- package/scripts/dispatch_driver.py +233 -22
- package/scripts/git_guard.py +14 -5
- package/scripts/guard_hook.py +11 -1
- package/scripts/install.mjs +54 -1448
- package/scripts/install.py +155 -188
- package/scripts/integration.py +54 -28
- package/scripts/isolation.py +24 -6
- package/scripts/jev_review.py +138 -0
- package/scripts/lean_verification.py +3 -1
- package/scripts/loop_run.py +2 -0
- package/scripts/model_policy.py +279 -0
- package/scripts/path_config.py +248 -0
- package/scripts/pipeline_diagnose.py +15 -3
- package/scripts/pipeline_git.py +3 -0
- package/scripts/pipeline_state.py +117 -186
- package/scripts/pipeline_undo.py +14 -7
- package/scripts/promote_lookahead.py +33 -162
- package/scripts/review_panel.py +11 -0
- package/scripts/roadmap.py +326 -0
- package/scripts/runtime_store.py +278 -0
- package/scripts/skill-resources.json +182 -4
- package/scripts/state_checkpoint.py +114 -72
- package/scripts/state_promote.py +47 -44
- package/scripts/status_runtime.py +92 -6
- package/scripts/task_context.py +73 -0
- package/scripts/token_budget.py +40 -1
- package/scripts/workflow_run.py +128 -8
- package/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path/BUILD.md +54 -575
- package/skills/gsd-path/DECIDE.md +4 -6
- package/skills/gsd-path/DEFINE.md +23 -21
- package/skills/gsd-path/DOCS-AUDIT.md +2 -0
- package/skills/gsd-path/INSPECT.md +32 -8
- package/skills/gsd-path/PLAN.md +29 -19
- package/skills/gsd-path/RESEARCH.md +5 -6
- package/skills/gsd-path/ROADMAP.md +24 -58
- package/skills/gsd-path/SHIP.md +29 -17
- package/skills/gsd-path/SKILL.md +46 -22
- package/skills/gsd-path/references/build-abandon.md +33 -0
- package/skills/gsd-path/references/build-native.md +502 -0
- package/skills/gsd-path/references/build-recovery.md +78 -0
- package/skills/gsd-path/references/coder.md +8 -3
- package/skills/gsd-path/references/config.md +57 -0
- package/skills/gsd-path/references/dispatch.md +12 -19
- package/skills/gsd-path/references/docs-auditor.md +14 -0
- package/skills/gsd-path/references/jev-review.md +82 -0
- package/skills/gsd-path/references/model-policy.md +139 -0
- package/skills/gsd-path/references/reviewer-final.md +21 -0
- package/skills/gsd-path/references/reviewer-panel.md +17 -0
- package/skills/gsd-path/references/reviewer-skeptic.md +20 -0
- package/skills/gsd-path/references/reviewer-wave.md +89 -0
- package/skills/gsd-path/references/reviewer.md +12 -148
- package/skills/gsd-path/references/runtime-selection.md +25 -0
- package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/_common.py +5 -0
- package/skills/gsd-path/scripts/archive_milestone.py +30 -124
- package/skills/gsd-path/scripts/bootstrap_repository.py +33 -4
- package/skills/gsd-path/scripts/build_recovery.py +292 -0
- package/skills/gsd-path/scripts/build_state.py +2 -0
- package/skills/gsd-path/scripts/check_docs_audit.py +7 -3
- package/skills/gsd-path/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path/scripts/detect_project.py +22 -3
- package/skills/gsd-path/scripts/discussion_records.py +3 -0
- package/skills/gsd-path/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path/scripts/dispatch_driver.py +233 -22
- package/skills/gsd-path/scripts/git_guard.py +768 -0
- package/skills/gsd-path/scripts/integration.py +54 -28
- package/skills/gsd-path/scripts/isolation.py +24 -6
- package/skills/gsd-path/scripts/jev_review.py +138 -0
- package/skills/gsd-path/scripts/lean_verification.py +3 -1
- package/skills/gsd-path/scripts/loop_run.py +2 -0
- package/skills/gsd-path/scripts/model_policy.py +279 -0
- package/skills/gsd-path/scripts/path_config.py +248 -0
- package/skills/gsd-path/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path/scripts/promote_lookahead.py +33 -162
- package/skills/gsd-path/scripts/review_panel.py +11 -0
- package/skills/gsd-path/scripts/roadmap.py +326 -0
- package/skills/gsd-path/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path/scripts/state_promote.py +47 -44
- package/skills/gsd-path/scripts/status_runtime.py +208 -0
- package/skills/gsd-path/scripts/task_context.py +73 -0
- package/skills/gsd-path/scripts/token_budget.py +40 -1
- package/skills/gsd-path/scripts/workflow_run.py +128 -8
- package/skills/gsd-path/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path/templates/skeptic.md +1 -1
- package/skills/gsd-path/templates/task.md +2 -0
- package/skills/gsd-path/templates/wave-panel.md +1 -1
- package/skills/gsd-path/templates/wave-review.md +1 -1
- package/skills/gsd-path-build/SKILL.md +54 -575
- package/skills/gsd-path-build/references/build-abandon.md +33 -0
- package/skills/gsd-path-build/references/build-native.md +502 -0
- package/skills/gsd-path-build/references/build-recovery.md +78 -0
- package/skills/gsd-path-build/references/coder.md +8 -3
- package/skills/gsd-path-build/references/dispatch.md +12 -19
- package/skills/gsd-path-build/references/jev-review.md +82 -0
- package/skills/gsd-path-build/references/model-policy.md +139 -0
- package/skills/gsd-path-build/references/reviewer-final.md +21 -0
- package/skills/gsd-path-build/references/reviewer-panel.md +17 -0
- package/skills/gsd-path-build/references/reviewer-skeptic.md +20 -0
- package/skills/gsd-path-build/references/reviewer-wave.md +89 -0
- package/skills/gsd-path-build/references/reviewer.md +12 -148
- package/skills/gsd-path-build/references/runtime-selection.md +25 -0
- package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/_common.py +5 -0
- package/skills/gsd-path-build/scripts/archive_milestone.py +30 -124
- package/skills/gsd-path-build/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-build/scripts/build_state.py +2 -0
- package/skills/gsd-path-build/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-build/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-build/scripts/detect_project.py +1536 -0
- package/skills/gsd-path-build/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-build/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-build/scripts/dispatch_driver.py +233 -22
- package/skills/gsd-path-build/scripts/integration.py +54 -28
- package/skills/gsd-path-build/scripts/isolation.py +24 -6
- package/skills/gsd-path-build/scripts/jev_review.py +138 -0
- package/skills/gsd-path-build/scripts/loop_run.py +2 -0
- package/skills/gsd-path-build/scripts/model_policy.py +279 -0
- package/skills/gsd-path-build/scripts/path_config.py +248 -0
- package/skills/gsd-path-build/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-build/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-build/scripts/promote_lookahead.py +286 -0
- package/skills/gsd-path-build/scripts/review_panel.py +11 -0
- package/skills/gsd-path-build/scripts/roadmap.py +326 -0
- package/skills/gsd-path-build/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-build/scripts/state_promote.py +47 -44
- package/skills/gsd-path-build/scripts/task_context.py +73 -0
- package/skills/gsd-path-build/scripts/token_budget.py +40 -1
- package/skills/gsd-path-build/scripts/workflow_run.py +128 -8
- package/skills/gsd-path-build/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-build/templates/skeptic.md +1 -1
- package/skills/gsd-path-build/templates/task.md +2 -0
- package/skills/gsd-path-build/templates/wave-panel.md +1 -1
- package/skills/gsd-path-build/templates/wave-review.md +1 -1
- package/skills/gsd-path-decide/SKILL.md +4 -6
- package/skills/gsd-path-decide/references/dispatch.md +12 -19
- package/skills/gsd-path-decide/references/model-policy.md +139 -0
- package/skills/gsd-path-decide/references/runtime-selection.md +25 -0
- package/skills/gsd-path-decide/scripts/_common.py +5 -0
- package/skills/gsd-path-decide/scripts/archive_milestone.py +2171 -0
- package/skills/gsd-path-decide/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-decide/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-decide/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-decide/scripts/detect_project.py +1536 -0
- package/skills/gsd-path-decide/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-decide/scripts/discussion_validate.py +1326 -0
- package/skills/gsd-path-decide/scripts/integration.py +1459 -0
- package/skills/gsd-path-decide/scripts/isolation.py +24 -6
- package/skills/gsd-path-decide/scripts/loop_run.py +839 -0
- package/skills/gsd-path-decide/scripts/model_policy.py +279 -0
- package/skills/gsd-path-decide/scripts/path_config.py +248 -0
- package/skills/gsd-path-decide/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-decide/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-decide/scripts/promote_lookahead.py +286 -0
- package/skills/gsd-path-decide/scripts/review_panel.py +564 -0
- package/skills/gsd-path-decide/scripts/roadmap.py +326 -0
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-decide/scripts/state_promote.py +47 -44
- package/skills/gsd-path-decide/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-define/SKILL.md +23 -21
- package/skills/gsd-path-define/references/build-recovery.md +78 -0
- package/skills/gsd-path-define/references/runtime-selection.md +25 -0
- package/skills/gsd-path-define/scripts/_common.py +5 -0
- package/skills/gsd-path-define/scripts/archive_milestone.py +2171 -0
- package/skills/gsd-path-define/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-define/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-define/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-define/scripts/detect_project.py +22 -3
- package/skills/gsd-path-define/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-define/scripts/discussion_validate.py +1326 -0
- package/skills/gsd-path-define/scripts/integration.py +1459 -0
- package/skills/gsd-path-define/scripts/isolation.py +24 -6
- package/skills/gsd-path-define/scripts/loop_run.py +839 -0
- package/skills/gsd-path-define/scripts/model_policy.py +279 -0
- package/skills/gsd-path-define/scripts/path_config.py +248 -0
- package/skills/gsd-path-define/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-define/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-define/scripts/promote_lookahead.py +286 -0
- package/skills/gsd-path-define/scripts/review_panel.py +564 -0
- package/skills/gsd-path-define/scripts/roadmap.py +326 -0
- package/skills/gsd-path-define/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-define/scripts/state_promote.py +47 -44
- package/skills/gsd-path-define/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-discuss/SKILL.md +2 -0
- package/skills/gsd-path-discuss/references/runtime-selection.md +25 -0
- package/skills/gsd-path-discuss/scripts/_common.py +5 -0
- package/skills/gsd-path-discuss/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-discuss/scripts/loop_run.py +839 -0
- package/skills/gsd-path-discuss/scripts/model_policy.py +279 -0
- package/skills/gsd-path-discuss/scripts/path_config.py +248 -0
- package/skills/gsd-path-discuss/scripts/review_panel.py +564 -0
- package/skills/gsd-path-discuss/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-docs-audit/SKILL.md +2 -0
- package/skills/gsd-path-docs-audit/references/dispatch.md +12 -19
- package/skills/gsd-path-docs-audit/references/docs-auditor.md +14 -0
- package/skills/gsd-path-docs-audit/references/model-policy.md +139 -0
- package/skills/gsd-path-docs-audit/references/runtime-selection.md +25 -0
- package/skills/gsd-path-docs-audit/scripts/_common.py +5 -0
- package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +2171 -0
- package/skills/gsd-path-docs-audit/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +7 -3
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-docs-audit/scripts/detect_project.py +1536 -0
- package/skills/gsd-path-docs-audit/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +1326 -0
- package/skills/gsd-path-docs-audit/scripts/integration.py +1459 -0
- package/skills/gsd-path-docs-audit/scripts/isolation.py +24 -6
- package/skills/gsd-path-docs-audit/scripts/loop_run.py +839 -0
- package/skills/gsd-path-docs-audit/scripts/model_policy.py +279 -0
- package/skills/gsd-path-docs-audit/scripts/path_config.py +248 -0
- package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +286 -0
- package/skills/gsd-path-docs-audit/scripts/review_panel.py +564 -0
- package/skills/gsd-path-docs-audit/scripts/roadmap.py +326 -0
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +47 -44
- package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-forensics/SKILL.md +9 -5
- package/skills/gsd-path-forensics/references/runtime-selection.md +25 -0
- package/skills/gsd-path-forensics/scripts/_common.py +5 -0
- package/skills/gsd-path-forensics/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-forensics/scripts/loop_run.py +839 -0
- package/skills/gsd-path-forensics/scripts/model_policy.py +279 -0
- package/skills/gsd-path-forensics/scripts/path_config.py +248 -0
- package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +15 -3
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +14 -7
- package/skills/gsd-path-forensics/scripts/review_panel.py +564 -0
- package/skills/gsd-path-forensics/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-inspect/SKILL.md +32 -8
- package/skills/gsd-path-inspect/references/dispatch.md +12 -19
- package/skills/gsd-path-inspect/references/docs-auditor.md +14 -0
- package/skills/gsd-path-inspect/references/model-policy.md +139 -0
- package/skills/gsd-path-inspect/references/runtime-selection.md +25 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/_common.py +5 -0
- package/skills/gsd-path-inspect/scripts/archive_milestone.py +2171 -0
- package/skills/gsd-path-inspect/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +7 -3
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-inspect/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-inspect/scripts/detect_project.py +22 -3
- package/skills/gsd-path-inspect/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-inspect/scripts/discussion_validate.py +1326 -0
- package/skills/gsd-path-inspect/scripts/integration.py +1459 -0
- package/skills/gsd-path-inspect/scripts/isolation.py +24 -6
- package/skills/gsd-path-inspect/scripts/loop_run.py +839 -0
- package/skills/gsd-path-inspect/scripts/model_policy.py +279 -0
- package/skills/gsd-path-inspect/scripts/path_config.py +248 -0
- package/skills/gsd-path-inspect/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-inspect/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-inspect/scripts/promote_lookahead.py +286 -0
- package/skills/gsd-path-inspect/scripts/review_panel.py +564 -0
- package/skills/gsd-path-inspect/scripts/roadmap.py +326 -0
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-inspect/scripts/state_promote.py +47 -44
- package/skills/gsd-path-inspect/scripts/workflow_run.py +237 -0
- package/skills/gsd-path-inspect/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-loop/SKILL.md +2 -0
- package/skills/gsd-path-loop/references/runtime-selection.md +25 -0
- package/skills/gsd-path-loop/scripts/_common.py +5 -0
- package/skills/gsd-path-loop/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-loop/scripts/loop_run.py +2 -0
- package/skills/gsd-path-loop/scripts/model_policy.py +279 -0
- package/skills/gsd-path-loop/scripts/path_config.py +248 -0
- package/skills/gsd-path-loop/scripts/review_panel.py +564 -0
- package/skills/gsd-path-loop/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-migrate/SKILL.md +2 -0
- package/skills/gsd-path-migrate/references/runtime-selection.md +25 -0
- package/skills/gsd-path-migrate/scripts/_common.py +185 -0
- package/skills/gsd-path-migrate/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-migrate/scripts/loop_run.py +839 -0
- package/skills/gsd-path-migrate/scripts/model_policy.py +279 -0
- package/skills/gsd-path-migrate/scripts/path_config.py +248 -0
- package/skills/gsd-path-migrate/scripts/review_panel.py +564 -0
- package/skills/gsd-path-plan/SKILL.md +29 -19
- package/skills/gsd-path-plan/references/build-recovery.md +78 -0
- package/skills/gsd-path-plan/references/dispatch.md +12 -19
- package/skills/gsd-path-plan/references/model-policy.md +139 -0
- package/skills/gsd-path-plan/references/runtime-selection.md +25 -0
- package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/_common.py +5 -0
- package/skills/gsd-path-plan/scripts/archive_milestone.py +2171 -0
- package/skills/gsd-path-plan/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-plan/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-plan/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-plan/scripts/detect_project.py +1536 -0
- package/skills/gsd-path-plan/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-plan/scripts/discussion_validate.py +1326 -0
- package/skills/gsd-path-plan/scripts/integration.py +1459 -0
- package/skills/gsd-path-plan/scripts/isolation.py +24 -6
- package/skills/gsd-path-plan/scripts/loop_run.py +839 -0
- package/skills/gsd-path-plan/scripts/model_policy.py +279 -0
- package/skills/gsd-path-plan/scripts/path_config.py +248 -0
- package/skills/gsd-path-plan/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-plan/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-plan/scripts/promote_lookahead.py +286 -0
- package/skills/gsd-path-plan/scripts/review_panel.py +11 -0
- package/skills/gsd-path-plan/scripts/roadmap.py +326 -0
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-plan/scripts/state_promote.py +47 -44
- package/skills/gsd-path-plan/scripts/workflow_run.py +128 -8
- package/skills/gsd-path-plan/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-plan/templates/task.md +2 -0
- package/skills/gsd-path-research/SKILL.md +5 -6
- package/skills/gsd-path-research/references/dispatch.md +12 -19
- package/skills/gsd-path-research/references/model-policy.md +139 -0
- package/skills/gsd-path-research/references/runtime-selection.md +25 -0
- package/skills/gsd-path-research/scripts/_common.py +5 -0
- package/skills/gsd-path-research/scripts/archive_milestone.py +2171 -0
- package/skills/gsd-path-research/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-research/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-research/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-research/scripts/detect_project.py +1536 -0
- package/skills/gsd-path-research/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-research/scripts/discussion_validate.py +1326 -0
- package/skills/gsd-path-research/scripts/integration.py +1459 -0
- package/skills/gsd-path-research/scripts/isolation.py +24 -6
- package/skills/gsd-path-research/scripts/loop_run.py +839 -0
- package/skills/gsd-path-research/scripts/model_policy.py +279 -0
- package/skills/gsd-path-research/scripts/path_config.py +248 -0
- package/skills/gsd-path-research/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-research/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-research/scripts/promote_lookahead.py +286 -0
- package/skills/gsd-path-research/scripts/review_panel.py +564 -0
- package/skills/gsd-path-research/scripts/roadmap.py +326 -0
- package/skills/gsd-path-research/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-research/scripts/state_promote.py +47 -44
- package/skills/gsd-path-research/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-roadmap/SKILL.md +24 -58
- package/skills/gsd-path-roadmap/references/dispatch.md +12 -19
- package/skills/gsd-path-roadmap/references/model-policy.md +139 -0
- package/skills/gsd-path-roadmap/references/runtime-selection.md +25 -0
- package/skills/gsd-path-roadmap/scripts/_common.py +5 -0
- package/skills/gsd-path-roadmap/scripts/archive_milestone.py +30 -124
- package/skills/gsd-path-roadmap/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-roadmap/scripts/detect_project.py +22 -3
- package/skills/gsd-path-roadmap/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-roadmap/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-roadmap/scripts/integration.py +54 -28
- package/skills/gsd-path-roadmap/scripts/isolation.py +24 -6
- package/skills/gsd-path-roadmap/scripts/loop_run.py +839 -0
- package/skills/gsd-path-roadmap/scripts/model_policy.py +279 -0
- package/skills/gsd-path-roadmap/scripts/path_config.py +248 -0
- package/skills/gsd-path-roadmap/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-roadmap/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +33 -162
- package/skills/gsd-path-roadmap/scripts/review_panel.py +11 -0
- package/skills/gsd-path-roadmap/scripts/roadmap.py +326 -0
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-roadmap/scripts/state_promote.py +47 -44
- package/skills/gsd-path-roadmap/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-ship/SKILL.md +29 -17
- package/skills/gsd-path-ship/references/dispatch.md +12 -19
- package/skills/gsd-path-ship/references/jev-review.md +82 -0
- package/skills/gsd-path-ship/references/model-policy.md +139 -0
- package/skills/gsd-path-ship/references/reviewer-final.md +21 -0
- package/skills/gsd-path-ship/references/reviewer-panel.md +17 -0
- package/skills/gsd-path-ship/references/reviewer-skeptic.md +20 -0
- package/skills/gsd-path-ship/references/reviewer-wave.md +89 -0
- package/skills/gsd-path-ship/references/reviewer.md +12 -148
- package/skills/gsd-path-ship/references/runtime-selection.md +25 -0
- package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/_common.py +5 -0
- package/skills/gsd-path-ship/scripts/archive_milestone.py +30 -124
- package/skills/gsd-path-ship/scripts/build_recovery.py +292 -0
- package/skills/gsd-path-ship/scripts/build_state.py +2 -0
- package/skills/gsd-path-ship/scripts/check_handoffs.py +7 -1
- package/skills/gsd-path-ship/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-ship/scripts/detect_project.py +1536 -0
- package/skills/gsd-path-ship/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-ship/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-ship/scripts/integration.py +54 -28
- package/skills/gsd-path-ship/scripts/isolation.py +24 -6
- package/skills/gsd-path-ship/scripts/jev_review.py +138 -0
- package/skills/gsd-path-ship/scripts/lean_verification.py +3 -1
- package/skills/gsd-path-ship/scripts/loop_run.py +839 -0
- package/skills/gsd-path-ship/scripts/model_policy.py +279 -0
- package/skills/gsd-path-ship/scripts/path_config.py +248 -0
- package/skills/gsd-path-ship/scripts/pipeline_git.py +3 -0
- package/skills/gsd-path-ship/scripts/pipeline_state.py +117 -186
- package/skills/gsd-path-ship/scripts/promote_lookahead.py +286 -0
- package/skills/gsd-path-ship/scripts/review_panel.py +11 -0
- package/skills/gsd-path-ship/scripts/roadmap.py +326 -0
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +114 -72
- package/skills/gsd-path-ship/scripts/state_promote.py +47 -44
- package/skills/gsd-path-ship/scripts/workflow_run.py +128 -8
- package/skills/gsd-path-ship/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-ship/templates/wave-review.md +1 -1
- package/skills/gsd-path-undo/SKILL.md +2 -0
- package/skills/gsd-path-undo/references/runtime-selection.md +25 -0
- package/skills/gsd-path-undo/scripts/_common.py +5 -0
- package/skills/gsd-path-undo/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-undo/scripts/loop_run.py +839 -0
- package/skills/gsd-path-undo/scripts/model_policy.py +279 -0
- package/skills/gsd-path-undo/scripts/path_config.py +248 -0
- package/skills/gsd-path-undo/scripts/pipeline_undo.py +14 -7
- package/skills/gsd-path-undo/scripts/review_panel.py +564 -0
- package/skills/gsd-path-undo/scripts/worktree_paths.py +94 -0
- package/skills/path/BUILD.md +54 -575
- package/skills/path/DECIDE.md +4 -6
- package/skills/path/DEFINE.md +23 -21
- package/skills/path/DOCS-AUDIT.md +2 -0
- package/skills/path/INSPECT.md +32 -8
- package/skills/path/PLAN.md +29 -19
- package/skills/path/RESEARCH.md +5 -6
- package/skills/path/ROADMAP.md +24 -58
- package/skills/path/SHIP.md +29 -17
- package/skills/path/SKILL.md +46 -22
- package/skills/path/references/build-abandon.md +33 -0
- package/skills/path/references/build-native.md +502 -0
- package/skills/path/references/build-recovery.md +78 -0
- package/skills/path/references/coder.md +8 -3
- package/skills/path/references/config.md +57 -0
- package/skills/path/references/dispatch.md +12 -19
- package/skills/path/references/docs-auditor.md +14 -0
- package/skills/path/references/jev-review.md +82 -0
- package/skills/path/references/model-policy.md +139 -0
- package/skills/path/references/reviewer-final.md +21 -0
- package/skills/path/references/reviewer-panel.md +17 -0
- package/skills/path/references/reviewer-skeptic.md +20 -0
- package/skills/path/references/reviewer-wave.md +89 -0
- package/skills/path/references/reviewer.md +12 -148
- package/skills/path/references/runtime-selection.md +25 -0
- package/skills/path/scripts/_common.py +5 -0
- package/skills/path/scripts/archive_milestone.py +30 -124
- package/skills/path/scripts/bootstrap_repository.py +33 -4
- package/skills/path/scripts/build_recovery.py +292 -0
- package/skills/path/scripts/build_state.py +2 -0
- package/skills/path/scripts/check_docs_audit.py +7 -3
- package/skills/path/scripts/check_handoffs.py +7 -1
- package/skills/path/scripts/check_task_briefs.py +3 -0
- package/skills/path/scripts/detect_project.py +22 -3
- package/skills/path/scripts/discussion_records.py +3 -0
- package/skills/path/scripts/discussion_validate.py +8 -3
- package/skills/path/scripts/dispatch_driver.py +233 -22
- package/skills/path/scripts/git_guard.py +768 -0
- package/skills/path/scripts/integration.py +54 -28
- package/skills/path/scripts/isolation.py +24 -6
- package/skills/path/scripts/jev_review.py +138 -0
- package/skills/path/scripts/lean_verification.py +3 -1
- package/skills/path/scripts/loop_run.py +2 -0
- package/skills/path/scripts/model_policy.py +279 -0
- package/skills/path/scripts/path_config.py +248 -0
- package/skills/path/scripts/pipeline_git.py +3 -0
- package/skills/path/scripts/pipeline_state.py +117 -186
- package/skills/path/scripts/promote_lookahead.py +33 -162
- package/skills/path/scripts/review_panel.py +11 -0
- package/skills/path/scripts/roadmap.py +326 -0
- package/skills/path/scripts/state_checkpoint.py +114 -72
- package/skills/path/scripts/state_promote.py +47 -44
- package/skills/path/scripts/status_runtime.py +208 -0
- package/skills/path/scripts/task_context.py +73 -0
- package/skills/path/scripts/token_budget.py +40 -1
- package/skills/path/scripts/workflow_run.py +128 -8
- package/skills/path/scripts/worktree_paths.py +94 -0
- package/skills/path/templates/skeptic.md +1 -1
- package/skills/path/templates/task.md +2 -0
- package/skills/path/templates/wave-panel.md +1 -1
- package/skills/path/templates/wave-review.md +1 -1
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Own immutable project runtimes, explicit upgrades, restoration and migration."""
|
|
3
|
+
import hashlib
|
|
4
|
+
import base64
|
|
5
|
+
import json
|
|
6
|
+
import os
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
import shutil
|
|
9
|
+
import tempfile
|
|
10
|
+
from contextlib import contextmanager
|
|
11
|
+
|
|
12
|
+
try:
|
|
13
|
+
from . import status_runtime
|
|
14
|
+
except ImportError:
|
|
15
|
+
import status_runtime
|
|
16
|
+
|
|
17
|
+
RUNTIME_FILES = (
|
|
18
|
+
"pipeline_state.py", "roadmap.py", "check_handoffs.py", "check_task_briefs.py",
|
|
19
|
+
"isolation.py", "discussion_records.py", "pipeline_git.py", "promote_lookahead.py",
|
|
20
|
+
"detect_project.py", "pipeline_diagnose.py", "pipeline_undo.py", "archive_milestone.py",
|
|
21
|
+
"review_panel.py", "_common.py", "worktree_paths.py", "build_recovery.py",
|
|
22
|
+
"state_checkpoint.py", "state_promote.py", "discussion_validate.py", "integration.py",
|
|
23
|
+
"build_state.py", "lean_verification.py", "check_docs_audit.py",
|
|
24
|
+
"path_config.py", "model_policy.py", "loop_run.py",
|
|
25
|
+
)
|
|
26
|
+
GUARDS = ("guard_hook.py", "git_guard.py")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def guard_launcher(name):
|
|
30
|
+
if name not in GUARDS:
|
|
31
|
+
raise ValueError("unknown runtime guard")
|
|
32
|
+
return ("#!/usr/bin/env python3\n# gsd-path guard — stable runtime launcher\n"
|
|
33
|
+
"import sys\nsys.dont_write_bytecode = True\nfrom pathlib import Path\n"
|
|
34
|
+
"from status_runtime import run_guard\n"
|
|
35
|
+
"try:\n"
|
|
36
|
+
f" run_guard(Path(__file__).resolve().parent.parent, {name!r})\n"
|
|
37
|
+
"except (OSError, ValueError) as error:\n"
|
|
38
|
+
" print(str(error), file=sys.stderr)\n"
|
|
39
|
+
f" raise SystemExit({2 if name == 'guard_hook.py' else 1})\n")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def source_manifest(source):
|
|
43
|
+
version = json.loads((source / "package.json").read_text())["version"]
|
|
44
|
+
files = {}
|
|
45
|
+
for name in (*RUNTIME_FILES, *GUARDS, "status_runtime.py"):
|
|
46
|
+
path = source / "scripts" / name
|
|
47
|
+
if path.is_symlink():
|
|
48
|
+
raise ValueError(f"symlinked runtime source: {path}")
|
|
49
|
+
files[name] = hashlib.sha256(path.read_bytes()).hexdigest()
|
|
50
|
+
manifest = {"version": version, "files": files}
|
|
51
|
+
pin = {"schema": status_runtime.RUNTIME_SCHEMA, "version": version,
|
|
52
|
+
"digest": status_runtime.manifest_digest(manifest)}
|
|
53
|
+
return manifest, pin
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def pin_text(pin):
|
|
57
|
+
return json.dumps(pin, indent=2, sort_keys=True) + "\n"
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@contextmanager
|
|
61
|
+
def publication_lock(parent, digest):
|
|
62
|
+
"""The OS releases this external lock even if publication is interrupted."""
|
|
63
|
+
lock = parent / ("." + digest + ".lock")
|
|
64
|
+
if lock.is_symlink():
|
|
65
|
+
raise ValueError(f"unsafe runtime publication lock: {lock}")
|
|
66
|
+
descriptor = os.open(lock, os.O_RDWR | os.O_CREAT | getattr(os, "O_NOFOLLOW", 0), 0o600)
|
|
67
|
+
try:
|
|
68
|
+
if os.name == "nt":
|
|
69
|
+
import msvcrt
|
|
70
|
+
if os.fstat(descriptor).st_size == 0:
|
|
71
|
+
os.write(descriptor, b"\0")
|
|
72
|
+
os.lseek(descriptor, 0, os.SEEK_SET)
|
|
73
|
+
msvcrt.locking(descriptor, msvcrt.LK_NBLCK, 1)
|
|
74
|
+
else:
|
|
75
|
+
import fcntl
|
|
76
|
+
fcntl.flock(descriptor, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
|
77
|
+
yield
|
|
78
|
+
finally:
|
|
79
|
+
os.close(descriptor)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def publish(source, *, expected=None, dry_run=False, repair=False):
|
|
83
|
+
manifest, pin = source_manifest(source)
|
|
84
|
+
if expected is not None and any(pin[key] != expected.get(key) for key in pin):
|
|
85
|
+
raise ValueError(f"source does not match declared runtime {expected['version']} ({expected['digest']}); use its matching package")
|
|
86
|
+
if dry_run:
|
|
87
|
+
return pin
|
|
88
|
+
parent = status_runtime.runtime_home()
|
|
89
|
+
if any(p.is_symlink() for p in (parent, parent.parent)):
|
|
90
|
+
raise ValueError(f"unsafe runtime storage: {parent}")
|
|
91
|
+
parent.mkdir(parents=True, exist_ok=True)
|
|
92
|
+
destination = parent / pin["digest"]
|
|
93
|
+
if destination.is_symlink():
|
|
94
|
+
raise ValueError(f"unsafe runtime storage: {destination}")
|
|
95
|
+
if destination.exists():
|
|
96
|
+
try:
|
|
97
|
+
status_runtime.validate_runtime(pin)
|
|
98
|
+
return pin
|
|
99
|
+
except ValueError:
|
|
100
|
+
if not repair:
|
|
101
|
+
raise
|
|
102
|
+
with tempfile.TemporaryDirectory(prefix=".runtime-stage-", dir=parent) as temporary:
|
|
103
|
+
staging = Path(temporary) / "runtime"
|
|
104
|
+
staging.mkdir()
|
|
105
|
+
for name, digest in manifest["files"].items():
|
|
106
|
+
shutil.copyfile(source / "scripts" / name, staging / name)
|
|
107
|
+
if hashlib.sha256((staging / name).read_bytes()).hexdigest() != digest:
|
|
108
|
+
raise ValueError(f"runtime source changed while installing: {name}")
|
|
109
|
+
(staging / "manifest.json").write_text(pin_text(manifest), encoding="utf-8")
|
|
110
|
+
# Serialize publication/repair, including two explicit restorations.
|
|
111
|
+
previous = Path(temporary) / "previous"
|
|
112
|
+
with publication_lock(parent, pin["digest"]):
|
|
113
|
+
if destination.exists():
|
|
114
|
+
try:
|
|
115
|
+
status_runtime.validate_runtime(pin)
|
|
116
|
+
return pin
|
|
117
|
+
except ValueError:
|
|
118
|
+
if not repair:
|
|
119
|
+
raise
|
|
120
|
+
destination.rename(previous)
|
|
121
|
+
try:
|
|
122
|
+
staging.rename(destination)
|
|
123
|
+
status_runtime.validate_runtime(pin)
|
|
124
|
+
except BaseException:
|
|
125
|
+
if previous.exists() and not destination.exists():
|
|
126
|
+
previous.rename(destination)
|
|
127
|
+
raise
|
|
128
|
+
return pin
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def prepare(source, project, *, dry_run=False):
|
|
132
|
+
declaration = project / ".gsd-path/runtime.json"
|
|
133
|
+
if os.path.lexists(declaration):
|
|
134
|
+
pin = status_runtime.declaration(project)
|
|
135
|
+
status_runtime.validate_runtime(pin)
|
|
136
|
+
return pin
|
|
137
|
+
if os.path.lexists(project / ".gsd-path/runtime"):
|
|
138
|
+
raise ValueError("legacy project runtime requires --runtime-migrate --project PATH; migration produces a reviewable Git diff")
|
|
139
|
+
return publish(source, dry_run=dry_run)
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def atomic_config(path, content):
|
|
143
|
+
if path.is_symlink() or path.parent.is_symlink():
|
|
144
|
+
raise ValueError(f"unsafe project runtime configuration: {path}")
|
|
145
|
+
path.parent.mkdir(parents=True, exist_ok=True)
|
|
146
|
+
fd, name = tempfile.mkstemp(prefix=f".{path.name}.gsd-path-tmp-", dir=path.parent)
|
|
147
|
+
try:
|
|
148
|
+
with os.fdopen(fd, "wb") as handle:
|
|
149
|
+
handle.write(content.encode("utf-8"))
|
|
150
|
+
os.replace(name, path)
|
|
151
|
+
finally:
|
|
152
|
+
if os.path.exists(name):
|
|
153
|
+
os.unlink(name)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def migration_journal(project):
|
|
157
|
+
identity = hashlib.sha256(os.fsencode(project.resolve())).hexdigest()
|
|
158
|
+
return Path.home() / ".gsd-path" / "runtime-migrations" / (identity + ".json")
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def recover_migration(project):
|
|
162
|
+
journal = migration_journal(project)
|
|
163
|
+
if not os.path.lexists(journal):
|
|
164
|
+
return
|
|
165
|
+
if journal.is_symlink():
|
|
166
|
+
raise ValueError(f"unsafe runtime migration journal: {journal}")
|
|
167
|
+
data = json.loads(journal.read_text())
|
|
168
|
+
recorded_project = data.get("project")
|
|
169
|
+
if (data.get("schema") != "gsd-path/runtime-migration/v1"
|
|
170
|
+
or not isinstance(recorded_project, str)
|
|
171
|
+
or Path(recorded_project).resolve() != project.resolve()):
|
|
172
|
+
raise ValueError(f"invalid runtime migration journal: {journal}")
|
|
173
|
+
allowed = {".gsd-path/runtime.json", ".gsd-path/status_runtime.py"}
|
|
174
|
+
allowed.update(".gsd-path/" + n for n in GUARDS)
|
|
175
|
+
allowed.update(".gsd-path/runtime/" + n for n in RUNTIME_FILES)
|
|
176
|
+
entries = data.get("files")
|
|
177
|
+
if not isinstance(entries, dict) or not set(entries) <= allowed:
|
|
178
|
+
raise ValueError(f"invalid runtime migration paths: {journal}")
|
|
179
|
+
# Refuse to overwrite edits made after interruption.
|
|
180
|
+
for relative, change in entries.items():
|
|
181
|
+
path = project / relative
|
|
182
|
+
if path.is_symlink() or path.parent.is_symlink():
|
|
183
|
+
raise ValueError(f"unsafe migration recovery path: {path}")
|
|
184
|
+
current = base64.b64encode(path.read_bytes()).decode() if path.exists() else None
|
|
185
|
+
if current not in (change["before"], change["after"]):
|
|
186
|
+
raise ValueError(f"migration recovery would overwrite a changed file: {path}")
|
|
187
|
+
for relative, change in entries.items():
|
|
188
|
+
path = project / relative
|
|
189
|
+
if change["before"] is None:
|
|
190
|
+
path.unlink(missing_ok=True)
|
|
191
|
+
else:
|
|
192
|
+
atomic_config(path, base64.b64decode(change["before"]).decode("utf-8"))
|
|
193
|
+
journal.unlink()
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def operate(source, project, action, *, dry_run=False):
|
|
197
|
+
if project.is_symlink() or (project / ".gsd-path").is_symlink():
|
|
198
|
+
raise ValueError("unsafe project runtime directory")
|
|
199
|
+
if action == "restore":
|
|
200
|
+
pin = status_runtime.declaration(project)
|
|
201
|
+
publish(source, expected=pin, dry_run=dry_run, repair=True)
|
|
202
|
+
return pin
|
|
203
|
+
if action == "upgrade":
|
|
204
|
+
status_runtime.declaration(project)
|
|
205
|
+
pin = publish(source, dry_run=dry_run)
|
|
206
|
+
if not dry_run:
|
|
207
|
+
launcher = project / ".gsd-path/status_runtime.py"
|
|
208
|
+
original = launcher.read_text(encoding="utf-8")
|
|
209
|
+
replacement = (source / "scripts/status_runtime.py").read_text(encoding="utf-8")
|
|
210
|
+
# Both launchers understand the same declaration schema. Publishing
|
|
211
|
+
# the compatible launcher first leaves the old selection usable.
|
|
212
|
+
if replacement != original:
|
|
213
|
+
atomic_config(launcher, replacement)
|
|
214
|
+
try:
|
|
215
|
+
atomic_config(project / ".gsd-path/runtime.json", pin_text(pin))
|
|
216
|
+
except BaseException:
|
|
217
|
+
if replacement != original:
|
|
218
|
+
atomic_config(launcher, original)
|
|
219
|
+
raise
|
|
220
|
+
return pin
|
|
221
|
+
if action != "migrate":
|
|
222
|
+
raise ValueError("unknown runtime operation")
|
|
223
|
+
# Migration changes only reviewed managed files and never stages or commits.
|
|
224
|
+
import subprocess
|
|
225
|
+
if not dry_run:
|
|
226
|
+
recover_migration(project)
|
|
227
|
+
runtime = project / ".gsd-path/runtime"
|
|
228
|
+
if runtime.is_symlink() or not runtime.is_dir():
|
|
229
|
+
raise ValueError("migration requires a real legacy runtime directory")
|
|
230
|
+
entries = list(runtime.iterdir())
|
|
231
|
+
if {p.name for p in entries} - set(RUNTIME_FILES):
|
|
232
|
+
raise ValueError("legacy runtime contains unknown files; preserve and resolve them before migration")
|
|
233
|
+
managed = entries + [project / ".gsd-path/status_runtime.py"]
|
|
234
|
+
managed += [project / ".gsd-path" / n for n in GUARDS if (project / ".gsd-path" / n).exists()]
|
|
235
|
+
for path in managed:
|
|
236
|
+
if path.is_symlink() or not path.is_file():
|
|
237
|
+
raise ValueError(f"unsafe migration file: {path}")
|
|
238
|
+
marker = ("gsd-path project runtime" if path.parent == runtime else
|
|
239
|
+
"gsd-path project status launcher" if path.name == "status_runtime.py" else "gsd-path guard")
|
|
240
|
+
if marker not in path.read_text(encoding="utf-8"):
|
|
241
|
+
raise ValueError(f"unmanaged migration file: {path}")
|
|
242
|
+
relative = path.relative_to(project).as_posix()
|
|
243
|
+
tracked = subprocess.run(["git", "ls-files", "--error-unmatch", "--", relative], cwd=project, capture_output=True)
|
|
244
|
+
if tracked.returncode == 0:
|
|
245
|
+
clean = subprocess.run(["git", "status", "--porcelain", "--", relative], cwd=project, capture_output=True, check=True)
|
|
246
|
+
if clean.stdout:
|
|
247
|
+
raise ValueError(f"locally modified migration file: {path}")
|
|
248
|
+
elif path.read_bytes() != (source / "scripts" / path.name).read_bytes():
|
|
249
|
+
raise ValueError(f"untracked migration file differs from source: {path}")
|
|
250
|
+
pin = publish(source, dry_run=dry_run)
|
|
251
|
+
if dry_run:
|
|
252
|
+
return pin
|
|
253
|
+
originals = {p: p.read_bytes() for p in managed}
|
|
254
|
+
declaration = project / ".gsd-path/runtime.json"
|
|
255
|
+
if os.path.lexists(declaration):
|
|
256
|
+
raise ValueError("runtime declaration already exists; refusing legacy migration")
|
|
257
|
+
updates = {project / ".gsd-path/status_runtime.py": (source / "scripts/status_runtime.py").read_bytes(),
|
|
258
|
+
declaration: pin_text(pin).encode()}
|
|
259
|
+
updates.update({p: None for p in entries})
|
|
260
|
+
updates.update({p: guard_launcher(p.name).encode() for p in managed if p.name in GUARDS})
|
|
261
|
+
changes = {p.relative_to(project).as_posix(): {
|
|
262
|
+
"before": base64.b64encode(originals[p]).decode() if p in originals else None,
|
|
263
|
+
"after": base64.b64encode(content).decode() if content is not None else None,
|
|
264
|
+
} for p, content in updates.items()}
|
|
265
|
+
journal = migration_journal(project)
|
|
266
|
+
atomic_config(journal, pin_text({"schema": "gsd-path/runtime-migration/v1", "project": str(project.resolve()), "files": changes}))
|
|
267
|
+
try:
|
|
268
|
+
for path, content in updates.items():
|
|
269
|
+
if content is None:
|
|
270
|
+
path.unlink()
|
|
271
|
+
else:
|
|
272
|
+
atomic_config(path, content.decode("utf-8"))
|
|
273
|
+
runtime.rmdir()
|
|
274
|
+
except BaseException:
|
|
275
|
+
recover_migration(project)
|
|
276
|
+
raise
|
|
277
|
+
journal.unlink()
|
|
278
|
+
return pin
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"plugin.json",
|
|
39
39
|
"scripts/install.mjs",
|
|
40
40
|
"scripts/install.py",
|
|
41
|
+
"scripts/runtime_store.py",
|
|
41
42
|
"scripts/migrate_core.py",
|
|
42
43
|
"scripts/core_hook_gate.py",
|
|
43
44
|
"scripts/core_hook_settings.py",
|
|
@@ -45,7 +46,10 @@
|
|
|
45
46
|
"scripts/wizard.mjs",
|
|
46
47
|
"scripts/skill-resources.json",
|
|
47
48
|
"scripts/_common.py",
|
|
49
|
+
"scripts/worktree_paths.py",
|
|
50
|
+
"scripts/build_recovery.py",
|
|
48
51
|
"scripts/state_checkpoint.py",
|
|
52
|
+
"scripts/roadmap.py",
|
|
49
53
|
"scripts/state_promote.py",
|
|
50
54
|
"scripts/discussion_validate.py",
|
|
51
55
|
"scripts/integration.py",
|
|
@@ -57,7 +61,10 @@
|
|
|
57
61
|
"scripts/check_handoffs.py",
|
|
58
62
|
"scripts/check_docs_audit.py",
|
|
59
63
|
"scripts/check_task_briefs.py",
|
|
64
|
+
"scripts/path_config.py",
|
|
65
|
+
"scripts/model_policy.py",
|
|
60
66
|
"scripts/review_panel.py",
|
|
67
|
+
"scripts/jev_review.py",
|
|
61
68
|
"scripts/review_findings.py",
|
|
62
69
|
"scripts/check_update.py",
|
|
63
70
|
"scripts/guard_hook.py",
|
|
@@ -70,11 +77,13 @@
|
|
|
70
77
|
"scripts/loop_run.py",
|
|
71
78
|
"scripts/workflow_run.py",
|
|
72
79
|
"scripts/dispatch_driver.py",
|
|
80
|
+
"scripts/task_context.py",
|
|
73
81
|
"scripts/lean_verification.py",
|
|
74
82
|
"scripts/token_budget.py",
|
|
75
83
|
"scripts/pipeline_undo.py",
|
|
76
84
|
"scripts/pipeline_diagnose.py",
|
|
77
85
|
"README.md",
|
|
86
|
+
"CHANGELOG.md",
|
|
78
87
|
"MIGRATE.md",
|
|
79
88
|
"RUNTIME.md",
|
|
80
89
|
"DOCS.md",
|
|
@@ -90,43 +99,69 @@
|
|
|
90
99
|
],
|
|
91
100
|
"phase_resources": {
|
|
92
101
|
"gsd-path-build": [
|
|
102
|
+
"references/runtime-selection.md",
|
|
103
|
+
"references/build-recovery.md",
|
|
104
|
+
"references/build-native.md",
|
|
105
|
+
"references/build-abandon.md",
|
|
93
106
|
"references/coder.md",
|
|
94
107
|
"references/dispatch.md",
|
|
108
|
+
"references/model-policy.md",
|
|
95
109
|
"references/reviewer.md",
|
|
110
|
+
"references/jev-review.md",
|
|
111
|
+
"references/reviewer-wave.md",
|
|
112
|
+
"references/reviewer-skeptic.md",
|
|
113
|
+
"references/reviewer-final.md",
|
|
114
|
+
"references/reviewer-panel.md",
|
|
115
|
+
|
|
96
116
|
"templates/task.md",
|
|
97
117
|
"templates/wave-review.md",
|
|
98
118
|
"templates/wave-panel.md",
|
|
99
119
|
"templates/skeptic.md"
|
|
100
120
|
],
|
|
101
121
|
"gsd-path-discuss": [
|
|
122
|
+
"references/runtime-selection.md",
|
|
102
123
|
"templates/answers.md",
|
|
103
124
|
"templates/dialogue.md"
|
|
104
125
|
],
|
|
105
126
|
"gsd-path-docs-audit": [
|
|
127
|
+
"references/runtime-selection.md",
|
|
106
128
|
"references/dispatch.md",
|
|
129
|
+
"references/model-policy.md",
|
|
107
130
|
"references/docs-auditor.md",
|
|
108
131
|
"templates/docs-audit.md"
|
|
109
132
|
],
|
|
110
133
|
"gsd-path-define": [
|
|
134
|
+
"references/runtime-selection.md",
|
|
135
|
+
"references/build-recovery.md",
|
|
111
136
|
"templates/charter.md",
|
|
112
137
|
"templates/intent.md",
|
|
113
138
|
"templates/state.md"
|
|
114
139
|
],
|
|
115
140
|
"gsd-path-inspect": [
|
|
141
|
+
"references/runtime-selection.md",
|
|
116
142
|
"references/codebase-mapper.md",
|
|
117
143
|
"references/dispatch.md",
|
|
144
|
+
"references/model-policy.md",
|
|
118
145
|
"references/docs-auditor.md",
|
|
119
146
|
"templates/codebase.md",
|
|
120
147
|
"templates/docs-audit.md",
|
|
121
148
|
"templates/state.md"
|
|
122
149
|
],
|
|
123
|
-
"gsd-path-forensics": [
|
|
124
|
-
|
|
150
|
+
"gsd-path-forensics": [
|
|
151
|
+
"references/runtime-selection.md"
|
|
152
|
+
],
|
|
153
|
+
"gsd-path-migrate": [
|
|
154
|
+
"references/runtime-selection.md"
|
|
155
|
+
],
|
|
125
156
|
"gsd-path-loop": [
|
|
157
|
+
"references/runtime-selection.md",
|
|
126
158
|
"templates/loop.md"
|
|
127
159
|
],
|
|
128
160
|
"gsd-path-plan": [
|
|
161
|
+
"references/runtime-selection.md",
|
|
162
|
+
"references/build-recovery.md",
|
|
129
163
|
"references/dispatch.md",
|
|
164
|
+
"references/model-policy.md",
|
|
130
165
|
"references/planner.md",
|
|
131
166
|
"templates/patch-findings.md",
|
|
132
167
|
"templates/plan.md",
|
|
@@ -134,19 +169,31 @@
|
|
|
134
169
|
"templates/task.md"
|
|
135
170
|
],
|
|
136
171
|
"gsd-path-research": [
|
|
172
|
+
"references/runtime-selection.md",
|
|
137
173
|
"references/dispatch.md",
|
|
174
|
+
"references/model-policy.md",
|
|
138
175
|
"references/researcher.md",
|
|
139
176
|
"templates/evidence.md",
|
|
140
177
|
"templates/research-handoff.md"
|
|
141
178
|
],
|
|
142
179
|
"gsd-path-roadmap": [
|
|
180
|
+
"references/runtime-selection.md",
|
|
143
181
|
"references/dispatch.md",
|
|
182
|
+
"references/model-policy.md",
|
|
144
183
|
"references/roadmapper.md",
|
|
145
184
|
"templates/roadmap.md"
|
|
146
185
|
],
|
|
147
186
|
"gsd-path-ship": [
|
|
187
|
+
"references/runtime-selection.md",
|
|
148
188
|
"references/dispatch.md",
|
|
189
|
+
"references/model-policy.md",
|
|
149
190
|
"references/reviewer.md",
|
|
191
|
+
"references/jev-review.md",
|
|
192
|
+
"references/reviewer-wave.md",
|
|
193
|
+
"references/reviewer-skeptic.md",
|
|
194
|
+
"references/reviewer-final.md",
|
|
195
|
+
"references/reviewer-panel.md",
|
|
196
|
+
|
|
150
197
|
"templates/archive-manifest.md",
|
|
151
198
|
"templates/final-review.md",
|
|
152
199
|
"templates/gap-review.md",
|
|
@@ -154,13 +201,36 @@
|
|
|
154
201
|
"templates/wave-review.md"
|
|
155
202
|
],
|
|
156
203
|
"gsd-path-decide": [
|
|
204
|
+
"references/runtime-selection.md",
|
|
157
205
|
"references/dispatch.md",
|
|
206
|
+
"references/model-policy.md",
|
|
158
207
|
"references/decider.md",
|
|
159
208
|
"templates/synthesis.md"
|
|
160
209
|
],
|
|
161
|
-
"gsd-path-undo": [
|
|
210
|
+
"gsd-path-undo": [
|
|
211
|
+
"references/runtime-selection.md"
|
|
212
|
+
]
|
|
162
213
|
},
|
|
163
214
|
"script_targets": [
|
|
215
|
+
["scripts/status_runtime.py", "skills/gsd-path/scripts/status_runtime.py"],
|
|
216
|
+
["scripts/git_guard.py", "skills/gsd-path/scripts/git_guard.py"],
|
|
217
|
+
["scripts/jev_review.py", "skills/gsd-path/scripts/jev_review.py"],
|
|
218
|
+
["scripts/jev_review.py", "skills/gsd-path-build/scripts/jev_review.py"],
|
|
219
|
+
["scripts/jev_review.py", "skills/gsd-path-ship/scripts/jev_review.py"],
|
|
220
|
+
["scripts/worktree_paths.py", "skills/gsd-path/scripts/worktree_paths.py"],
|
|
221
|
+
["scripts/worktree_paths.py", "skills/gsd-path-build/scripts/worktree_paths.py"],
|
|
222
|
+
["scripts/worktree_paths.py", "skills/gsd-path-decide/scripts/worktree_paths.py"],
|
|
223
|
+
["scripts/worktree_paths.py", "skills/gsd-path-define/scripts/worktree_paths.py"],
|
|
224
|
+
["scripts/worktree_paths.py", "skills/gsd-path-discuss/scripts/worktree_paths.py"],
|
|
225
|
+
["scripts/worktree_paths.py", "skills/gsd-path-docs-audit/scripts/worktree_paths.py"],
|
|
226
|
+
["scripts/worktree_paths.py", "skills/gsd-path-forensics/scripts/worktree_paths.py"],
|
|
227
|
+
["scripts/worktree_paths.py", "skills/gsd-path-inspect/scripts/worktree_paths.py"],
|
|
228
|
+
["scripts/worktree_paths.py", "skills/gsd-path-loop/scripts/worktree_paths.py"],
|
|
229
|
+
["scripts/worktree_paths.py", "skills/gsd-path-plan/scripts/worktree_paths.py"],
|
|
230
|
+
["scripts/worktree_paths.py", "skills/gsd-path-research/scripts/worktree_paths.py"],
|
|
231
|
+
["scripts/worktree_paths.py", "skills/gsd-path-roadmap/scripts/worktree_paths.py"],
|
|
232
|
+
["scripts/worktree_paths.py", "skills/gsd-path-ship/scripts/worktree_paths.py"],
|
|
233
|
+
["scripts/worktree_paths.py", "skills/gsd-path-undo/scripts/worktree_paths.py"],
|
|
164
234
|
["scripts/migrate_core.py", "skills/gsd-path-migrate/scripts/migrate_core.py"],
|
|
165
235
|
["scripts/core_hook_gate.py", "skills/gsd-path-migrate/scripts/core_hook_gate.py"],
|
|
166
236
|
["scripts/core_hook_settings.py", "skills/gsd-path-migrate/scripts/core_hook_settings.py"],
|
|
@@ -192,6 +262,43 @@
|
|
|
192
262
|
["scripts/detect_project.py", "skills/gsd-path/scripts/detect_project.py"],
|
|
193
263
|
["scripts/detect_project.py", "skills/gsd-path-define/scripts/detect_project.py"],
|
|
194
264
|
["scripts/detect_project.py", "skills/gsd-path-inspect/scripts/detect_project.py"],
|
|
265
|
+
["scripts/promote_lookahead.py", "skills/gsd-path-build/scripts/promote_lookahead.py"],
|
|
266
|
+
["scripts/detect_project.py", "skills/gsd-path-build/scripts/detect_project.py"],
|
|
267
|
+
["scripts/promote_lookahead.py", "skills/gsd-path-ship/scripts/promote_lookahead.py"],
|
|
268
|
+
["scripts/detect_project.py", "skills/gsd-path-ship/scripts/detect_project.py"],
|
|
269
|
+
["scripts/promote_lookahead.py", "skills/gsd-path-plan/scripts/promote_lookahead.py"],
|
|
270
|
+
["scripts/archive_milestone.py", "skills/gsd-path-plan/scripts/archive_milestone.py"],
|
|
271
|
+
["scripts/detect_project.py", "skills/gsd-path-plan/scripts/detect_project.py"],
|
|
272
|
+
["scripts/integration.py", "skills/gsd-path-plan/scripts/integration.py"],
|
|
273
|
+
["scripts/discussion_validate.py", "skills/gsd-path-plan/scripts/discussion_validate.py"],
|
|
274
|
+
["scripts/promote_lookahead.py", "skills/gsd-path-research/scripts/promote_lookahead.py"],
|
|
275
|
+
["scripts/archive_milestone.py", "skills/gsd-path-research/scripts/archive_milestone.py"],
|
|
276
|
+
["scripts/detect_project.py", "skills/gsd-path-research/scripts/detect_project.py"],
|
|
277
|
+
["scripts/integration.py", "skills/gsd-path-research/scripts/integration.py"],
|
|
278
|
+
["scripts/discussion_validate.py", "skills/gsd-path-research/scripts/discussion_validate.py"],
|
|
279
|
+
["scripts/review_panel.py", "skills/gsd-path-research/scripts/review_panel.py"],
|
|
280
|
+
["scripts/promote_lookahead.py", "skills/gsd-path-decide/scripts/promote_lookahead.py"],
|
|
281
|
+
["scripts/archive_milestone.py", "skills/gsd-path-decide/scripts/archive_milestone.py"],
|
|
282
|
+
["scripts/detect_project.py", "skills/gsd-path-decide/scripts/detect_project.py"],
|
|
283
|
+
["scripts/integration.py", "skills/gsd-path-decide/scripts/integration.py"],
|
|
284
|
+
["scripts/discussion_validate.py", "skills/gsd-path-decide/scripts/discussion_validate.py"],
|
|
285
|
+
["scripts/review_panel.py", "skills/gsd-path-decide/scripts/review_panel.py"],
|
|
286
|
+
["scripts/promote_lookahead.py", "skills/gsd-path-define/scripts/promote_lookahead.py"],
|
|
287
|
+
["scripts/archive_milestone.py", "skills/gsd-path-define/scripts/archive_milestone.py"],
|
|
288
|
+
["scripts/integration.py", "skills/gsd-path-define/scripts/integration.py"],
|
|
289
|
+
["scripts/discussion_validate.py", "skills/gsd-path-define/scripts/discussion_validate.py"],
|
|
290
|
+
["scripts/review_panel.py", "skills/gsd-path-define/scripts/review_panel.py"],
|
|
291
|
+
["scripts/promote_lookahead.py", "skills/gsd-path-inspect/scripts/promote_lookahead.py"],
|
|
292
|
+
["scripts/archive_milestone.py", "skills/gsd-path-inspect/scripts/archive_milestone.py"],
|
|
293
|
+
["scripts/integration.py", "skills/gsd-path-inspect/scripts/integration.py"],
|
|
294
|
+
["scripts/discussion_validate.py", "skills/gsd-path-inspect/scripts/discussion_validate.py"],
|
|
295
|
+
["scripts/review_panel.py", "skills/gsd-path-inspect/scripts/review_panel.py"],
|
|
296
|
+
["scripts/promote_lookahead.py", "skills/gsd-path-docs-audit/scripts/promote_lookahead.py"],
|
|
297
|
+
["scripts/archive_milestone.py", "skills/gsd-path-docs-audit/scripts/archive_milestone.py"],
|
|
298
|
+
["scripts/detect_project.py", "skills/gsd-path-docs-audit/scripts/detect_project.py"],
|
|
299
|
+
["scripts/integration.py", "skills/gsd-path-docs-audit/scripts/integration.py"],
|
|
300
|
+
["scripts/discussion_validate.py", "skills/gsd-path-docs-audit/scripts/discussion_validate.py"],
|
|
301
|
+
["scripts/review_panel.py", "skills/gsd-path-docs-audit/scripts/review_panel.py"],
|
|
195
302
|
["scripts/promote_lookahead.py", "skills/gsd-path/scripts/promote_lookahead.py"],
|
|
196
303
|
["scripts/promote_lookahead.py", "skills/gsd-path-roadmap/scripts/promote_lookahead.py"],
|
|
197
304
|
["scripts/archive_milestone.py", "skills/gsd-path-roadmap/scripts/archive_milestone.py"],
|
|
@@ -258,9 +365,12 @@
|
|
|
258
365
|
["scripts/loop_run.py", "skills/gsd-path-build/scripts/loop_run.py"],
|
|
259
366
|
["scripts/workflow_run.py", "skills/gsd-path/scripts/workflow_run.py"],
|
|
260
367
|
["scripts/workflow_run.py", "skills/gsd-path-plan/scripts/workflow_run.py"],
|
|
368
|
+
["scripts/workflow_run.py", "skills/gsd-path-inspect/scripts/workflow_run.py"],
|
|
261
369
|
["scripts/workflow_run.py", "skills/gsd-path-build/scripts/workflow_run.py"],
|
|
262
370
|
["scripts/dispatch_driver.py", "skills/gsd-path/scripts/dispatch_driver.py"],
|
|
371
|
+
["scripts/task_context.py", "skills/gsd-path/scripts/task_context.py"],
|
|
263
372
|
["scripts/dispatch_driver.py", "skills/gsd-path-build/scripts/dispatch_driver.py"],
|
|
373
|
+
["scripts/task_context.py", "skills/gsd-path-build/scripts/task_context.py"],
|
|
264
374
|
["scripts/workflow_run.py", "skills/gsd-path-ship/scripts/workflow_run.py"],
|
|
265
375
|
["scripts/lean_verification.py", "skills/gsd-path/scripts/lean_verification.py"],
|
|
266
376
|
["scripts/lean_verification.py", "skills/gsd-path-ship/scripts/lean_verification.py"],
|
|
@@ -290,38 +400,106 @@
|
|
|
290
400
|
["scripts/pipeline_git.py", "skills/gsd-path-decide/scripts/pipeline_git.py"],
|
|
291
401
|
["scripts/pipeline_git.py", "skills/gsd-path-define/scripts/pipeline_git.py"],
|
|
292
402
|
["scripts/pipeline_state.py", "skills/gsd-path/scripts/pipeline_state.py"],
|
|
403
|
+
["scripts/build_recovery.py", "skills/gsd-path/scripts/build_recovery.py"],
|
|
293
404
|
["scripts/state_checkpoint.py", "skills/gsd-path/scripts/state_checkpoint.py"],
|
|
294
405
|
["scripts/state_promote.py", "skills/gsd-path/scripts/state_promote.py"],
|
|
295
406
|
["scripts/pipeline_state.py", "skills/gsd-path-build/scripts/pipeline_state.py"],
|
|
407
|
+
["scripts/build_recovery.py", "skills/gsd-path-build/scripts/build_recovery.py"],
|
|
296
408
|
["scripts/state_checkpoint.py", "skills/gsd-path-build/scripts/state_checkpoint.py"],
|
|
297
409
|
["scripts/state_promote.py", "skills/gsd-path-build/scripts/state_promote.py"],
|
|
298
410
|
["scripts/pipeline_state.py", "skills/gsd-path-ship/scripts/pipeline_state.py"],
|
|
411
|
+
["scripts/build_recovery.py", "skills/gsd-path-ship/scripts/build_recovery.py"],
|
|
299
412
|
["scripts/state_checkpoint.py", "skills/gsd-path-ship/scripts/state_checkpoint.py"],
|
|
300
413
|
["scripts/state_promote.py", "skills/gsd-path-ship/scripts/state_promote.py"],
|
|
301
414
|
["scripts/pipeline_state.py", "skills/gsd-path-plan/scripts/pipeline_state.py"],
|
|
415
|
+
["scripts/build_recovery.py", "skills/gsd-path-plan/scripts/build_recovery.py"],
|
|
302
416
|
["scripts/state_checkpoint.py", "skills/gsd-path-plan/scripts/state_checkpoint.py"],
|
|
303
417
|
["scripts/state_promote.py", "skills/gsd-path-plan/scripts/state_promote.py"],
|
|
304
418
|
["scripts/pipeline_state.py", "skills/gsd-path-roadmap/scripts/pipeline_state.py"],
|
|
419
|
+
["scripts/build_recovery.py", "skills/gsd-path-roadmap/scripts/build_recovery.py"],
|
|
305
420
|
["scripts/state_checkpoint.py", "skills/gsd-path-roadmap/scripts/state_checkpoint.py"],
|
|
306
421
|
["scripts/state_promote.py", "skills/gsd-path-roadmap/scripts/state_promote.py"],
|
|
307
422
|
["scripts/pipeline_state.py", "skills/gsd-path-research/scripts/pipeline_state.py"],
|
|
423
|
+
["scripts/build_recovery.py", "skills/gsd-path-research/scripts/build_recovery.py"],
|
|
308
424
|
["scripts/state_checkpoint.py", "skills/gsd-path-research/scripts/state_checkpoint.py"],
|
|
309
425
|
["scripts/state_promote.py", "skills/gsd-path-research/scripts/state_promote.py"],
|
|
310
426
|
["scripts/pipeline_state.py", "skills/gsd-path-decide/scripts/pipeline_state.py"],
|
|
427
|
+
["scripts/build_recovery.py", "skills/gsd-path-decide/scripts/build_recovery.py"],
|
|
311
428
|
["scripts/state_checkpoint.py", "skills/gsd-path-decide/scripts/state_checkpoint.py"],
|
|
312
429
|
["scripts/state_promote.py", "skills/gsd-path-decide/scripts/state_promote.py"],
|
|
313
430
|
["scripts/pipeline_state.py", "skills/gsd-path-define/scripts/pipeline_state.py"],
|
|
431
|
+
["scripts/build_recovery.py", "skills/gsd-path-define/scripts/build_recovery.py"],
|
|
314
432
|
["scripts/state_checkpoint.py", "skills/gsd-path-define/scripts/state_checkpoint.py"],
|
|
315
433
|
["scripts/state_promote.py", "skills/gsd-path-define/scripts/state_promote.py"],
|
|
316
434
|
["scripts/pipeline_state.py", "skills/gsd-path-inspect/scripts/pipeline_state.py"],
|
|
435
|
+
["scripts/build_recovery.py", "skills/gsd-path-inspect/scripts/build_recovery.py"],
|
|
317
436
|
["scripts/state_checkpoint.py", "skills/gsd-path-inspect/scripts/state_checkpoint.py"],
|
|
318
437
|
["scripts/state_promote.py", "skills/gsd-path-inspect/scripts/state_promote.py"],
|
|
319
438
|
["scripts/pipeline_state.py", "skills/gsd-path-docs-audit/scripts/pipeline_state.py"],
|
|
439
|
+
["scripts/build_recovery.py", "skills/gsd-path-docs-audit/scripts/build_recovery.py"],
|
|
320
440
|
["scripts/state_checkpoint.py", "skills/gsd-path-docs-audit/scripts/state_checkpoint.py"],
|
|
321
441
|
["scripts/state_promote.py", "skills/gsd-path-docs-audit/scripts/state_promote.py"],
|
|
322
442
|
["scripts/build_state.py", "skills/gsd-path/scripts/build_state.py"],
|
|
323
443
|
["scripts/build_state.py", "skills/gsd-path-build/scripts/build_state.py"],
|
|
324
|
-
["scripts/build_state.py", "skills/gsd-path-ship/scripts/build_state.py"]
|
|
444
|
+
["scripts/build_state.py", "skills/gsd-path-ship/scripts/build_state.py"],
|
|
445
|
+
["scripts/roadmap.py", "skills/gsd-path-build/scripts/roadmap.py"],
|
|
446
|
+
["scripts/roadmap.py", "skills/gsd-path-decide/scripts/roadmap.py"],
|
|
447
|
+
["scripts/roadmap.py", "skills/gsd-path-define/scripts/roadmap.py"],
|
|
448
|
+
["scripts/roadmap.py", "skills/gsd-path-docs-audit/scripts/roadmap.py"],
|
|
449
|
+
["scripts/roadmap.py", "skills/gsd-path-inspect/scripts/roadmap.py"],
|
|
450
|
+
["scripts/roadmap.py", "skills/gsd-path-plan/scripts/roadmap.py"],
|
|
451
|
+
["scripts/roadmap.py", "skills/gsd-path-research/scripts/roadmap.py"],
|
|
452
|
+
["scripts/roadmap.py", "skills/gsd-path-roadmap/scripts/roadmap.py"],
|
|
453
|
+
["scripts/roadmap.py", "skills/gsd-path-ship/scripts/roadmap.py"],
|
|
454
|
+
["scripts/roadmap.py", "skills/gsd-path/scripts/roadmap.py"],
|
|
455
|
+
["scripts/model_policy.py", "skills/gsd-path/scripts/model_policy.py"],
|
|
456
|
+
["scripts/model_policy.py", "skills/gsd-path-build/scripts/model_policy.py"],
|
|
457
|
+
["scripts/model_policy.py", "skills/gsd-path-decide/scripts/model_policy.py"],
|
|
458
|
+
["scripts/loop_run.py", "skills/gsd-path-decide/scripts/loop_run.py"],
|
|
459
|
+
["scripts/model_policy.py", "skills/gsd-path-define/scripts/model_policy.py"],
|
|
460
|
+
["scripts/loop_run.py", "skills/gsd-path-define/scripts/loop_run.py"],
|
|
461
|
+
["scripts/model_policy.py", "skills/gsd-path-discuss/scripts/model_policy.py"],
|
|
462
|
+
["scripts/loop_run.py", "skills/gsd-path-discuss/scripts/loop_run.py"],
|
|
463
|
+
["scripts/review_panel.py", "skills/gsd-path-discuss/scripts/review_panel.py"],
|
|
464
|
+
["scripts/model_policy.py", "skills/gsd-path-docs-audit/scripts/model_policy.py"],
|
|
465
|
+
["scripts/loop_run.py", "skills/gsd-path-docs-audit/scripts/loop_run.py"],
|
|
466
|
+
["scripts/model_policy.py", "skills/gsd-path-forensics/scripts/model_policy.py"],
|
|
467
|
+
["scripts/loop_run.py", "skills/gsd-path-forensics/scripts/loop_run.py"],
|
|
468
|
+
["scripts/review_panel.py", "skills/gsd-path-forensics/scripts/review_panel.py"],
|
|
469
|
+
["scripts/model_policy.py", "skills/gsd-path-inspect/scripts/model_policy.py"],
|
|
470
|
+
["scripts/loop_run.py", "skills/gsd-path-inspect/scripts/loop_run.py"],
|
|
471
|
+
["scripts/model_policy.py", "skills/gsd-path-loop/scripts/model_policy.py"],
|
|
472
|
+
["scripts/review_panel.py", "skills/gsd-path-loop/scripts/review_panel.py"],
|
|
473
|
+
["scripts/model_policy.py", "skills/gsd-path-migrate/scripts/model_policy.py"],
|
|
474
|
+
["scripts/_common.py", "skills/gsd-path-migrate/scripts/_common.py"],
|
|
475
|
+
["scripts/loop_run.py", "skills/gsd-path-migrate/scripts/loop_run.py"],
|
|
476
|
+
["scripts/review_panel.py", "skills/gsd-path-migrate/scripts/review_panel.py"],
|
|
477
|
+
["scripts/model_policy.py", "skills/gsd-path-plan/scripts/model_policy.py"],
|
|
478
|
+
["scripts/loop_run.py", "skills/gsd-path-plan/scripts/loop_run.py"],
|
|
479
|
+
["scripts/model_policy.py", "skills/gsd-path-research/scripts/model_policy.py"],
|
|
480
|
+
["scripts/loop_run.py", "skills/gsd-path-research/scripts/loop_run.py"],
|
|
481
|
+
["scripts/model_policy.py", "skills/gsd-path-roadmap/scripts/model_policy.py"],
|
|
482
|
+
["scripts/loop_run.py", "skills/gsd-path-roadmap/scripts/loop_run.py"],
|
|
483
|
+
["scripts/model_policy.py", "skills/gsd-path-ship/scripts/model_policy.py"],
|
|
484
|
+
["scripts/loop_run.py", "skills/gsd-path-ship/scripts/loop_run.py"],
|
|
485
|
+
["scripts/model_policy.py", "skills/gsd-path-undo/scripts/model_policy.py"],
|
|
486
|
+
["scripts/loop_run.py", "skills/gsd-path-undo/scripts/loop_run.py"],
|
|
487
|
+
["scripts/review_panel.py", "skills/gsd-path-undo/scripts/review_panel.py"],
|
|
488
|
+
["scripts/path_config.py", "skills/gsd-path-build/scripts/path_config.py"],
|
|
489
|
+
["scripts/path_config.py", "skills/gsd-path-decide/scripts/path_config.py"],
|
|
490
|
+
["scripts/path_config.py", "skills/gsd-path-define/scripts/path_config.py"],
|
|
491
|
+
["scripts/path_config.py", "skills/gsd-path-discuss/scripts/path_config.py"],
|
|
492
|
+
["scripts/path_config.py", "skills/gsd-path-docs-audit/scripts/path_config.py"],
|
|
493
|
+
["scripts/path_config.py", "skills/gsd-path-forensics/scripts/path_config.py"],
|
|
494
|
+
["scripts/path_config.py", "skills/gsd-path-inspect/scripts/path_config.py"],
|
|
495
|
+
["scripts/path_config.py", "skills/gsd-path-loop/scripts/path_config.py"],
|
|
496
|
+
["scripts/path_config.py", "skills/gsd-path-migrate/scripts/path_config.py"],
|
|
497
|
+
["scripts/path_config.py", "skills/gsd-path-plan/scripts/path_config.py"],
|
|
498
|
+
["scripts/path_config.py", "skills/gsd-path-research/scripts/path_config.py"],
|
|
499
|
+
["scripts/path_config.py", "skills/gsd-path-roadmap/scripts/path_config.py"],
|
|
500
|
+
["scripts/path_config.py", "skills/gsd-path-ship/scripts/path_config.py"],
|
|
501
|
+
["scripts/path_config.py", "skills/gsd-path-undo/scripts/path_config.py"],
|
|
502
|
+
["scripts/path_config.py", "skills/gsd-path/scripts/path_config.py"]
|
|
325
503
|
],
|
|
326
504
|
"phase_contract_targets": [
|
|
327
505
|
["skills/gsd-path-build/SKILL.md", "skills/gsd-path/BUILD.md"],
|