@opengsd/gsd-path 1.4.0 → 1.6.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/CHANGELOG.md +460 -341
- package/DOCS.md +16 -5
- package/FULL.md +67 -6
- package/HOOKS.md +158 -10
- package/MIGRATE.md +12 -0
- package/QUICK.md +4 -2
- package/README.md +136 -116
- package/RUNTIME.md +24 -6
- package/UPDATE.md +39 -3
- package/WORKFLOW.md +80 -4
- package/package.json +5 -2
- package/platforms/shared-agents/dispatch.md +13 -0
- package/scripts/_common.py +256 -2
- package/scripts/archive_milestone.py +14 -13
- package/scripts/build_recovery.py +155 -58
- package/scripts/build_state.py +274 -8
- package/scripts/check_docs_audit.py +77 -4
- package/scripts/check_handoffs.py +635 -57
- package/scripts/check_task_briefs.py +293 -32
- package/scripts/detect_project.py +260 -20
- package/scripts/discussion_records.py +9 -1
- package/scripts/discussion_validate.py +93 -35
- package/scripts/dispatch_driver.py +549 -53
- package/scripts/git_guard.py +27 -8
- package/scripts/guard_hook.py +2630 -210
- package/scripts/install.mjs +99 -11
- package/scripts/install.py +231 -46
- package/scripts/integration.py +244 -65
- package/scripts/isolation.py +539 -70
- package/scripts/loop_run.py +16 -4
- package/scripts/members.py +77 -32
- package/scripts/migrate_core.py +2 -0
- package/scripts/model_policy.py +5 -1
- package/scripts/path_config.py +3 -3
- package/scripts/pipeline_diagnose.py +17 -2
- package/scripts/pipeline_git.py +131 -42
- package/scripts/pipeline_state.py +139 -39
- package/scripts/pipeline_undo.py +118 -16
- package/scripts/promote_lookahead.py +3 -3
- package/scripts/review_findings.py +180 -44
- package/scripts/roadmap.py +9 -1
- package/scripts/runtime_store.py +21 -2
- package/scripts/skill-resources.json +9 -2
- package/scripts/state_checkpoint.py +39 -36
- package/scripts/state_promote.py +15 -4
- package/scripts/status_runtime.py +22 -4
- package/scripts/task_context.py +14 -3
- package/scripts/wizard.mjs +1 -0
- package/scripts/workflow_run.py +14 -4
- package/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path/DEFINE.md +34 -5
- package/skills/gsd-path/PLAN.md +14 -3
- package/skills/gsd-path/RESEARCH.md +11 -0
- package/skills/gsd-path/ROADMAP.md +16 -6
- package/skills/gsd-path/SHIP.md +32 -5
- package/skills/gsd-path/SKILL.md +52 -24
- package/skills/gsd-path/references/build-native.md +112 -10
- package/skills/gsd-path/references/build-recovery.md +13 -0
- package/skills/gsd-path/references/coder.md +7 -3
- package/skills/gsd-path/references/dispatch.md +13 -0
- package/skills/gsd-path/references/docs-auditor.md +5 -0
- package/skills/gsd-path/references/operating-rules.md +11 -3
- package/skills/gsd-path/references/planner.md +26 -4
- package/skills/gsd-path/references/reviewer-final.md +20 -2
- package/skills/gsd-path/references/reviewer-wave.md +56 -12
- package/skills/gsd-path/references/reviewer.md +3 -1
- package/skills/gsd-path/references/runtime-selection.md +9 -0
- package/skills/gsd-path/references/spec-probes.md +150 -0
- package/skills/gsd-path/scripts/_common.py +256 -2
- package/skills/gsd-path/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path/scripts/build_recovery.py +155 -58
- package/skills/gsd-path/scripts/build_state.py +274 -8
- package/skills/gsd-path/scripts/check_docs_audit.py +77 -4
- package/skills/gsd-path/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path/scripts/detect_project.py +260 -20
- package/skills/gsd-path/scripts/discussion_records.py +9 -1
- package/skills/gsd-path/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path/scripts/dispatch_driver.py +549 -53
- package/skills/gsd-path/scripts/git_guard.py +27 -8
- package/skills/gsd-path/scripts/integration.py +244 -65
- package/skills/gsd-path/scripts/isolation.py +539 -70
- package/skills/gsd-path/scripts/loop_run.py +16 -4
- package/skills/gsd-path/scripts/members.py +77 -32
- package/skills/gsd-path/scripts/model_policy.py +5 -1
- package/skills/gsd-path/scripts/path_config.py +3 -3
- package/skills/gsd-path/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path/scripts/review_findings.py +180 -44
- package/skills/gsd-path/scripts/roadmap.py +9 -1
- package/skills/gsd-path/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path/scripts/state_promote.py +15 -4
- package/skills/gsd-path/scripts/status_runtime.py +22 -4
- package/skills/gsd-path/scripts/task_context.py +14 -3
- package/skills/gsd-path/scripts/workflow_run.py +14 -4
- package/skills/gsd-path/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path/templates/docs-audit.md +5 -1
- package/skills/gsd-path/templates/final-review.md +11 -2
- package/skills/gsd-path/templates/intent.md +30 -0
- package/skills/gsd-path/templates/patch-findings.md +3 -3
- package/skills/gsd-path/templates/plan.md +17 -2
- package/skills/gsd-path/templates/research-handoff.md +14 -3
- package/skills/gsd-path/templates/state.md +2 -1
- package/skills/gsd-path/templates/task.md +1 -0
- package/skills/gsd-path/templates/wave-review.md +28 -9
- package/skills/gsd-path-build/references/build-native.md +112 -10
- package/skills/gsd-path-build/references/build-recovery.md +13 -0
- package/skills/gsd-path-build/references/coder.md +7 -3
- package/skills/gsd-path-build/references/dispatch.md +13 -0
- package/skills/gsd-path-build/references/operating-rules.md +11 -3
- package/skills/gsd-path-build/references/reviewer-final.md +20 -2
- package/skills/gsd-path-build/references/reviewer-wave.md +56 -12
- package/skills/gsd-path-build/references/reviewer.md +3 -1
- package/skills/gsd-path-build/references/runtime-selection.md +9 -0
- package/skills/gsd-path-build/references/spec-probes.md +150 -0
- package/skills/gsd-path-build/scripts/_common.py +256 -2
- package/skills/gsd-path-build/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-build/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-build/scripts/build_state.py +274 -8
- package/skills/gsd-path-build/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-build/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-build/scripts/detect_project.py +260 -20
- package/skills/gsd-path-build/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-build/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-build/scripts/dispatch_driver.py +549 -53
- package/skills/gsd-path-build/scripts/integration.py +244 -65
- package/skills/gsd-path-build/scripts/isolation.py +539 -70
- package/skills/gsd-path-build/scripts/loop_run.py +16 -4
- package/skills/gsd-path-build/scripts/members.py +77 -32
- package/skills/gsd-path-build/scripts/model_policy.py +5 -1
- package/skills/gsd-path-build/scripts/path_config.py +3 -3
- package/skills/gsd-path-build/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-build/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-build/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-build/scripts/review_findings.py +180 -44
- package/skills/gsd-path-build/scripts/roadmap.py +9 -1
- package/skills/gsd-path-build/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-build/scripts/state_promote.py +15 -4
- package/skills/gsd-path-build/scripts/task_context.py +14 -3
- package/skills/gsd-path-build/scripts/workflow_run.py +14 -4
- package/skills/gsd-path-build/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-build/templates/task.md +1 -0
- package/skills/gsd-path-build/templates/wave-review.md +28 -9
- package/skills/gsd-path-decide/references/dispatch.md +13 -0
- package/skills/gsd-path-decide/references/operating-rules.md +11 -3
- package/skills/gsd-path-decide/references/runtime-selection.md +9 -0
- package/skills/gsd-path-decide/scripts/_common.py +256 -2
- package/skills/gsd-path-decide/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-decide/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-decide/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-decide/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-decide/scripts/detect_project.py +260 -20
- package/skills/gsd-path-decide/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-decide/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-decide/scripts/integration.py +244 -65
- package/skills/gsd-path-decide/scripts/isolation.py +539 -70
- package/skills/gsd-path-decide/scripts/loop_run.py +16 -4
- package/skills/gsd-path-decide/scripts/members.py +77 -32
- package/skills/gsd-path-decide/scripts/model_policy.py +5 -1
- package/skills/gsd-path-decide/scripts/path_config.py +3 -3
- package/skills/gsd-path-decide/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-decide/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-decide/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-decide/scripts/roadmap.py +9 -1
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-decide/scripts/state_promote.py +15 -4
- package/skills/gsd-path-decide/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-define/SKILL.md +34 -5
- package/skills/gsd-path-define/references/build-recovery.md +13 -0
- package/skills/gsd-path-define/references/operating-rules.md +11 -3
- package/skills/gsd-path-define/references/runtime-selection.md +9 -0
- package/skills/gsd-path-define/references/spec-probes.md +150 -0
- package/skills/gsd-path-define/scripts/_common.py +256 -2
- package/skills/gsd-path-define/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-define/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-define/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-define/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-define/scripts/detect_project.py +260 -20
- package/skills/gsd-path-define/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-define/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-define/scripts/integration.py +244 -65
- package/skills/gsd-path-define/scripts/isolation.py +539 -70
- package/skills/gsd-path-define/scripts/loop_run.py +16 -4
- package/skills/gsd-path-define/scripts/members.py +77 -32
- package/skills/gsd-path-define/scripts/model_policy.py +5 -1
- package/skills/gsd-path-define/scripts/path_config.py +3 -3
- package/skills/gsd-path-define/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-define/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-define/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-define/scripts/roadmap.py +9 -1
- package/skills/gsd-path-define/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-define/scripts/state_promote.py +15 -4
- package/skills/gsd-path-define/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-define/templates/intent.md +30 -0
- package/skills/gsd-path-define/templates/state.md +2 -1
- package/skills/gsd-path-discuss/references/operating-rules.md +11 -3
- package/skills/gsd-path-discuss/references/runtime-selection.md +9 -0
- package/skills/gsd-path-discuss/scripts/_common.py +256 -2
- package/skills/gsd-path-discuss/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-discuss/scripts/loop_run.py +16 -4
- package/skills/gsd-path-discuss/scripts/model_policy.py +5 -1
- package/skills/gsd-path-discuss/scripts/path_config.py +3 -3
- package/skills/gsd-path-discuss/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-docs-audit/references/dispatch.md +13 -0
- package/skills/gsd-path-docs-audit/references/docs-auditor.md +5 -0
- package/skills/gsd-path-docs-audit/references/operating-rules.md +11 -3
- package/skills/gsd-path-docs-audit/references/runtime-selection.md +9 -0
- package/skills/gsd-path-docs-audit/scripts/_common.py +256 -2
- package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-docs-audit/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +77 -4
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-docs-audit/scripts/detect_project.py +260 -20
- package/skills/gsd-path-docs-audit/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-docs-audit/scripts/integration.py +244 -65
- package/skills/gsd-path-docs-audit/scripts/isolation.py +539 -70
- package/skills/gsd-path-docs-audit/scripts/loop_run.py +16 -4
- package/skills/gsd-path-docs-audit/scripts/members.py +77 -32
- package/skills/gsd-path-docs-audit/scripts/model_policy.py +5 -1
- package/skills/gsd-path-docs-audit/scripts/path_config.py +3 -3
- package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-docs-audit/scripts/roadmap.py +9 -1
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +15 -4
- package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-docs-audit/templates/docs-audit.md +5 -1
- package/skills/gsd-path-forensics/references/operating-rules.md +11 -3
- package/skills/gsd-path-forensics/references/runtime-selection.md +9 -0
- package/skills/gsd-path-forensics/scripts/_common.py +256 -2
- package/skills/gsd-path-forensics/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-forensics/scripts/loop_run.py +16 -4
- package/skills/gsd-path-forensics/scripts/model_policy.py +5 -1
- package/skills/gsd-path-forensics/scripts/path_config.py +3 -3
- package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +17 -2
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +118 -16
- package/skills/gsd-path-forensics/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-inspect/references/dispatch.md +13 -0
- package/skills/gsd-path-inspect/references/docs-auditor.md +5 -0
- package/skills/gsd-path-inspect/references/operating-rules.md +11 -3
- package/skills/gsd-path-inspect/references/runtime-selection.md +9 -0
- package/skills/gsd-path-inspect/scripts/_common.py +256 -2
- package/skills/gsd-path-inspect/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-inspect/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +77 -4
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-inspect/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-inspect/scripts/detect_project.py +260 -20
- package/skills/gsd-path-inspect/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-inspect/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-inspect/scripts/integration.py +244 -65
- package/skills/gsd-path-inspect/scripts/isolation.py +539 -70
- package/skills/gsd-path-inspect/scripts/loop_run.py +16 -4
- package/skills/gsd-path-inspect/scripts/members.py +77 -32
- package/skills/gsd-path-inspect/scripts/model_policy.py +5 -1
- package/skills/gsd-path-inspect/scripts/path_config.py +3 -3
- package/skills/gsd-path-inspect/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-inspect/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-inspect/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-inspect/scripts/roadmap.py +9 -1
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-inspect/scripts/state_promote.py +15 -4
- package/skills/gsd-path-inspect/scripts/workflow_run.py +14 -4
- package/skills/gsd-path-inspect/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-inspect/templates/docs-audit.md +5 -1
- package/skills/gsd-path-inspect/templates/state.md +2 -1
- package/skills/gsd-path-loop/references/operating-rules.md +11 -3
- package/skills/gsd-path-loop/references/runtime-selection.md +9 -0
- package/skills/gsd-path-loop/scripts/_common.py +256 -2
- package/skills/gsd-path-loop/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-loop/scripts/loop_run.py +16 -4
- package/skills/gsd-path-loop/scripts/model_policy.py +5 -1
- package/skills/gsd-path-loop/scripts/path_config.py +3 -3
- package/skills/gsd-path-loop/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-migrate/SKILL.md +8 -0
- package/skills/gsd-path-migrate/references/operating-rules.md +11 -3
- package/skills/gsd-path-migrate/references/runtime-selection.md +9 -0
- package/skills/gsd-path-migrate/scripts/_common.py +256 -2
- package/skills/gsd-path-migrate/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-migrate/scripts/loop_run.py +16 -4
- package/skills/gsd-path-migrate/scripts/migrate_core.py +2 -0
- package/skills/gsd-path-migrate/scripts/model_policy.py +5 -1
- package/skills/gsd-path-migrate/scripts/path_config.py +3 -3
- package/skills/gsd-path-plan/SKILL.md +14 -3
- package/skills/gsd-path-plan/references/build-recovery.md +13 -0
- package/skills/gsd-path-plan/references/dispatch.md +13 -0
- package/skills/gsd-path-plan/references/operating-rules.md +11 -3
- package/skills/gsd-path-plan/references/planner.md +26 -4
- package/skills/gsd-path-plan/references/runtime-selection.md +9 -0
- package/skills/gsd-path-plan/references/spec-probes.md +150 -0
- package/skills/gsd-path-plan/scripts/_common.py +256 -2
- package/skills/gsd-path-plan/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-plan/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-plan/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-plan/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-plan/scripts/detect_project.py +260 -20
- package/skills/gsd-path-plan/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-plan/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-plan/scripts/integration.py +244 -65
- package/skills/gsd-path-plan/scripts/isolation.py +539 -70
- package/skills/gsd-path-plan/scripts/loop_run.py +16 -4
- package/skills/gsd-path-plan/scripts/members.py +77 -32
- package/skills/gsd-path-plan/scripts/model_policy.py +5 -1
- package/skills/gsd-path-plan/scripts/path_config.py +3 -3
- package/skills/gsd-path-plan/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-plan/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-plan/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-plan/scripts/roadmap.py +9 -1
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-plan/scripts/state_promote.py +15 -4
- package/skills/gsd-path-plan/scripts/workflow_run.py +14 -4
- package/skills/gsd-path-plan/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-plan/templates/patch-findings.md +3 -3
- package/skills/gsd-path-plan/templates/plan.md +17 -2
- package/skills/gsd-path-plan/templates/task.md +1 -0
- package/skills/gsd-path-research/SKILL.md +11 -0
- package/skills/gsd-path-research/references/dispatch.md +13 -0
- package/skills/gsd-path-research/references/operating-rules.md +11 -3
- package/skills/gsd-path-research/references/runtime-selection.md +9 -0
- package/skills/gsd-path-research/scripts/_common.py +256 -2
- package/skills/gsd-path-research/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-research/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-research/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-research/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-research/scripts/detect_project.py +260 -20
- package/skills/gsd-path-research/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-research/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-research/scripts/integration.py +244 -65
- package/skills/gsd-path-research/scripts/isolation.py +539 -70
- package/skills/gsd-path-research/scripts/loop_run.py +16 -4
- package/skills/gsd-path-research/scripts/members.py +77 -32
- package/skills/gsd-path-research/scripts/model_policy.py +5 -1
- package/skills/gsd-path-research/scripts/path_config.py +3 -3
- package/skills/gsd-path-research/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-research/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-research/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-research/scripts/roadmap.py +9 -1
- package/skills/gsd-path-research/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-research/scripts/state_promote.py +15 -4
- package/skills/gsd-path-research/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-research/templates/research-handoff.md +14 -3
- package/skills/gsd-path-roadmap/SKILL.md +16 -6
- package/skills/gsd-path-roadmap/references/dispatch.md +13 -0
- package/skills/gsd-path-roadmap/references/operating-rules.md +11 -3
- package/skills/gsd-path-roadmap/references/runtime-selection.md +9 -0
- package/skills/gsd-path-roadmap/scripts/_common.py +256 -2
- package/skills/gsd-path-roadmap/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-roadmap/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-roadmap/scripts/detect_project.py +260 -20
- package/skills/gsd-path-roadmap/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-roadmap/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-roadmap/scripts/integration.py +244 -65
- package/skills/gsd-path-roadmap/scripts/isolation.py +539 -70
- package/skills/gsd-path-roadmap/scripts/loop_run.py +16 -4
- package/skills/gsd-path-roadmap/scripts/members.py +77 -32
- package/skills/gsd-path-roadmap/scripts/model_policy.py +5 -1
- package/skills/gsd-path-roadmap/scripts/path_config.py +3 -3
- package/skills/gsd-path-roadmap/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-roadmap/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-roadmap/scripts/roadmap.py +9 -1
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-roadmap/scripts/state_promote.py +15 -4
- package/skills/gsd-path-roadmap/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-ship/SKILL.md +32 -5
- package/skills/gsd-path-ship/references/dispatch.md +13 -0
- package/skills/gsd-path-ship/references/operating-rules.md +11 -3
- package/skills/gsd-path-ship/references/reviewer-final.md +20 -2
- package/skills/gsd-path-ship/references/reviewer-wave.md +56 -12
- package/skills/gsd-path-ship/references/reviewer.md +3 -1
- package/skills/gsd-path-ship/references/runtime-selection.md +9 -0
- package/skills/gsd-path-ship/references/spec-probes.md +150 -0
- package/skills/gsd-path-ship/scripts/_common.py +256 -2
- package/skills/gsd-path-ship/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-ship/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-ship/scripts/build_state.py +274 -8
- package/skills/gsd-path-ship/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-ship/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-ship/scripts/detect_project.py +260 -20
- package/skills/gsd-path-ship/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-ship/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-ship/scripts/integration.py +244 -65
- package/skills/gsd-path-ship/scripts/isolation.py +539 -70
- package/skills/gsd-path-ship/scripts/loop_run.py +16 -4
- package/skills/gsd-path-ship/scripts/members.py +77 -32
- package/skills/gsd-path-ship/scripts/model_policy.py +5 -1
- package/skills/gsd-path-ship/scripts/path_config.py +3 -3
- package/skills/gsd-path-ship/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-ship/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-ship/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-ship/scripts/roadmap.py +9 -1
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-ship/scripts/state_promote.py +15 -4
- package/skills/gsd-path-ship/scripts/workflow_run.py +14 -4
- package/skills/gsd-path-ship/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-ship/templates/final-review.md +11 -2
- package/skills/gsd-path-ship/templates/patch-findings.md +3 -3
- package/skills/gsd-path-ship/templates/wave-review.md +28 -9
- package/skills/gsd-path-undo/references/operating-rules.md +11 -3
- package/skills/gsd-path-undo/references/runtime-selection.md +9 -0
- package/skills/gsd-path-undo/scripts/_common.py +256 -2
- package/skills/gsd-path-undo/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-undo/scripts/loop_run.py +16 -4
- package/skills/gsd-path-undo/scripts/model_policy.py +5 -1
- package/skills/gsd-path-undo/scripts/path_config.py +3 -3
- package/skills/gsd-path-undo/scripts/pipeline_undo.py +118 -16
- package/skills/gsd-path-undo/scripts/worktree_paths.py +54 -2
- package/skills/path/DEFINE.md +34 -5
- package/skills/path/PLAN.md +14 -3
- package/skills/path/RESEARCH.md +11 -0
- package/skills/path/ROADMAP.md +16 -6
- package/skills/path/SHIP.md +32 -5
- package/skills/path/SKILL.md +52 -24
- package/skills/path/references/build-native.md +112 -10
- package/skills/path/references/build-recovery.md +13 -0
- package/skills/path/references/coder.md +7 -3
- package/skills/path/references/dispatch.md +13 -0
- package/skills/path/references/docs-auditor.md +5 -0
- package/skills/path/references/operating-rules.md +11 -3
- package/skills/path/references/planner.md +26 -4
- package/skills/path/references/reviewer-final.md +20 -2
- package/skills/path/references/reviewer-wave.md +56 -12
- package/skills/path/references/reviewer.md +3 -1
- package/skills/path/references/runtime-selection.md +9 -0
- package/skills/path/references/spec-probes.md +150 -0
- package/skills/path/scripts/_common.py +256 -2
- package/skills/path/scripts/archive_milestone.py +14 -13
- package/skills/path/scripts/build_recovery.py +155 -58
- package/skills/path/scripts/build_state.py +274 -8
- package/skills/path/scripts/check_docs_audit.py +77 -4
- package/skills/path/scripts/check_handoffs.py +635 -57
- package/skills/path/scripts/check_task_briefs.py +293 -32
- package/skills/path/scripts/detect_project.py +260 -20
- package/skills/path/scripts/discussion_records.py +9 -1
- package/skills/path/scripts/discussion_validate.py +93 -35
- package/skills/path/scripts/dispatch_driver.py +549 -53
- package/skills/path/scripts/git_guard.py +27 -8
- package/skills/path/scripts/integration.py +244 -65
- package/skills/path/scripts/isolation.py +539 -70
- package/skills/path/scripts/loop_run.py +16 -4
- package/skills/path/scripts/members.py +77 -32
- package/skills/path/scripts/model_policy.py +5 -1
- package/skills/path/scripts/path_config.py +3 -3
- package/skills/path/scripts/pipeline_git.py +131 -42
- package/skills/path/scripts/pipeline_state.py +139 -39
- package/skills/path/scripts/promote_lookahead.py +3 -3
- package/skills/path/scripts/review_findings.py +180 -44
- package/skills/path/scripts/roadmap.py +9 -1
- package/skills/path/scripts/state_checkpoint.py +39 -36
- package/skills/path/scripts/state_promote.py +15 -4
- package/skills/path/scripts/status_runtime.py +22 -4
- package/skills/path/scripts/task_context.py +14 -3
- package/skills/path/scripts/workflow_run.py +14 -4
- package/skills/path/scripts/worktree_paths.py +54 -2
- package/skills/path/templates/docs-audit.md +5 -1
- package/skills/path/templates/final-review.md +11 -2
- package/skills/path/templates/intent.md +30 -0
- package/skills/path/templates/patch-findings.md +3 -3
- package/skills/path/templates/plan.md +17 -2
- package/skills/path/templates/research-handoff.md +14 -3
- package/skills/path/templates/state.md +2 -1
- package/skills/path/templates/task.md +1 -0
- package/skills/path/templates/wave-review.md +28 -9
- 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-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-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
package/README.md
CHANGED
|
@@ -9,21 +9,29 @@ milestone loop. While a milestone builds, the next one can be planned in
|
|
|
9
9
|
parallel under `.project/next/` (lookahead); a building milestone can also be
|
|
10
10
|
abandoned on an explicit ruling, archiving its partial work for a re-slice.
|
|
11
11
|
|
|
12
|
-
**
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
**Hosts with a passing full live milestone for release 1.6.0:** Codex, Claude
|
|
13
|
+
Code, Grok, OpenCode, Antigravity CLI, Cursor, and Kimi Code.
|
|
14
|
+
|
|
15
|
+
**Hosts with an installer and a dispatch contract, but no live milestone for
|
|
16
|
+
release 1.6.0:** GitHub Copilot CLI (account quota exhausted), Qwen Code, Zed,
|
|
17
|
+
and Kiro (API credits), and Muse Code (no live release evidence recorded yet).
|
|
18
|
+
These hosts are excluded from the release evaluation. Exclusion is not a pass.
|
|
19
|
+
|
|
20
|
+
With guard hooks installed, only Claude Code and Cursor get a fail-closed
|
|
21
|
+
native guard; every other host relies on Git hooks. The installer also writes a
|
|
22
|
+
native Codex hook, and it runs only after you trust it (see [HOOKS.md](HOOKS.md)).
|
|
23
|
+
The [host trust matrix](https://github.com/open-gsd/gsd-path/blob/main/docs/trust-validation/HOST-MATRIX.md)
|
|
24
|
+
is the source of truth for live milestone proof and each host's guard tier.
|
|
17
25
|
|
|
18
26
|
<!-- release-docs -->
|
|
19
|
-
**Latest npm release:** [@opengsd/gsd-path@1.
|
|
27
|
+
**Latest npm release:** [@opengsd/gsd-path@1.6.0](https://www.npmjs.com/package/@opengsd/gsd-path/v/1.6.0) — [release notes](CHANGELOG.md#160---2026-10-12)
|
|
20
28
|
|
|
21
29
|
**Recent highlights**
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
30
|
+
- let a later task supersede an earlier task and retire its Verify
|
|
31
|
+
- document the default branch record of a member
|
|
32
|
+
- member paths read the default branch that MEMBERS.md records
|
|
33
|
+
- record the default branch of a member in MEMBERS.md
|
|
34
|
+
- add --uninstall to the skill installers
|
|
27
35
|
|
|
28
36
|
<!-- /release-docs -->
|
|
29
37
|
|
|
@@ -40,37 +48,31 @@ proof and each host's guard tier.
|
|
|
40
48
|
| [WORKFLOW.md](WORKFLOW.md) | Phase-by-phase agent SOP |
|
|
41
49
|
| [HOOKS.md](HOOKS.md) | Optional archive/git guard hooks |
|
|
42
50
|
| [Jev screening](skills/gsd-path/references/jev-review.md) | Optional evidence screening; disabled by default, no SDK required |
|
|
43
|
-
| [daemon/README.md](daemon/README.md) |
|
|
44
|
-
| [
|
|
51
|
+
| [daemon/app/README.md](daemon/app/README.md) | Desktop app: develop, release, and updates |
|
|
52
|
+
| [daemon/README.md](daemon/README.md) | Monitor daemon: routes, configuration, and manual setup |
|
|
53
|
+
| [CHANGELOG.md](CHANGELOG.md) | npm package release notes |
|
|
54
|
+
| [daemon/app/CHANGELOG.md](daemon/app/CHANGELOG.md) | Desktop app release notes |
|
|
45
55
|
| [RELEASE.md](RELEASE.md) | Maintainer CI and npm release cycle |
|
|
46
56
|
| [GUIDE.md](GUIDE.md) | Pointer to the guides above |
|
|
47
57
|
|
|
48
|
-
## What's new —
|
|
58
|
+
## What's new — October 2, 2026
|
|
49
59
|
|
|
50
60
|
These changes are merged into the source checkout; npm installs use the latest
|
|
51
61
|
published release.
|
|
52
62
|
|
|
53
|
-
- **
|
|
54
|
-
|
|
55
|
-
[
|
|
56
|
-
- **
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- **Clearer project updates:** the dashboard shows project runtime versions and
|
|
67
|
-
update results. After verified integration, ordinary branches can resume
|
|
68
|
-
product work while archived milestones remain protected. See
|
|
69
|
-
[update guidance](UPDATE.md#update-the-project-runtime-and-guard-hooks).
|
|
70
|
-
- **Optional Jev screening:** reviewers can request advisory checks of selected
|
|
71
|
-
criteria and evidence. It is disabled by default and never replaces recorded
|
|
72
|
-
verification or review gates. See
|
|
73
|
-
[Jev screening](skills/gsd-path/references/jev-review.md).
|
|
63
|
+
- **Desktop app (pre-release):** one app for macOS, Windows, and Linux shows
|
|
64
|
+
your projects, manages skills in each coding agent, and updates itself. See
|
|
65
|
+
[Desktop app](#desktop-app).
|
|
66
|
+
- **Skills from the published release:** the monitor installs skills from the
|
|
67
|
+
npm release, checks the download against the registry's sha512, and refuses
|
|
68
|
+
one that does not match. A release picker lets you stay on an older version.
|
|
69
|
+
- **Safer monitor writes:** a monitor started by the app accepts changes only
|
|
70
|
+
with the app's local token, so another web page cannot change your setup.
|
|
71
|
+
- **Environment editor:** edit a project's `.env` files with values masked and
|
|
72
|
+
a diff before each save.
|
|
73
|
+
- **Usage charts:** tokens and cost per day, time per phase, tasks per wave,
|
|
74
|
+
and verify history. Missing data shows as missing, never as zero.
|
|
75
|
+
- **Muse Code** is a supported host.
|
|
74
76
|
|
|
75
77
|
## Install from npm
|
|
76
78
|
|
|
@@ -126,7 +128,13 @@ contain newer changes.
|
|
|
126
128
|
|
|
127
129
|
1. Open your project folder in your coding-agent host. Existing repositories
|
|
128
130
|
need Git; GitHub repository creation and pull-request operations also need
|
|
129
|
-
an authenticated GitHub CLI (`gh`).
|
|
131
|
+
an authenticated GitHub CLI (`gh`). The default branch of `origin` can have
|
|
132
|
+
any name: Path records it at initialization and ships onto it. This guide
|
|
133
|
+
calls it `main`; see [default branch](WORKFLOW.md#default-branch).
|
|
134
|
+
Pull-request
|
|
135
|
+
shipping supports GitHub.com only. On GitLab, Gitea, or GitHub Enterprise
|
|
136
|
+
Server, use the [`external-landing` mode](WORKFLOW.md#integration) when
|
|
137
|
+
the default branch accepts merge requests only.
|
|
130
138
|
2. Start or reload the host session so it discovers the installed skills.
|
|
131
139
|
3. Invoke `$path` in Codex, or `/path` on slash-command hosts. The router
|
|
132
140
|
identifies the project and guides you through the required inputs and approvals.
|
|
@@ -157,65 +165,71 @@ project settings. Dashboard users can open **Settings → Path settings** for th
|
|
|
157
165
|
same shipping, model/effort, and future review-panel controls. See
|
|
158
166
|
[Path settings](skills/gsd-path/references/config.md) for precedence and locks.
|
|
159
167
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
The optional **OpenGSD Path monitor** shows your projects without opening each
|
|
163
|
-
project's `.project/` files. It watches the folders you choose and reads project
|
|
164
|
-
state without advancing phase gates. Explicit Path settings saves use the
|
|
165
|
-
validated configuration helper; background monitoring remains read-only.
|
|
166
|
-
The monitor is a separate install from the npm skills package.
|
|
167
|
-
|
|
168
|
-
### Dashboard
|
|
169
|
-
|
|
170
|
-
The project board shows blocked, active, and shipped work, with milestone and
|
|
171
|
-
phase progress, task counts, last activity, and available usage data. Use the
|
|
172
|
-
[dashboard controls](daemon/README.md#dashboard) to filter or search projects,
|
|
173
|
-
switch between Board and Milestones, refresh status, and manage settings.
|
|
174
|
-
|
|
175
|
-

|
|
176
|
-
|
|
177
|
-
Click a project to see its milestone roadmap, tasks, success criteria, review
|
|
178
|
-
results, verification history, and activity. Usage includes tokens and turns
|
|
179
|
-
from supported host session logs; cost estimates require model prices in the
|
|
180
|
-
daemon configuration.
|
|
181
|
-
|
|
182
|
-

|
|
183
|
-
|
|
184
|
-
*Dashboard screenshots captured on September 19, 2026, using the repository's
|
|
185
|
-
sample projects; the current project folder layout may differ.*
|
|
186
|
-
|
|
187
|
-
Open **History & files** to browse project files and archived milestones,
|
|
188
|
-
preview Markdown, or read a file at a selected Git commit. Relative document
|
|
189
|
-
links keep that selected version. **Records & sources → Load full records**
|
|
190
|
-
loads recorded usage, verification, activity, and indexed host turns on demand,
|
|
191
|
-
with coverage details that make missing or invalid data visible.
|
|
192
|
-
|
|
193
|
-
Open **Settings → Path settings** to change user defaults or project overrides
|
|
194
|
-
for shipping mode, model and effort choices, and future review panels. Each
|
|
195
|
-
setting shows its source and any lock reason; changes are saved explicitly.
|
|
196
|
-
|
|
197
|
-
The **Plugin** settings page shows each watched project's runtime version and
|
|
198
|
-
provides an explicit **Update** action with progress and failure details.
|
|
199
|
-
Updating global skills does not update a project's pinned runtime.
|
|
200
|
-
|
|
201
|
-
### macOS menu bar
|
|
202
|
-
|
|
203
|
-
Click the OpenGSD Path menu-bar icon for a compact project list with phase
|
|
204
|
-
meters and task progress. Click a project to open its dashboard page. The
|
|
205
|
-
bottom toolbar opens the dashboard, plugin settings, and watched folders;
|
|
206
|
-
it also provides rescan, appearance, and quit controls. The daemon row shows
|
|
207
|
-
its running state and provides restart and stop controls. Option-click the
|
|
208
|
-
menu-bar icon to open the dashboard directly.
|
|
168
|
+
### Uninstall
|
|
209
169
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
### Install the monitor
|
|
170
|
+
```bash
|
|
171
|
+
npx @opengsd/gsd-path@latest --uninstall --all --dry-run
|
|
172
|
+
npx @opengsd/gsd-path@latest --uninstall --all
|
|
173
|
+
```
|
|
216
174
|
|
|
217
|
-
|
|
218
|
-
|
|
175
|
+
`--uninstall` removes the installed GSD Path skills from the selected hosts.
|
|
176
|
+
For Cursor it also removes the GSD Path subagent file. Use host flags instead
|
|
177
|
+
of `--all` to select hosts. For project-local skills, run the command from
|
|
178
|
+
your project directory and add `--local`. `--dry-run` shows each path and
|
|
179
|
+
removes nothing.
|
|
180
|
+
|
|
181
|
+
The command removes only GSD Path skills. It keeps other skills, host
|
|
182
|
+
settings, and `disabled-gsd-skills` backups. It makes no backup: changes that
|
|
183
|
+
you made in a GSD Path skill directory are lost. It does not remove project
|
|
184
|
+
contracts or hooks (`.project/`, `.gsd-path/`, the `AGENTS.md` block, guard
|
|
185
|
+
hooks). See [Uninstall skills](UPDATE.md#uninstall-skills).
|
|
186
|
+
|
|
187
|
+
## Desktop app
|
|
188
|
+
|
|
189
|
+
The **OpenGSD Path app** shows your projects without opening each project's
|
|
190
|
+
`.project/` files, and manages the Path setup on your computer. It is a
|
|
191
|
+
pre-release for testers.
|
|
192
|
+
|
|
193
|
+
**Get it:** download the installer for your system from the newest `app-v`
|
|
194
|
+
entry on the [releases page](https://github.com/open-gsd/gsd-path/releases):
|
|
195
|
+
`.dmg` (macOS, Apple Silicon or Intel), `.msi` (Windows), `.deb` or AppImage
|
|
196
|
+
(Linux). The app needs Python 3.9+ and Git; its first screen checks for both
|
|
197
|
+
and shows the fix when one is missing.
|
|
198
|
+
|
|
199
|
+
macOS builds are signed with a Developer ID and notarized by Apple from 0.1.1
|
|
200
|
+
on, so they open without an approval in Privacy & Security. Windows builds have
|
|
201
|
+
no code signature yet: SmartScreen shows a warning; choose **More info → Run
|
|
202
|
+
anyway**.
|
|
203
|
+
|
|
204
|
+
What the app does:
|
|
205
|
+
|
|
206
|
+
- **Projects:** blocked, active, and shipped work with milestone and phase
|
|
207
|
+
progress, tasks, last activity, and usage. A project page shows its
|
|
208
|
+
roadmap, tasks, success criteria, reviews, verification history, files at
|
|
209
|
+
any Git version, and full recorded evidence.
|
|
210
|
+
- **Skills:** which coding agents have Path skills, at which version, with
|
|
211
|
+
preview, install, update, and uninstall. Every write shows a preview or a
|
|
212
|
+
plan first.
|
|
213
|
+
- **Project setup:** runtime version, guard hooks, health check, and, for a
|
|
214
|
+
multi-repo coordinator, member hooks and marker repair.
|
|
215
|
+
- **Settings:** updates, Path settings (shipping mode, models, review panel),
|
|
216
|
+
watched folders, model prices, launch at login, and appearance.
|
|
217
|
+
- **Stats** and the per-project **Environment** editor.
|
|
218
|
+
- **Tray:** a compact project list, items that need attention, and controls
|
|
219
|
+
to start, restart, and quit.
|
|
220
|
+
|
|
221
|
+
The app only watches and sets up. It never advances a phase; approvals and
|
|
222
|
+
rulings stay in your agent. It updates itself: it checks a signed update file,
|
|
223
|
+
asks before it installs, and refuses an update whose signature does not match.
|
|
224
|
+
|
|
225
|
+
Background monitoring is read-only. The app starts a local monitor (the
|
|
226
|
+
daemon) and stops it on quit. See the [app guide](daemon/app/README.md) and the
|
|
227
|
+
[daemon guide](daemon/README.md).
|
|
228
|
+
|
|
229
|
+
### Manual monitor (without the app)
|
|
230
|
+
|
|
231
|
+
From a source checkout you can still run the monitor and its browser
|
|
232
|
+
dashboard without the app. It requires Python 3.9+:
|
|
219
233
|
|
|
220
234
|
```bash
|
|
221
235
|
git clone https://github.com/open-gsd/gsd-path.git
|
|
@@ -224,33 +238,20 @@ PYTHONPATH=daemon python3 -m gsd_daemon install --dry-run
|
|
|
224
238
|
PYTHONPATH=daemon python3 -m gsd_daemon install
|
|
225
239
|
```
|
|
226
240
|
|
|
227
|
-
On Windows,
|
|
241
|
+
On Windows, use PowerShell in the `gsd-path` folder. The last command starts
|
|
242
|
+
the monitor for this session; it starts by itself at later logins:
|
|
228
243
|
|
|
229
244
|
```powershell
|
|
230
245
|
$env:PYTHONPATH = "daemon"
|
|
231
246
|
python -m gsd_daemon install --dry-run
|
|
232
247
|
python -m gsd_daemon install
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
On Windows, launch the installed shortcut for this session before opening the
|
|
236
|
-
dashboard. It starts automatically at future logins:
|
|
237
|
-
|
|
238
|
-
```powershell
|
|
239
248
|
Start-Process "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\gsd-path-daemon.lnk"
|
|
240
249
|
```
|
|
241
250
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
macOS, use `--no-tray` for the dashboard only. Linux autostart runs the
|
|
247
|
-
dashboard; launch the optional tray separately with
|
|
248
|
-
`~/.gsd-path/venv/bin/gsd-path-daemon tray`. Windows uses a tray-and-dashboard
|
|
249
|
-
Startup shortcut; see the [daemon guide](daemon/README.md) for platform details.
|
|
250
|
-
|
|
251
|
-
See the [daemon guide](daemon/README.md) for configuration, usage pricing,
|
|
252
|
-
manual startup, and platform setup, or the [macOS guide](daemon/macos/README.md)
|
|
253
|
-
for native menu-bar details.
|
|
251
|
+
Then open **http://127.0.0.1:8765**. The first launch of the desktop app
|
|
252
|
+
removes this older autostart entry so only one monitor runs. See the
|
|
253
|
+
[daemon guide](daemon/README.md) for platform details, configuration, and
|
|
254
|
+
usage pricing.
|
|
254
255
|
|
|
255
256
|
## Skills
|
|
256
257
|
|
|
@@ -390,12 +391,30 @@ partial remote/clone/worktree transaction; the default checkout stays clean.
|
|
|
390
391
|
One project can change several repositories in the same milestone. The
|
|
391
392
|
**coordinator** repo holds `.project/` and runs the pipeline; each other repo
|
|
392
393
|
is a **member** listed in `.project/MEMBERS.md`. A member needs a GitHub.com
|
|
393
|
-
`origin
|
|
394
|
+
`origin`. Its default branch can have any name, and it can differ from the
|
|
395
|
+
default branch of the coordinator and of the other members. See
|
|
394
396
|
[ADR 0002](docs/adr/0002-multi-repo-coordinator.md) for the design.
|
|
395
397
|
|
|
398
|
+
`MEMBERS.md` has one section per member, in ship order. `members.py` writes
|
|
399
|
+
it; do not edit it by hand:
|
|
400
|
+
|
|
401
|
+
```markdown
|
|
402
|
+
## web
|
|
403
|
+
Checkout: /absolute/path/to/web
|
|
404
|
+
Remote: https://github.com/acme/web.git
|
|
405
|
+
Integration: default
|
|
406
|
+
Default branch: master
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
`Default branch` is the member's default branch on `origin`. `members.py add`
|
|
410
|
+
records it one time, from the member's local `origin/HEAD`; run
|
|
411
|
+
`git remote set-head origin --auto` in the member first. A section without
|
|
412
|
+
the field means `main`. See [default branch](WORKFLOW.md#default-branch).
|
|
413
|
+
|
|
396
414
|
- Add members at a milestone boundary: ask the router to add an existing repo
|
|
397
415
|
(`members.py add`) or to create a new one (`members.py add --create`, after
|
|
398
|
-
you approve the exact owner, name, visibility, and checkout
|
|
416
|
+
you approve the exact owner, name, visibility, and checkout; a new
|
|
417
|
+
repository uses `main`). For optional
|
|
399
418
|
guard hooks, install them in the member with
|
|
400
419
|
`npx @opengsd/gsd-path@latest --member-of <coordinator> --project <member>`.
|
|
401
420
|
- The planner gives each member task `repo: <member>`; one task changes one
|
|
@@ -470,11 +489,12 @@ node scripts/install.mjs --all --local
|
|
|
470
489
|
node scripts/install.mjs --all --project /path/to/project
|
|
471
490
|
node scripts/install.mjs --update
|
|
472
491
|
node scripts/install.mjs --all --update --project /path/to/project # refresh .gsd-path/; keeps contracts
|
|
492
|
+
node scripts/install.mjs --uninstall --all --dry-run # preview; removes skills only
|
|
473
493
|
```
|
|
474
494
|
|
|
475
495
|
| Flag | User skills root | Invoke |
|
|
476
496
|
| --- | --- | --- |
|
|
477
|
-
| `--codex`, `--zed` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed: `/path` or `/gsd-path` |
|
|
497
|
+
| `--codex`, `--zed`, `--muse` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed, Muse: `/path` or `/gsd-path` |
|
|
478
498
|
| `--claude` | `~/.claude/skills` | `/path` or `/gsd-path` |
|
|
479
499
|
| `--cursor` | `~/.cursor/skills` (+ subagent) | `/path` or `/gsd-path` |
|
|
480
500
|
| `--grok` | `~/.grok/skills` | `/path` or `/gsd-path` |
|
|
@@ -489,7 +509,7 @@ OpenCode stable: ask to load and use the `gsd-path` skill.
|
|
|
489
509
|
`gsd-path` remains the canonical router name; `path` is its short menu alias.
|
|
490
510
|
For a single phase, use `$gsd-path-plan` in Codex or `/gsd-path-plan` on slash hosts.
|
|
491
511
|
|
|
492
|
-
`scripts/install.py` — Python install, including `--local
|
|
512
|
+
`scripts/install.py` — Python install, including `--local`, `--update`, and `--uninstall`.
|
|
493
513
|
The Node CLI remains the interactive and npm entry point. See [FULL.md](FULL.md) and
|
|
494
514
|
[UPDATE.md](UPDATE.md) for `--hooks`, `--hooks-refresh`, `--local`, and host notes.
|
|
495
515
|
|
package/RUNTIME.md
CHANGED
|
@@ -23,7 +23,7 @@ inputs, receipt handling, and entry conditions are owned by the
|
|
|
23
23
|
| `gate-plan` | Git HEAD; optional lookahead project directory | Pending discussion, intent coverage, brief paths, and panel configuration checked in order. |
|
|
24
24
|
| `approve-plan` | Owner approval and `--expected-head <reviewed full SHA>` | Plan gates followed by the existing journaled approval checkpoint. |
|
|
25
25
|
| `lint-round` | Git HEAD; optional `--project-dir .project/next` | Task brief checks against HEAD, then plan handoff checks. |
|
|
26
|
-
| `prepare-task` | `--expected-head <clean base> --task-id <id> --round-size <ready task count>` | Canonical task isolation; serial work also gets a verification sidecar before the primary becomes dirty. |
|
|
26
|
+
| `prepare-task` | `--expected-head <clean base> --task-id <id> --round-size <ready task count>` | Canonical task isolation; serial work also gets a verification sidecar before the primary becomes dirty. A verification sidecar that an earlier `prepare-task` left for the task is retired first only when it is proven untouched: its branch did not move from its creation base on the bound branch, and it has no tracked change and no untracked or gitignored file. Any other sidecar stays, and the command stops with its path and what was found. |
|
|
27
27
|
| `build-evidence` | `--expected-head <full SHA>` | Canonical landing proof written to `<project-dir>/build/evidence.json` (default: `.project/build/evidence.json`). |
|
|
28
28
|
|
|
29
29
|
Plan approval recovery remains `pipeline_state.py resume-checkpoint`. Pre-Git
|
|
@@ -68,7 +68,7 @@ skeptic attempts under `skeptics/`.
|
|
|
68
68
|
| `skeptics --repo <root> --wave <N> --cycle <C> --child-command '<cmd>' [--wait <s>] [--child-timeout <s>]` | Step 7 skeptic branch: one read-only skeptic per `skeptic_groups` locator in its own sidecar at the recorded review base, briefed with the criterion, every observation, and the cited tasks verbatim; validate with `review_findings.py`, collect, retire, then rerun the helper. `none` without skeptic groups; `escalate` for structural blockers or the cycle cap. The skeptic files stay uncommitted for the fix-task or ruling checkpoint. |
|
|
69
69
|
| `fix-tasks --repo <root> --wave <N> --cycle <C>` | Step 7 batching: one fix task per `review_findings.py collect` batch with the failed criteria and observations verbatim, lint-checked; `escalate` for structural blockers, skeptic groups, cycle cap, or all-refuted. |
|
|
70
70
|
| `complete --repo <root>` | Completion: clean primary at `build/active` (or a crash-left `build/done`), no unfinished wave, the archive-time review cycle check (`discussion_validate.review_cycle_counts`: contiguous cycles, passing last cycle, panel and skeptic artifacts present); `workflow_run.py build-evidence` at HEAD; `pipeline_state.py transition` to `ship/active` with event `build done; final review pending`; checkpoint `build: complete milestone`. |
|
|
71
|
-
| `finish --repo <root> --task-id <id>` | Recover first; return a proven landing without repeating Verify, or verify, land, record, and retire one returned task. Without a dispatch record, or when the newest record is settled and its base differs from the task's current in-progress base (a native retry after a driver block), read the primary task's in-progress state; if it lacks a recorded base, use the parallel task isolate's state only if that worktree is authorized. A blocked record at the same base still refuses the retry. A deactivated isolate stays blocked. |
|
|
71
|
+
| `finish --repo <root> --task-id <id>` | Recover first; return a proven landing without repeating Verify, or verify, land, record, and retire one returned task. Without a dispatch record, or when the newest record is settled and its base differs from the task's current in-progress base (a native retry after a driver block), read the primary task's in-progress state; if it lacks a recorded base, use the parallel task isolate's state only if that worktree is authorized. A blocked record at the same base still refuses the retry, except a host-dispatched record (no child command) while the task is still in progress at that base: `finish` may run again after a failed Verify. A deactivated isolate stays blocked. |
|
|
72
72
|
| `answer --repo <root> --task-id <id> --answer '<text>'` | Append `Orchestrator answer:` to the isolate's task Log; the next `round` redispatches that isolate. |
|
|
73
73
|
| `status --repo <root>` | Every task's newest dispatch record. |
|
|
74
74
|
|
|
@@ -91,10 +91,17 @@ argument slots defined in the dispatch model policy.
|
|
|
91
91
|
calls. In `round`, an unfinished earlier wave blocks dispatch before the bookkeeping
|
|
92
92
|
checkpoint. Child completion is recorded in `exit.json`; the parent alone
|
|
93
93
|
writes `state.json`.
|
|
94
|
-
For `review`, `panel`, and `skeptics`, when the child process is gone and `finished_at` is
|
|
94
|
+
For `round`, `review`, `panel`, and `skeptics`, when the child process is gone and `finished_at` is
|
|
95
95
|
unset, the driver rereads that attempt's state and exit receipt before
|
|
96
96
|
collecting the result or blocking with
|
|
97
97
|
`child wrapper exited without recording a result`.
|
|
98
|
+
A landing is final when the removal of its isolate fails: the receipt reports
|
|
99
|
+
the task as landed with a `cleanup_warning`, and the next `round` or `finish`
|
|
100
|
+
checks the isolate again. When only a leftover of a landed task's isolate
|
|
101
|
+
remains and it holds nothing that Git does not have, the driver stops with
|
|
102
|
+
`task <id> is landed; remove its leftover isolate: <path>`, changes neither
|
|
103
|
+
STATE nor HEAD, and never deletes the path itself. Every other isolate error
|
|
104
|
+
keeps its recovery block.
|
|
98
105
|
Review starts from a clean base. A same-cycle retry may dispatch a missing lens
|
|
99
106
|
at that unchanged base while verified, already-collected review artifacts remain
|
|
100
107
|
uncommitted. Altered artifacts or unrelated changes block recovery.
|
|
@@ -127,7 +134,15 @@ with `another dispatch_driver invocation holds the lock`; wait for the
|
|
|
127
134
|
active call to return before retrying. Bookkeeping also blocks if an
|
|
128
135
|
in-progress primary task has no open dispatch record.
|
|
129
136
|
|
|
130
|
-
Verify output is saved in `verify.json`.
|
|
137
|
+
Verify output is saved in `verify.json`. `finish` also runs the Verify of each
|
|
138
|
+
earlier-wave task that shares a file with the task, under the
|
|
139
|
+
[wave loop](skills/gsd-path/references/build-native.md#wave-loop) rule; those
|
|
140
|
+
runs are saved under `regressions` and a failure blocks the landing. A Verify
|
|
141
|
+
that a `supersedes` field retires does not run; it is listed under `retired`. A fix
|
|
142
|
+
task Verify that loses only the copy of a retired Verify has a `retired` entry with
|
|
143
|
+
the key `part` (the superseded task) and the Log entry `orchestrator regression
|
|
144
|
+
Verify of <fix task id>: part of <task id> retired: superseded by <task id>`. A task
|
|
145
|
+
with a `Heavy: yes` regression Verify counts as heavy. A `verify-record` ledger entry is
|
|
131
146
|
written only when the landing commit's parent equals the recorded task base;
|
|
132
147
|
a later parallel landing can therefore have no ledger entry.
|
|
133
148
|
|
|
@@ -174,8 +189,11 @@ through its receipt only when the canonical file matches the saved hash.
|
|
|
174
189
|
|
|
175
190
|
`fix-tasks` reconciles existing repair tasks and PLAN rows before linting and
|
|
176
191
|
checkpointing. It creates missing batches in an appended repair wave and
|
|
177
|
-
reports new tasks in `created`, reused tasks in `existing`, and batches
|
|
178
|
-
|
|
192
|
+
reports new tasks in `created`, reused tasks in `existing`, and batches that
|
|
193
|
+
other repair tasks not yet `done` cover in the same repo in `carried`. A member
|
|
194
|
+
batch and its task carry `repo`. A fix task for a finding that repeats after
|
|
195
|
+
its fix landed also depends on that landed fix task, so
|
|
196
|
+
`review_findings.py repair-evidence` can link the two. Status `created` includes restored
|
|
179
197
|
PLAN rows or pending project bookkeeping; `exists` means nothing was written
|
|
180
198
|
and no project changes needed a checkpoint. Status `none` means no batches
|
|
181
199
|
need work; `escalate` leaves the named decisions with build step 7 and the user.
|
package/UPDATE.md
CHANGED
|
@@ -176,9 +176,10 @@ a global update does not update project runtimes. Use the project's **Update**
|
|
|
176
176
|
button to refresh its runtime and existing guards. Install and update actions
|
|
177
177
|
show progress, success or failure, and installer output.
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
local
|
|
179
|
+
Project Update refreshes the daemon's plugin source first. With the
|
|
180
|
+
[git source](daemon/README.md#plugin-lifecycle), a clone that has local changes
|
|
181
|
+
is used as that local build, and the result says so. It does not pull remote
|
|
182
|
+
changes over local edits.
|
|
182
183
|
|
|
183
184
|
Older unstamped installs show **Unknown — version metadata unavailable**.
|
|
184
185
|
This does not establish that their runtime is outdated or broken. **Update**
|
|
@@ -272,6 +273,41 @@ Unrecognized or foreign `.project/` state is never auto-migrated — the router
|
|
|
272
273
|
|
|
273
274
|
---
|
|
274
275
|
|
|
276
|
+
## Uninstall skills
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
npx @opengsd/gsd-path@latest --uninstall --all --dry-run
|
|
280
|
+
npx @opengsd/gsd-path@latest --uninstall --all
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
From a git clone, use `node scripts/install.mjs` with the same flags.
|
|
284
|
+
|
|
285
|
+
- Select the hosts with host flags or `--all`. A selection is necessary.
|
|
286
|
+
- Add `--local`, from the project directory, for project-local skills.
|
|
287
|
+
- `--dry-run` lists each path and removes nothing. A real run lists each
|
|
288
|
+
removed path.
|
|
289
|
+
- A host that has no GSD Path skills shows `nothing to remove`. This is not an
|
|
290
|
+
error. A second run removes nothing.
|
|
291
|
+
|
|
292
|
+
**Removed:** skill directories that GSD Path owns, and Cursor's
|
|
293
|
+
`agents/gsd-path.md`. A directory is owned when it has a GSD Path name
|
|
294
|
+
(`gsd-path`, `gsd-path-*`, the legacy `ogsd` names, or the `path` alias) and
|
|
295
|
+
contains a `VERSION` file or a `SKILL.md` that names `gsd-path`. The `path`
|
|
296
|
+
alias must also pass the ownership rule in
|
|
297
|
+
[What auto-updates](#what-auto-updates). A directory with a GSD Path name
|
|
298
|
+
that is not owned shows as `kept` and stays in place.
|
|
299
|
+
|
|
300
|
+
**Not removed:** other skills, host settings, `disabled-gsd-skills` backups,
|
|
301
|
+
and all project files: `.project/`, `.gsd-path/`, the `AGENTS.md` block, and
|
|
302
|
+
guard hooks. `--uninstall` with `--project`, `--update`, `--doctor`, or a hook
|
|
303
|
+
or runtime flag stops with an error.
|
|
304
|
+
|
|
305
|
+
Removal makes no backup. Changes that you made in a GSD Path skill directory
|
|
306
|
+
are lost. Codex, Zed, and Muse use one skills root (with `--local`, also
|
|
307
|
+
Antigravity): an uninstall for one of them removes the skills for all of them.
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
275
311
|
## Troubleshooting
|
|
276
312
|
|
|
277
313
|
| Symptom | Fix |
|
package/WORKFLOW.md
CHANGED
|
@@ -161,7 +161,8 @@ Owned state routes by STATE.md without rerunning the helper. Reserve `classify`
|
|
|
161
161
|
for read-only inspection; do not re-derive a verdict from a directory listing.
|
|
162
162
|
|
|
163
163
|
For a newly initialized existing Git repository, the state router returns
|
|
164
|
-
`bind-initial` while `STATE.branch` is null. The router fetches
|
|
164
|
+
`bind-initial` while `STATE.branch` is null. The router fetches the recorded
|
|
165
|
+
[default branch](#default-branch) (`origin/main` in this document),
|
|
165
166
|
runs `pipeline_git.py bind-initial` with that exact SHA, and records the
|
|
166
167
|
returned `gsd-path/M00N` binding through `pipeline_state.py transition` before
|
|
167
168
|
entering inspect or define. Build consumes this binding and never creates or
|
|
@@ -223,6 +224,20 @@ vetoes and corrections verbatim. Unresolved items remain tagged `RESEARCH` or
|
|
|
223
224
|
first and presented as settled coverage for correction; the interview covers
|
|
224
225
|
only its gaps and contradictions.
|
|
225
226
|
|
|
227
|
+
Once the success criteria are drafted, define runs the spec-reach probes
|
|
228
|
+
([spec-probes.md](skills/gsd-path/references/spec-probes.md)). The edge probe
|
|
229
|
+
walks each criterion through a closed edge taxonomy (boundary, adjacency,
|
|
230
|
+
empty, encoding, ordering, precision, idempotency, concurrency) and records
|
|
231
|
+
the user's ruling per applicable edge in INTENT.md `## Edge coverage`:
|
|
232
|
+
`criterion SCn` (stated in a success criterion), `held-out` (a named test
|
|
233
|
+
pins it), or `dismissed` with a reason. The prohibition probe asks what each
|
|
234
|
+
criterion must never silently become and records kept items in
|
|
235
|
+
`## Prohibitions` as `criterion SCn`, `judgment`, or `dismissed`. Define
|
|
236
|
+
never rules on an edge itself. `scripts/check_handoffs.py intent` checks
|
|
237
|
+
both tables before every approval question, and the `define/done` transition
|
|
238
|
+
refuses an intent whose tables are incomplete. An INTENT.md without these
|
|
239
|
+
sections predates the probes and is not rechecked.
|
|
240
|
+
|
|
226
241
|
At approval define classifies the milestone lane in INTENT.md: `quick`
|
|
227
242
|
when scope fits at most two deliverable-sized tasks in one wave with no open
|
|
228
243
|
questions and no cross-wave risk; otherwise `standard`. Milestone mode — a
|
|
@@ -343,6 +358,9 @@ by — which that task must own, in the same wave as the capability behind it.
|
|
|
343
358
|
`check_handoffs.py final` then requires each of those criteria to name its
|
|
344
359
|
surface in FINAL.md with the walkthrough as its Check, so a surface criterion
|
|
345
360
|
cannot be marked `met` on internal test output.
|
|
361
|
+
Every `held-out` edge gets a PLAN.md `## Held-out checks` row naming the task
|
|
362
|
+
and test file; that test is in the task's files, its Verify runs it, and its
|
|
363
|
+
Acceptance criteria state the edge id and ruling.
|
|
346
364
|
`scripts/check_handoffs.py plan` gates the table; `wave` and `final`
|
|
347
365
|
require a verdict per owned SC id. Acceptance criteria,
|
|
348
366
|
owned SCs, and Verify are the contract; the coder owns
|
|
@@ -417,7 +435,11 @@ surface walkthroughs, in its existing review. The runtime proves freshness and
|
|
|
417
435
|
generates FINAL.md from that record. Dispatch an integration reviewer only when
|
|
418
436
|
that proof is incomplete or stale; dispatch gap reviewers only for uncovered
|
|
419
437
|
cross-wave risks through the shared capacity-aware contract. The integration reviewer marks each success
|
|
420
|
-
criterion `met`, `not-met`, or `unverifiable` with checked evidence.
|
|
438
|
+
criterion `met`, `not-met`, or `unverifiable` with checked evidence. A criterion
|
|
439
|
+
tagged by a `held-out` edge or `judgment` prohibition is `met` only when its
|
|
440
|
+
evidence cites every tag id; otherwise the reviewer records `unverifiable`
|
|
441
|
+
(insufficient spec evidence) and `check_handoffs.py final` refuses a `met`
|
|
442
|
+
that skips a tag. Each gap
|
|
421
443
|
reviewer records `pass` or `blocked` for its assigned end-to-end or cross-wave
|
|
422
444
|
risk. List only genuine
|
|
423
445
|
risks that could plausibly fail; never pad the list. The runtime
|
|
@@ -519,6 +541,49 @@ the subject and field body defined by its canonical phase contract; task-land
|
|
|
519
541
|
fields live only in the
|
|
520
542
|
[build contract](skills/gsd-path-build/SKILL.md).
|
|
521
543
|
|
|
544
|
+
### Default branch
|
|
545
|
+
|
|
546
|
+
Path ships onto the default branch of `origin`. The name is not fixed.
|
|
547
|
+
`detect_project.py initialize` reads the local `refs/remotes/origin/HEAD` one
|
|
548
|
+
time and records the name in `STATE.md` as `default_branch`; an unset
|
|
549
|
+
`origin/HEAD` records `main`. Run `git remote set-head origin --auto` before
|
|
550
|
+
the first Path run so that the record is the default branch of the forge. A
|
|
551
|
+
`STATE.md` without the field means `main`, so older projects do not change.
|
|
552
|
+
|
|
553
|
+
This document writes `main` and `origin/main` for the recorded default branch.
|
|
554
|
+
In a project that records `master`, read them as `master` and `origin/master`:
|
|
555
|
+
the integration merge subject ends with `into master`, and the user's merge
|
|
556
|
+
request in `external-landing` mode targets `master`.
|
|
557
|
+
|
|
558
|
+
The record does not change after initialization. Bind, integrate, validate,
|
|
559
|
+
promotion, and the git guard read it. When the forge default no longer agrees
|
|
560
|
+
with the record, integration stops with `remote default must be <recorded>`.
|
|
561
|
+
A lookahead `next/STATE.md` must carry the same `default_branch` as the active
|
|
562
|
+
state, or promotion stops. Names in the reserved `gsd-path/`,
|
|
563
|
+
`gsd-path-integrate/`, and `gsd-path-task/` namespaces, and names with `#` or
|
|
564
|
+
a quote character, cannot be recorded.
|
|
565
|
+
|
|
566
|
+
In a multi-repo project, each repository has its own record. The coordinator
|
|
567
|
+
records its default branch in `STATE.md`, as above. `members.py add` reads the
|
|
568
|
+
local `refs/remotes/origin/HEAD` of the member one time and records the name
|
|
569
|
+
in the member's section of `.project/MEMBERS.md`, as `Default branch: <name>`;
|
|
570
|
+
an unset `origin/HEAD` records `main`. Run `git remote set-head origin --auto`
|
|
571
|
+
in the member before you add it. A section without the field means `main`, so
|
|
572
|
+
an older `MEMBERS.md` does not change. The members of one project can have
|
|
573
|
+
different default branches, and the coordinator default can differ from them.
|
|
574
|
+
The same name rules apply.
|
|
575
|
+
|
|
576
|
+
Build start, the task brief check, undo, the member pre-push guard, and member
|
|
577
|
+
close read the member record. The member bound branch starts at
|
|
578
|
+
`origin/<recorded>`, the member merge subject ends with `into <recorded>`, and
|
|
579
|
+
a member pull request targets `<recorded>`. When the remote default of the
|
|
580
|
+
member no longer agrees with the record, `members.py validate` and member
|
|
581
|
+
close stop with `remote default must be <recorded>`.
|
|
582
|
+
|
|
583
|
+
Not supported: a new repository that Path creates uses `main`. This includes
|
|
584
|
+
`members.py add --create`, which stops when the new repository has another
|
|
585
|
+
default branch.
|
|
586
|
+
|
|
522
587
|
### Integration
|
|
523
588
|
|
|
524
589
|
After the postcommit validator passes, ship performs integration — the only
|
|
@@ -527,14 +592,15 @@ receives merges or back-merges, and the default checkout is never entered;
|
|
|
527
592
|
the local default branch ref may lag origin, which is harmless because
|
|
528
593
|
binding resolves remote SHAs. `STATE.integration_default` stores the project
|
|
529
594
|
choice and `STATE.integration` stores the current milestone choice. Both are
|
|
530
|
-
`direct` or `
|
|
595
|
+
`direct`, `pull-request`, or `external-landing`; they may change only before build, and the current
|
|
531
596
|
milestone resets to the project default at the next handoff. Older v2 state
|
|
532
597
|
without these fields means `direct`. `STATE.integration_source` is `default` or
|
|
533
598
|
`milestone` so an explicit override remains distinct when its value happens to
|
|
534
599
|
match the project default.
|
|
535
600
|
|
|
536
601
|
Ship fetches origin, refreshes `origin/HEAD`, mirrors published milestone tags,
|
|
537
|
-
and requires the remote default to be
|
|
602
|
+
and requires the remote default to be the recorded
|
|
603
|
+
[default branch](#default-branch). It then follows the locked mode:
|
|
538
604
|
|
|
539
605
|
- `direct` creates a temporary named worktree (`gsd-path-integrate/M00N`) at
|
|
540
606
|
the fetched remote-default SHA and merges the ship commit with `--no-ff`
|
|
@@ -550,6 +616,16 @@ and requires the remote default to be `main`. It then follows the locked mode:
|
|
|
550
616
|
never enables auto-merge or merges the PR. After validation, Path creates the
|
|
551
617
|
annotated milestone tag. The [ship contract](skills/gsd-path-ship/SKILL.md)
|
|
552
618
|
owns the candidate, provenance, topology, publication, and recovery rules.
|
|
619
|
+
- `external-landing` is for an origin that is not GitHub.com, such as GitLab,
|
|
620
|
+
Gitea, or GitHub Enterprise Server, where a merge request is the only route
|
|
621
|
+
to `main`. It needs no forge CLI. Path publishes the bound branch at the
|
|
622
|
+
exact ship commit, does not push `main`, and returns `awaiting-merge` with
|
|
623
|
+
the required merge subject and body. You open the merge request in your
|
|
624
|
+
forge (for example with `glab`), let your pipeline run, and merge it with a
|
|
625
|
+
merge commit that has exactly that message. Do not squash, rebase, or
|
|
626
|
+
fast-forward. Your forge may delete the source branch after the merge. On
|
|
627
|
+
the next ship invocation, Path validates the two-parent merge on `main` and
|
|
628
|
+
creates the annotated milestone tag.
|
|
553
629
|
|
|
554
630
|
Ship leaves the primary worktree and `STATE.branch` on the shipped local
|
|
555
631
|
`gsd-path/M00N`; the router owns the later branch handoff. NNN always comes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengsd/gsd-path",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Disk-backed AI agent pipeline. Docs: DOCS.md (start here), QUICK.md, FULL.md, UPDATE.md",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -77,7 +77,9 @@
|
|
|
77
77
|
"skills/",
|
|
78
78
|
"platforms/",
|
|
79
79
|
"AGENTS.md",
|
|
80
|
-
"WORKFLOW.md"
|
|
80
|
+
"WORKFLOW.md",
|
|
81
|
+
"!**/__pycache__/**",
|
|
82
|
+
"!**/*.pyc"
|
|
81
83
|
],
|
|
82
84
|
"engines": {
|
|
83
85
|
"node": ">=18.17"
|
|
@@ -85,6 +87,7 @@
|
|
|
85
87
|
"scripts": {
|
|
86
88
|
"install:ci": "npm ci",
|
|
87
89
|
"check:prereqs": "node scripts/dev/check-prereqs.mjs",
|
|
90
|
+
"check:locks": "node scripts/dev/py.mjs scripts/check_lock_usage.py",
|
|
88
91
|
"test": "node tests/run-node-tests.mjs",
|
|
89
92
|
"test:smoke": "npm test",
|
|
90
93
|
"test:integration": "npm run test:python",
|