@opengsd/gsd-path 1.1.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 +5 -2
- package/CHANGELOG.md +68 -0
- package/DOCS.md +69 -1
- package/FULL.md +3 -2
- package/HOOKS.md +18 -9
- package/QUICK.md +5 -3
- package/README.md +72 -5
- package/RUNTIME.md +9 -4
- package/UPDATE.md +30 -11
- package/WORKFLOW.md +5 -2
- package/package.json +9 -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 +6 -19
- package/scripts/_common.py +5 -0
- package/scripts/archive_milestone.py +20 -6
- package/scripts/bootstrap_repository.py +8 -1
- package/scripts/build_recovery.py +5 -0
- package/scripts/build_state.py +2 -0
- package/scripts/check_docs_audit.py +2 -0
- package/scripts/check_handoffs.py +6 -0
- package/scripts/check_task_briefs.py +3 -0
- package/scripts/detect_project.py +11 -1
- package/scripts/discussion_records.py +3 -0
- package/scripts/discussion_validate.py +8 -3
- package/scripts/dispatch_driver.py +230 -21
- package/scripts/git_guard.py +12 -4
- package/scripts/guard_hook.py +11 -1
- package/scripts/install.mjs +52 -1448
- package/scripts/install.py +155 -190
- package/scripts/integration.py +28 -8
- package/scripts/isolation.py +15 -5
- package/scripts/jev_review.py +138 -0
- package/scripts/lean_verification.py +2 -0
- 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 +3 -0
- package/scripts/pipeline_git.py +3 -0
- package/scripts/pipeline_state.py +4 -1
- package/scripts/pipeline_undo.py +3 -0
- package/scripts/promote_lookahead.py +3 -0
- package/scripts/review_panel.py +11 -0
- package/scripts/roadmap.py +5 -0
- package/scripts/runtime_store.py +278 -0
- package/scripts/skill-resources.json +104 -4
- package/scripts/state_checkpoint.py +5 -0
- package/scripts/state_promote.py +5 -0
- package/scripts/status_runtime.py +92 -6
- package/scripts/workflow_run.py +12 -1
- package/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path/BUILD.md +7 -0
- package/skills/gsd-path/DECIDE.md +2 -0
- package/skills/gsd-path/DEFINE.md +13 -7
- package/skills/gsd-path/DOCS-AUDIT.md +2 -0
- package/skills/gsd-path/INSPECT.md +2 -0
- package/skills/gsd-path/PLAN.md +4 -2
- package/skills/gsd-path/RESEARCH.md +2 -0
- package/skills/gsd-path/ROADMAP.md +2 -0
- package/skills/gsd-path/SHIP.md +24 -13
- package/skills/gsd-path/SKILL.md +23 -9
- package/skills/gsd-path/references/build-native.md +15 -7
- package/skills/gsd-path/references/config.md +57 -0
- package/skills/gsd-path/references/dispatch.md +6 -19
- 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-panel.md +1 -1
- package/skills/gsd-path/references/reviewer.md +2 -0
- 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 +20 -6
- package/skills/gsd-path/scripts/bootstrap_repository.py +8 -1
- package/skills/gsd-path/scripts/build_recovery.py +5 -0
- package/skills/gsd-path/scripts/build_state.py +2 -0
- package/skills/gsd-path/scripts/check_docs_audit.py +2 -0
- package/skills/gsd-path/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path/scripts/detect_project.py +11 -1
- 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 +230 -21
- package/skills/gsd-path/scripts/git_guard.py +768 -0
- package/skills/gsd-path/scripts/integration.py +28 -8
- package/skills/gsd-path/scripts/isolation.py +15 -5
- package/skills/gsd-path/scripts/jev_review.py +138 -0
- package/skills/gsd-path/scripts/lean_verification.py +2 -0
- 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 +4 -1
- package/skills/gsd-path/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path/scripts/review_panel.py +11 -0
- package/skills/gsd-path/scripts/roadmap.py +5 -0
- package/skills/gsd-path/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path/scripts/state_promote.py +5 -0
- package/skills/gsd-path/scripts/status_runtime.py +208 -0
- package/skills/gsd-path/scripts/workflow_run.py +12 -1
- 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-build/SKILL.md +7 -0
- package/skills/gsd-path-build/references/build-native.md +15 -7
- package/skills/gsd-path-build/references/dispatch.md +6 -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-panel.md +1 -1
- package/skills/gsd-path-build/references/reviewer.md +2 -0
- 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 +20 -6
- package/skills/gsd-path-build/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-build/scripts/build_state.py +2 -0
- package/skills/gsd-path-build/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-build/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-build/scripts/detect_project.py +11 -1
- 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 +230 -21
- package/skills/gsd-path-build/scripts/integration.py +28 -8
- package/skills/gsd-path-build/scripts/isolation.py +15 -5
- 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 +4 -1
- package/skills/gsd-path-build/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-build/scripts/review_panel.py +11 -0
- package/skills/gsd-path-build/scripts/roadmap.py +5 -0
- package/skills/gsd-path-build/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-build/scripts/state_promote.py +5 -0
- package/skills/gsd-path-build/scripts/workflow_run.py +12 -1
- 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-decide/SKILL.md +2 -0
- package/skills/gsd-path-decide/references/dispatch.md +6 -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 +20 -6
- package/skills/gsd-path-decide/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-decide/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-decide/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-decide/scripts/detect_project.py +11 -1
- package/skills/gsd-path-decide/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-decide/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-decide/scripts/integration.py +28 -8
- package/skills/gsd-path-decide/scripts/isolation.py +15 -5
- 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 +4 -1
- package/skills/gsd-path-decide/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-decide/scripts/review_panel.py +11 -0
- package/skills/gsd-path-decide/scripts/roadmap.py +5 -0
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-decide/scripts/state_promote.py +5 -0
- package/skills/gsd-path-decide/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-define/SKILL.md +13 -7
- 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 +20 -6
- package/skills/gsd-path-define/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-define/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-define/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-define/scripts/detect_project.py +11 -1
- package/skills/gsd-path-define/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-define/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-define/scripts/integration.py +28 -8
- package/skills/gsd-path-define/scripts/isolation.py +15 -5
- 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 +4 -1
- package/skills/gsd-path-define/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-define/scripts/review_panel.py +11 -0
- package/skills/gsd-path-define/scripts/roadmap.py +5 -0
- package/skills/gsd-path-define/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-define/scripts/state_promote.py +5 -0
- 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 +6 -19
- 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 +20 -6
- package/skills/gsd-path-docs-audit/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +2 -0
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-docs-audit/scripts/detect_project.py +11 -1
- package/skills/gsd-path-docs-audit/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-docs-audit/scripts/integration.py +28 -8
- package/skills/gsd-path-docs-audit/scripts/isolation.py +15 -5
- 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 +4 -1
- package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-docs-audit/scripts/review_panel.py +11 -0
- package/skills/gsd-path-docs-audit/scripts/roadmap.py +5 -0
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +5 -0
- 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 +3 -0
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +3 -0
- 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 +2 -0
- package/skills/gsd-path-inspect/references/dispatch.md +6 -19
- 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 +20 -6
- package/skills/gsd-path-inspect/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +2 -0
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-inspect/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-inspect/scripts/detect_project.py +11 -1
- package/skills/gsd-path-inspect/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-inspect/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-inspect/scripts/integration.py +28 -8
- package/skills/gsd-path-inspect/scripts/isolation.py +15 -5
- 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 +4 -1
- package/skills/gsd-path-inspect/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-inspect/scripts/review_panel.py +11 -0
- package/skills/gsd-path-inspect/scripts/roadmap.py +5 -0
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-inspect/scripts/state_promote.py +5 -0
- package/skills/gsd-path-inspect/scripts/workflow_run.py +12 -1
- 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 +4 -2
- package/skills/gsd-path-plan/references/dispatch.md +6 -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 +20 -6
- package/skills/gsd-path-plan/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-plan/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-plan/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-plan/scripts/detect_project.py +11 -1
- package/skills/gsd-path-plan/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-plan/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-plan/scripts/integration.py +28 -8
- package/skills/gsd-path-plan/scripts/isolation.py +15 -5
- 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 +4 -1
- package/skills/gsd-path-plan/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-plan/scripts/review_panel.py +11 -0
- package/skills/gsd-path-plan/scripts/roadmap.py +5 -0
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-plan/scripts/state_promote.py +5 -0
- package/skills/gsd-path-plan/scripts/workflow_run.py +12 -1
- 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 +2 -0
- package/skills/gsd-path-research/references/dispatch.md +6 -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 +20 -6
- package/skills/gsd-path-research/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-research/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-research/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-research/scripts/detect_project.py +11 -1
- package/skills/gsd-path-research/scripts/discussion_records.py +3 -0
- package/skills/gsd-path-research/scripts/discussion_validate.py +8 -3
- package/skills/gsd-path-research/scripts/integration.py +28 -8
- package/skills/gsd-path-research/scripts/isolation.py +15 -5
- 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 +4 -1
- package/skills/gsd-path-research/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-research/scripts/review_panel.py +11 -0
- package/skills/gsd-path-research/scripts/roadmap.py +5 -0
- package/skills/gsd-path-research/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-research/scripts/state_promote.py +5 -0
- package/skills/gsd-path-research/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-roadmap/SKILL.md +2 -0
- package/skills/gsd-path-roadmap/references/dispatch.md +6 -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 +20 -6
- package/skills/gsd-path-roadmap/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-roadmap/scripts/detect_project.py +11 -1
- 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 +28 -8
- package/skills/gsd-path-roadmap/scripts/isolation.py +15 -5
- 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 +4 -1
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-roadmap/scripts/review_panel.py +11 -0
- package/skills/gsd-path-roadmap/scripts/roadmap.py +5 -0
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-roadmap/scripts/state_promote.py +5 -0
- package/skills/gsd-path-roadmap/scripts/worktree_paths.py +94 -0
- package/skills/gsd-path-ship/SKILL.md +24 -13
- package/skills/gsd-path-ship/references/dispatch.md +6 -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-panel.md +1 -1
- package/skills/gsd-path-ship/references/reviewer.md +2 -0
- 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 +20 -6
- package/skills/gsd-path-ship/scripts/build_recovery.py +5 -0
- package/skills/gsd-path-ship/scripts/build_state.py +2 -0
- package/skills/gsd-path-ship/scripts/check_handoffs.py +6 -0
- package/skills/gsd-path-ship/scripts/check_task_briefs.py +3 -0
- package/skills/gsd-path-ship/scripts/detect_project.py +11 -1
- 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 +28 -8
- package/skills/gsd-path-ship/scripts/isolation.py +15 -5
- package/skills/gsd-path-ship/scripts/jev_review.py +138 -0
- package/skills/gsd-path-ship/scripts/lean_verification.py +2 -0
- 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 +4 -1
- package/skills/gsd-path-ship/scripts/promote_lookahead.py +3 -0
- package/skills/gsd-path-ship/scripts/review_panel.py +11 -0
- package/skills/gsd-path-ship/scripts/roadmap.py +5 -0
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +5 -0
- package/skills/gsd-path-ship/scripts/state_promote.py +5 -0
- package/skills/gsd-path-ship/scripts/workflow_run.py +12 -1
- package/skills/gsd-path-ship/scripts/worktree_paths.py +94 -0
- 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 +3 -0
- 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 +7 -0
- package/skills/path/DECIDE.md +2 -0
- package/skills/path/DEFINE.md +13 -7
- package/skills/path/DOCS-AUDIT.md +2 -0
- package/skills/path/INSPECT.md +2 -0
- package/skills/path/PLAN.md +4 -2
- package/skills/path/RESEARCH.md +2 -0
- package/skills/path/ROADMAP.md +2 -0
- package/skills/path/SHIP.md +24 -13
- package/skills/path/SKILL.md +23 -9
- package/skills/path/references/build-native.md +15 -7
- package/skills/path/references/config.md +57 -0
- package/skills/path/references/dispatch.md +6 -19
- package/skills/path/references/jev-review.md +82 -0
- package/skills/path/references/model-policy.md +139 -0
- package/skills/path/references/reviewer-panel.md +1 -1
- package/skills/path/references/reviewer.md +2 -0
- package/skills/path/references/runtime-selection.md +25 -0
- package/skills/path/scripts/_common.py +5 -0
- package/skills/path/scripts/archive_milestone.py +20 -6
- package/skills/path/scripts/bootstrap_repository.py +8 -1
- package/skills/path/scripts/build_recovery.py +5 -0
- package/skills/path/scripts/build_state.py +2 -0
- package/skills/path/scripts/check_docs_audit.py +2 -0
- package/skills/path/scripts/check_handoffs.py +6 -0
- package/skills/path/scripts/check_task_briefs.py +3 -0
- package/skills/path/scripts/detect_project.py +11 -1
- 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 +230 -21
- package/skills/path/scripts/git_guard.py +768 -0
- package/skills/path/scripts/integration.py +28 -8
- package/skills/path/scripts/isolation.py +15 -5
- package/skills/path/scripts/jev_review.py +138 -0
- package/skills/path/scripts/lean_verification.py +2 -0
- 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 +4 -1
- package/skills/path/scripts/promote_lookahead.py +3 -0
- package/skills/path/scripts/review_panel.py +11 -0
- package/skills/path/scripts/roadmap.py +5 -0
- package/skills/path/scripts/state_checkpoint.py +5 -0
- package/skills/path/scripts/state_promote.py +5 -0
- package/skills/path/scripts/status_runtime.py +208 -0
- package/skills/path/scripts/workflow_run.py +12 -1
- 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/gsd-path/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/discussion_records.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/integration.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/loop_run.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/review_findings.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/task_context.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/workflow_run.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/loop_run.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/review_findings.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/task_context.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/workflow_run.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-forensics/scripts/__pycache__/pipeline_undo.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
|
@@ -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,6 +46,7 @@
|
|
|
45
46
|
"scripts/wizard.mjs",
|
|
46
47
|
"scripts/skill-resources.json",
|
|
47
48
|
"scripts/_common.py",
|
|
49
|
+
"scripts/worktree_paths.py",
|
|
48
50
|
"scripts/build_recovery.py",
|
|
49
51
|
"scripts/state_checkpoint.py",
|
|
50
52
|
"scripts/roadmap.py",
|
|
@@ -59,7 +61,10 @@
|
|
|
59
61
|
"scripts/check_handoffs.py",
|
|
60
62
|
"scripts/check_docs_audit.py",
|
|
61
63
|
"scripts/check_task_briefs.py",
|
|
64
|
+
"scripts/path_config.py",
|
|
65
|
+
"scripts/model_policy.py",
|
|
62
66
|
"scripts/review_panel.py",
|
|
67
|
+
"scripts/jev_review.py",
|
|
63
68
|
"scripts/review_findings.py",
|
|
64
69
|
"scripts/check_update.py",
|
|
65
70
|
"scripts/guard_hook.py",
|
|
@@ -78,6 +83,7 @@
|
|
|
78
83
|
"scripts/pipeline_undo.py",
|
|
79
84
|
"scripts/pipeline_diagnose.py",
|
|
80
85
|
"README.md",
|
|
86
|
+
"CHANGELOG.md",
|
|
81
87
|
"MIGRATE.md",
|
|
82
88
|
"RUNTIME.md",
|
|
83
89
|
"DOCS.md",
|
|
@@ -93,12 +99,15 @@
|
|
|
93
99
|
],
|
|
94
100
|
"phase_resources": {
|
|
95
101
|
"gsd-path-build": [
|
|
102
|
+
"references/runtime-selection.md",
|
|
96
103
|
"references/build-recovery.md",
|
|
97
104
|
"references/build-native.md",
|
|
98
105
|
"references/build-abandon.md",
|
|
99
106
|
"references/coder.md",
|
|
100
107
|
"references/dispatch.md",
|
|
108
|
+
"references/model-policy.md",
|
|
101
109
|
"references/reviewer.md",
|
|
110
|
+
"references/jev-review.md",
|
|
102
111
|
"references/reviewer-wave.md",
|
|
103
112
|
"references/reviewer-skeptic.md",
|
|
104
113
|
"references/reviewer-final.md",
|
|
@@ -110,36 +119,49 @@
|
|
|
110
119
|
"templates/skeptic.md"
|
|
111
120
|
],
|
|
112
121
|
"gsd-path-discuss": [
|
|
122
|
+
"references/runtime-selection.md",
|
|
113
123
|
"templates/answers.md",
|
|
114
124
|
"templates/dialogue.md"
|
|
115
125
|
],
|
|
116
126
|
"gsd-path-docs-audit": [
|
|
127
|
+
"references/runtime-selection.md",
|
|
117
128
|
"references/dispatch.md",
|
|
129
|
+
"references/model-policy.md",
|
|
118
130
|
"references/docs-auditor.md",
|
|
119
131
|
"templates/docs-audit.md"
|
|
120
132
|
],
|
|
121
133
|
"gsd-path-define": [
|
|
134
|
+
"references/runtime-selection.md",
|
|
122
135
|
"references/build-recovery.md",
|
|
123
136
|
"templates/charter.md",
|
|
124
137
|
"templates/intent.md",
|
|
125
138
|
"templates/state.md"
|
|
126
139
|
],
|
|
127
140
|
"gsd-path-inspect": [
|
|
141
|
+
"references/runtime-selection.md",
|
|
128
142
|
"references/codebase-mapper.md",
|
|
129
143
|
"references/dispatch.md",
|
|
144
|
+
"references/model-policy.md",
|
|
130
145
|
"references/docs-auditor.md",
|
|
131
146
|
"templates/codebase.md",
|
|
132
147
|
"templates/docs-audit.md",
|
|
133
148
|
"templates/state.md"
|
|
134
149
|
],
|
|
135
|
-
"gsd-path-forensics": [
|
|
136
|
-
|
|
150
|
+
"gsd-path-forensics": [
|
|
151
|
+
"references/runtime-selection.md"
|
|
152
|
+
],
|
|
153
|
+
"gsd-path-migrate": [
|
|
154
|
+
"references/runtime-selection.md"
|
|
155
|
+
],
|
|
137
156
|
"gsd-path-loop": [
|
|
157
|
+
"references/runtime-selection.md",
|
|
138
158
|
"templates/loop.md"
|
|
139
159
|
],
|
|
140
160
|
"gsd-path-plan": [
|
|
161
|
+
"references/runtime-selection.md",
|
|
141
162
|
"references/build-recovery.md",
|
|
142
163
|
"references/dispatch.md",
|
|
164
|
+
"references/model-policy.md",
|
|
143
165
|
"references/planner.md",
|
|
144
166
|
"templates/patch-findings.md",
|
|
145
167
|
"templates/plan.md",
|
|
@@ -147,19 +169,26 @@
|
|
|
147
169
|
"templates/task.md"
|
|
148
170
|
],
|
|
149
171
|
"gsd-path-research": [
|
|
172
|
+
"references/runtime-selection.md",
|
|
150
173
|
"references/dispatch.md",
|
|
174
|
+
"references/model-policy.md",
|
|
151
175
|
"references/researcher.md",
|
|
152
176
|
"templates/evidence.md",
|
|
153
177
|
"templates/research-handoff.md"
|
|
154
178
|
],
|
|
155
179
|
"gsd-path-roadmap": [
|
|
180
|
+
"references/runtime-selection.md",
|
|
156
181
|
"references/dispatch.md",
|
|
182
|
+
"references/model-policy.md",
|
|
157
183
|
"references/roadmapper.md",
|
|
158
184
|
"templates/roadmap.md"
|
|
159
185
|
],
|
|
160
186
|
"gsd-path-ship": [
|
|
187
|
+
"references/runtime-selection.md",
|
|
161
188
|
"references/dispatch.md",
|
|
189
|
+
"references/model-policy.md",
|
|
162
190
|
"references/reviewer.md",
|
|
191
|
+
"references/jev-review.md",
|
|
163
192
|
"references/reviewer-wave.md",
|
|
164
193
|
"references/reviewer-skeptic.md",
|
|
165
194
|
"references/reviewer-final.md",
|
|
@@ -172,13 +201,36 @@
|
|
|
172
201
|
"templates/wave-review.md"
|
|
173
202
|
],
|
|
174
203
|
"gsd-path-decide": [
|
|
204
|
+
"references/runtime-selection.md",
|
|
175
205
|
"references/dispatch.md",
|
|
206
|
+
"references/model-policy.md",
|
|
176
207
|
"references/decider.md",
|
|
177
208
|
"templates/synthesis.md"
|
|
178
209
|
],
|
|
179
|
-
"gsd-path-undo": [
|
|
210
|
+
"gsd-path-undo": [
|
|
211
|
+
"references/runtime-selection.md"
|
|
212
|
+
]
|
|
180
213
|
},
|
|
181
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"],
|
|
182
234
|
["scripts/migrate_core.py", "skills/gsd-path-migrate/scripts/migrate_core.py"],
|
|
183
235
|
["scripts/core_hook_gate.py", "skills/gsd-path-migrate/scripts/core_hook_gate.py"],
|
|
184
236
|
["scripts/core_hook_settings.py", "skills/gsd-path-migrate/scripts/core_hook_settings.py"],
|
|
@@ -399,7 +451,55 @@
|
|
|
399
451
|
["scripts/roadmap.py", "skills/gsd-path-research/scripts/roadmap.py"],
|
|
400
452
|
["scripts/roadmap.py", "skills/gsd-path-roadmap/scripts/roadmap.py"],
|
|
401
453
|
["scripts/roadmap.py", "skills/gsd-path-ship/scripts/roadmap.py"],
|
|
402
|
-
["scripts/roadmap.py", "skills/gsd-path/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"]
|
|
403
503
|
],
|
|
404
504
|
"phase_contract_targets": [
|
|
405
505
|
["skills/gsd-path-build/SKILL.md", "skills/gsd-path/BUILD.md"],
|
package/scripts/state_promote.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
"""Launch the project status runtime across an atomic refresh handoff."""
|
|
3
3
|
|
|
4
|
+
import argparse
|
|
5
|
+
import hashlib
|
|
4
6
|
import errno
|
|
5
7
|
import json
|
|
6
8
|
import os
|
|
@@ -72,8 +74,85 @@ def install_lock_active(lock: Path) -> bool:
|
|
|
72
74
|
return current_identity == identity
|
|
73
75
|
|
|
74
76
|
|
|
77
|
+
RUNTIME_SCHEMA = "gsd-path/runtime/v1"
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def runtime_home() -> Path:
|
|
81
|
+
return Path.home() / ".gsd-path" / "runtimes"
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def declaration(repo: Path) -> dict:
|
|
85
|
+
path = repo / ".gsd-path" / "runtime.json"
|
|
86
|
+
if path.is_symlink() or path.parent.is_symlink():
|
|
87
|
+
raise ValueError(f"unsafe runtime declaration: {path}")
|
|
88
|
+
data = json.loads(path.read_text(encoding="utf-8"))
|
|
89
|
+
if (not isinstance(data, dict) or data.get("schema") != RUNTIME_SCHEMA
|
|
90
|
+
or not isinstance(data.get("version"), str)
|
|
91
|
+
or not isinstance(data.get("digest"), str)
|
|
92
|
+
or len(data["digest"]) != 64
|
|
93
|
+
or any(c not in "0123456789abcdef" for c in data["digest"])):
|
|
94
|
+
raise ValueError(f"invalid runtime declaration: {path}")
|
|
95
|
+
return data
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def manifest_digest(manifest: dict) -> str:
|
|
99
|
+
return hashlib.sha256(json.dumps(manifest, sort_keys=True, separators=(",", ":")).encode()).hexdigest()
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def validate_runtime(data: dict) -> Path:
|
|
103
|
+
root = runtime_home() / data["digest"]
|
|
104
|
+
hint = (f"Runtime {data['version']} ({data['digest']}) is unavailable or invalid at {root}. "
|
|
105
|
+
"Run gsd-path --runtime-restore --project <project-root> "
|
|
106
|
+
"--source-root <matching-package-root> to restore this exact runtime.")
|
|
107
|
+
try:
|
|
108
|
+
if any(p.is_symlink() for p in (root, root.parent, root.parent.parent)):
|
|
109
|
+
raise ValueError("symlinked runtime storage")
|
|
110
|
+
manifest_path = root / "manifest.json"
|
|
111
|
+
if manifest_path.is_symlink():
|
|
112
|
+
raise ValueError("symlinked manifest")
|
|
113
|
+
manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
|
|
114
|
+
if (not isinstance(manifest, dict) or manifest_digest(manifest) != data["digest"]
|
|
115
|
+
or manifest.get("version") != data["version"]):
|
|
116
|
+
raise ValueError("manifest identity mismatch")
|
|
117
|
+
files = manifest.get("files")
|
|
118
|
+
if not isinstance(files, dict) or "pipeline_state.py" not in files:
|
|
119
|
+
raise ValueError("invalid runtime file inventory")
|
|
120
|
+
for name, expected in files.items():
|
|
121
|
+
if Path(name).name != name or not name.endswith(".py"):
|
|
122
|
+
raise ValueError("invalid runtime file name")
|
|
123
|
+
path = root / name
|
|
124
|
+
if path.is_symlink() or hashlib.sha256(path.read_bytes()).hexdigest() != expected:
|
|
125
|
+
raise ValueError(f"runtime file changed: {name}")
|
|
126
|
+
if set(p.name for p in root.iterdir()) != set(files) | {"manifest.json"}:
|
|
127
|
+
raise ValueError("unexpected runtime files")
|
|
128
|
+
except (OSError, ValueError, TypeError) as error:
|
|
129
|
+
raise ValueError(hint + f" ({error})") from error
|
|
130
|
+
return root
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def resolve_runtime(repo: Path) -> Path:
|
|
134
|
+
return validate_runtime(declaration(repo))
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def run_guard(repo: Path, name: str) -> None:
|
|
138
|
+
# Keep the guard's project identity while executing verified external bytes.
|
|
139
|
+
root = resolve_runtime(repo)
|
|
140
|
+
sys.dont_write_bytecode = True
|
|
141
|
+
sys.path.insert(0, str(root))
|
|
142
|
+
code = compile((root / name).read_bytes(), str(root / name), "exec")
|
|
143
|
+
exec(code, {"__name__": "__main__", "__file__": str(repo / ".gsd-path" / name)})
|
|
144
|
+
|
|
145
|
+
|
|
75
146
|
def launch(repo: Path) -> int:
|
|
76
147
|
parent = repo / ".gsd-path"
|
|
148
|
+
if os.path.lexists(parent / "runtime.json"):
|
|
149
|
+
try:
|
|
150
|
+
runtime = resolve_runtime(repo) / "pipeline_state.py"
|
|
151
|
+
except (OSError, ValueError) as error:
|
|
152
|
+
print(str(error), file=sys.stderr)
|
|
153
|
+
return 2
|
|
154
|
+
return subprocess.call([sys.executable, "-B", str(runtime), "status", "--repo", str(repo)],
|
|
155
|
+
env={**os.environ, "GIT_OPTIONAL_LOCKS": "0"})
|
|
77
156
|
runtime = parent / "runtime" / "pipeline_state.py"
|
|
78
157
|
lock = repo / ".gsd-path-install-lock"
|
|
79
158
|
command = [sys.executable, "-B", str(runtime), "status", "--repo", str(repo)]
|
|
@@ -108,14 +187,21 @@ def launch(repo: Path) -> int:
|
|
|
108
187
|
|
|
109
188
|
|
|
110
189
|
def main(argv: Sequence[str] = sys.argv[1:]) -> int:
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if not repo.is_absolute():
|
|
190
|
+
parser = argparse.ArgumentParser(description=__doc__)
|
|
191
|
+
parser.add_argument("--repo", required=True, type=Path)
|
|
192
|
+
parser.add_argument("--runtime-path", action="store_true")
|
|
193
|
+
args = parser.parse_args(argv)
|
|
194
|
+
if not args.repo.is_absolute():
|
|
116
195
|
print("GSD Path status repository must be absolute", file=sys.stderr)
|
|
117
196
|
return 2
|
|
118
|
-
|
|
197
|
+
if args.runtime_path:
|
|
198
|
+
try:
|
|
199
|
+
print(resolve_runtime(args.repo.resolve()))
|
|
200
|
+
return 0
|
|
201
|
+
except (OSError, ValueError) as error:
|
|
202
|
+
print(str(error), file=sys.stderr)
|
|
203
|
+
return 2
|
|
204
|
+
return launch(args.repo.resolve())
|
|
119
205
|
|
|
120
206
|
|
|
121
207
|
if __name__ == "__main__":
|
package/scripts/workflow_run.py
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import argparse
|
|
5
5
|
import hashlib
|
|
6
6
|
import json
|
|
7
|
+
import os
|
|
7
8
|
import subprocess
|
|
8
9
|
import sys
|
|
9
10
|
import tempfile
|
|
@@ -28,9 +29,10 @@ def run_workflow(repo: Path, action: str, project_dir: str, expected_head: str =
|
|
|
28
29
|
steps = []
|
|
29
30
|
outputs = {}
|
|
30
31
|
scripts = Path(__file__).resolve().parent
|
|
32
|
+
helpers = scripts
|
|
31
33
|
|
|
32
34
|
def step(script, *arguments, raw=False):
|
|
33
|
-
command = [sys.executable, "-B", str(
|
|
35
|
+
command = [sys.executable, "-B", str(helpers / script), *arguments]
|
|
34
36
|
completed = subprocess.run(command, cwd=repo, capture_output=True, text=True)
|
|
35
37
|
receipt = {"script": script, "command": command, "exit_code": completed.returncode,
|
|
36
38
|
"stdout": completed.stdout, "stderr": completed.stderr}
|
|
@@ -49,6 +51,15 @@ def run_workflow(repo: Path, action: str, project_dir: str, expected_head: str =
|
|
|
49
51
|
|
|
50
52
|
common = ["--repo", str(repo), "--project-dir", project_dir]
|
|
51
53
|
try:
|
|
54
|
+
if os.path.lexists(repo / ".gsd-path/runtime.json"):
|
|
55
|
+
resolved = subprocess.run(
|
|
56
|
+
[sys.executable, "-B", str(repo / ".gsd-path/status_runtime.py"),
|
|
57
|
+
"--repo", str(repo), "--runtime-path"],
|
|
58
|
+
cwd=repo, capture_output=True, text=True)
|
|
59
|
+
if resolved.returncode:
|
|
60
|
+
sys.stderr.write(resolved.stderr)
|
|
61
|
+
raise StepFailed(resolved.stderr.strip())
|
|
62
|
+
helpers = Path(resolved.stdout.strip())
|
|
52
63
|
if action == "route":
|
|
53
64
|
step("pipeline_state.py", "route", *common)
|
|
54
65
|
elif action == "prepare-inspect":
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# gsd-path project runtime
|
|
3
|
+
"""Placement shared by task isolation, verification, and integration."""
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
|
|
7
|
+
# Runtime helpers must not modify their immutable installation.
|
|
8
|
+
sys.dont_write_bytecode = True
|
|
9
|
+
|
|
10
|
+
import hashlib
|
|
11
|
+
import json
|
|
12
|
+
import os
|
|
13
|
+
import tempfile
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
|
|
16
|
+
try:
|
|
17
|
+
import _common
|
|
18
|
+
except ImportError:
|
|
19
|
+
from scripts import _common
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _git(primary: Path, *args: str) -> str:
|
|
23
|
+
result = _common.run_git(primary, *args)
|
|
24
|
+
if result.returncode:
|
|
25
|
+
raise ValueError(result.stderr.strip() or "cannot inspect worktree placement")
|
|
26
|
+
return result.stdout.rstrip("\n")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _identity(path: Path) -> str:
|
|
30
|
+
return hashlib.sha256(os.fsencode(path)).hexdigest()
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _workspace(primary: Path, pin: bool) -> Path:
|
|
34
|
+
common = Path(_git(primary, "rev-parse", "--git-common-dir"))
|
|
35
|
+
common = (primary / common).resolve()
|
|
36
|
+
identity = _identity(primary)
|
|
37
|
+
receipt = common / "gsd-path" / "workspaces" / f"{identity}.json"
|
|
38
|
+
try:
|
|
39
|
+
data = json.loads(receipt.read_text(encoding="utf-8"))
|
|
40
|
+
except FileNotFoundError:
|
|
41
|
+
pass
|
|
42
|
+
else:
|
|
43
|
+
if (not isinstance(data, dict) or data.get("primary") != str(primary)
|
|
44
|
+
or not isinstance(data.get("root"), str)
|
|
45
|
+
or not Path(data["root"]).is_absolute()):
|
|
46
|
+
raise ValueError(f"invalid worktree placement receipt: {receipt}")
|
|
47
|
+
return Path(data["root"])
|
|
48
|
+
|
|
49
|
+
root = Path(os.environ.get("GSD_PATH_WORKTREE_ROOT") or Path.home() / ".gsd-path" / "projects").expanduser()
|
|
50
|
+
if not root.is_absolute():
|
|
51
|
+
raise ValueError("GSD_PATH_WORKTREE_ROOT must be absolute")
|
|
52
|
+
root = root.resolve()
|
|
53
|
+
parent = root
|
|
54
|
+
while not parent.exists():
|
|
55
|
+
parent = parent.parent
|
|
56
|
+
ancestor = _common.run_git(parent, "rev-parse", "--git-common-dir")
|
|
57
|
+
same_repository = (
|
|
58
|
+
ancestor.returncode == 0
|
|
59
|
+
and (parent / ancestor.stdout.strip()).resolve() == common
|
|
60
|
+
)
|
|
61
|
+
if root.is_relative_to(primary) or same_repository:
|
|
62
|
+
raise ValueError(f"managed worktree root must be outside this repository's worktrees: {root}")
|
|
63
|
+
workspace = root / _identity(common) / identity
|
|
64
|
+
if pin:
|
|
65
|
+
receipt.parent.mkdir(parents=True, exist_ok=True)
|
|
66
|
+
fd, temporary = tempfile.mkstemp(dir=receipt.parent)
|
|
67
|
+
try:
|
|
68
|
+
with os.fdopen(fd, "w", encoding="utf-8") as handle:
|
|
69
|
+
json.dump({"primary": str(primary), "root": str(workspace)}, handle)
|
|
70
|
+
try:
|
|
71
|
+
os.link(temporary, receipt)
|
|
72
|
+
except FileExistsError:
|
|
73
|
+
return _workspace(primary, False)
|
|
74
|
+
finally:
|
|
75
|
+
os.unlink(temporary)
|
|
76
|
+
return workspace
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def worktree_path(primary: Path, kind: str, name: str, *, pin: bool = False) -> Path:
|
|
80
|
+
primary = primary.resolve()
|
|
81
|
+
if kind not in {"task", "verify", "integrate"} or not name or Path(name).name != name or name in {".", ".."}:
|
|
82
|
+
raise ValueError("invalid managed worktree kind or name")
|
|
83
|
+
legacy = (primary.parent / f".{primary.name}-gsd-path-integrate-{name}"
|
|
84
|
+
if kind == "integrate" else primary.parent / f"{primary.name}.gsd-path" / kind / name)
|
|
85
|
+
branch = f"refs/heads/gsd-path-{kind}/{name}"
|
|
86
|
+
records = _git(primary, "worktree", "list", "--porcelain", "-z").split("\0\0")
|
|
87
|
+
for record in records:
|
|
88
|
+
fields = record.split("\0")
|
|
89
|
+
if f"worktree {legacy}" in fields and f"branch {branch}" in fields:
|
|
90
|
+
return legacy
|
|
91
|
+
# Keep collision checks and missing-directory recovery at the old location.
|
|
92
|
+
if os.path.lexists(legacy):
|
|
93
|
+
return legacy
|
|
94
|
+
return _workspace(primary, pin) / kind / name
|
package/skills/gsd-path/BUILD.md
CHANGED
|
@@ -3,6 +3,8 @@ name: gsd-path-build
|
|
|
3
3
|
description: Execute or resume an approved GSD Path plan with isolated task worktrees, deterministic commits, and independent wave review. Use only when the user explicitly invokes $gsd-path-build or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md).
|
|
7
|
+
|
|
6
8
|
# GSD Path Build Orchestrator
|
|
7
9
|
|
|
8
10
|
Orchestrate coders, task landing, and reviewers from the main conversation.
|
|
@@ -98,6 +100,11 @@ rule; never invoke an explicit-only sibling skill yourself.
|
|
|
98
100
|
checkpoint `.project/` records uses this helper. Record the exact full HEAD
|
|
99
101
|
before the first metadata change in that checkpoint, then run:
|
|
100
102
|
|
|
103
|
+
Explicit configuration edits in `.project/config.json` and
|
|
104
|
+
`.project/model-policy.json` are expected bookkeeping. Include them in the next
|
|
105
|
+
normal checkpoint before a clean dispatch base; they may remain pending while
|
|
106
|
+
an already dispatched task lands. Existing model selections stay pinned.
|
|
107
|
+
|
|
101
108
|
```text
|
|
102
109
|
python3 <absolute isolation.py> checkpoint \
|
|
103
110
|
--repo <absolute primary> \
|
|
@@ -3,6 +3,8 @@ name: gsd-path-decide
|
|
|
3
3
|
description: Decide implementation direction from approved intent and complete research evidence, recording settled choices in SYNTHESIS.md. Use only when the user explicitly invokes $gsd-path-decide or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md).
|
|
7
|
+
|
|
6
8
|
# GSD Path Decide Phase
|
|
7
9
|
|
|
8
10
|
Dispatch one reasoning-intensive decider and validate its decision artifact.
|
|
@@ -3,6 +3,8 @@ name: gsd-path-define
|
|
|
3
3
|
description: Define and approve project or milestone intent through an interview or milestone confirmation, writing .project/CHARTER.md or .project/intent/INTENT.md. Use only when the user explicitly invokes $gsd-path-define or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md).
|
|
7
|
+
|
|
6
8
|
# GSD Path Define Phase
|
|
7
9
|
|
|
8
10
|
Turn a project idea or approved roadmap entry into an approved intent artifact.
|
|
@@ -110,12 +112,13 @@ the charter instead of the single-milestone checklist:
|
|
|
110
112
|
4. **Constraints** — program-level stack, budget, deadline, integrations.
|
|
111
113
|
5. **Program success criteria** — observable when the last milestone ships.
|
|
112
114
|
6. **Review panel** — optional durable default (`off` | `detected` | named
|
|
113
|
-
families).
|
|
115
|
+
families). Use the configured future preference unless the user chooses
|
|
116
|
+
otherwise (see Output contract). This value persists on CHARTER.md; later
|
|
114
117
|
milestone INTENT files copy it and may override.
|
|
115
118
|
|
|
116
119
|
Read the local [charter template](templates/charter.md), write the approval
|
|
117
|
-
draft to `.project/CHARTER.md` including
|
|
118
|
-
|
|
120
|
+
draft to `.project/CHARTER.md` including the configured or explicitly chosen
|
|
121
|
+
`Review panel:` value, and run the same playback-approval
|
|
119
122
|
loop as the standard Process. On approval, retain the reviewed
|
|
120
123
|
`Review panel:` value on CHARTER.md, run `pipeline_state.py transition` with
|
|
121
124
|
expected `define/active`, milestone/branch/archive all at their exact current
|
|
@@ -144,7 +147,7 @@ State ownership. There is no re-interview of charter or roadmap scope:
|
|
|
144
147
|
Risks and Open questions from the entry (tagged `RESEARCH`/`NEEDS-USER`),
|
|
145
148
|
`Lane: milestone`, `Surfaces:` copied verbatim from the entry, and
|
|
146
149
|
`Review panel:` copied from CHARTER.md (default
|
|
147
|
-
|
|
150
|
+
the configured preference when CHARTER omits it). The confirmation may override the copied
|
|
148
151
|
panel value; do not invent `detected` or a named list. When brownfield,
|
|
149
152
|
fill `## Current state` from the map, record doc-vs-code rulings as in
|
|
150
153
|
Brownfield mode, and add protected existing behavior under Scope out.
|
|
@@ -271,9 +274,12 @@ question. The rules change for every primary mode:
|
|
|
271
274
|
## Output contract
|
|
272
275
|
|
|
273
276
|
At approval, retain the already reviewed `Lane:` value and its one-line reason.
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
+
Before presenting an approval draft without a CHARTER or explicit panel choice,
|
|
278
|
+
read `settings.review_panel.value` from the selected runtime's `path_config.py
|
|
279
|
+
show --repo <absolute-root>` (bundle for legacy projects; off for older selected
|
|
280
|
+
runtimes without config support). Include that preference in the draft.
|
|
281
|
+
Retain `Review panel:` as reviewed: the CHARTER copy, the explicit user choice,
|
|
282
|
+
or the configured future preference. Quick lane keeps the panel off.
|
|
277
283
|
|
|
278
284
|
After approval, finalize `.project/intent/INTENT.md` and run
|
|
279
285
|
`pipeline_state.py transition` with expected `define/active`, the exact
|
|
@@ -3,6 +3,8 @@ name: gsd-path-docs-audit
|
|
|
3
3
|
description: Verify Markdown claims against the actual code, commands, and GSD Path artifacts. Use only when the user explicitly invokes $gsd-path-docs-audit or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md).
|
|
7
|
+
|
|
6
8
|
# GSD Path Docs Audit
|
|
7
9
|
|
|
8
10
|
Answer one question with evidence: **does the project do what its documents
|
|
@@ -3,6 +3,8 @@ name: gsd-path-inspect
|
|
|
3
3
|
description: Inspect an existing codebase and its documentation to establish brownfield ground truth before intent is defined. Use only when the user explicitly invokes $gsd-path-inspect or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md).
|
|
7
|
+
|
|
6
8
|
# GSD Path Inspect Phase
|
|
7
9
|
|
|
8
10
|
Establish ground truth about an existing project before intent is defined.
|
package/skills/gsd-path/PLAN.md
CHANGED
|
@@ -3,6 +3,8 @@ name: gsd-path-plan
|
|
|
3
3
|
description: Create and validate dependency-ordered GSD Path build waves and complete task contracts. Use only when the user explicitly invokes $gsd-path-plan or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md).
|
|
7
|
+
|
|
6
8
|
# GSD Path Planning Phase
|
|
7
9
|
|
|
8
10
|
Dispatch one planner, gate its artifacts, and obtain the single approval that
|
|
@@ -214,8 +216,8 @@ as stated in Lookahead mode.
|
|
|
214
216
|
statuses do not load this template. For each selected family, spawn one independent child
|
|
215
217
|
with logical task name `review_plan_panel_<family>`, the reviewer role
|
|
216
218
|
in plan-panel mode, the plan-panel template, and the exact helper-returned
|
|
217
|
-
model slug
|
|
218
|
-
|
|
219
|
+
model slug through the dispatch model-policy contract. Planner choices
|
|
220
|
+
use that same contract. Each child stages its family file under a
|
|
219
221
|
disposable root; the parent validates and copies those files, removes
|
|
220
222
|
any stale `<track>/review/PLAN-PANEL.skipped.json`, then runs
|
|
221
223
|
`python3 <absolute review_panel.py> merge --kind plan --inputs <family
|
|
@@ -3,6 +3,8 @@ name: gsd-path-research
|
|
|
3
3
|
description: Dispatch parallel researchers and collect cited GSD Path evidence about domain, stack, pitfalls, and comparable products. Use only when the user explicitly invokes $gsd-path-research or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md).
|
|
7
|
+
|
|
6
8
|
# GSD Path Research Phase
|
|
7
9
|
|
|
8
10
|
Dispatch independent researchers and gate their evidence. Keep synthesis out
|
|
@@ -3,6 +3,8 @@ name: gsd-path-roadmap
|
|
|
3
3
|
description: Slice an approved GSD Path program charter into a dependency-ordered roadmap of independently shippable milestones. Use only when the user explicitly invokes $gsd-path-roadmap or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md).
|
|
7
|
+
|
|
6
8
|
# GSD Path Roadmap Phase
|
|
7
9
|
|
|
8
10
|
Dispatch one roadmapper, gate its roadmap, and obtain the single approval that
|