@opengsd/gsd-path 1.0.0 → 1.1.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 +28 -11
- package/DOCS.md +6 -5
- package/FULL.md +9 -13
- package/QUICK.md +3 -3
- package/README.md +151 -14
- package/RUNTIME.md +7 -1
- package/WORKFLOW.md +30 -14
- package/package.json +15 -1
- package/platforms/shared-agents/dispatch.md +6 -0
- package/scripts/archive_milestone.py +10 -118
- package/scripts/bootstrap_repository.py +25 -3
- package/scripts/build_recovery.py +287 -0
- package/scripts/check_docs_audit.py +5 -3
- package/scripts/check_handoffs.py +1 -1
- package/scripts/detect_project.py +11 -2
- package/scripts/dispatch_driver.py +4 -2
- package/scripts/git_guard.py +2 -1
- package/scripts/install.mjs +2 -0
- package/scripts/install.py +2 -0
- package/scripts/integration.py +28 -22
- package/scripts/isolation.py +9 -1
- package/scripts/lean_verification.py +1 -1
- package/scripts/pipeline_diagnose.py +12 -3
- package/scripts/pipeline_state.py +114 -186
- package/scripts/pipeline_undo.py +11 -7
- package/scripts/promote_lookahead.py +30 -162
- package/scripts/roadmap.py +321 -0
- package/scripts/skill-resources.json +79 -1
- package/scripts/state_checkpoint.py +109 -72
- package/scripts/state_promote.py +42 -44
- package/scripts/task_context.py +73 -0
- package/scripts/token_budget.py +40 -1
- package/scripts/workflow_run.py +116 -7
- package/skills/gsd-path/BUILD.md +47 -575
- package/skills/gsd-path/DECIDE.md +2 -6
- package/skills/gsd-path/DEFINE.md +10 -14
- package/skills/gsd-path/INSPECT.md +30 -8
- package/skills/gsd-path/PLAN.md +25 -17
- package/skills/gsd-path/RESEARCH.md +3 -6
- package/skills/gsd-path/ROADMAP.md +22 -58
- package/skills/gsd-path/SHIP.md +5 -4
- package/skills/gsd-path/SKILL.md +24 -14
- package/skills/gsd-path/references/build-abandon.md +33 -0
- package/skills/gsd-path/references/build-native.md +494 -0
- package/skills/gsd-path/references/build-recovery.md +78 -0
- package/skills/gsd-path/references/coder.md +8 -3
- package/skills/gsd-path/references/dispatch.md +6 -0
- package/skills/gsd-path/references/docs-auditor.md +14 -0
- package/skills/gsd-path/references/reviewer-final.md +21 -0
- package/skills/gsd-path/references/reviewer-panel.md +17 -0
- package/skills/gsd-path/references/reviewer-skeptic.md +20 -0
- package/skills/gsd-path/references/reviewer-wave.md +89 -0
- package/skills/gsd-path/references/reviewer.md +12 -150
- package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/discussion_records.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/integration.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/loop_run.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/review_findings.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/task_context.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/workflow_run.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/archive_milestone.py +10 -118
- package/skills/gsd-path/scripts/bootstrap_repository.py +25 -3
- package/skills/gsd-path/scripts/build_recovery.py +287 -0
- package/skills/gsd-path/scripts/check_docs_audit.py +5 -3
- package/skills/gsd-path/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path/scripts/detect_project.py +11 -2
- package/skills/gsd-path/scripts/dispatch_driver.py +4 -2
- package/skills/gsd-path/scripts/integration.py +28 -22
- package/skills/gsd-path/scripts/isolation.py +9 -1
- package/skills/gsd-path/scripts/lean_verification.py +1 -1
- package/skills/gsd-path/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path/scripts/promote_lookahead.py +30 -162
- package/skills/gsd-path/scripts/roadmap.py +321 -0
- package/skills/gsd-path/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path/scripts/state_promote.py +42 -44
- package/skills/gsd-path/scripts/task_context.py +73 -0
- package/skills/gsd-path/scripts/token_budget.py +40 -1
- package/skills/gsd-path/scripts/workflow_run.py +116 -7
- package/skills/gsd-path/templates/wave-review.md +1 -1
- package/skills/gsd-path-build/SKILL.md +47 -575
- package/skills/gsd-path-build/references/build-abandon.md +33 -0
- package/skills/gsd-path-build/references/build-native.md +494 -0
- package/skills/gsd-path-build/references/build-recovery.md +78 -0
- package/skills/gsd-path-build/references/coder.md +8 -3
- package/skills/gsd-path-build/references/dispatch.md +6 -0
- package/skills/gsd-path-build/references/reviewer-final.md +21 -0
- package/skills/gsd-path-build/references/reviewer-panel.md +17 -0
- package/skills/gsd-path-build/references/reviewer-skeptic.md +20 -0
- package/skills/gsd-path-build/references/reviewer-wave.md +89 -0
- package/skills/gsd-path-build/references/reviewer.md +12 -150
- package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/loop_run.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/review_findings.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/task_context.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/workflow_run.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/archive_milestone.py +10 -118
- package/skills/gsd-path-build/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-build/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-build/scripts/detect_project.py +1526 -0
- package/skills/gsd-path-build/scripts/dispatch_driver.py +4 -2
- package/skills/gsd-path-build/scripts/integration.py +28 -22
- package/skills/gsd-path-build/scripts/isolation.py +9 -1
- package/skills/gsd-path-build/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-build/scripts/promote_lookahead.py +283 -0
- package/skills/gsd-path-build/scripts/roadmap.py +321 -0
- package/skills/gsd-path-build/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-build/scripts/state_promote.py +42 -44
- package/skills/gsd-path-build/scripts/task_context.py +73 -0
- package/skills/gsd-path-build/scripts/token_budget.py +40 -1
- package/skills/gsd-path-build/scripts/workflow_run.py +116 -7
- package/skills/gsd-path-build/templates/wave-review.md +1 -1
- package/skills/gsd-path-decide/SKILL.md +2 -6
- package/skills/gsd-path-decide/references/dispatch.md +6 -0
- package/skills/gsd-path-decide/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-decide/scripts/archive_milestone.py +2157 -0
- package/skills/gsd-path-decide/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-decide/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-decide/scripts/detect_project.py +1526 -0
- package/skills/gsd-path-decide/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-decide/scripts/integration.py +1439 -0
- package/skills/gsd-path-decide/scripts/isolation.py +9 -1
- package/skills/gsd-path-decide/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-decide/scripts/promote_lookahead.py +283 -0
- package/skills/gsd-path-decide/scripts/review_panel.py +553 -0
- package/skills/gsd-path-decide/scripts/roadmap.py +321 -0
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-decide/scripts/state_promote.py +42 -44
- package/skills/gsd-path-define/SKILL.md +10 -14
- package/skills/gsd-path-define/references/build-recovery.md +78 -0
- package/skills/gsd-path-define/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-define/scripts/archive_milestone.py +2157 -0
- package/skills/gsd-path-define/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-define/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-define/scripts/detect_project.py +11 -2
- package/skills/gsd-path-define/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-define/scripts/integration.py +1439 -0
- package/skills/gsd-path-define/scripts/isolation.py +9 -1
- package/skills/gsd-path-define/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-define/scripts/promote_lookahead.py +283 -0
- package/skills/gsd-path-define/scripts/review_panel.py +553 -0
- package/skills/gsd-path-define/scripts/roadmap.py +321 -0
- package/skills/gsd-path-define/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-define/scripts/state_promote.py +42 -44
- package/skills/gsd-path-docs-audit/references/dispatch.md +6 -0
- package/skills/gsd-path-docs-audit/references/docs-auditor.md +14 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +2157 -0
- package/skills/gsd-path-docs-audit/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +5 -3
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-docs-audit/scripts/detect_project.py +1526 -0
- package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-docs-audit/scripts/integration.py +1439 -0
- package/skills/gsd-path-docs-audit/scripts/isolation.py +9 -1
- package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +283 -0
- package/skills/gsd-path-docs-audit/scripts/review_panel.py +553 -0
- package/skills/gsd-path-docs-audit/scripts/roadmap.py +321 -0
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +42 -44
- package/skills/gsd-path-forensics/scripts/__pycache__/pipeline_undo.cpython-312.pyc +0 -0
- package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +12 -3
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +11 -7
- package/skills/gsd-path-inspect/SKILL.md +30 -8
- package/skills/gsd-path-inspect/references/dispatch.md +6 -0
- package/skills/gsd-path-inspect/references/docs-auditor.md +14 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/archive_milestone.py +2157 -0
- package/skills/gsd-path-inspect/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +5 -3
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-inspect/scripts/detect_project.py +11 -2
- package/skills/gsd-path-inspect/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-inspect/scripts/integration.py +1439 -0
- package/skills/gsd-path-inspect/scripts/isolation.py +9 -1
- package/skills/gsd-path-inspect/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-inspect/scripts/promote_lookahead.py +283 -0
- package/skills/gsd-path-inspect/scripts/review_panel.py +553 -0
- package/skills/gsd-path-inspect/scripts/roadmap.py +321 -0
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-inspect/scripts/state_promote.py +42 -44
- package/skills/gsd-path-inspect/scripts/workflow_run.py +226 -0
- package/skills/gsd-path-plan/SKILL.md +25 -17
- package/skills/gsd-path-plan/references/build-recovery.md +78 -0
- package/skills/gsd-path-plan/references/dispatch.md +6 -0
- package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/archive_milestone.py +2157 -0
- package/skills/gsd-path-plan/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-plan/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-plan/scripts/detect_project.py +1526 -0
- package/skills/gsd-path-plan/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-plan/scripts/integration.py +1439 -0
- package/skills/gsd-path-plan/scripts/isolation.py +9 -1
- package/skills/gsd-path-plan/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-plan/scripts/promote_lookahead.py +283 -0
- package/skills/gsd-path-plan/scripts/roadmap.py +321 -0
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-plan/scripts/state_promote.py +42 -44
- package/skills/gsd-path-plan/scripts/workflow_run.py +116 -7
- package/skills/gsd-path-research/SKILL.md +3 -6
- package/skills/gsd-path-research/references/dispatch.md +6 -0
- package/skills/gsd-path-research/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-research/scripts/archive_milestone.py +2157 -0
- package/skills/gsd-path-research/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-research/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-research/scripts/detect_project.py +1526 -0
- package/skills/gsd-path-research/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-research/scripts/integration.py +1439 -0
- package/skills/gsd-path-research/scripts/isolation.py +9 -1
- package/skills/gsd-path-research/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-research/scripts/promote_lookahead.py +283 -0
- package/skills/gsd-path-research/scripts/review_panel.py +553 -0
- package/skills/gsd-path-research/scripts/roadmap.py +321 -0
- package/skills/gsd-path-research/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-research/scripts/state_promote.py +42 -44
- package/skills/gsd-path-roadmap/SKILL.md +22 -58
- package/skills/gsd-path-roadmap/references/dispatch.md +6 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-roadmap/scripts/archive_milestone.py +10 -118
- package/skills/gsd-path-roadmap/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-roadmap/scripts/detect_project.py +11 -2
- package/skills/gsd-path-roadmap/scripts/integration.py +28 -22
- package/skills/gsd-path-roadmap/scripts/isolation.py +9 -1
- package/skills/gsd-path-roadmap/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +30 -162
- package/skills/gsd-path-roadmap/scripts/roadmap.py +321 -0
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-roadmap/scripts/state_promote.py +42 -44
- package/skills/gsd-path-ship/SKILL.md +5 -4
- package/skills/gsd-path-ship/references/dispatch.md +6 -0
- package/skills/gsd-path-ship/references/reviewer-final.md +21 -0
- package/skills/gsd-path-ship/references/reviewer-panel.md +17 -0
- package/skills/gsd-path-ship/references/reviewer-skeptic.md +20 -0
- package/skills/gsd-path-ship/references/reviewer-wave.md +89 -0
- package/skills/gsd-path-ship/references/reviewer.md +12 -150
- package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/archive_milestone.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/build_recovery.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/build_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/check_task_briefs.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/detect_project.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/discussion_validate.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/isolation.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/pipeline_git.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/pipeline_state.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/review_panel.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/roadmap.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/state_checkpoint.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/archive_milestone.py +10 -118
- package/skills/gsd-path-ship/scripts/build_recovery.py +287 -0
- package/skills/gsd-path-ship/scripts/check_handoffs.py +1 -1
- package/skills/gsd-path-ship/scripts/detect_project.py +1526 -0
- package/skills/gsd-path-ship/scripts/integration.py +28 -22
- package/skills/gsd-path-ship/scripts/isolation.py +9 -1
- package/skills/gsd-path-ship/scripts/lean_verification.py +1 -1
- package/skills/gsd-path-ship/scripts/pipeline_state.py +114 -186
- package/skills/gsd-path-ship/scripts/promote_lookahead.py +283 -0
- package/skills/gsd-path-ship/scripts/roadmap.py +321 -0
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +109 -72
- package/skills/gsd-path-ship/scripts/state_promote.py +42 -44
- package/skills/gsd-path-ship/scripts/workflow_run.py +116 -7
- package/skills/gsd-path-ship/templates/wave-review.md +1 -1
- package/skills/gsd-path-undo/scripts/pipeline_undo.py +11 -7
- package/skills/path/BUILD.md +47 -575
- package/skills/path/DECIDE.md +2 -6
- package/skills/path/DEFINE.md +10 -14
- package/skills/path/INSPECT.md +30 -8
- package/skills/path/PLAN.md +25 -17
- package/skills/path/RESEARCH.md +3 -6
- package/skills/path/ROADMAP.md +22 -58
- package/skills/path/SHIP.md +5 -4
- package/skills/path/SKILL.md +24 -14
- package/skills/path/references/build-abandon.md +33 -0
- package/skills/path/references/build-native.md +494 -0
- package/skills/path/references/build-recovery.md +78 -0
- package/skills/path/references/coder.md +8 -3
- package/skills/path/references/dispatch.md +6 -0
- package/skills/path/references/docs-auditor.md +14 -0
- package/skills/path/references/reviewer-final.md +21 -0
- package/skills/path/references/reviewer-panel.md +17 -0
- package/skills/path/references/reviewer-skeptic.md +20 -0
- package/skills/path/references/reviewer-wave.md +89 -0
- package/skills/path/references/reviewer.md +12 -150
- package/skills/path/scripts/archive_milestone.py +10 -118
- package/skills/path/scripts/bootstrap_repository.py +25 -3
- package/skills/path/scripts/build_recovery.py +287 -0
- package/skills/path/scripts/check_docs_audit.py +5 -3
- package/skills/path/scripts/check_handoffs.py +1 -1
- package/skills/path/scripts/detect_project.py +11 -2
- package/skills/path/scripts/dispatch_driver.py +4 -2
- package/skills/path/scripts/integration.py +28 -22
- package/skills/path/scripts/isolation.py +9 -1
- package/skills/path/scripts/lean_verification.py +1 -1
- package/skills/path/scripts/pipeline_state.py +114 -186
- package/skills/path/scripts/promote_lookahead.py +30 -162
- package/skills/path/scripts/roadmap.py +321 -0
- package/skills/path/scripts/state_checkpoint.py +109 -72
- package/skills/path/scripts/state_promote.py +42 -44
- package/skills/path/scripts/task_context.py +73 -0
- package/skills/path/scripts/token_budget.py +40 -1
- package/skills/path/scripts/workflow_run.py +116 -7
- package/skills/path/templates/wave-review.md +1 -1
|
@@ -11,6 +11,31 @@ from pathlib import Path, PurePosixPath
|
|
|
11
11
|
from typing import Mapping, Optional
|
|
12
12
|
|
|
13
13
|
|
|
14
|
+
if __package__: # imported as scripts.state_promote
|
|
15
|
+
from . import pipeline_state, state_checkpoint
|
|
16
|
+
from .pipeline_state import (
|
|
17
|
+
NULL,
|
|
18
|
+
PROMOTION_RESIDUAL,
|
|
19
|
+
PROMOTION_SCHEMA,
|
|
20
|
+
PROMOTION_TRACKS,
|
|
21
|
+
SLUG_RE,
|
|
22
|
+
PipelineState,
|
|
23
|
+
PipelineStateError,
|
|
24
|
+
)
|
|
25
|
+
else: # standalone script or sibling import
|
|
26
|
+
import pipeline_state
|
|
27
|
+
import state_checkpoint
|
|
28
|
+
from pipeline_state import (
|
|
29
|
+
NULL,
|
|
30
|
+
PROMOTION_RESIDUAL,
|
|
31
|
+
PROMOTION_SCHEMA,
|
|
32
|
+
PROMOTION_TRACKS,
|
|
33
|
+
SLUG_RE,
|
|
34
|
+
PipelineState,
|
|
35
|
+
PipelineStateError,
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
14
39
|
def _render_roadmap(
|
|
15
40
|
text: str,
|
|
16
41
|
previous_milestone: str,
|
|
@@ -243,9 +268,9 @@ def _completed_promotion(
|
|
|
243
268
|
if _head_with_exact_message(repo, subject, fields) != head:
|
|
244
269
|
raise PipelineStateError("completed promotion has the wrong commit message")
|
|
245
270
|
|
|
246
|
-
active_text =
|
|
247
|
-
next_text =
|
|
248
|
-
roadmap_text =
|
|
271
|
+
active_text = state_checkpoint._git_text_at(repo, base, ".project/STATE.md")
|
|
272
|
+
next_text = state_checkpoint._git_text_at(repo, base, ".project/next/STATE.md")
|
|
273
|
+
roadmap_text = state_checkpoint._git_text_at(repo, base, ".project/ROADMAP.md")
|
|
249
274
|
if active_text is None or next_text is None or roadmap_text is None:
|
|
250
275
|
raise PipelineStateError("promotion parent is missing required metadata")
|
|
251
276
|
active_state = pipeline_state._state_from_text(active_text, "promotion parent STATE.md")
|
|
@@ -265,7 +290,7 @@ def _completed_promotion(
|
|
|
265
290
|
)
|
|
266
291
|
|
|
267
292
|
_promotion_tree_mapping(repo, base, head)
|
|
268
|
-
drift =
|
|
293
|
+
drift = state_checkpoint._classify_plan_drift(repo, next_state, base, landing)
|
|
269
294
|
expected_roadmap = _render_roadmap(
|
|
270
295
|
roadmap_text,
|
|
271
296
|
active_state.milestone,
|
|
@@ -273,11 +298,11 @@ def _completed_promotion(
|
|
|
273
298
|
branch,
|
|
274
299
|
landing,
|
|
275
300
|
)
|
|
276
|
-
current_roadmap =
|
|
301
|
+
current_roadmap = state_checkpoint._git_text_at(repo, head, ".project/ROADMAP.md")
|
|
277
302
|
if current_roadmap != expected_roadmap:
|
|
278
303
|
raise PipelineStateError("completed promotion has invalid ROADMAP.md")
|
|
279
304
|
|
|
280
|
-
current_state =
|
|
305
|
+
current_state = state_checkpoint._git_text_at(repo, head, ".project/STATE.md")
|
|
281
306
|
if current_state is None:
|
|
282
307
|
raise PipelineStateError("completed promotion has no STATE.md")
|
|
283
308
|
event = re.escape(_promotion_event(drift, branch, landing, base))
|
|
@@ -438,10 +463,10 @@ def _prepare_promotion(
|
|
|
438
463
|
if source.exists() or source.is_symlink():
|
|
439
464
|
if destination.exists() or destination.is_symlink():
|
|
440
465
|
raise PipelineStateError(f"promotion destination already exists: {destination}")
|
|
441
|
-
tracks[name] =
|
|
466
|
+
tracks[name] = state_checkpoint._tree_digest(source)
|
|
442
467
|
if not tracks:
|
|
443
468
|
raise PipelineStateError("lookahead track has no promotable artifacts")
|
|
444
|
-
drift =
|
|
469
|
+
drift = state_checkpoint._classify_plan_drift(repo, next_state, base, landing)
|
|
445
470
|
roadmap_path = project / "ROADMAP.md"
|
|
446
471
|
roadmap_text = pipeline_state._read_real_file(roadmap_path, "ROADMAP.md")
|
|
447
472
|
target_state = _promotion_state(
|
|
@@ -464,10 +489,10 @@ def _prepare_promotion(
|
|
|
464
489
|
"landing": landing,
|
|
465
490
|
"base": base,
|
|
466
491
|
"tracks": tracks,
|
|
467
|
-
"residual_sha256":
|
|
468
|
-
"next_state_sha256":
|
|
469
|
-
"active_state_sha256":
|
|
470
|
-
"roadmap_sha256":
|
|
492
|
+
"residual_sha256": state_checkpoint._tree_digest(next_root, tuple(tracks)),
|
|
493
|
+
"next_state_sha256": state_checkpoint._sha256(next_text),
|
|
494
|
+
"active_state_sha256": state_checkpoint._sha256(active_text),
|
|
495
|
+
"roadmap_sha256": state_checkpoint._sha256(roadmap_text),
|
|
471
496
|
"target_state": target_state,
|
|
472
497
|
"target_roadmap": target_roadmap,
|
|
473
498
|
"drift": drift,
|
|
@@ -521,7 +546,7 @@ def _resume_track_moves(project: Path, journal: dict[str, object], path: Path) -
|
|
|
521
546
|
if not source_exists and not destination_exists:
|
|
522
547
|
raise PipelineStateError(f"promotion lost both source and destination: {name}")
|
|
523
548
|
candidate = source if source_exists else destination
|
|
524
|
-
if
|
|
549
|
+
if state_checkpoint._tree_digest(candidate) != expected_digest:
|
|
525
550
|
raise PipelineStateError(f"promotion track drifted: {name}")
|
|
526
551
|
if source_exists:
|
|
527
552
|
source.rename(destination)
|
|
@@ -542,7 +567,7 @@ def _resume_metadata(project: Path, journal: dict[str, object], path: Path) -> N
|
|
|
542
567
|
raise PipelineStateError("promotion journal has invalid metadata")
|
|
543
568
|
if current == desired:
|
|
544
569
|
continue
|
|
545
|
-
if
|
|
570
|
+
if state_checkpoint._sha256(current) != expected_original:
|
|
546
571
|
raise PipelineStateError(f"promotion metadata drifted: {target}")
|
|
547
572
|
pipeline_state._atomic_write(target, desired)
|
|
548
573
|
journal["stage"] = f"updated:{target.name}"
|
|
@@ -560,9 +585,9 @@ def _resume_next_removal(
|
|
|
560
585
|
if residual.exists() or residual.is_symlink():
|
|
561
586
|
raise PipelineStateError("promotion has both next track and residual staging")
|
|
562
587
|
next_text = pipeline_state._read_real_file(next_root / "STATE.md", "next/STATE.md")
|
|
563
|
-
if
|
|
588
|
+
if state_checkpoint._sha256(next_text) != journal.get("next_state_sha256"):
|
|
564
589
|
raise PipelineStateError("lookahead STATE drifted during promotion")
|
|
565
|
-
if
|
|
590
|
+
if state_checkpoint._tree_digest(next_root) != journal.get("residual_sha256"):
|
|
566
591
|
raise PipelineStateError("lookahead residual drifted during promotion")
|
|
567
592
|
next_root.rename(residual)
|
|
568
593
|
journal["stage"] = "next-staged"
|
|
@@ -574,7 +599,7 @@ def _resume_next_removal(
|
|
|
574
599
|
raise PipelineStateError("promotion lost next track and residual staging")
|
|
575
600
|
if residual.is_symlink() or not residual.is_dir():
|
|
576
601
|
raise PipelineStateError(f"promotion residual must be a real directory: {residual}")
|
|
577
|
-
if
|
|
602
|
+
if state_checkpoint._tree_digest(residual) != journal.get("residual_sha256"):
|
|
578
603
|
raise PipelineStateError("staged lookahead residual drifted during promotion")
|
|
579
604
|
|
|
580
605
|
|
|
@@ -714,30 +739,3 @@ def promote_next(
|
|
|
714
739
|
"commit": commit,
|
|
715
740
|
"drift": journal["drift"],
|
|
716
741
|
}
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
# pipeline_state imports this module, so the parent is resolved after the
|
|
720
|
-
# definitions above. Parent functions are looked up on the module at call time
|
|
721
|
-
# so patches applied to pipeline_state stay visible here.
|
|
722
|
-
if __package__: # imported as scripts.state_promote
|
|
723
|
-
from . import pipeline_state
|
|
724
|
-
from .pipeline_state import (
|
|
725
|
-
NULL,
|
|
726
|
-
PROMOTION_RESIDUAL,
|
|
727
|
-
PROMOTION_SCHEMA,
|
|
728
|
-
PROMOTION_TRACKS,
|
|
729
|
-
SLUG_RE,
|
|
730
|
-
PipelineState,
|
|
731
|
-
PipelineStateError,
|
|
732
|
-
)
|
|
733
|
-
else: # standalone script or sibling import
|
|
734
|
-
import pipeline_state
|
|
735
|
-
from pipeline_state import (
|
|
736
|
-
NULL,
|
|
737
|
-
PROMOTION_RESIDUAL,
|
|
738
|
-
PROMOTION_SCHEMA,
|
|
739
|
-
PROMOTION_TRACKS,
|
|
740
|
-
SLUG_RE,
|
|
741
|
-
PipelineState,
|
|
742
|
-
PipelineStateError,
|
|
743
|
-
)
|
|
Binary file
|
|
@@ -21,6 +21,7 @@ def _load_diagnose_modules():
|
|
|
21
21
|
import archive_milestone
|
|
22
22
|
import detect_project
|
|
23
23
|
import discussion_records
|
|
24
|
+
import integration
|
|
24
25
|
import isolation
|
|
25
26
|
import pipeline_git
|
|
26
27
|
import pipeline_state
|
|
@@ -28,6 +29,7 @@ def _load_diagnose_modules():
|
|
|
28
29
|
archive_milestone,
|
|
29
30
|
detect_project,
|
|
30
31
|
discussion_records,
|
|
32
|
+
integration,
|
|
31
33
|
isolation,
|
|
32
34
|
pipeline_git,
|
|
33
35
|
pipeline_state,
|
|
@@ -37,6 +39,7 @@ def _load_diagnose_modules():
|
|
|
37
39
|
"archive_milestone",
|
|
38
40
|
"detect_project",
|
|
39
41
|
"discussion_records",
|
|
42
|
+
"integration",
|
|
40
43
|
"isolation",
|
|
41
44
|
"pipeline_git",
|
|
42
45
|
"pipeline_state",
|
|
@@ -47,6 +50,7 @@ def _load_diagnose_modules():
|
|
|
47
50
|
archive_milestone,
|
|
48
51
|
detect_project,
|
|
49
52
|
discussion_records,
|
|
53
|
+
integration,
|
|
50
54
|
isolation,
|
|
51
55
|
pipeline_git,
|
|
52
56
|
pipeline_state,
|
|
@@ -55,6 +59,7 @@ def _load_diagnose_modules():
|
|
|
55
59
|
archive_milestone,
|
|
56
60
|
detect_project,
|
|
57
61
|
discussion_records,
|
|
62
|
+
integration,
|
|
58
63
|
isolation,
|
|
59
64
|
pipeline_git,
|
|
60
65
|
pipeline_state,
|
|
@@ -65,6 +70,7 @@ def _load_diagnose_modules():
|
|
|
65
70
|
"scripts.archive_milestone",
|
|
66
71
|
"scripts.detect_project",
|
|
67
72
|
"scripts.discussion_records",
|
|
73
|
+
"scripts.integration",
|
|
68
74
|
"scripts.isolation",
|
|
69
75
|
"scripts.pipeline_git",
|
|
70
76
|
"scripts.pipeline_state",
|
|
@@ -75,6 +81,7 @@ def _load_diagnose_modules():
|
|
|
75
81
|
import archive_milestone
|
|
76
82
|
import detect_project
|
|
77
83
|
import discussion_records
|
|
84
|
+
import integration
|
|
78
85
|
import isolation
|
|
79
86
|
import pipeline_git
|
|
80
87
|
import pipeline_state
|
|
@@ -82,6 +89,7 @@ def _load_diagnose_modules():
|
|
|
82
89
|
archive_milestone,
|
|
83
90
|
detect_project,
|
|
84
91
|
discussion_records,
|
|
92
|
+
integration,
|
|
85
93
|
isolation,
|
|
86
94
|
pipeline_git,
|
|
87
95
|
pipeline_state,
|
|
@@ -92,6 +100,7 @@ def _load_diagnose_modules():
|
|
|
92
100
|
archive_milestone,
|
|
93
101
|
detect_project,
|
|
94
102
|
discussion_records,
|
|
103
|
+
integration,
|
|
95
104
|
isolation,
|
|
96
105
|
pipeline_git,
|
|
97
106
|
pipeline_state,
|
|
@@ -477,8 +486,8 @@ def diagnose(repo: Path) -> dict[str, object]:
|
|
|
477
486
|
else:
|
|
478
487
|
if state.get("phase") == "shipped" and state.get("milestone"):
|
|
479
488
|
try:
|
|
480
|
-
|
|
481
|
-
resolved, str(state["milestone"])
|
|
489
|
+
integration.validate_integrated(
|
|
490
|
+
resolved, str(state["milestone"]), refresh=False
|
|
482
491
|
)
|
|
483
492
|
except archive_milestone.ArchiveError as error:
|
|
484
493
|
findings.append(
|
|
@@ -585,7 +594,7 @@ def diagnose(repo: Path) -> dict[str, object]:
|
|
|
585
594
|
expected_worktree = None
|
|
586
595
|
if archive:
|
|
587
596
|
expected_branch, expected_worktree = (
|
|
588
|
-
|
|
597
|
+
integration.integration_names(
|
|
589
598
|
resolved,
|
|
590
599
|
Path(archive).name,
|
|
591
600
|
)
|
|
@@ -27,18 +27,20 @@ def _load_pipeline_modules():
|
|
|
27
27
|
import isolation
|
|
28
28
|
import pipeline_git
|
|
29
29
|
import pipeline_state
|
|
30
|
-
|
|
30
|
+
import state_checkpoint
|
|
31
|
+
return archive_milestone, isolation, pipeline_git, pipeline_state, state_checkpoint
|
|
31
32
|
except ModuleNotFoundError as error:
|
|
32
33
|
if error.name not in {
|
|
33
34
|
"archive_milestone",
|
|
34
35
|
"isolation",
|
|
35
36
|
"pipeline_git",
|
|
36
37
|
"pipeline_state",
|
|
38
|
+
"state_checkpoint",
|
|
37
39
|
}:
|
|
38
40
|
raise
|
|
39
41
|
try:
|
|
40
|
-
from scripts import archive_milestone, isolation, pipeline_git, pipeline_state
|
|
41
|
-
return archive_milestone, isolation, pipeline_git, pipeline_state
|
|
42
|
+
from scripts import archive_milestone, isolation, pipeline_git, pipeline_state, state_checkpoint
|
|
43
|
+
return archive_milestone, isolation, pipeline_git, pipeline_state, state_checkpoint
|
|
42
44
|
except ModuleNotFoundError as error:
|
|
43
45
|
if error.name not in {
|
|
44
46
|
"scripts",
|
|
@@ -46,6 +48,7 @@ def _load_pipeline_modules():
|
|
|
46
48
|
"scripts.isolation",
|
|
47
49
|
"scripts.pipeline_git",
|
|
48
50
|
"scripts.pipeline_state",
|
|
51
|
+
"scripts.state_checkpoint",
|
|
49
52
|
}:
|
|
50
53
|
raise
|
|
51
54
|
shared = Path(__file__).resolve().parents[2] / "gsd-path" / "scripts"
|
|
@@ -54,16 +57,17 @@ def _load_pipeline_modules():
|
|
|
54
57
|
import isolation
|
|
55
58
|
import pipeline_git
|
|
56
59
|
import pipeline_state
|
|
57
|
-
|
|
60
|
+
import state_checkpoint
|
|
61
|
+
return archive_milestone, isolation, pipeline_git, pipeline_state, state_checkpoint
|
|
58
62
|
|
|
59
63
|
|
|
60
|
-
archive_milestone, isolation, pipeline_git, pipeline_state = _load_pipeline_modules()
|
|
64
|
+
archive_milestone, isolation, pipeline_git, pipeline_state, state_checkpoint = _load_pipeline_modules()
|
|
61
65
|
ArchiveError = archive_milestone.ArchiveError
|
|
62
66
|
IsolationError = isolation.IsolationError
|
|
63
67
|
PLAN_APPROVAL_SUBJECT = pipeline_state.PLAN_APPROVAL_SUBJECT
|
|
64
68
|
PipelineStateError = pipeline_state.PipelineStateError
|
|
65
|
-
_activate_roadmap_milestone =
|
|
66
|
-
_approval_details =
|
|
69
|
+
_activate_roadmap_milestone = state_checkpoint._activate_roadmap_milestone
|
|
70
|
+
_approval_details = state_checkpoint._approval_details
|
|
67
71
|
_commit_subject_body = pipeline_state._commit_subject_body
|
|
68
72
|
_optional_rev = pipeline_state._optional_rev
|
|
69
73
|
_render_transition = pipeline_state._render_transition
|
|
@@ -21,10 +21,12 @@ phase blocks.
|
|
|
21
21
|
|
|
22
22
|
If STATE.md is missing, run the bundled
|
|
23
23
|
`python3 <absolute-bundled-script> initialize --repo <absolute-root>
|
|
24
|
-
--template <absolute-state-template
|
|
24
|
+
--template <absolute-state-template> --require-git` helper (`scripts/detect_project.py`) and
|
|
25
25
|
follow its returned JSON `verdict` / `route`. This is the only no-state
|
|
26
26
|
boundary; do not run `classify` first or classify from a directory listing or
|
|
27
|
-
conversation.
|
|
27
|
+
conversation. Handle `route: setup-repository` before the write gate: preserve
|
|
28
|
+
the folder unchanged and return to `$gsd-path` for repository setup; no state
|
|
29
|
+
was written. If the command exits nonzero, returns `error`, or returns
|
|
28
30
|
`wrote_state: false`, report the error and block without routing or claiming
|
|
29
31
|
STATE.md was written.
|
|
30
32
|
- `owned` — continue under the existing-state rules below.
|
|
@@ -47,6 +49,31 @@ same milestone; a later milestone's `inspect/active` is a new scan.
|
|
|
47
49
|
|
|
48
50
|
## Process
|
|
49
51
|
|
|
52
|
+
For an initial `inspect/active` inspection on the `.project` track, with neither output
|
|
53
|
+
artifact present and a clean Git product at the recorded HEAD, run the bundled
|
|
54
|
+
`python3 <absolute workflow_run.py> prepare-inspect --repo <absolute root>
|
|
55
|
+
--expected-head <recorded HEAD>` first. It performs the inventory freeze and
|
|
56
|
+
both sidecar preparations from steps 1–2 and writes complete assignment briefs.
|
|
57
|
+
Its state validation and pending-answer check satisfy those entry checks;
|
|
58
|
+
reuse their results at this boundary.
|
|
59
|
+
Use its returned `inspection.inventory_file` for the gate. Before dispatch, read
|
|
60
|
+
and apply the [runtime dispatch contract](references/dispatch.md), including its
|
|
61
|
+
host-specific context isolation. Dispatch each returned logical `task_name` in a fresh context with its `brief_file` path and the current
|
|
62
|
+
user constraints, including configured budgets. The child reads that file;
|
|
63
|
+
the parent does not read or rewrite the roles, templates, or generated briefs.
|
|
64
|
+
When both children return, review the mapper's Map and Findings against its
|
|
65
|
+
template as in step 3. After that review passes, run the bundled
|
|
66
|
+
`python3 <absolute workflow_run.py> finish-inspect --repo <absolute root>
|
|
67
|
+
--expected-head <recorded HEAD> --inspection <returned receipt_file>
|
|
68
|
+
--mapper-reviewed`. This runs the docs gate, checks the audit baseline,
|
|
69
|
+
collects and retires both sidecars, checks pending discussion, and records
|
|
70
|
+
`inspect/done` through the canonical transition. Do not repeat those operations.
|
|
71
|
+
Present step 4's ground truth and use step 5's caller handoff. A failure uses
|
|
72
|
+
step 3's failure contract and the returned step evidence; do not blindly rerun
|
|
73
|
+
the completion command or repeat already proven steps.
|
|
74
|
+
Prior evidence, lookahead, or a dirty/non-Git product uses steps 1–2 below.
|
|
75
|
+
Preparation never changes phase state; neither command dispatches agents.
|
|
76
|
+
|
|
50
77
|
1. Before creating or changing `.project/` Markdown, freeze the helper's exact
|
|
51
78
|
stdout from `python3 <absolute check_docs_audit.py> --repo <absolute root>
|
|
52
79
|
--emit-inventory` in a temporary file. Do not rediscover or edit that
|
|
@@ -132,12 +159,7 @@ same milestone; a later milestone's `inspect/active` is a new scan.
|
|
|
132
159
|
<current branch or null> --expect-archive <current archive or null>
|
|
133
160
|
--set-phase inspect --set-status done`. This helper is the only ordinary
|
|
134
161
|
STATE mutation; require its returned state to be `inspect/done`.
|
|
135
|
-
|
|
136
|
-
active `$gsd-path`, return control to that router so its bundled define
|
|
137
|
-
contract runs in brownfield mode (and milestone mode when ROADMAP.md
|
|
138
|
-
exists). When invoked directly, stop and tell the
|
|
139
|
-
user to explicitly invoke `$gsd-path`, which routes to define; do not invoke
|
|
140
|
-
an explicit-only sibling skill yourself.
|
|
162
|
+
Use the executable phase handoff in AGENTS.md.
|
|
141
163
|
|
|
142
164
|
## Lookahead mode
|
|
143
165
|
|
|
@@ -122,6 +122,12 @@ directory for the full logical session; resumptions reuse it. Record completed
|
|
|
122
122
|
parent CLI run events and each native child's session events with stable logical
|
|
123
123
|
task names before the next dispatch. The helper reads host counters and refuses
|
|
124
124
|
incomplete or ambiguous usage; never estimate tokens or reset the ledger.
|
|
125
|
+
When the verified CLI adapter reports cumulative counters across `resume`, record
|
|
126
|
+
each later invocation with `--previous-events <previous recorded CLI events>`.
|
|
127
|
+
The helper checks thread identity and records only the new output, preserving the
|
|
128
|
+
raw total and predecessor. Keep that chain in order; never sum cumulative totals.
|
|
129
|
+
Use ordinary `record` for per-invocation counters. An unknown counter convention
|
|
130
|
+
is unproven usage, not permission to guess.
|
|
125
131
|
Run `admit` for the next task and stop dispatch on a blocked result. Preserve
|
|
126
132
|
its output in the dispatch evidence. This gates observed usage only: concurrent
|
|
127
133
|
or in-flight work can overrun before the host reports usage. Codex CLI has no
|
|
@@ -24,6 +24,20 @@ actually does. Read-only: change nothing outside your single output file.
|
|
|
24
24
|
`## Descriptive docs` list — never its own section, never skipped.
|
|
25
25
|
2. **Extract claims** — statements reality can contradict: commands,
|
|
26
26
|
features, structure, status/checkboxes, config, integrations.
|
|
27
|
+
Scope each claim to this repository's product. An exclusion is a scope
|
|
28
|
+
boundary, not an evidence gap: do not create `unverifiable` findings or
|
|
29
|
+
remediation rows for the implementation of an excluded dependency. In an
|
|
30
|
+
application that installs GSD Path, descriptions of GSD Path's source
|
|
31
|
+
distribution and pipeline internals are such dependency claims. In GSD
|
|
32
|
+
Path's own source repository, they are product claims and must be audited.
|
|
33
|
+
Keep application commands, configuration, and integration promises in
|
|
34
|
+
scope even when they use a dependency. In a mixed document, audit those
|
|
35
|
+
product claims; if none remain, list its exact inventory path alone in
|
|
36
|
+
Descriptive docs. Put a short scope reason in a separate paragraph, never
|
|
37
|
+
on a path bullet. Remediation Doc cells also use exact inventory paths;
|
|
38
|
+
copy each non-verified Claim cell verbatim into its remediation row, and
|
|
39
|
+
put line numbers in Evidence. This never exempts instructions from being
|
|
40
|
+
followed or conflicting instructions from being surfaced.
|
|
27
41
|
3. **Verify each claim** by the cheapest sufficient method: run the
|
|
28
42
|
command, read the named code, run the relevant test, check git history.
|
|
29
43
|
Record the evidence (file:line, or command + result) with the verdict:
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|