@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
package/AGENTS.md
CHANGED
|
@@ -69,7 +69,10 @@ full-repo suite on a tiny edit outrank the phase brief.
|
|
|
69
69
|
needs verbal explanation is defective.
|
|
70
70
|
- With no `.project/STATE.md`, route through the bundled
|
|
71
71
|
`scripts/detect_project.py initialize --repo <absolute-root> --template
|
|
72
|
-
<absolute-state-template
|
|
72
|
+
<absolute-state-template> --require-git` helper; `route: setup-repository`
|
|
73
|
+
leaves the invocation folder unchanged and routes to repository setup before
|
|
74
|
+
state creation or branch binding. Never delete the invocation folder or its
|
|
75
|
+
state to satisfy bootstrap path checks. Do not classify from a directory listing
|
|
73
76
|
or conversation. Follow its JSON `verdict` and `route`. Reserve `classify`
|
|
74
77
|
for read-only inspection; do not use it as a state-initialization preflight.
|
|
75
78
|
- `.project/STATE.md` tracks phase position. Parse and validate it only with
|
|
@@ -98,11 +101,19 @@ full-repo suite on a tiny edit outrank the phase brief.
|
|
|
98
101
|
deterministic logical task name, and a bounded responsibility. Independent
|
|
99
102
|
briefs may run in parallel up to available child capacity; a dependent
|
|
100
103
|
brief runs as soon as its dependencies complete.
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
- After a phase completes its gate and state update, run the bundled
|
|
105
|
+
`pipeline_state.py status --repo <absolute-root>` with the routed
|
|
106
|
+
`--project-dir`. Its `handoff` is the shared phase handoff for chat and the
|
|
107
|
+
dashboard. Present **Outcome** from `handoff.outcome` plus the completed
|
|
108
|
+
work; **Review** links the phase artifact, or `handoff.review` when absent.
|
|
109
|
+
An active router uses `handoff.router_next` for **Next** and follows the
|
|
110
|
+
returned route. A directly invoked phase uses `handoff.phase_next` and
|
|
111
|
+
stops. A status or plain-prompt reply uses `handoff.next` and stays read-only.
|
|
112
|
+
Convert the `$` invocation prefix to the host's slash form when needed.
|
|
113
|
+
Phase owners still stop for required input and approval before completion;
|
|
114
|
+
a route is not approval. Return to an active caller instead of invoking an
|
|
115
|
+
explicit-only sibling skill. Derive the next phase from this result, not
|
|
116
|
+
from another lane table in prose.
|
|
106
117
|
|
|
107
118
|
## Plain-prompt re-entry
|
|
108
119
|
|
|
@@ -116,15 +127,17 @@ full-repo suite on a tiny edit outrank the phase brief.
|
|
|
116
127
|
with `-B .gsd-path/status_runtime.py --repo <absolute-root>`
|
|
117
128
|
before any requested repository mutation. Treat its JSON as the only route
|
|
118
129
|
authority.
|
|
119
|
-
|
|
130
|
+
When `completion.status` is `verified` and `git.branch` is an ordinary
|
|
131
|
+
branch (not `gsd-path/M###`), requested product work may proceed normally.
|
|
132
|
+
Archives and pipeline control files remain protected. Otherwise,
|
|
133
|
+
a plain change request does not authorize work outside the pipeline: make no
|
|
120
134
|
changes and report **Outcome**, link the returned `path` under **Review**, and
|
|
121
|
-
under **Next**
|
|
122
|
-
route, report `route.action` and `route.reason`. An explicit request to leave
|
|
135
|
+
under **Next** use `handoff.next`. An explicit request to leave
|
|
123
136
|
or bypass the pipeline is a user ruling;
|
|
124
137
|
route it through the router's undo or abandon flow instead of editing directly.
|
|
125
138
|
- After any other plain-prompt turn with owned state, rerun the same read-only
|
|
126
139
|
status command immediately before the final response and append the same
|
|
127
|
-
**Outcome** / **Review** / **Next** handoff with the same
|
|
140
|
+
**Outcome** / **Review** / **Next** handoff with the same shared handoff rule.
|
|
128
141
|
Keep an informational turn read-only from start to finish: do not use repository
|
|
129
142
|
mutation tools or run commands that can create or alter files. A GSD Path skill
|
|
130
143
|
already supplies this handoff, so emit it once. With no STATE.md, respond
|
|
@@ -243,7 +256,7 @@ full-repo suite on a tiny edit outrank the phase brief.
|
|
|
243
256
|
orchestrator.
|
|
244
257
|
- Reviewers verify and block; they never fix. A block names the criterion,
|
|
245
258
|
observed result, evidence location, and concrete fix direction. An optional
|
|
246
|
-
review panel is advisory: the
|
|
259
|
+
review panel is advisory: the canonical reviewer remains the only wave
|
|
247
260
|
pass/fail, and panel findings never average or auto-replan. Same-model
|
|
248
261
|
agreement is not independent verification: matching verdicts from one
|
|
249
262
|
model family count as a single evidence path. Independence comes from
|
|
@@ -337,7 +350,8 @@ full-repo suite on a tiny edit outrank the phase brief.
|
|
|
337
350
|
approval of the exact owner/name, visibility, default-checkout path,
|
|
338
351
|
`gsd-path/M001` branch, and linked primary-worktree path. Before the
|
|
339
352
|
external action produces an artifact, present those proposed targets as the
|
|
340
|
-
inline **Review** surface
|
|
353
|
+
inline **Review** surface using the active router's preview contract.
|
|
354
|
+
Do not write a
|
|
341
355
|
preview file into the invocation directory or another repository. Run the
|
|
342
356
|
bundled bootstrap helper's read-only `preview` command for this evidence.
|
|
343
357
|
- After approval, the bootstrap helper persists the exact targets under the
|
|
@@ -355,7 +369,8 @@ full-repo suite on a tiny edit outrank the phase brief.
|
|
|
355
369
|
build-orchestrator owned.
|
|
356
370
|
- Keep the cloned default checkout clean on the remote default branch. Run the
|
|
357
371
|
pipeline from the linked GSD Path worktree; never initialize `.project/` in
|
|
358
|
-
the default checkout, reuse an existing branch or path
|
|
372
|
+
the default checkout, reuse an existing branch or path (except an explicitly
|
|
373
|
+
approved empty linked-worktree folder via `--reuse-empty-worktree`), move an existing
|
|
359
374
|
repository, or recover a partial GitHub creation without the exact approved
|
|
360
375
|
journal and re-verification.
|
|
361
376
|
|
|
@@ -379,6 +394,11 @@ STATE.md.
|
|
|
379
394
|
|
|
380
395
|
## Distribution layout
|
|
381
396
|
|
|
397
|
+
This section describes the GSD Path source checkout. These source paths and
|
|
398
|
+
the sync command do not apply to an application that only installs GSD Path.
|
|
399
|
+
In a consuming project, resolve roles, templates, and helpers from the active
|
|
400
|
+
installed skill's absolute paths; the application need not contain this layout.
|
|
401
|
+
|
|
382
402
|
| Path | Purpose |
|
|
383
403
|
|------|---------|
|
|
384
404
|
| `plugin.json` | Agent Plugins manifest (`agent-plugins.org` 1.0.0 schema) |
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to [@opengsd/gsd-path](https://www.npmjs.com/package/@opengsd/gsd-path)
|
|
4
|
+
are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
|
+
|
|
6
|
+
## [1.1.0] - 2026-09-18
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
- Scoped npm package `@opengsd/gsd-path` with trusted publishing workflow
|
|
10
|
+
- Release trust evidence validation and host matrix documentation
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- Release workflow and maintainer documentation for npm publication
|
|
14
|
+
|
|
15
|
+
## [1.0.0] - 2026-09-15
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- Initial public release of the disk-backed GSD Path pipeline
|
|
19
|
+
- Multi-host installer, skills package, and project contracts
|
|
20
|
+
|
|
21
|
+
## [1.2.0] - 2026-09-20
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
- add Path settings and project history dashboard
|
|
25
|
+
- add optional Jev evidence screening
|
|
26
|
+
- store worktrees and pinned runtimes outside project checkouts
|
|
27
|
+
- centralize sub-agent model selection policy
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
- Correct stale release guidance and consolidate scope references
|
|
31
|
+
- record passing eight-host release gate
|
|
32
|
+
- validate corrected OpenCode release evidence
|
|
33
|
+
- validate recovered Claude release evidence
|
|
34
|
+
- record affected release gate results
|
|
35
|
+
- preserve blocked host evaluations without receipt fallback
|
|
36
|
+
- record passing Antigravity Kimi and Grok release runs
|
|
37
|
+
- record remaining 1.2.0 release gate failures
|
|
38
|
+
- record Kimi receipt and complete offline recheck
|
|
39
|
+
- preserve 1.2.0 host receipts and release blockers
|
|
40
|
+
- record v1.3.0 live release evidence and blockers
|
|
41
|
+
- bump version to v1.3.0
|
|
42
|
+
- Align release documentation with risk-based host validation
|
|
43
|
+
- bump version to v1.2.0
|
|
44
|
+
- Automate npm release docs, pack verification, and provenance (#133)
|
|
45
|
+
- refresh README changes and dashboard screenshots
|
|
46
|
+
- Refresh dashboard navigation and file history documentation
|
|
47
|
+
- Clarify Jev receipt fields and consolidate documentation
|
|
48
|
+
- Refresh dashboard update and guard documentation
|
|
49
|
+
- Correct runtime installation, update, guard, and uninstall documentation
|
|
50
|
+
- Correct model policy and dispatch documentation
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
- reuse unchanged host receipts for releases
|
|
54
|
+
- verify prepared releases without advancing failed versions
|
|
55
|
+
- scope release evidence to affected hosts
|
|
56
|
+
- show project runtime updates and release completed milestone guards
|
|
57
|
+
|
|
58
|
+
### Other
|
|
59
|
+
- Fixed tests/package.test.mjs to invoke git_guard.py with pre-commit in a temporary Git repository instead of unsupported --help. The focused test failed before the fix and during restored-original sabotage. All 6 package tests now pass; resource sync and diff checks pass. Verified locally on Node 26; Node 18/20 CI reruns remain with the outer executor
|
|
60
|
+
- Preserve historical commit selection across relative document links
|
|
61
|
+
- Validate Jev probability normalization with CLI regression coverage
|
|
62
|
+
- Record passing focused checks and isolation violation
|
|
63
|
+
- Fix integration guard and runtime installer regression coverage
|
|
64
|
+
- Fixed stale runtime paths in tests/test_git_guard.py using the installed runtime resolver. Both CI failures reproduced before the fix; all 38 Git guard tests now pass. Both corrected tests also caught a temporarily disabled native guard, which was restored. git diff --check passed. Only the test file changed; remote CI remains for the outer executor
|
|
65
|
+
- Fix pinned runtime routing, guard blocking, and launcher bytes
|
|
66
|
+
- Restore same-cycle recovery after partial review completion
|
|
67
|
+
- Isolate assignment rejections and align native panel exclusions
|
|
68
|
+
- Fix dispatch isolation, legacy pinning, and independent panel selection
|
package/DOCS.md
CHANGED
|
@@ -44,7 +44,8 @@ GSD Path has two install layers:
|
|
|
44
44
|
|
|
45
45
|
1. **Skills** — router + phase skills for your AI host(s)
|
|
46
46
|
2. **Project contracts** (optional) — `AGENTS.md`, `WORKFLOW.md`, and the
|
|
47
|
-
|
|
47
|
+
tracked runtime declaration and stable status/guard launchers; runtime code
|
|
48
|
+
lives outside the checkout under `~/.gsd-path/runtimes/`
|
|
48
49
|
|
|
49
50
|
### Decision tree
|
|
50
51
|
|
|
@@ -70,7 +71,7 @@ node scripts/install.mjs --all --dry-run # preview — safe to run anytime
|
|
|
70
71
|
node scripts/install.mjs --all # apply
|
|
71
72
|
```
|
|
72
73
|
|
|
73
|
-
**npm** (no clone
|
|
74
|
+
**npm** (no clone required):
|
|
74
75
|
|
|
75
76
|
```bash
|
|
76
77
|
npx @opengsd/gsd-path --all --dry-run
|
|
@@ -223,6 +224,40 @@ route through `NEEDS-ORCHESTRATOR` instead of guesses.
|
|
|
223
224
|
**Quick lane:** ≤2 tasks, one wave, no open questions — may skip research/decide
|
|
224
225
|
([FULL.md](FULL.md)).
|
|
225
226
|
|
|
227
|
+
### Worktree locations
|
|
228
|
+
|
|
229
|
+
The primary worktree stays in the folder you opened. Serial task work stays
|
|
230
|
+
there too. New parallel task worktrees, verify sidecars, and integration
|
|
231
|
+
worktrees share this managed layout:
|
|
232
|
+
|
|
233
|
+
```text
|
|
234
|
+
~/.gsd-path/projects/<repository-id>/<workspace-id>/{task,verify,integrate}/<name>
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Set `GSD_PATH_WORKTREE_ROOT` to another absolute directory before the first
|
|
238
|
+
helper-owned allocation in a workspace. The root must be outside the project's
|
|
239
|
+
own worktrees; an unrelated repository tracking your home folder is allowed.
|
|
240
|
+
Repository and workspace IDs are full SHA-256 hashes of the
|
|
241
|
+
resolved Git common directory and primary path, so separate clones and
|
|
242
|
+
primary folders do not share a location.
|
|
243
|
+
|
|
244
|
+
The first allocation pins the workspace location in
|
|
245
|
+
`<git-common-dir>/gsd-path/workspaces/<workspace-id>.json`. Later environment
|
|
246
|
+
changes do not move it. Existing sibling worktrees remain at their original
|
|
247
|
+
paths and retain the same recovery and cleanup checks. These folders contain
|
|
248
|
+
active work and evidence; they are not a disposable cache. Relocation needs
|
|
249
|
+
a separate migration; do not edit placement records or move folders manually.
|
|
250
|
+
|
|
251
|
+
New repository setup can also use an explicitly approved managed primary
|
|
252
|
+
path through the existing `--worktree` option. Its parent must already exist
|
|
253
|
+
for the read-only preview. An approved empty invocation folder is still
|
|
254
|
+
reused in place. This choice does not move the default checkout.
|
|
255
|
+
|
|
256
|
+
In the dashboard's **Watched folders**, add the managed root explicitly;
|
|
257
|
+
watching its home-directory parent does not traverse hidden `.gsd-path`.
|
|
258
|
+
Discovery follows Git's registered bound branches back to the primary and
|
|
259
|
+
applies exclusions there, so task and verify copies do not displace it.
|
|
260
|
+
|
|
226
261
|
### Key artifacts
|
|
227
262
|
|
|
228
263
|
| Path | Role |
|
|
@@ -263,7 +298,7 @@ Full tree: [README.md](README.md#handoff-contract).
|
|
|
263
298
|
| --- | --- |
|
|
264
299
|
| Global skills | `node scripts/install.mjs --update` |
|
|
265
300
|
| Project-local skills | `node scripts/install.mjs --update --local` |
|
|
266
|
-
| From npm
|
|
301
|
+
| From npm | `npx @opengsd/gsd-path@latest --update` |
|
|
267
302
|
| Guard scripts | `node scripts/install.mjs --hooks-refresh --project PATH` |
|
|
268
303
|
| `AGENTS.md` / `WORKFLOW.md` | Manual merge — installer refuses overwrite |
|
|
269
304
|
| Health check | `node scripts/install.mjs --doctor [--project PATH]` — read-only; flags missing/stale skills, hook drift, and bad pipeline state |
|
|
@@ -311,9 +346,10 @@ an external import bundle, reviews hook coexistence, and hands off to the Path
|
|
|
311
346
|
router through inspect and define. See **[MIGRATE.md](MIGRATE.md)**.
|
|
312
347
|
|
|
313
348
|
**Brownfield vs greenfield?**
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
349
|
+
After the [startup prerequisites](README.md#the-flow) are met, the router
|
|
350
|
+
classifies the project before it creates STATE.md for a brownfield or
|
|
351
|
+
greenfield verdict. The exact initializer invocation belongs to the
|
|
352
|
+
[phase workflow](WORKFLOW.md#phase-0--inspect-gsd-path-inspect). A recognized
|
|
317
353
|
manifest or source file, qualifying tracked Git file, or qualifying Markdown
|
|
318
354
|
document with a body is brownfield and routes to inspect. A title-only README,
|
|
319
355
|
`LICENSE`/`COPYING`, `.gitignore`, or content only in ignored trees such as
|
|
@@ -339,3 +375,36 @@ initializer. After a milestone ships, the next one inspects again.
|
|
|
339
375
|
| Installer flags | `node scripts/install.mjs --help` |
|
|
340
376
|
|
|
341
377
|
[Workflow runner and observed token budgets](RUNTIME.md) documents canonical gate receipts, serial verification preparation, and host budget limits.
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
## Project runtime versions
|
|
381
|
+
|
|
382
|
+
`.gsd-path/runtime.json` pins an exact runtime by package version and content
|
|
383
|
+
digest. The runtime is stored under `~/.gsd-path/runtimes/<digest>/`; generated
|
|
384
|
+
implementation files are not copied into project worktrees. Track the declaration
|
|
385
|
+
and stable `.gsd-path` launchers as project configuration. Task isolation, Verify
|
|
386
|
+
sidecars and Integration checkouts inherit this configuration through Git.
|
|
387
|
+
|
|
388
|
+
Skill/plugin updates and `--hooks-refresh` retain the selected runtime. Use
|
|
389
|
+
`gsd-path --runtime-upgrade --project /absolute/project` to explicitly select
|
|
390
|
+
the supplied package's runtime and its compatible status launcher. Review those
|
|
391
|
+
configuration changes before committing them. Existing versions remain available
|
|
392
|
+
for other projects and branches.
|
|
393
|
+
|
|
394
|
+
A new machine needs the selected runtime installed before status and guards can
|
|
395
|
+
run. `gsd-path --runtime-restore --project /absolute/project --source-root
|
|
396
|
+
/path/to/matching/package` restores that exact version without changing project
|
|
397
|
+
files. The supplied package must match both the version and digest; custom source
|
|
398
|
+
builds may share a release version while having different digests. No command
|
|
399
|
+
silently substitutes a newer runtime, and status/guards never install or download.
|
|
400
|
+
|
|
401
|
+
For an old tracked `.gsd-path/runtime/`, run `gsd-path --runtime-migrate --project
|
|
402
|
+
/absolute/project --dry-run`, then the same command without `--dry-run` and review
|
|
403
|
+
the Git diff. Migration removes the generated files from the checkout and writes
|
|
404
|
+
the declaration and stable wiring. It does not stage or commit. Resolve local
|
|
405
|
+
runtime edits or unknown files first. Interrupted migration is recovered by the
|
|
406
|
+
same explicit command; its journal lives outside the checkout.
|
|
407
|
+
|
|
408
|
+
An ignore rule alone cannot migrate tracked runtime files. This runtime lifecycle
|
|
409
|
+
covers runtime code and launch wiring; project-local skill copies, retained skill
|
|
410
|
+
backups, and mixed user/host settings remain separately owned installation output.
|
package/FULL.md
CHANGED
|
@@ -63,10 +63,9 @@ gsd-path (router: reads STATE.md, runs the next valid phase)
|
|
|
63
63
|
phases. See the [canonical skill table](DOCS.md#skills-optional).
|
|
64
64
|
|
|
65
65
|
All skills are **explicit-only** on most hosts — generic “continue the project”
|
|
66
|
-
does not inject the pipeline.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
re-entry). On OpenCode stable, Antigravity CLI, and Kiro, treat explicit
|
|
66
|
+
does not inject the pipeline. For plain prompts and their read-only handoff,
|
|
67
|
+
see the [invocation and handoff rules](README.md#the-flow).
|
|
68
|
+
On OpenCode stable, Antigravity CLI, and Kiro, treat explicit
|
|
70
69
|
invocation as an operating rule.
|
|
71
70
|
|
|
72
71
|
### Invocation by host
|
|
@@ -79,7 +78,7 @@ Use the [router and phase invocation table](README.md#install-summary) for your
|
|
|
79
78
|
|
|
80
79
|
### Requirements
|
|
81
80
|
|
|
82
|
-
- **Node 18.17+** for `scripts/install.mjs` (recommended; also the npm `gsd-path` bin
|
|
81
|
+
- **Node 18.17+** for `scripts/install.mjs` (recommended; also the npm `gsd-path` bin)
|
|
83
82
|
- **Python 3.9+** required for project installs, project refresh, and project-state
|
|
84
83
|
doctor checks; optional for global-only Node installs. `scripts/install.py`
|
|
85
84
|
mirrors global and `--local` install transactions and `--update`; it does not
|
|
@@ -132,8 +131,9 @@ Install shared rules into a repo (refuses if managed files already exist):
|
|
|
132
131
|
node scripts/install.mjs --all --project /path/to/project
|
|
133
132
|
```
|
|
134
133
|
|
|
135
|
-
Writes
|
|
136
|
-
`.claude/CLAUDE.md`.
|
|
134
|
+
Writes the [project contracts](DOCS.md#installing); with Claude, also
|
|
135
|
+
`.claude/CLAUDE.md`. See [project runtime versions](DOCS.md#project-runtime-versions)
|
|
136
|
+
for runtime storage, restoration, and legacy migration.
|
|
137
137
|
Merge upgrades manually — the installer will not overwrite existing contracts.
|
|
138
138
|
|
|
139
139
|
### Guard hooks (optional)
|
|
@@ -160,7 +160,7 @@ See [UPDATE.md](UPDATE.md) for the full updating guide. Quick reference:
|
|
|
160
160
|
```bash
|
|
161
161
|
node scripts/install.mjs --update # global roots with existing install
|
|
162
162
|
node scripts/install.mjs --update --local # current project only
|
|
163
|
-
npx @opengsd/gsd-path@latest --update # from npm
|
|
163
|
+
npx @opengsd/gsd-path@latest --update # from npm
|
|
164
164
|
```
|
|
165
165
|
|
|
166
166
|
Previous copies move to `disabled-gsd-skills` beside each root. The router may
|
|
@@ -184,12 +184,9 @@ Open your agent in the project directory. Invoke the router explicitly.
|
|
|
184
184
|
|
|
185
185
|
### Initial greenfield repository (first milestone)
|
|
186
186
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
classification rules.
|
|
190
|
-
For an explicit request to create a new GitHub repository, the router first
|
|
191
|
-
previews the repository and linked-worktree targets for approval as described
|
|
192
|
-
in [README.md](README.md#the-flow).
|
|
187
|
+
Follow the [startup and repository setup guidance](README.md#the-flow) first.
|
|
188
|
+
Once setup is complete, a `greenfield` classifier verdict routes to **define**.
|
|
189
|
+
The [DOCS.md FAQ](DOCS.md#faq) owns the exact classification rules.
|
|
193
190
|
|
|
194
191
|
Define interviews across: problem, users, observable success, scope in,
|
|
195
192
|
scope out (vetoes), constraints, risks, and surfaces. A surface is anything a
|
|
@@ -469,7 +466,7 @@ node scripts/install.mjs --update [--local]
|
|
|
469
466
|
node scripts/install.mjs --hooks-refresh --project /path/to/repo
|
|
470
467
|
node scripts/install.mjs --hooks-refresh-full --project /path/to/repo
|
|
471
468
|
|
|
472
|
-
# From npm
|
|
469
|
+
# From npm
|
|
473
470
|
npx @opengsd/gsd-path --all
|
|
474
471
|
npx @opengsd/gsd-path@latest --update
|
|
475
472
|
```
|
package/HOOKS.md
CHANGED
|
@@ -59,9 +59,10 @@ Native configs for unselected hosts are ignored.
|
|
|
59
59
|
|
|
60
60
|
| File | Purpose |
|
|
61
61
|
| --- | --- |
|
|
62
|
-
| `.gsd-path/guard_hook.py` | Pre-tool-use guard (stdin JSON → exit 2 + denial JSON) |
|
|
62
|
+
| `.gsd-path/guard_hook.py` | Pre-tool-use guard (stdin JSON → exit 2 + denial JSON; runtime resolution failures exit 2 with stderr) |
|
|
63
63
|
| `.gsd-path/git_guard.py` | Commit and publication validator |
|
|
64
|
-
| `.gsd-path/runtime
|
|
64
|
+
| `.gsd-path/runtime.json` | Tracked selected runtime version and digest |
|
|
65
|
+
| `~/.gsd-path/runtimes/<digest>/` | Immutable external pipeline helpers and guards |
|
|
65
66
|
| `.git/hooks/pre-commit` | Runs `git_guard.py` before commit |
|
|
66
67
|
| `.git/hooks/commit-msg` | Runs `git_guard.py` with commit message |
|
|
67
68
|
| `.git/hooks/pre-push` | Runs `git_guard.py` on every pushed ref update |
|
|
@@ -114,6 +115,12 @@ See [UPDATE.md](UPDATE.md).
|
|
|
114
115
|
|
|
115
116
|
**`guard_hook.py`** (pre-tool-use):
|
|
116
117
|
|
|
118
|
+
- direct product edits outside the routed build phase while milestone work
|
|
119
|
+
remains unfinished. After integration is verified, ordinary branches allow
|
|
120
|
+
product edits, including a dirty product worktree. The proof still checks
|
|
121
|
+
the shipped archive, canonical integration merge, annotated published tag,
|
|
122
|
+
and default-branch ancestry. Missing proof keeps protection active. Closed
|
|
123
|
+
milestone branches, archives, and pipeline control files remain protected.
|
|
117
124
|
- non-read tool actions targeting archived paths or an existing ancestor of
|
|
118
125
|
the archive tree; shell operands count an ancestor only for deletion or move
|
|
119
126
|
commands
|
|
@@ -137,7 +144,7 @@ See [UPDATE.md](UPDATE.md).
|
|
|
137
144
|
- shell commands that reference the archive unless the whole command is a
|
|
138
145
|
recognized standalone read or a single-command invocation of the bundled
|
|
139
146
|
`pipeline_state.py` / `archive_milestone.py` helper, resolved to a regular file
|
|
140
|
-
inside the
|
|
147
|
+
inside the verified runtime selected by `.gsd-path/runtime.json` (legacy projects use `.gsd-path/runtime/` beside `guard_hook.py`
|
|
141
148
|
in the repository layout), using exactly `python` or `python3` with optional
|
|
142
149
|
`-B`; non-empty supplied tool working directories are authoritative. Empty
|
|
143
150
|
strings, including list items, are treated as absent: nested payloads inherit
|
|
@@ -176,16 +183,18 @@ such as `rm -rf scratch` passes the archive check; other guard rules still apply
|
|
|
176
183
|
|
|
177
184
|
- modifies, deletes, or renames away tracked archive paths
|
|
178
185
|
- `ship:` commits (case-insensitive) staging paths outside `.project/`
|
|
179
|
-
-
|
|
180
|
-
`
|
|
181
|
-
it — the bound branch itself, `gsd-path-task/` branches, sidecars, and any
|
|
182
|
-
branch cut from them): commits staging paths outside `.project/` (or the
|
|
186
|
+
- while committed `STATE.md` names unfinished milestone work, including
|
|
187
|
+
`shipped/done` without verified integration: commits staging paths outside `.project/` (or the
|
|
183
188
|
guard's own `.gsd-path/` and native hook settings) unless the phase is
|
|
184
189
|
`build` and they are landing commits as `isolation.py land` writes them —
|
|
185
190
|
subject `<task id>: <task title>` matching the task file at `Base:`, a full
|
|
186
191
|
base SHA HEAD descends from, the staged task file, only that task's declared
|
|
187
192
|
`files:`, and a `Files:` list of exactly the staged paths. Outside build the
|
|
188
|
-
reviewed HEAD is frozen; product fixes reopen through the patch plan
|
|
193
|
+
reviewed HEAD is frozen; product fixes reopen through the patch plan.
|
|
194
|
+
The validated integration merge is allowed to complete before publication
|
|
195
|
+
proof exists; an ordinary commit with an integration subject is not exempt
|
|
196
|
+
- deleting the recorded branch or switching to another branch while carrying
|
|
197
|
+
unfinished state does not release product commit protection
|
|
189
198
|
- pushes (to any remote) that move a `gsd-path/M###` ref anywhere but its
|
|
190
199
|
strict ship commit, or delete it while it holds anything else; and pushes of
|
|
191
200
|
any other ref whose commit carries a `STATE.md` that still owes a ship commit
|
|
@@ -268,6 +277,6 @@ not intercept subagent tools — treat coverage as orchestrator-level.
|
|
|
268
277
|
| Tool denied editing archive | Pre-tool guard — use active paths, not archive |
|
|
269
278
|
| Hook not running in Cursor | Run `--hooks-refresh-full --cursor --project /path/to/repo` |
|
|
270
279
|
| `--hooks-refresh` rejects an unmanaged guard | Move the foreign guard aside, then rerun refresh; use `--hooks-init` if guards are wanted |
|
|
271
|
-
|
|
|
280
|
+
| Runtime missing, invalid, or legacy | Follow [runtime restoration or migration](DOCS.md#project-runtime-versions) |
|
|
272
281
|
|
|
273
282
|
More: [DOCS.md](DOCS.md#help) · [UPDATE.md](UPDATE.md)
|
package/QUICK.md
CHANGED
|
@@ -40,7 +40,7 @@ first (never writes files):
|
|
|
40
40
|
node scripts/install.mjs --all --dry-run
|
|
41
41
|
node scripts/install.mjs --all
|
|
42
42
|
|
|
43
|
-
# From npm, no clone
|
|
43
|
+
# From npm, no clone required
|
|
44
44
|
npx @opengsd/gsd-path --all --dry-run
|
|
45
45
|
npx @opengsd/gsd-path --all
|
|
46
46
|
```
|
|
@@ -64,11 +64,13 @@ cd /path/to/your/repo
|
|
|
64
64
|
node scripts/install.mjs --all --project "$(pwd)"
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
Installs
|
|
67
|
+
Installs the [project contracts](DOCS.md#installing)
|
|
68
68
|
(+ `.claude/CLAUDE.md` if Claude is selected).
|
|
69
69
|
If those managed files already exist, a plain install **refuses and installs
|
|
70
|
-
nothing** —
|
|
71
|
-
|
|
70
|
+
nothing** — see [project runtime versions](DOCS.md#project-runtime-versions)
|
|
71
|
+
for legacy migration, then use `--update --project PATH` to refresh skills and
|
|
72
|
+
hook wiring while keeping your contracts and selected runtime. Merge contract
|
|
73
|
+
changes by hand
|
|
72
74
|
([UPDATE.md](UPDATE.md)).
|
|
73
75
|
|
|
74
76
|
**Optional** archive/git guards:
|
|
@@ -87,8 +89,8 @@ In the **project directory**, type explicitly:
|
|
|
87
89
|
|
|
88
90
|
Use the [router and phase invocation table](README.md#install-summary) for your host.
|
|
89
91
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
+
For plain prompts such as “continue the project,” see the
|
|
93
|
+
[invocation and handoff rules](README.md#the-flow).
|
|
92
94
|
|
|
93
95
|
**One phase only?** e.g. `/gsd-path-plan` — see skill table in [DOCS.md](DOCS.md#using).
|
|
94
96
|
Need to talk through a question without advancing? Use `/gsd-path-discuss`;
|