@opengsd/gsd-path 1.3.1 → 1.5.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 +2 -207
- package/CHANGELOG.md +331 -69
- package/DOCS.md +25 -9
- package/FULL.md +12 -5
- package/GUIDE.md +1 -1
- package/HOOKS.md +104 -14
- package/QUICK.md +5 -2
- package/README.md +131 -111
- package/RUNTIME.md +2 -2
- package/UPDATE.md +61 -11
- package/WORKFLOW.md +44 -7
- package/package.json +13 -9
- package/platforms/shared-agents/dispatch.md +13 -0
- package/scripts/_common.py +619 -18
- package/scripts/archive_milestone.py +160 -86
- package/scripts/bootstrap_repository.py +8 -5
- package/scripts/build_recovery.py +100 -32
- package/scripts/build_state.py +143 -24
- package/scripts/check_docs_audit.py +91 -7
- package/scripts/check_handoffs.py +662 -50
- package/scripts/check_task_briefs.py +338 -30
- package/scripts/check_update.py +2 -2
- package/scripts/core_hook_gate.py +10 -1
- package/scripts/core_hook_settings.py +11 -4
- package/scripts/detect_project.py +587 -32
- package/scripts/discussion_records.py +19 -13
- package/scripts/discussion_validate.py +152 -50
- package/scripts/dispatch_driver.py +501 -46
- package/scripts/git_guard.py +118 -31
- package/scripts/guard_hook.py +1567 -194
- package/scripts/install.mjs +77 -46
- package/scripts/install.py +611 -50
- package/scripts/integration.py +580 -25
- package/scripts/isolation.py +1438 -57
- package/scripts/lean_verification.py +99 -19
- package/scripts/loop_run.py +31 -29
- package/scripts/members.py +706 -0
- package/scripts/migrate_core.py +2 -2
- package/scripts/path_config.py +5 -5
- package/scripts/pipeline_diagnose.py +82 -31
- package/scripts/pipeline_git.py +124 -34
- package/scripts/pipeline_state.py +287 -87
- package/scripts/pipeline_undo.py +218 -30
- package/scripts/promote_lookahead.py +1 -1
- package/scripts/review_panel.py +1 -1
- package/scripts/runtime_store.py +55 -11
- package/scripts/skill-resources.json +37 -5
- package/scripts/state_checkpoint.py +135 -44
- package/scripts/state_promote.py +2 -0
- package/scripts/status_runtime.py +58 -10
- package/scripts/sync_skill_resources.py +8 -7
- package/scripts/task_context.py +12 -3
- package/scripts/token_budget.py +12 -8
- package/scripts/wizard.mjs +1 -0
- package/scripts/workflow_run.py +107 -30
- package/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path/BUILD.md +7 -1
- package/skills/gsd-path/DECIDE.md +11 -4
- package/skills/gsd-path/DEFINE.md +36 -4
- package/skills/gsd-path/DOCS-AUDIT.md +6 -4
- package/skills/gsd-path/INSPECT.md +5 -4
- package/skills/gsd-path/PLAN.md +18 -4
- package/skills/gsd-path/RESEARCH.md +13 -1
- package/skills/gsd-path/ROADMAP.md +2 -1
- package/skills/gsd-path/SHIP.md +33 -11
- package/skills/gsd-path/SKILL.md +45 -1
- package/skills/gsd-path/references/build-native.md +63 -15
- package/skills/gsd-path/references/codebase-mapper.md +2 -1
- package/skills/gsd-path/references/dispatch.md +13 -0
- package/skills/gsd-path/references/docs-auditor.md +7 -1
- package/skills/gsd-path/references/operating-rules.md +214 -0
- package/skills/gsd-path/references/planner.md +22 -4
- package/skills/gsd-path/references/reviewer-final.md +20 -2
- package/skills/gsd-path/references/reviewer-wave.md +18 -5
- package/skills/gsd-path/references/reviewer.md +3 -1
- package/skills/gsd-path/references/spec-probes.md +150 -0
- package/skills/gsd-path/scripts/_common.py +619 -18
- package/skills/gsd-path/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path/scripts/bootstrap_repository.py +8 -5
- package/skills/gsd-path/scripts/build_recovery.py +100 -32
- package/skills/gsd-path/scripts/build_state.py +143 -24
- package/skills/gsd-path/scripts/check_docs_audit.py +91 -7
- package/skills/gsd-path/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path/scripts/check_update.py +2 -2
- package/skills/gsd-path/scripts/detect_project.py +587 -32
- package/skills/gsd-path/scripts/discussion_records.py +19 -13
- package/skills/gsd-path/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path/scripts/dispatch_driver.py +501 -46
- package/skills/gsd-path/scripts/git_guard.py +118 -31
- package/skills/gsd-path/scripts/integration.py +580 -25
- package/skills/gsd-path/scripts/isolation.py +1438 -57
- package/skills/gsd-path/scripts/lean_verification.py +99 -19
- package/skills/gsd-path/scripts/loop_run.py +31 -29
- package/skills/gsd-path/scripts/members.py +706 -0
- package/skills/gsd-path/scripts/path_config.py +5 -5
- package/skills/gsd-path/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path/scripts/review_panel.py +1 -1
- package/skills/gsd-path/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path/scripts/state_promote.py +2 -0
- package/skills/gsd-path/scripts/status_runtime.py +58 -10
- package/skills/gsd-path/scripts/task_context.py +12 -3
- package/skills/gsd-path/scripts/token_budget.py +12 -8
- package/skills/gsd-path/scripts/workflow_run.py +107 -30
- package/skills/gsd-path/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path/templates/codebase.md +1 -1
- package/skills/gsd-path/templates/docs-audit.md +6 -2
- package/skills/gsd-path/templates/final-review.md +16 -4
- package/skills/gsd-path/templates/gap-review.md +2 -1
- 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 +1 -1
- package/skills/gsd-path/templates/task.md +1 -0
- package/skills/gsd-path/templates/wave-review.md +16 -4
- package/skills/gsd-path-build/SKILL.md +7 -1
- package/skills/gsd-path-build/references/build-native.md +63 -15
- package/skills/gsd-path-build/references/dispatch.md +13 -0
- package/skills/gsd-path-build/references/operating-rules.md +214 -0
- package/skills/gsd-path-build/references/reviewer-final.md +20 -2
- package/skills/gsd-path-build/references/reviewer-wave.md +18 -5
- package/skills/gsd-path-build/references/reviewer.md +3 -1
- package/skills/gsd-path-build/references/spec-probes.md +150 -0
- package/skills/gsd-path-build/scripts/_common.py +619 -18
- package/skills/gsd-path-build/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-build/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-build/scripts/build_state.py +143 -24
- package/skills/gsd-path-build/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-build/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-build/scripts/detect_project.py +587 -32
- package/skills/gsd-path-build/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-build/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-build/scripts/dispatch_driver.py +501 -46
- package/skills/gsd-path-build/scripts/integration.py +580 -25
- package/skills/gsd-path-build/scripts/isolation.py +1438 -57
- package/skills/gsd-path-build/scripts/loop_run.py +31 -29
- package/skills/gsd-path-build/scripts/members.py +706 -0
- package/skills/gsd-path-build/scripts/path_config.py +5 -5
- package/skills/gsd-path-build/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-build/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-build/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-build/scripts/review_panel.py +1 -1
- package/skills/gsd-path-build/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-build/scripts/state_promote.py +2 -0
- package/skills/gsd-path-build/scripts/task_context.py +12 -3
- package/skills/gsd-path-build/scripts/token_budget.py +12 -8
- package/skills/gsd-path-build/scripts/workflow_run.py +107 -30
- package/skills/gsd-path-build/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-build/templates/task.md +1 -0
- package/skills/gsd-path-build/templates/wave-review.md +16 -4
- package/skills/gsd-path-decide/SKILL.md +11 -4
- package/skills/gsd-path-decide/references/dispatch.md +13 -0
- package/skills/gsd-path-decide/references/operating-rules.md +214 -0
- package/skills/gsd-path-decide/scripts/_common.py +619 -18
- package/skills/gsd-path-decide/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-decide/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-decide/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-decide/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-decide/scripts/detect_project.py +587 -32
- package/skills/gsd-path-decide/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-decide/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-decide/scripts/integration.py +580 -25
- package/skills/gsd-path-decide/scripts/isolation.py +1438 -57
- package/skills/gsd-path-decide/scripts/loop_run.py +31 -29
- package/skills/gsd-path-decide/scripts/members.py +706 -0
- package/skills/gsd-path-decide/scripts/path_config.py +5 -5
- package/skills/gsd-path-decide/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-decide/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-decide/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-decide/scripts/review_panel.py +1 -1
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-decide/scripts/state_promote.py +2 -0
- package/skills/gsd-path-decide/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-define/SKILL.md +36 -4
- package/skills/gsd-path-define/references/operating-rules.md +214 -0
- package/skills/gsd-path-define/references/spec-probes.md +150 -0
- package/skills/gsd-path-define/scripts/_common.py +619 -18
- package/skills/gsd-path-define/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-define/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-define/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-define/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-define/scripts/detect_project.py +587 -32
- package/skills/gsd-path-define/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-define/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-define/scripts/integration.py +580 -25
- package/skills/gsd-path-define/scripts/isolation.py +1438 -57
- package/skills/gsd-path-define/scripts/loop_run.py +31 -29
- package/skills/gsd-path-define/scripts/members.py +706 -0
- package/skills/gsd-path-define/scripts/path_config.py +5 -5
- package/skills/gsd-path-define/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-define/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-define/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-define/scripts/review_panel.py +1 -1
- package/skills/gsd-path-define/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-define/scripts/state_promote.py +2 -0
- package/skills/gsd-path-define/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-define/templates/intent.md +30 -0
- package/skills/gsd-path-define/templates/state.md +1 -1
- package/skills/gsd-path-discuss/SKILL.md +2 -1
- package/skills/gsd-path-discuss/references/operating-rules.md +214 -0
- package/skills/gsd-path-discuss/scripts/_common.py +619 -18
- package/skills/gsd-path-discuss/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-discuss/scripts/loop_run.py +31 -29
- package/skills/gsd-path-discuss/scripts/path_config.py +5 -5
- package/skills/gsd-path-discuss/scripts/review_panel.py +1 -1
- package/skills/gsd-path-discuss/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-docs-audit/SKILL.md +6 -4
- package/skills/gsd-path-docs-audit/references/dispatch.md +13 -0
- package/skills/gsd-path-docs-audit/references/docs-auditor.md +7 -1
- package/skills/gsd-path-docs-audit/references/operating-rules.md +214 -0
- package/skills/gsd-path-docs-audit/scripts/_common.py +619 -18
- package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-docs-audit/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +91 -7
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-docs-audit/scripts/detect_project.py +587 -32
- package/skills/gsd-path-docs-audit/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-docs-audit/scripts/integration.py +580 -25
- package/skills/gsd-path-docs-audit/scripts/isolation.py +1438 -57
- package/skills/gsd-path-docs-audit/scripts/loop_run.py +31 -29
- package/skills/gsd-path-docs-audit/scripts/members.py +706 -0
- package/skills/gsd-path-docs-audit/scripts/path_config.py +5 -5
- package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-docs-audit/scripts/review_panel.py +1 -1
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +2 -0
- package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-docs-audit/templates/docs-audit.md +6 -2
- package/skills/gsd-path-forensics/SKILL.md +2 -1
- package/skills/gsd-path-forensics/references/operating-rules.md +214 -0
- package/skills/gsd-path-forensics/scripts/_common.py +619 -18
- package/skills/gsd-path-forensics/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-forensics/scripts/loop_run.py +31 -29
- package/skills/gsd-path-forensics/scripts/path_config.py +5 -5
- package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +82 -31
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +218 -30
- package/skills/gsd-path-forensics/scripts/review_panel.py +1 -1
- package/skills/gsd-path-forensics/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-inspect/SKILL.md +5 -4
- package/skills/gsd-path-inspect/references/codebase-mapper.md +2 -1
- package/skills/gsd-path-inspect/references/dispatch.md +13 -0
- package/skills/gsd-path-inspect/references/docs-auditor.md +7 -1
- package/skills/gsd-path-inspect/references/operating-rules.md +214 -0
- package/skills/gsd-path-inspect/scripts/_common.py +619 -18
- package/skills/gsd-path-inspect/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-inspect/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +91 -7
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-inspect/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-inspect/scripts/detect_project.py +587 -32
- package/skills/gsd-path-inspect/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-inspect/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-inspect/scripts/integration.py +580 -25
- package/skills/gsd-path-inspect/scripts/isolation.py +1438 -57
- package/skills/gsd-path-inspect/scripts/loop_run.py +31 -29
- package/skills/gsd-path-inspect/scripts/members.py +706 -0
- package/skills/gsd-path-inspect/scripts/path_config.py +5 -5
- package/skills/gsd-path-inspect/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-inspect/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-inspect/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-inspect/scripts/review_panel.py +1 -1
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-inspect/scripts/state_promote.py +2 -0
- package/skills/gsd-path-inspect/scripts/workflow_run.py +107 -30
- package/skills/gsd-path-inspect/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-inspect/templates/codebase.md +1 -1
- package/skills/gsd-path-inspect/templates/docs-audit.md +6 -2
- package/skills/gsd-path-inspect/templates/state.md +1 -1
- package/skills/gsd-path-loop/SKILL.md +2 -1
- package/skills/gsd-path-loop/references/operating-rules.md +214 -0
- package/skills/gsd-path-loop/scripts/_common.py +619 -18
- package/skills/gsd-path-loop/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-loop/scripts/loop_run.py +31 -29
- package/skills/gsd-path-loop/scripts/path_config.py +5 -5
- package/skills/gsd-path-loop/scripts/review_panel.py +1 -1
- package/skills/gsd-path-loop/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-migrate/SKILL.md +2 -1
- package/skills/gsd-path-migrate/references/operating-rules.md +214 -0
- package/skills/gsd-path-migrate/scripts/_common.py +619 -18
- package/skills/gsd-path-migrate/scripts/core_hook_gate.py +10 -1
- package/skills/gsd-path-migrate/scripts/core_hook_settings.py +11 -4
- package/skills/gsd-path-migrate/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-migrate/scripts/loop_run.py +31 -29
- package/skills/gsd-path-migrate/scripts/migrate_core.py +2 -2
- package/skills/gsd-path-migrate/scripts/path_config.py +5 -5
- package/skills/gsd-path-migrate/scripts/review_panel.py +1 -1
- package/skills/gsd-path-plan/SKILL.md +18 -4
- package/skills/gsd-path-plan/references/dispatch.md +13 -0
- package/skills/gsd-path-plan/references/operating-rules.md +214 -0
- package/skills/gsd-path-plan/references/planner.md +22 -4
- package/skills/gsd-path-plan/references/spec-probes.md +150 -0
- package/skills/gsd-path-plan/scripts/_common.py +619 -18
- package/skills/gsd-path-plan/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-plan/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-plan/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-plan/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-plan/scripts/detect_project.py +587 -32
- package/skills/gsd-path-plan/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-plan/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-plan/scripts/integration.py +580 -25
- package/skills/gsd-path-plan/scripts/isolation.py +1438 -57
- package/skills/gsd-path-plan/scripts/loop_run.py +31 -29
- package/skills/gsd-path-plan/scripts/members.py +706 -0
- package/skills/gsd-path-plan/scripts/path_config.py +5 -5
- package/skills/gsd-path-plan/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-plan/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-plan/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-plan/scripts/review_panel.py +1 -1
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-plan/scripts/state_promote.py +2 -0
- package/skills/gsd-path-plan/scripts/workflow_run.py +107 -30
- package/skills/gsd-path-plan/scripts/worktree_paths.py +72 -10
- 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 +13 -1
- package/skills/gsd-path-research/references/dispatch.md +13 -0
- package/skills/gsd-path-research/references/operating-rules.md +214 -0
- package/skills/gsd-path-research/scripts/_common.py +619 -18
- package/skills/gsd-path-research/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-research/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-research/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-research/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-research/scripts/detect_project.py +587 -32
- package/skills/gsd-path-research/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-research/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-research/scripts/integration.py +580 -25
- package/skills/gsd-path-research/scripts/isolation.py +1438 -57
- package/skills/gsd-path-research/scripts/loop_run.py +31 -29
- package/skills/gsd-path-research/scripts/members.py +706 -0
- package/skills/gsd-path-research/scripts/path_config.py +5 -5
- package/skills/gsd-path-research/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-research/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-research/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-research/scripts/review_panel.py +1 -1
- package/skills/gsd-path-research/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-research/scripts/state_promote.py +2 -0
- package/skills/gsd-path-research/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-research/templates/research-handoff.md +14 -3
- package/skills/gsd-path-roadmap/SKILL.md +2 -1
- package/skills/gsd-path-roadmap/references/dispatch.md +13 -0
- package/skills/gsd-path-roadmap/references/operating-rules.md +214 -0
- package/skills/gsd-path-roadmap/scripts/_common.py +619 -18
- package/skills/gsd-path-roadmap/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-roadmap/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-roadmap/scripts/detect_project.py +587 -32
- package/skills/gsd-path-roadmap/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-roadmap/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-roadmap/scripts/integration.py +580 -25
- package/skills/gsd-path-roadmap/scripts/isolation.py +1438 -57
- package/skills/gsd-path-roadmap/scripts/loop_run.py +31 -29
- package/skills/gsd-path-roadmap/scripts/members.py +706 -0
- package/skills/gsd-path-roadmap/scripts/path_config.py +5 -5
- package/skills/gsd-path-roadmap/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-roadmap/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-roadmap/scripts/review_panel.py +1 -1
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-roadmap/scripts/state_promote.py +2 -0
- package/skills/gsd-path-roadmap/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-ship/SKILL.md +33 -11
- package/skills/gsd-path-ship/references/dispatch.md +13 -0
- package/skills/gsd-path-ship/references/operating-rules.md +214 -0
- package/skills/gsd-path-ship/references/reviewer-final.md +20 -2
- package/skills/gsd-path-ship/references/reviewer-wave.md +18 -5
- package/skills/gsd-path-ship/references/reviewer.md +3 -1
- package/skills/gsd-path-ship/references/spec-probes.md +150 -0
- package/skills/gsd-path-ship/scripts/_common.py +619 -18
- package/skills/gsd-path-ship/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-ship/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-ship/scripts/build_state.py +143 -24
- package/skills/gsd-path-ship/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-ship/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-ship/scripts/detect_project.py +587 -32
- package/skills/gsd-path-ship/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-ship/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-ship/scripts/integration.py +580 -25
- package/skills/gsd-path-ship/scripts/isolation.py +1438 -57
- package/skills/gsd-path-ship/scripts/lean_verification.py +99 -19
- package/skills/gsd-path-ship/scripts/loop_run.py +31 -29
- package/skills/gsd-path-ship/scripts/members.py +706 -0
- package/skills/gsd-path-ship/scripts/path_config.py +5 -5
- package/skills/gsd-path-ship/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-ship/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-ship/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-ship/scripts/review_panel.py +1 -1
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-ship/scripts/state_promote.py +2 -0
- package/skills/gsd-path-ship/scripts/workflow_run.py +107 -30
- package/skills/gsd-path-ship/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-ship/templates/final-review.md +16 -4
- package/skills/gsd-path-ship/templates/gap-review.md +2 -1
- package/skills/gsd-path-ship/templates/patch-findings.md +3 -3
- package/skills/gsd-path-ship/templates/wave-review.md +16 -4
- package/skills/gsd-path-undo/SKILL.md +2 -1
- package/skills/gsd-path-undo/references/operating-rules.md +214 -0
- package/skills/gsd-path-undo/scripts/_common.py +619 -18
- package/skills/gsd-path-undo/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-undo/scripts/loop_run.py +31 -29
- package/skills/gsd-path-undo/scripts/path_config.py +5 -5
- package/skills/gsd-path-undo/scripts/pipeline_undo.py +218 -30
- package/skills/gsd-path-undo/scripts/review_panel.py +1 -1
- package/skills/gsd-path-undo/scripts/worktree_paths.py +72 -10
- package/skills/path/BUILD.md +7 -1
- package/skills/path/DECIDE.md +11 -4
- package/skills/path/DEFINE.md +36 -4
- package/skills/path/DOCS-AUDIT.md +6 -4
- package/skills/path/INSPECT.md +5 -4
- package/skills/path/PLAN.md +18 -4
- package/skills/path/RESEARCH.md +13 -1
- package/skills/path/ROADMAP.md +2 -1
- package/skills/path/SHIP.md +33 -11
- package/skills/path/SKILL.md +45 -1
- package/skills/path/references/build-native.md +63 -15
- package/skills/path/references/codebase-mapper.md +2 -1
- package/skills/path/references/dispatch.md +13 -0
- package/skills/path/references/docs-auditor.md +7 -1
- package/skills/path/references/operating-rules.md +214 -0
- package/skills/path/references/planner.md +22 -4
- package/skills/path/references/reviewer-final.md +20 -2
- package/skills/path/references/reviewer-wave.md +18 -5
- package/skills/path/references/reviewer.md +3 -1
- package/skills/path/references/spec-probes.md +150 -0
- package/skills/path/scripts/_common.py +619 -18
- package/skills/path/scripts/archive_milestone.py +160 -86
- package/skills/path/scripts/bootstrap_repository.py +8 -5
- package/skills/path/scripts/build_recovery.py +100 -32
- package/skills/path/scripts/build_state.py +143 -24
- package/skills/path/scripts/check_docs_audit.py +91 -7
- package/skills/path/scripts/check_handoffs.py +662 -50
- package/skills/path/scripts/check_task_briefs.py +338 -30
- package/skills/path/scripts/check_update.py +2 -2
- package/skills/path/scripts/detect_project.py +587 -32
- package/skills/path/scripts/discussion_records.py +19 -13
- package/skills/path/scripts/discussion_validate.py +152 -50
- package/skills/path/scripts/dispatch_driver.py +501 -46
- package/skills/path/scripts/git_guard.py +118 -31
- package/skills/path/scripts/integration.py +580 -25
- package/skills/path/scripts/isolation.py +1438 -57
- package/skills/path/scripts/lean_verification.py +99 -19
- package/skills/path/scripts/loop_run.py +31 -29
- package/skills/path/scripts/members.py +706 -0
- package/skills/path/scripts/path_config.py +5 -5
- package/skills/path/scripts/pipeline_git.py +124 -34
- package/skills/path/scripts/pipeline_state.py +287 -87
- package/skills/path/scripts/promote_lookahead.py +1 -1
- package/skills/path/scripts/review_panel.py +1 -1
- package/skills/path/scripts/state_checkpoint.py +135 -44
- package/skills/path/scripts/state_promote.py +2 -0
- package/skills/path/scripts/status_runtime.py +58 -10
- package/skills/path/scripts/task_context.py +12 -3
- package/skills/path/scripts/token_budget.py +12 -8
- package/skills/path/scripts/workflow_run.py +107 -30
- package/skills/path/scripts/worktree_paths.py +72 -10
- package/skills/path/templates/codebase.md +1 -1
- package/skills/path/templates/docs-audit.md +6 -2
- package/skills/path/templates/final-review.md +16 -4
- package/skills/path/templates/gap-review.md +2 -1
- 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 +1 -1
- package/skills/path/templates/task.md +1 -0
- package/skills/path/templates/wave-review.md +16 -4
- 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/skills/gsd-path/PLAN.md
CHANGED
|
@@ -3,7 +3,8 @@ name: gsd-path-plan
|
|
|
3
3
|
description: Create and validate dependency-ordered GSD Path build waves and complete task contracts. Use only when the user explicitly invokes $gsd-path-plan or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
7
|
+
and [operating rules](references/operating-rules.md).
|
|
7
8
|
|
|
8
9
|
# GSD Path Planning Phase
|
|
9
10
|
|
|
@@ -114,9 +115,10 @@ as stated in Lookahead mode.
|
|
|
114
115
|
In patch mode, tasks already `done` keep their landed metadata; only
|
|
115
116
|
the appended patch tasks must start clean.
|
|
116
117
|
- Require every dependency id to exist, forbid later-wave dependencies,
|
|
117
|
-
detect cycles, and forbid file overlap between planned tasks
|
|
118
|
-
wave. Same-wave
|
|
119
|
-
|
|
118
|
+
detect cycles, and forbid unordered file overlap between planned tasks
|
|
119
|
+
in the same wave. Same-wave tasks may share files only when one
|
|
120
|
+
transitively depends on the other through `deps`; the build executes
|
|
121
|
+
them in dependency layers.
|
|
120
122
|
- Reject a declared dependency that carries neither data nor a prerequisite
|
|
121
123
|
effect. A `deps` edge is valid only when the dependent consumes a symbol,
|
|
122
124
|
signature, schema, endpoint, file format, or path named in that
|
|
@@ -156,6 +158,13 @@ as stated in Lookahead mode.
|
|
|
156
158
|
command's output — not an internal unit test.
|
|
157
159
|
Require the surface to land in the same wave as the capability behind
|
|
158
160
|
it, never in a later polish wave.
|
|
161
|
+
- When INTENT.md has `## Edge coverage`, require a PLAN.md
|
|
162
|
+
`## Held-out checks` row for every `held-out` edge and for no other
|
|
163
|
+
edge. The named test is in that task's `files`, the task's Verify runs
|
|
164
|
+
it, and the task's Acceptance criteria state the edge id and its ruling
|
|
165
|
+
(see [spec-reach probes](references/spec-probes.md)). An edge or
|
|
166
|
+
prohibition ruled `criterion SCn` needs no extra row; it is covered as
|
|
167
|
+
SCn. Put each `judgment` prohibition in its owning task's Approach.
|
|
159
168
|
- Prove every intent constraint and synthesis decision is covered, that no
|
|
160
169
|
scope-out veto appears in a task, and that `Project verify` is a real,
|
|
161
170
|
non-placeholder command in PLAN.md. Every Verify — task and project —
|
|
@@ -226,6 +235,11 @@ as stated in Lookahead mode.
|
|
|
226
235
|
Before asking for approval, require exactly one panel artifact for non-off
|
|
227
236
|
Config: `PLAN-PANEL.md` for `ready`, or `PLAN-PANEL.skipped.json` for
|
|
228
237
|
`skipped`. Off Config requires neither. A mismatch blocks approval.
|
|
238
|
+
When the active router recorded a `plan` pre-approval grant, first run
|
|
239
|
+
`python3 <absolute workflow_run.py> preauthorize --repo <absolute root>
|
|
240
|
+
--kind plan`. On `complete`, present Outcome and Review, say the owner's
|
|
241
|
+
pre-approval passed this gate, and continue at step 6 as approved. On
|
|
242
|
+
`blocked`, ask as below.
|
|
229
243
|
Ask one explicit next question: whether to approve this plan and start the
|
|
230
244
|
build. When PLAN-PANEL.md has `Actionable: 0` or the panel did not run,
|
|
231
245
|
list `Approve and start build (recommended)` first, with `Request changes`
|
|
@@ -3,7 +3,8 @@ name: gsd-path-research
|
|
|
3
3
|
description: Dispatch parallel researchers and collect cited GSD Path evidence about domain, stack, pitfalls, and comparable products. Use only when the user explicitly invokes $gsd-path-research or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
7
|
+
and [operating rules](references/operating-rules.md).
|
|
7
8
|
|
|
8
9
|
# GSD Path Research Phase
|
|
9
10
|
|
|
@@ -83,6 +84,17 @@ settled brownfield input.
|
|
|
83
84
|
template before dispatch. Record every standard dimension exactly once as
|
|
84
85
|
`dispatched` or `skipped` with a reason, and assign every research question
|
|
85
86
|
to at least one dispatched dimension. No question may remain unassigned.
|
|
87
|
+
Copy each question to exactly one `Question assignments` row. Assign one or
|
|
88
|
+
more dispatched dimension slugs there, each in its own code span and
|
|
89
|
+
separated by commas, as in:
|
|
90
|
+
|
|
91
|
+
```md
|
|
92
|
+
- `[RESEARCH] Which approach is viable?` → `stack`, `pitfalls`
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
List a dimension only once per row. Every dispatched dimension must own at
|
|
96
|
+
least one question, and its evidence file must answer every question
|
|
97
|
+
assigned to it. Use `- none` only when there are no research questions.
|
|
86
98
|
2. Decide which standard dimensions have work: dispatch a dimension only when
|
|
87
99
|
it has at least one assigned `RESEARCH` question from INTENT.md or
|
|
88
100
|
CHARTER.md. Unsettled choices and risks need that source question before
|
|
@@ -3,7 +3,8 @@ name: gsd-path-roadmap
|
|
|
3
3
|
description: Slice an approved GSD Path program charter into a dependency-ordered roadmap of independently shippable milestones. Use only when the user explicitly invokes $gsd-path-roadmap or an active $gsd-path router explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
7
|
+
and [operating rules](references/operating-rules.md).
|
|
7
8
|
|
|
8
9
|
# GSD Path Roadmap Phase
|
|
9
10
|
|
package/skills/gsd-path/SHIP.md
CHANGED
|
@@ -3,7 +3,8 @@ name: gsd-path-ship
|
|
|
3
3
|
description: Verify a completed GSD Path milestone, manage evidence-backed patch decisions, request final shipping approval, and archive the validated result. Use only when the user explicitly invokes $gsd-path-ship or an active $gsd-path router or build orchestrator explicitly routes to this phase.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
7
|
+
and [operating rules](references/operating-rules.md).
|
|
7
8
|
|
|
8
9
|
# GSD Path Ship Phase
|
|
9
10
|
|
|
@@ -82,10 +83,13 @@ so the position is unchanged. Then:
|
|
|
82
83
|
This owns pending-discussion and landing checks, project Verify isolation,
|
|
83
84
|
execution, output recording, collection, cleanup, and final-review reuse.
|
|
84
85
|
Keep its JSON receipt; do not reconstruct those operations in shell calls.
|
|
85
|
-
|
|
86
|
-
`final-gap-1.md` is the generated view
|
|
87
|
-
|
|
88
|
-
and
|
|
86
|
+
For a single-repo milestone, exact stdout/stderr live once in
|
|
87
|
+
`.project/build/verify-ledger.jsonl`; `final-gap-1.md` is the generated view
|
|
88
|
+
referencing that entry. For a member milestone, the gap records each member
|
|
89
|
+
head and holds the exact output; there is no reusable ledger entry.
|
|
90
|
+
Single-repo re-entry at the same command and commit reuses the execution,
|
|
91
|
+
including a failed one, and finishes interrupted collection without running
|
|
92
|
+
the command again.
|
|
89
93
|
Missing legacy output requires evidence reconciliation, not a blind rerun.
|
|
90
94
|
Any non-zero result stops this step; preserve its stderr and diagnose through
|
|
91
95
|
the bundled forensics contract. Do not launch reviewers while project Verify
|
|
@@ -121,9 +125,10 @@ so the position is unchanged. Then:
|
|
|
121
125
|
step 3 or create a fresh sidecar with `isolate-verify --name review-final`
|
|
122
126
|
and dispatch the integration reviewer under logical task name
|
|
123
127
|
`review_final`, assigning only
|
|
124
|
-
`.project/review/FINAL.md`. Its complete brief includes the
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
`.project/review/FINAL.md`. Its complete brief includes the project Verify
|
|
129
|
+
evidence from the ledger or the member milestone's gap output, every
|
|
130
|
+
collected gap verdict so Overall verdict is consistent with them, and
|
|
131
|
+
PLAN.md's `## Surface contract` when INTENT.md
|
|
127
132
|
names surfaces — that reviewer performs each Walkthrough and records the
|
|
128
133
|
surface and what it showed on every criterion the contract lists. Collect FINAL.md and retire its sidecar through the
|
|
129
134
|
same helper flow.
|
|
@@ -154,7 +159,12 @@ so the position is unchanged. Then:
|
|
|
154
159
|
then stop and do not invent a patch finding. A `not-met`,
|
|
155
160
|
`unverifiable`, or blocked gap with valid evidence sets `ship/blocked`,
|
|
156
161
|
writes `.project/review/PATCH-FINDINGS.md` from the patch-findings template,
|
|
157
|
-
|
|
162
|
+
copying the full `Risk: ...` line into each gap finding's Locator, its
|
|
163
|
+
`Found` field into Evidence, and its `Fix direction` field verbatim. For a
|
|
164
|
+
`FINAL.md` finding, use its `SC<n>` id as Locator and copy its `Finding` and
|
|
165
|
+
`Fix direction` fields verbatim. The patch validator requires these source
|
|
166
|
+
field values to match exactly; do not shorten or paraphrase them. Run
|
|
167
|
+
`python3 <absolute check_handoffs.py> patch --repo <absolute repo
|
|
158
168
|
root>`. Present the blocked outcome, link the resolved absolute
|
|
159
169
|
PATCH-FINDINGS.md path, and state that patch planning is next. The manifest
|
|
160
170
|
contains exactly those FINAL.md and gap rows. When routed by an active
|
|
@@ -253,6 +263,14 @@ The persisted `STATE.archive` field is the transaction identity.
|
|
|
253
263
|
at the current HEAD is the only artifact-producing remedy. The archive helper independently binds every FINAL.md
|
|
254
264
|
`SCn` heading id and normalized text to the archived INTENT.md; a renamed or
|
|
255
265
|
easier criterion blocks even if the earlier handoff gate was bypassed.
|
|
266
|
+
For a multi-repo milestone (the archive holds `build/members.json`), run
|
|
267
|
+
`python3 <absolute archive_milestone.py> close-members --repo <root>`
|
|
268
|
+
after preflight passes and before recording shipment. It closes each
|
|
269
|
+
locked member in lock order in that member's integration mode and
|
|
270
|
+
journals each one. When it returns `awaiting-merge`, report the member PR
|
|
271
|
+
link, stop, and rerun the same command after the user merges it; never
|
|
272
|
+
merge a member PR yourself. When it returns `integrated`, keep its `body`
|
|
273
|
+
for the ship commit below.
|
|
256
274
|
5. Only after preflight passes, record shipment through the journaled helper;
|
|
257
275
|
for a program it atomically replaces both ROADMAP.md and STATE.md, setting
|
|
258
276
|
the current entry to `Status: shipped` with the exact `Archive:` pointer:
|
|
@@ -270,10 +288,14 @@ The persisted `STATE.archive` field is the transaction identity.
|
|
|
270
288
|
idempotent after completion. Stage only
|
|
271
289
|
`.project/` paths, inspect the staged path list against the transaction and
|
|
272
290
|
create the ship phase's one commit with exact subject
|
|
273
|
-
`ship: M00N — <milestone-slug
|
|
291
|
+
`ship: M00N — <milestone-slug>`. For a single-repo milestone, its body has
|
|
292
|
+
exactly two consecutive lines,
|
|
274
293
|
`Archive: .project/archive/<NNN>-<slug>` then
|
|
275
294
|
`Reviewed-HEAD: <reviewed SHA>`, with no comment lines or blank line between them.
|
|
276
|
-
|
|
295
|
+
A multi-repo milestone's body is exactly the `body` that `close-members`
|
|
296
|
+
returned: those two lines, then one `Member-Reviewed-HEAD:` and one
|
|
297
|
+
`Member:` line per member.
|
|
298
|
+
Write the subject, a blank line, and the body lines to a message file,
|
|
277
299
|
then use `git commit -F <message-file>`. M00N and NNN come from STATE.archive.
|
|
278
300
|
There is no untracked-project exception and no product or older-archive
|
|
279
301
|
path may enter this commit.
|
package/skills/gsd-path/SKILL.md
CHANGED
|
@@ -3,13 +3,29 @@ name: gsd-path
|
|
|
3
3
|
description: Inspect .project/STATE.md, report GSD Path progress, and run the next valid phase. Use only when the user explicitly invokes $gsd-path. The status argument reports state without advancing; config views or edits settings without advancing. Do not infer this skill from generic project, next-step, or resume requests.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
6
|
+
Before executing project helpers, read [runtime selection](references/runtime-selection.md)
|
|
7
|
+
and [operating rules](references/operating-rules.md).
|
|
7
8
|
|
|
8
9
|
## Configuration mode
|
|
9
10
|
|
|
10
11
|
When the first argument is `config`, read [Path settings](references/config.md)
|
|
11
12
|
and complete that request without initializing state or advancing a phase.
|
|
12
13
|
|
|
14
|
+
## Pre-approval
|
|
15
|
+
|
|
16
|
+
`--pre-approve <kinds>` in the arguments (`intent`, `plan`, or `intent,plan`)
|
|
17
|
+
grants those gates ahead of time for this run, for unattended quick lanes.
|
|
18
|
+
After `.project/STATE.md` exists and before milestone intent approval, run
|
|
19
|
+
`python3 <absolute pipeline_state.py> pre-approve --repo <absolute root>
|
|
20
|
+
--grant <kinds>` once; its Log record is the grant. Write only the kinds the
|
|
21
|
+
owner passed. A refused grant stops the run with the helper's message. Ship,
|
|
22
|
+
roadmap, patch selection, and repository setup are never pre-approved. At a
|
|
23
|
+
granted gate, the define or plan contract runs `python3 <absolute
|
|
24
|
+
workflow_run.py> preauthorize --repo <absolute root> --kind <kind>` before
|
|
25
|
+
asking: `complete` passes the gate through its normal approval command;
|
|
26
|
+
`blocked` asks the owner as usual. A grant never answers an interview
|
|
27
|
+
question, ruling, or `NEEDS-USER` item.
|
|
28
|
+
|
|
13
29
|
# GSD Path Router
|
|
14
30
|
|
|
15
31
|
Determine the current pipeline phase, report it briefly, and run the next valid
|
|
@@ -188,6 +204,34 @@ The current value resets from the project default at the next milestone.
|
|
|
188
204
|
Both settings lock when build starts. A lookahead STATE inherits the active
|
|
189
205
|
project's `integration_default` and uses it for `integration`.
|
|
190
206
|
|
|
207
|
+
## Member repositories
|
|
208
|
+
|
|
209
|
+
A coordinator project can change other repositories (members) in the same
|
|
210
|
+
milestone; `.project/MEMBERS.md` lists them. Change members only at a
|
|
211
|
+
milestone boundary, never during build or ship. Resolve the bundled
|
|
212
|
+
`scripts/members.py` to an absolute path and use it; never edit MEMBERS.md
|
|
213
|
+
or a member marker by hand.
|
|
214
|
+
|
|
215
|
+
- To add an existing repository, it needs a GitHub.com `origin` whose default
|
|
216
|
+
is `main`, a clean worktree, and no active milestone of its own. Ask for the
|
|
217
|
+
member name, checkout path, and integration (`direct`, `pull-request`, or
|
|
218
|
+
`default`, which follows the milestone's choice), then run
|
|
219
|
+
`python3 <members.py> add --repo <absolute-root> --name <name> --checkout <path> --integration <mode>`.
|
|
220
|
+
- To create a new member repository, present the exact `owner/name`,
|
|
221
|
+
visibility, and checkout path as the **Review** surface and get approval
|
|
222
|
+
first, as for a new GitHub repository. Then run the same command with
|
|
223
|
+
`--create <owner/name> --visibility <visibility>`. It journals the approved
|
|
224
|
+
target before creating anything; rerun the identical command to resume.
|
|
225
|
+
- After adding a member, tell the user to install its guard hooks:
|
|
226
|
+
`npx @opengsd/gsd-path@latest --member-of <absolute-root> --project <member checkout>`.
|
|
227
|
+
- `python3 <members.py> validate --repo <absolute-root>` checks every member;
|
|
228
|
+
`repair` rewrites stale markers; `detect --checkout <path>` reports whether a
|
|
229
|
+
repository is a member and of which coordinator.
|
|
230
|
+
|
|
231
|
+
Build locks the members that tasks name and works in Path-owned member
|
|
232
|
+
branches `gsd-path/<project>-M00N`. Ship runs `close-members` after preflight
|
|
233
|
+
to merge each member in lock order, then ships the coordinator.
|
|
234
|
+
|
|
191
235
|
## Transaction recovery first
|
|
192
236
|
|
|
193
237
|
For a helper failure, use the diagnostic in the sibling bundle:
|
|
@@ -24,6 +24,14 @@ python3 <absolute dispatch_driver.py> round --repo <absolute primary> --wave <N>
|
|
|
24
24
|
[--child-timeout <owner seconds>]
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
+
Use the absolute `dispatch_driver.py` from the active installed
|
|
28
|
+
`gsd-path-build` skill when orchestrating a consuming project's build; that
|
|
29
|
+
copy resolves role briefs and templates from its own skill bundle. The
|
|
30
|
+
repository or npm package also supports the top-level `scripts/dispatch_driver.py`:
|
|
31
|
+
when a default is not beside that script, it resolves from the shipped
|
|
32
|
+
`skills/gsd-path` bundle. Explicit `--role-brief`, `--task-template`, and
|
|
33
|
+
`--template` paths override those defaults and must name existing files.
|
|
34
|
+
|
|
27
35
|
`round` owns the entry transition described in Preconditions and branch
|
|
28
36
|
binding, checkpointed as `build: start milestone`, and sets `build/blocked`
|
|
29
37
|
on a dependency deadlock or a blocked
|
|
@@ -82,9 +90,12 @@ dispatch contract and perform steps 1–5 by hand.
|
|
|
82
90
|
- `recovered`: the task is landed (`land` already stamped `status: done`
|
|
83
91
|
and `base`). Retire a still-present task worktree with `isolation.py
|
|
84
92
|
retire` only when the report shows it present, clean, and on the task
|
|
85
|
-
branch. If
|
|
86
|
-
retirement with `retire --branch
|
|
87
|
-
<commit
|
|
93
|
+
branch. If the checkout directory is absent and `task_branch` remains,
|
|
94
|
+
finish its proven interrupted retirement with `retire --branch
|
|
95
|
+
<task_branch> --force --landed-commit <commit>`. This also clears a stale
|
|
96
|
+
registration at that task's sidecar path after the landing proof passes;
|
|
97
|
+
a locked registration fails without deleting the branch. Both absent is
|
|
98
|
+
valid.
|
|
88
99
|
- `resume`: continue from the returned `base`, `task_branch`, and worktree
|
|
89
100
|
(the primary itself when no task branch exists); when the report shows
|
|
90
101
|
the worktree absent, return the task to `pending` only when ownership is
|
|
@@ -133,6 +144,13 @@ dispatch contract and perform steps 1–5 by hand.
|
|
|
133
144
|
even while unrelated tasks still run, so rerun `ready` after each landing.
|
|
134
145
|
A `NEEDS-ORCHESTRATOR` block stays unselectable until its `Orchestrator
|
|
135
146
|
answer` is recorded in the task Log and the task is back to `pending`.
|
|
147
|
+
An all-done wave whose latest canonical review cycle has any blocked lens
|
|
148
|
+
gates later waves: `ready` selects unfinished later tasks with a `## Review
|
|
149
|
+
findings` section that depend on it, sets `current_wave` to the earliest
|
|
150
|
+
repair wave, and adds `repair_for_wave` with the source wave. When no such
|
|
151
|
+
repair remains, `ready` returns no tasks and adds `blocked_review` (`wave`,
|
|
152
|
+
`cycle`, `waiting_waves`); a later passing canonical review cycle releases
|
|
153
|
+
the waiting waves.
|
|
136
154
|
Its typed errors are the recovery rule:
|
|
137
155
|
- `task-recovery-required`: for each listed failed or blocked task run
|
|
138
156
|
`python3 <absolute build_state.py> reconcile --repo <absolute primary>
|
|
@@ -171,7 +189,17 @@ dispatch contract and perform steps 1–5 by hand.
|
|
|
171
189
|
then create the retry. If retirement was interrupted after removing the
|
|
172
190
|
worktree, rerun the same command; the recorded failed or blocked task and
|
|
173
191
|
its exact base prove the remaining branch before deletion. Create the retry
|
|
174
|
-
from the new clean primary HEAD.
|
|
192
|
+
from the new clean primary HEAD. A member task (`repo: <member>`) stays
|
|
193
|
+
`pending` in the coordinator; its rejected attempt lives in the member
|
|
194
|
+
sidecar. Copy the live copy's Log delta into the coordinator task file,
|
|
195
|
+
checkpoint it, then retire the sidecar with `python3 <absolute isolation.py>
|
|
196
|
+
retire-member-task --repo <absolute primary> --member <member> --task-id
|
|
197
|
+
<id> --task-file <task path> --force`. It refuses until the committed task
|
|
198
|
+
file holds that delta, and a rerun finishes an interrupted retirement. A
|
|
199
|
+
copy that fails the append-only check holds no trusted delta: record your
|
|
200
|
+
own rejection evidence in the coordinator task Log and checkpoint it, as for
|
|
201
|
+
a coordinator diff rejection; retirement then reports `copy_rejected`. The
|
|
202
|
+
next `prepare-task` creates the retry sidecar at the member bound tip. After
|
|
175
203
|
resolving a recoverable `build/blocked` condition, use
|
|
176
204
|
`pipeline_state.py transition` with the blocked state and bound branch as
|
|
177
205
|
expected fields to set `build/active` and log the resolution. Checkpoint it
|
|
@@ -183,19 +211,21 @@ dispatch contract and perform steps 1–5 by hand.
|
|
|
183
211
|
a later round unlocked by fresh landings records the later HEAD — and
|
|
184
212
|
lint every ready task's brief with the bundled
|
|
185
213
|
`scripts/check_task_briefs.py --repo <absolute repo root> --base <recorded
|
|
186
|
-
base>` and re-check Intent coverage with
|
|
214
|
+
base> --project-dir <routed project dir>` and re-check Intent coverage with
|
|
187
215
|
`python3 <absolute check_handoffs.py> plan --repo <absolute repo root>`
|
|
188
216
|
before creating any worktree; a lint or coverage failure is a documented plan
|
|
189
217
|
defect — repair it against INTENT.md and SYNTHESIS.md, then re-establish
|
|
190
218
|
the base. Then isolate each ready task with
|
|
191
219
|
`python3 <absolute workflow_run.py> prepare-task --repo <absolute primary>
|
|
192
220
|
--expected-head <recorded base> --task-id <id> --round-size <N>` where N is the
|
|
193
|
-
number of tasks in this dispatch round.
|
|
194
|
-
worktree and `task_branch: null` — the coder
|
|
221
|
+
number of tasks in this dispatch round. For a coordinator task, serial
|
|
222
|
+
(`N=1`) returns the primary worktree and `task_branch: null` — the coder
|
|
223
|
+
works on the bound branch.
|
|
195
224
|
The runner also creates a named verification sidecar at this clean base
|
|
196
225
|
before dispatch. Retain both helper results in the dispatch evidence.
|
|
197
|
-
|
|
198
|
-
worktree at that base; never a
|
|
226
|
+
For a coordinator task, parallel (`N>=2`) creates a named
|
|
227
|
+
`gsd-path-task/<id>` branch and linked worktree at that base; never a
|
|
228
|
+
detached HEAD. Record dispatch through
|
|
199
229
|
`python3 <absolute isolation.py> activate-task --repo <returned worktree>
|
|
200
230
|
--base <recorded base> --task-id <id> --agent build_<id> --task-file
|
|
201
231
|
<exact selected task-file path> [--task-branch <returned task_branch>]`.
|
|
@@ -207,14 +237,26 @@ dispatch contract and perform steps 1–5 by hand.
|
|
|
207
237
|
round. Do not append a dispatch Log entry: the isolated task later appends
|
|
208
238
|
at that location, and two parallel appends make the cherry-pick ambiguous. Reuse a retained worktree only when
|
|
209
239
|
its recorded base, branch, and task agree exactly.
|
|
240
|
+
A member task (`repo: <member>`) returns `mode: member` from
|
|
241
|
+
`prepare-task`: a member sidecar at the member bound tip, with no
|
|
242
|
+
coordinator verify sidecar. Record its dispatch with `python3 <absolute
|
|
243
|
+
isolation.py> activate-member-task --repo <absolute primary> --member
|
|
244
|
+
<member> --task-id <id> --agent build_<id> --task-file <exact task-file
|
|
245
|
+
path> --base <recorded base>`. It writes the live task copy (returned as
|
|
246
|
+
`copy`) inside the member sidecar; the coordinator task file stays
|
|
247
|
+
unchanged. Brief the coder with the member sidecar root and that live copy
|
|
248
|
+
as its task file, plus the coordinator's INTENT.md. Step 5's `finish` lands
|
|
249
|
+
it in the member and records it in the coordinator.
|
|
210
250
|
|
|
211
251
|
4. **Dispatch the round.** Following the local runtime dispatch contract,
|
|
212
252
|
spawn one implementation-capable child per task with deterministic logical
|
|
213
253
|
task name `build_<task_id>`.
|
|
214
254
|
Its brief contains the absolute isolated-worktree root, coder role, task
|
|
215
|
-
file, task template, and the absolute INTENT.md path in
|
|
255
|
+
file, task template, and the absolute INTENT.md path in the coordinator for
|
|
256
|
+
member tasks or in that worktree for coordinator tasks.
|
|
216
257
|
Generate the coder's intent view with `python3 <absolute task_context.py>
|
|
217
|
-
--repo <absolute
|
|
258
|
+
--repo <absolute coordinator root for member tasks, otherwise isolated-worktree>
|
|
259
|
+
--task <absolute live task copy for member tasks, otherwise isolated task file>` and include
|
|
218
260
|
its output in the brief. The helper preserves all global rules and falls
|
|
219
261
|
back to full intent when projection is ambiguous. Never summarize it by hand.
|
|
220
262
|
Add no hidden implementation context; repair a
|
|
@@ -233,10 +275,15 @@ dispatch contract and perform steps 1–5 by hand.
|
|
|
233
275
|
completion when it lands — never wait for slower in-flight tasks first;
|
|
234
276
|
when several results wait, land them in task-id order.
|
|
235
277
|
|
|
236
|
-
- For `ready
|
|
237
|
-
declared `files` plus append-only Log changes in that
|
|
238
|
-
additions, deletions, renames, and binary changes; an
|
|
239
|
-
blocks before any product commit.
|
|
278
|
+
- For a `ready` coordinator task, compare the complete worktree diff to
|
|
279
|
+
`base`. Permit only declared `files` plus append-only Log changes in that
|
|
280
|
+
task file. Include additions, deletions, renames, and binary changes; an
|
|
281
|
+
unexpected path blocks before any product commit.
|
|
282
|
+
- For a `ready` member task, compare the complete member sidecar diff to the
|
|
283
|
+
returned `member_base`. Permit only declared `files`, including additions,
|
|
284
|
+
deletions, renames, and binary changes. Separately check the returned live
|
|
285
|
+
task `copy` against the coordinator task contract for an append-only Log.
|
|
286
|
+
An unexpected path or Log change blocks before any product commit.
|
|
240
287
|
- For a returned `ready` coder, run `python3 <absolute dispatch_driver.py>
|
|
241
288
|
finish --repo <absolute primary> --task-id <id>`. This action works with
|
|
242
289
|
native child tools; no child command is needed. It reproduces serial work
|
|
@@ -276,6 +323,7 @@ dispatch contract and perform steps 1–5 by hand.
|
|
|
276
323
|
task to `blocked` or `failed`, revoke a parallel isolate's active dispatch
|
|
277
324
|
with `python3 <absolute isolation.py> deactivate-task
|
|
278
325
|
--repo <isolated worktree> --task-id <id> --task-branch <task_branch>`.
|
|
326
|
+
A member task keeps `pending` instead; follow the member retry in step 2.
|
|
279
327
|
Then update and checkpoint the bookkeeping and apply the recovery
|
|
280
328
|
rule. Preserve the isolated worktree unless and until the explicit clean
|
|
281
329
|
retry-retirement procedure in step 2 owns and removes it.
|
|
@@ -10,7 +10,8 @@ change nothing outside your single output file.
|
|
|
10
10
|
- Read AGENTS.md and the template before scanning. Stop on a missing path.
|
|
11
11
|
- Write only the assigned output using the template. When the brief supplies a
|
|
12
12
|
disposable root, write the output under that root at the relative handoff
|
|
13
|
-
path; the orchestrator transfers it after validation.
|
|
13
|
+
path; the orchestrator transfers it after validation. `Repo root` still names
|
|
14
|
+
the primary repo root, never the disposable root. Do not ask the user
|
|
14
15
|
questions.
|
|
15
16
|
|
|
16
17
|
## What to establish
|
|
@@ -44,6 +44,19 @@ use exactly one matching branch:
|
|
|
44
44
|
create another worktree. Encode task dependencies explicitly; launch
|
|
45
45
|
independent children concurrently up to the host's advertised
|
|
46
46
|
concurrent-subagent capacity.
|
|
47
|
+
- A `muse.subagent_spawn` tool (with `muse.subagent_wait`,
|
|
48
|
+
`muse.subagent_read_result`, and `muse.subagent_send_message` siblings) is
|
|
49
|
+
Muse Code. Omit `subagent_type` (general-purpose, full capability), pass the
|
|
50
|
+
logical task name as `task_name` and `role`, and the complete brief as
|
|
51
|
+
`objective`. Never set `worktree_isolation`. Keep the returned
|
|
52
|
+
`subagent_id`; send a correction to a still-live child with
|
|
53
|
+
`muse.subagent_send_message` mode `followup` and the complete new prompt,
|
|
54
|
+
otherwise start a fresh child. Collect with `muse.subagent_wait`
|
|
55
|
+
(`wait_for: task_terminal`) then `muse.subagent_read_result`; on
|
|
56
|
+
`root_capacity_exhausted`, wait for a child to finish and retry. Spawn has no
|
|
57
|
+
model or effort argument, so record no such capability. If only
|
|
58
|
+
`muse.workflow` is exposed (untrusted workspace), do not script or inline
|
|
59
|
+
the work; stop and report that the workspace must be trusted.
|
|
47
60
|
|
|
48
61
|
For every branch:
|
|
49
62
|
|
|
@@ -11,7 +11,8 @@ actually does. Read-only: change nothing outside your single output file.
|
|
|
11
11
|
- Read AGENTS.md and the template before auditing. Stop on a missing path.
|
|
12
12
|
- Write only the assigned output using the template. When the brief supplies a
|
|
13
13
|
disposable root, write the output under that root at the relative handoff
|
|
14
|
-
path; the orchestrator transfers it after validation.
|
|
14
|
+
path; the orchestrator transfers it after validation. `Repo root` still names
|
|
15
|
+
the primary repo root, never the disposable root. Do not ask the user
|
|
15
16
|
questions.
|
|
16
17
|
|
|
17
18
|
## Method
|
|
@@ -58,6 +59,11 @@ actually does. Read-only: change nothing outside your single output file.
|
|
|
58
59
|
5. **Classify remediation** for every non-verified claim: `fix-doc`,
|
|
59
60
|
`fix-code`, or `NEEDS-USER` when the right side of the conflict is not
|
|
60
61
|
yours to decide.
|
|
62
|
+
Number queue rows with unique, strictly increasing positive integers; they
|
|
63
|
+
need not be contiguous. A row that persists from the prior audit keeps its
|
|
64
|
+
number. A new row takes a number greater than every prior queue number and
|
|
65
|
+
every `## User rulings` Queue #. Never reuse a retired number: a ruling
|
|
66
|
+
stays bound to the item it was made for.
|
|
61
67
|
|
|
62
68
|
## Rules
|
|
63
69
|
|