@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
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
## Final integration mode
|
|
2
|
+
|
|
3
|
+
Use only final-review.md. Treat INTENT.md success criteria as the rubric.
|
|
4
|
+
Exercise the running system and record `met`, `not-met`, or `unverifiable`
|
|
5
|
+
with checked command output or a precise file reference. When PLAN.md carries
|
|
6
|
+
a `## Surface contract`, every criterion it lists under a surface is checked
|
|
7
|
+
by performing that surface's Walkthrough from its Entry in the supplied
|
|
8
|
+
sidecar: `Surface` names that surface, Check names what was performed,
|
|
9
|
+
Observed records what the surface actually showed at each state, and a missing
|
|
10
|
+
or unreachable surface is `not-met`. A surface criterion is never `met` on
|
|
11
|
+
internal test output alone. Run project commands only in the supplied verify
|
|
12
|
+
sidecar at the exact reviewed HEAD. Do not
|
|
13
|
+
re-run PLAN.md's project Verify; cite the orchestrator's recorded
|
|
14
|
+
project-verify sidecar output. `pass`
|
|
15
|
+
requires every criterion to be `met`.
|
|
16
|
+
|
|
17
|
+
## Final gap mode
|
|
18
|
+
|
|
19
|
+
Use only gap-review.md. Check the one cross-wave risk in the brief against the
|
|
20
|
+
running system in the supplied verify sidecar at the exact reviewed HEAD.
|
|
21
|
+
Record evidence and `pass` or `blocked`; an unverified risk is blocked.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Plan panel mode
|
|
2
|
+
|
|
3
|
+
Use only plan-panel.md. Review `.project/plan/PLAN.md` and every task file
|
|
4
|
+
against INTENT.md and SYNTHESIS.md. Do not edit those files. Write one
|
|
5
|
+
finding block per issue, or `- none`. Mark `Kind: criterion` only when the
|
|
6
|
+
finding names a written plan/task criterion; alternate designs are
|
|
7
|
+
`Kind: preference`. This output is advisory. The structural plan gate and
|
|
8
|
+
the user's approval remain the only plan gates.
|
|
9
|
+
|
|
10
|
+
## Wave panel mode
|
|
11
|
+
|
|
12
|
+
Use only wave-panel.md. Apply every Wave mode evidence rule (recorded SHAs,
|
|
13
|
+
isolated patch, recorded Verify) when the brief supplies a verify sidecar.
|
|
14
|
+
On a `deep` wave the brief is the adversarial lens only. Record findings
|
|
15
|
+
the same way as plan panel mode. Do not write a Wave verdict and do not
|
|
16
|
+
edit the canonical wave-review file. The inherit reviewer remains the only
|
|
17
|
+
pass/fail.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
## Skeptic mode
|
|
2
|
+
|
|
3
|
+
Use only skeptic.md. The brief supplies one canonical criterion locator, the
|
|
4
|
+
failed criterion verbatim, and every distinct blocking observation for that
|
|
5
|
+
criterion from the `deep` wave lenses, plus the involved task files and their
|
|
6
|
+
recorded bases and proven landing commits. The only job is to refute all of
|
|
7
|
+
those observations.
|
|
8
|
+
|
|
9
|
+
- Apply every Wave mode evidence rule (recorded SHAs, isolated patch,
|
|
10
|
+
recorded Verify) in the supplied sidecar, scoped to the tasks the
|
|
11
|
+
observations cite.
|
|
12
|
+
- Address every distinct observation separately. Record `Verdict: refuted`
|
|
13
|
+
only when checked evidence refutes every observation by proving each
|
|
14
|
+
claimed failure cannot occur or the cited criterion actually holds.
|
|
15
|
+
Anything short of that is `Verdict: stands`.
|
|
16
|
+
- Stage
|
|
17
|
+
`.project/review/wave-N.cycleC.skeptic-<criterion_locator>.md` under the
|
|
18
|
+
supplied sidecar.
|
|
19
|
+
- Do not write a Wave verdict and do not review anything beyond the
|
|
20
|
+
supplied criterion and observations.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
## Wave mode
|
|
2
|
+
|
|
3
|
+
Use task acceptance criteria and the INTENT.md success criteria owned by
|
|
4
|
+
tasks in this wave as the rubric. For each task:
|
|
5
|
+
|
|
6
|
+
1. Read the task file's `base` and the landing commit SHA the orchestrator
|
|
7
|
+
supplied in your brief (it comes from `isolation.py land`/`recover`).
|
|
8
|
+
Never infer either SHA from task ids, branch position, or nearby history.
|
|
9
|
+
2. Fail a missing, malformed, or invalid SHA. Inspect the commit with
|
|
10
|
+
`git show --format=fuller --stat --patch <commit> --`.
|
|
11
|
+
3. In the supplied verify sidecar at `base`, apply only the complete
|
|
12
|
+
binary patch from `commit^..commit` for the task's declared product files
|
|
13
|
+
and inspect the diff. Use the orchestrator's recorded isolated Verify
|
|
14
|
+
output in that task's Log as the Verify evidence. Do not re-run the
|
|
15
|
+
task Verify command or PLAN.md's project Verify. Re-run a command only
|
|
16
|
+
when the recorded output plus the isolated diff cannot check the
|
|
17
|
+
criterion. Never use the primary worktree or branch tip as task
|
|
18
|
+
evidence. Do not create or remove Git worktrees yourself.
|
|
19
|
+
4. Mark `pass` or `fail`. Before the evidence separator (` — `), copy the
|
|
20
|
+
complete task acceptance or interface criterion verbatim, joining wrapped
|
|
21
|
+
lines with spaces. Do not substitute an AC id or summary: finding grouping
|
|
22
|
+
binds this text to the task. Give the observed result, `file:line`, and
|
|
23
|
+
concrete fix direction for each failure.
|
|
24
|
+
|
|
25
|
+
Then check each INTENT.md success criterion owned by a task in this wave
|
|
26
|
+
against that same isolated product. Copy the criterion verbatim from
|
|
27
|
+
INTENT.md. Mark `pass` or `fail` with evidence; a failed owned SC blocks
|
|
28
|
+
the wave. Omit the Intent coverage section when no task in the wave owns
|
|
29
|
+
an SC.
|
|
30
|
+
|
|
31
|
+
Allow changed paths only in the task's `files` plus its assigned task file.
|
|
32
|
+
Within the task file, allow orchestrator-owned `base`, `worktree`,
|
|
33
|
+
`task_branch`, `status`, and `agent` fields plus append-only Log
|
|
34
|
+
entries; block contract-body changes in the task commit. Warn on disabled tests
|
|
35
|
+
or Verify commands that cannot fail unless either defeats a criterion. Set the
|
|
36
|
+
wave verdict to `pass` only when every task passes and every owned INTENT
|
|
37
|
+
success criterion for the wave passes.
|
|
38
|
+
|
|
39
|
+
For cycle greater than 1, read the previous review, re-check every failure,
|
|
40
|
+
and regression-check affected passes. State when the same criterion fails for
|
|
41
|
+
a different reason. Use only the wave-review template.
|
|
42
|
+
|
|
43
|
+
### Re-review after a proven repair
|
|
44
|
+
|
|
45
|
+
When the brief supplies a `review_findings.py repair-evidence` receipt, use
|
|
46
|
+
its isolated repair product for the linked original criteria, including owned
|
|
47
|
+
INTENT criteria. The original faulty landing and earlier verdicts remain
|
|
48
|
+
historical evidence; they do not force the later verdict to remain failed.
|
|
49
|
+
Reconstruct the receipt's repair `base` plus only its `commit^..commit` patch
|
|
50
|
+
for `files` inside the supplied sidecar. Read the repair task's recorded
|
|
51
|
+
Verify, inspect the patch against the original unchanged contract, and reuse
|
|
52
|
+
settled checks. Check unaffected criteria from their prior evidence plus the
|
|
53
|
+
repair diff for regressions. Cite the receipt, repair landing and task Log in
|
|
54
|
+
the new review. A receipt proves provenance, not acceptance: judge whether the
|
|
55
|
+
repair actually satisfies the criterion. A missing or rejected receipt blocks
|
|
56
|
+
using that repair; the parent resolves it rather than creating another product
|
|
57
|
+
fix for the unchanged historical failure.
|
|
58
|
+
|
|
59
|
+
## Final scope in a quick full wave
|
|
60
|
+
|
|
61
|
+
When explicitly briefed with final scope, record `Review scope: final` and the
|
|
62
|
+
full supplied review HEAD in the wave artifact. Check all INTENT success criteria
|
|
63
|
+
and PLAN's Surface contract against the completed isolated product. Each surface
|
|
64
|
+
criterion's Intent coverage block includes `- **Surface**:`, `- **Check**:`, and
|
|
65
|
+
`- **Observed**:` with the walked states and actual result. Reuse recorded task
|
|
66
|
+
output if it proves that exact walkthrough; run only a missing check. Final-scope
|
|
67
|
+
coverage shares this wave artifact; do not write a second report. Shipping's
|
|
68
|
+
runtime checks freshness and derives the final view from these records.
|
|
69
|
+
|
|
70
|
+
## Deep review lenses
|
|
71
|
+
|
|
72
|
+
A `deep` wave spawns two independent reviewers in parallel, each with a fresh
|
|
73
|
+
context and its own verify sidecar at the recorded review base. Every
|
|
74
|
+
Wave mode rule above applies to both lenses.
|
|
75
|
+
|
|
76
|
+
- **Contract** — logical task name
|
|
77
|
+
`review_wave_<wave>_cycle_<cycle>_contract`; stages
|
|
78
|
+
`.project/review/wave-N.cycleC.contract.md`. This is the full wave review:
|
|
79
|
+
patches applied to the recorded base, recorded Verify plus diff, every
|
|
80
|
+
acceptance criterion and interface contract checked. Record `Lens:
|
|
81
|
+
contract`.
|
|
82
|
+
- **Adversarial** — logical task name
|
|
83
|
+
`review_wave_<wave>_cycle_<cycle>_adversarial`; stages
|
|
84
|
+
`.project/review/wave-N.cycleC.adversarial.md`. Try to kill the work:
|
|
85
|
+
security holes, unhandled edge cases, failure modes, data-loss and
|
|
86
|
+
concurrency risks, missing error handling. Record `Lens: adversarial`.
|
|
87
|
+
|
|
88
|
+
The wave passes only when both lenses return `pass`; any `blocked` lens
|
|
89
|
+
blocks the wave.
|
|
@@ -17,156 +17,18 @@ Verify written GSD Path expectations and block failures. Never fix code.
|
|
|
17
17
|
inside supplied sidecars. Never edit a product path or any other
|
|
18
18
|
primary-worktree path. Stop on a missing input or template.
|
|
19
19
|
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
and inspect the diff. Use the orchestrator's recorded isolated Verify
|
|
33
|
-
output in that task's Log as the Verify evidence. Do not re-run the
|
|
34
|
-
task Verify command or PLAN.md's project Verify. Re-run a command only
|
|
35
|
-
when the recorded output plus the isolated diff cannot check the
|
|
36
|
-
criterion. Never use the primary worktree or branch tip as task
|
|
37
|
-
evidence. Do not create or remove Git worktrees yourself.
|
|
38
|
-
4. Mark `pass` or `fail`. Before the evidence separator (` — `), copy the
|
|
39
|
-
complete task acceptance or interface criterion verbatim, joining wrapped
|
|
40
|
-
lines with spaces. Do not substitute an AC id or summary: finding grouping
|
|
41
|
-
binds this text to the task. Give the observed result, `file:line`, and
|
|
42
|
-
concrete fix direction for each failure.
|
|
43
|
-
|
|
44
|
-
Then check each INTENT.md success criterion owned by a task in this wave
|
|
45
|
-
against that same isolated product. Copy the criterion verbatim from
|
|
46
|
-
INTENT.md. Mark `pass` or `fail` with evidence; a failed owned SC blocks
|
|
47
|
-
the wave. Omit the Intent coverage section when no task in the wave owns
|
|
48
|
-
an SC.
|
|
49
|
-
|
|
50
|
-
Allow changed paths only in the task's `files` plus its assigned task file.
|
|
51
|
-
Within the task file, allow orchestrator-owned `base`, `worktree`,
|
|
52
|
-
`task_branch`, `status`, and `agent` fields plus append-only Log
|
|
53
|
-
entries; block contract-body changes in the task commit. Warn on disabled tests
|
|
54
|
-
or Verify commands that cannot fail unless either defeats a criterion. Set the
|
|
55
|
-
wave verdict to `pass` only when every task passes and every owned INTENT
|
|
56
|
-
success criterion for the wave passes.
|
|
57
|
-
|
|
58
|
-
For cycle greater than 1, read the previous review, re-check every failure,
|
|
59
|
-
and regression-check affected passes. State when the same criterion fails for
|
|
60
|
-
a different reason. Use only the wave-review template.
|
|
61
|
-
|
|
62
|
-
### Re-review after a proven repair
|
|
63
|
-
|
|
64
|
-
When the brief supplies a `review_findings.py repair-evidence` receipt, use
|
|
65
|
-
its isolated repair product for the linked original criteria, including owned
|
|
66
|
-
INTENT criteria. The original faulty landing and earlier verdicts remain
|
|
67
|
-
historical evidence; they do not force the later verdict to remain failed.
|
|
68
|
-
Reconstruct the receipt's repair `base` plus only its `commit^..commit` patch
|
|
69
|
-
for `files` inside the supplied sidecar. Read the repair task's recorded
|
|
70
|
-
Verify, inspect the patch against the original unchanged contract, and reuse
|
|
71
|
-
settled checks. Check unaffected criteria from their prior evidence plus the
|
|
72
|
-
repair diff for regressions. Cite the receipt, repair landing and task Log in
|
|
73
|
-
the new review. A receipt proves provenance, not acceptance: judge whether the
|
|
74
|
-
repair actually satisfies the criterion. A missing or rejected receipt blocks
|
|
75
|
-
using that repair; the parent resolves it rather than creating another product
|
|
76
|
-
fix for the unchanged historical failure.
|
|
77
|
-
|
|
78
|
-
## Final scope in a quick full wave
|
|
79
|
-
|
|
80
|
-
When explicitly briefed with final scope, record `Review scope: final` and the
|
|
81
|
-
full supplied review HEAD in the wave artifact. Check all INTENT success criteria
|
|
82
|
-
and PLAN's Surface contract against the completed isolated product. Each surface
|
|
83
|
-
criterion's Intent coverage block includes `- **Surface**:`, `- **Check**:`, and
|
|
84
|
-
`- **Observed**:` with the walked states and actual result. Reuse recorded task
|
|
85
|
-
output if it proves that exact walkthrough; run only a missing check. Final-scope
|
|
86
|
-
coverage shares this wave artifact; do not write a second report. Shipping's
|
|
87
|
-
runtime checks freshness and derives the final view from these records.
|
|
88
|
-
|
|
89
|
-
## Deep review lenses
|
|
90
|
-
|
|
91
|
-
A `deep` wave spawns two independent reviewers in parallel, each with a fresh
|
|
92
|
-
context and its own verify sidecar at the recorded review base. Every
|
|
93
|
-
Wave mode rule above applies to both lenses.
|
|
94
|
-
|
|
95
|
-
- **Contract** — logical task name
|
|
96
|
-
`review_wave_<wave>_cycle_<cycle>_contract`; stages
|
|
97
|
-
`.project/review/wave-N.cycleC.contract.md`. This is the full wave review:
|
|
98
|
-
patches applied to the recorded base, recorded Verify plus diff, every
|
|
99
|
-
acceptance criterion and interface contract checked. Record `Lens:
|
|
100
|
-
contract`.
|
|
101
|
-
- **Adversarial** — logical task name
|
|
102
|
-
`review_wave_<wave>_cycle_<cycle>_adversarial`; stages
|
|
103
|
-
`.project/review/wave-N.cycleC.adversarial.md`. Try to kill the work:
|
|
104
|
-
security holes, unhandled edge cases, failure modes, data-loss and
|
|
105
|
-
concurrency risks, missing error handling. Record `Lens: adversarial`.
|
|
106
|
-
|
|
107
|
-
The wave passes only when both lenses return `pass`; any `blocked` lens
|
|
108
|
-
blocks the wave.
|
|
109
|
-
|
|
110
|
-
## Skeptic mode
|
|
111
|
-
|
|
112
|
-
Use only skeptic.md. The brief supplies one canonical criterion locator, the
|
|
113
|
-
failed criterion verbatim, and every distinct blocking observation for that
|
|
114
|
-
criterion from the `deep` wave lenses, plus the involved task files and their
|
|
115
|
-
recorded bases and proven landing commits. The only job is to refute all of
|
|
116
|
-
those observations.
|
|
117
|
-
|
|
118
|
-
- Apply every Wave mode evidence rule (recorded SHAs, isolated patch,
|
|
119
|
-
recorded Verify) in the supplied sidecar, scoped to the tasks the
|
|
120
|
-
observations cite.
|
|
121
|
-
- Address every distinct observation separately. Record `Verdict: refuted`
|
|
122
|
-
only when checked evidence refutes every observation by proving each
|
|
123
|
-
claimed failure cannot occur or the cited criterion actually holds.
|
|
124
|
-
Anything short of that is `Verdict: stands`.
|
|
125
|
-
- Stage
|
|
126
|
-
`.project/review/wave-N.cycleC.skeptic-<criterion_locator>.md` under the
|
|
127
|
-
supplied sidecar.
|
|
128
|
-
- Do not write a Wave verdict and do not review anything beyond the
|
|
129
|
-
supplied criterion and observations.
|
|
130
|
-
|
|
131
|
-
## Final integration mode
|
|
132
|
-
|
|
133
|
-
Use only final-review.md. Treat INTENT.md success criteria as the rubric.
|
|
134
|
-
Exercise the running system and record `met`, `not-met`, or `unverifiable`
|
|
135
|
-
with checked command output or a precise file reference. When PLAN.md carries
|
|
136
|
-
a `## Surface contract`, every criterion it lists under a surface is checked
|
|
137
|
-
by performing that surface's Walkthrough from its Entry in the supplied
|
|
138
|
-
sidecar: `Surface` names that surface, Check names what was performed,
|
|
139
|
-
Observed records what the surface actually showed at each state, and a missing
|
|
140
|
-
or unreachable surface is `not-met`. A surface criterion is never `met` on
|
|
141
|
-
internal test output alone. Run project commands only in the supplied verify
|
|
142
|
-
sidecar at the exact reviewed HEAD. Do not
|
|
143
|
-
re-run PLAN.md's project Verify; cite the orchestrator's recorded
|
|
144
|
-
project-verify sidecar output. `pass`
|
|
145
|
-
requires every criterion to be `met`.
|
|
146
|
-
|
|
147
|
-
## Final gap mode
|
|
148
|
-
|
|
149
|
-
Use only gap-review.md. Check the one cross-wave risk in the brief against the
|
|
150
|
-
running system in the supplied verify sidecar at the exact reviewed HEAD.
|
|
151
|
-
Record evidence and `pass` or `blocked`; an unverified risk is blocked.
|
|
152
|
-
|
|
153
|
-
## Plan panel mode
|
|
154
|
-
|
|
155
|
-
Use only plan-panel.md. Review `.project/plan/PLAN.md` and every task file
|
|
156
|
-
against INTENT.md and SYNTHESIS.md. Do not edit those files. Write one
|
|
157
|
-
finding block per issue, or `- none`. Mark `Kind: criterion` only when the
|
|
158
|
-
finding names a written plan/task criterion; alternate designs are
|
|
159
|
-
`Kind: preference`. This output is advisory. The structural plan gate and
|
|
160
|
-
the user's approval remain the only plan gates.
|
|
161
|
-
|
|
162
|
-
## Wave panel mode
|
|
163
|
-
|
|
164
|
-
Use only wave-panel.md. Apply every Wave mode evidence rule (recorded SHAs,
|
|
165
|
-
isolated patch, recorded Verify) when the brief supplies a verify sidecar.
|
|
166
|
-
On a `deep` wave the brief is the adversarial lens only. Record findings
|
|
167
|
-
the same way as plan panel mode. Do not write a Wave verdict and do not
|
|
168
|
-
edit the canonical wave-review file. The inherit reviewer remains the only
|
|
169
|
-
pass/fail.
|
|
20
|
+
## Load the assigned mode
|
|
21
|
+
|
|
22
|
+
Read only the row matching the brief. Common rules below apply to every mode.
|
|
23
|
+
Resolve sibling links against this role file's directory.
|
|
24
|
+
|
|
25
|
+
| Mode | Required procedure |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Wave, full or deep; quick final scope | [Wave review](reviewer-wave.md) |
|
|
28
|
+
| Skeptic | [Wave evidence rules](reviewer-wave.md) and [skeptic](reviewer-skeptic.md) |
|
|
29
|
+
| Final integration or final gap | [Final review](reviewer-final.md) |
|
|
30
|
+
| Plan panel | [Panel review](reviewer-panel.md) |
|
|
31
|
+
| Wave panel | [Wave evidence rules](reviewer-wave.md) and [panel review](reviewer-panel.md) |
|
|
170
32
|
|
|
171
33
|
## Rules
|
|
172
34
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -239,15 +239,10 @@ class ArchiveError(RuntimeError):
|
|
|
239
239
|
|
|
240
240
|
|
|
241
241
|
PIPELINE_MARKER = _common.PIPELINE_MARKER
|
|
242
|
-
PR_CREDIT_LINE = (
|
|
243
|
-
"PR prepared with [GSD Path](https://github.com/open-gsd/gsd-path)."
|
|
244
|
-
)
|
|
245
|
-
GITHUB_HOST = "github.com"
|
|
246
242
|
|
|
247
243
|
|
|
248
|
-
# discussion_validate
|
|
249
|
-
#
|
|
250
|
-
# import must stay below those definitions.
|
|
244
|
+
# discussion_validate calls back into this module and imports its constants
|
|
245
|
+
# and ArchiveError, so this import must stay below those definitions.
|
|
251
246
|
if __package__: # imported as scripts.archive_milestone
|
|
252
247
|
from .discussion_validate import (
|
|
253
248
|
record_sections,
|
|
@@ -280,42 +275,6 @@ if __package__: # imported as scripts.archive_milestone
|
|
|
280
275
|
render_manifest,
|
|
281
276
|
validate_manifest,
|
|
282
277
|
)
|
|
283
|
-
from .integration import (
|
|
284
|
-
resolve_remote_default,
|
|
285
|
-
live_remote_ref,
|
|
286
|
-
publish_bound_branch,
|
|
287
|
-
refresh_origin,
|
|
288
|
-
optional_ref,
|
|
289
|
-
integration_names,
|
|
290
|
-
registered_worktree,
|
|
291
|
-
remove_registered_worktree,
|
|
292
|
-
delete_integration_branch,
|
|
293
|
-
require_generated_integration_commit,
|
|
294
|
-
discard_unpublished_stale_integration,
|
|
295
|
-
create_integration_merge,
|
|
296
|
-
require_annotated_tag,
|
|
297
|
-
ensure_integration_tag,
|
|
298
|
-
github_repository,
|
|
299
|
-
require_github_authentication,
|
|
300
|
-
github_api_json,
|
|
301
|
-
require_pull_request_shape,
|
|
302
|
-
require_pull_request_pages,
|
|
303
|
-
pull_request_head_matches_repository,
|
|
304
|
-
require_pull_request_identity,
|
|
305
|
-
find_pull_request,
|
|
306
|
-
pull_request_body,
|
|
307
|
-
update_pull_request_body,
|
|
308
|
-
create_pull_request,
|
|
309
|
-
pull_request_tag_message,
|
|
310
|
-
pull_request_tag_metadata,
|
|
311
|
-
require_pull_request_merge,
|
|
312
|
-
require_pull_request_merge_provenance,
|
|
313
|
-
integrate_pull_request,
|
|
314
|
-
integrate,
|
|
315
|
-
find_integrate_commit,
|
|
316
|
-
validate_integrated,
|
|
317
|
-
require_published_integration,
|
|
318
|
-
)
|
|
319
278
|
else: # standalone script or sibling import
|
|
320
279
|
if __name__ == "__main__":
|
|
321
280
|
sys.modules.setdefault("archive_milestone", sys.modules[__name__])
|
|
@@ -351,42 +310,6 @@ else: # standalone script or sibling import
|
|
|
351
310
|
render_manifest,
|
|
352
311
|
validate_manifest,
|
|
353
312
|
)
|
|
354
|
-
from integration import (
|
|
355
|
-
resolve_remote_default,
|
|
356
|
-
live_remote_ref,
|
|
357
|
-
publish_bound_branch,
|
|
358
|
-
refresh_origin,
|
|
359
|
-
optional_ref,
|
|
360
|
-
integration_names,
|
|
361
|
-
registered_worktree,
|
|
362
|
-
remove_registered_worktree,
|
|
363
|
-
delete_integration_branch,
|
|
364
|
-
require_generated_integration_commit,
|
|
365
|
-
discard_unpublished_stale_integration,
|
|
366
|
-
create_integration_merge,
|
|
367
|
-
require_annotated_tag,
|
|
368
|
-
ensure_integration_tag,
|
|
369
|
-
github_repository,
|
|
370
|
-
require_github_authentication,
|
|
371
|
-
github_api_json,
|
|
372
|
-
require_pull_request_shape,
|
|
373
|
-
require_pull_request_pages,
|
|
374
|
-
pull_request_head_matches_repository,
|
|
375
|
-
require_pull_request_identity,
|
|
376
|
-
find_pull_request,
|
|
377
|
-
pull_request_body,
|
|
378
|
-
update_pull_request_body,
|
|
379
|
-
create_pull_request,
|
|
380
|
-
pull_request_tag_message,
|
|
381
|
-
pull_request_tag_metadata,
|
|
382
|
-
require_pull_request_merge,
|
|
383
|
-
require_pull_request_merge_provenance,
|
|
384
|
-
integrate_pull_request,
|
|
385
|
-
integrate,
|
|
386
|
-
find_integrate_commit,
|
|
387
|
-
validate_integrated,
|
|
388
|
-
require_published_integration,
|
|
389
|
-
)
|
|
390
313
|
except ImportError: # pragma: no cover - package import used by tests
|
|
391
314
|
from scripts.discussion_validate import (
|
|
392
315
|
record_sections,
|
|
@@ -419,42 +342,6 @@ else: # standalone script or sibling import
|
|
|
419
342
|
render_manifest,
|
|
420
343
|
validate_manifest,
|
|
421
344
|
)
|
|
422
|
-
from scripts.integration import (
|
|
423
|
-
resolve_remote_default,
|
|
424
|
-
live_remote_ref,
|
|
425
|
-
publish_bound_branch,
|
|
426
|
-
refresh_origin,
|
|
427
|
-
optional_ref,
|
|
428
|
-
integration_names,
|
|
429
|
-
registered_worktree,
|
|
430
|
-
remove_registered_worktree,
|
|
431
|
-
delete_integration_branch,
|
|
432
|
-
require_generated_integration_commit,
|
|
433
|
-
discard_unpublished_stale_integration,
|
|
434
|
-
create_integration_merge,
|
|
435
|
-
require_annotated_tag,
|
|
436
|
-
ensure_integration_tag,
|
|
437
|
-
github_repository,
|
|
438
|
-
require_github_authentication,
|
|
439
|
-
github_api_json,
|
|
440
|
-
require_pull_request_shape,
|
|
441
|
-
require_pull_request_pages,
|
|
442
|
-
pull_request_head_matches_repository,
|
|
443
|
-
require_pull_request_identity,
|
|
444
|
-
find_pull_request,
|
|
445
|
-
pull_request_body,
|
|
446
|
-
update_pull_request_body,
|
|
447
|
-
create_pull_request,
|
|
448
|
-
pull_request_tag_message,
|
|
449
|
-
pull_request_tag_metadata,
|
|
450
|
-
require_pull_request_merge,
|
|
451
|
-
require_pull_request_merge_provenance,
|
|
452
|
-
integrate_pull_request,
|
|
453
|
-
integrate,
|
|
454
|
-
find_integrate_commit,
|
|
455
|
-
validate_integrated,
|
|
456
|
-
require_published_integration,
|
|
457
|
-
)
|
|
458
345
|
|
|
459
346
|
|
|
460
347
|
@contextmanager
|
|
@@ -2238,6 +2125,11 @@ def parser() -> argparse.ArgumentParser:
|
|
|
2238
2125
|
def main(argv: Optional[Sequence[str]] = None) -> int:
|
|
2239
2126
|
arguments = parser().parse_args(argv)
|
|
2240
2127
|
try:
|
|
2128
|
+
if arguments.command in {"validate-integrated", "refresh-origin", "integrate"}:
|
|
2129
|
+
if __package__:
|
|
2130
|
+
from . import integration
|
|
2131
|
+
else:
|
|
2132
|
+
import integration
|
|
2241
2133
|
if arguments.command == "prepare":
|
|
2242
2134
|
result = prepare(arguments.repo, arguments.slug)
|
|
2243
2135
|
elif arguments.command == "render-manifest":
|
|
@@ -2247,11 +2139,11 @@ def main(argv: Optional[Sequence[str]] = None) -> int:
|
|
|
2247
2139
|
elif arguments.command == "abandon":
|
|
2248
2140
|
result = abandon(arguments.repo, arguments.slug, arguments.reason)
|
|
2249
2141
|
elif arguments.command == "validate-integrated":
|
|
2250
|
-
result = validate_integrated(arguments.repo, arguments.slug)
|
|
2142
|
+
result = integration.validate_integrated(arguments.repo, arguments.slug)
|
|
2251
2143
|
elif arguments.command == "refresh-origin":
|
|
2252
|
-
result = refresh_origin(arguments.repo)
|
|
2144
|
+
result = integration.refresh_origin(arguments.repo)
|
|
2253
2145
|
elif arguments.command == "integrate":
|
|
2254
|
-
result = integrate(arguments.repo, arguments.slug)
|
|
2146
|
+
result = integration.integrate(arguments.repo, arguments.slug)
|
|
2255
2147
|
else:
|
|
2256
2148
|
result = validate(arguments.repo)
|
|
2257
2149
|
except (ArchiveError, OSError) as error:
|
|
@@ -32,6 +32,7 @@ class BootstrapRequest:
|
|
|
32
32
|
worktree: str
|
|
33
33
|
branch: str
|
|
34
34
|
description: Optional[str]
|
|
35
|
+
reuse_empty_worktree: bool = False
|
|
35
36
|
|
|
36
37
|
@property
|
|
37
38
|
def repository(self) -> str:
|
|
@@ -95,6 +96,8 @@ def request_from_arguments(arguments: argparse.Namespace) -> BootstrapRequest:
|
|
|
95
96
|
if arguments.visibility not in {"public", "private", "internal"}:
|
|
96
97
|
raise BootstrapError("visibility must be public, private, or internal")
|
|
97
98
|
|
|
99
|
+
if arguments.reuse_empty_worktree and arguments.worktree.is_symlink():
|
|
100
|
+
raise BootstrapError("linked worktree must not be a symlink")
|
|
98
101
|
workspace = arguments.workspace.resolve()
|
|
99
102
|
checkout = arguments.default_checkout.resolve()
|
|
100
103
|
worktree = arguments.worktree.resolve()
|
|
@@ -116,6 +119,7 @@ def request_from_arguments(arguments: argparse.Namespace) -> BootstrapRequest:
|
|
|
116
119
|
worktree=str(worktree),
|
|
117
120
|
branch="gsd-path/M001",
|
|
118
121
|
description=arguments.description,
|
|
122
|
+
reuse_empty_worktree=arguments.reuse_empty_worktree,
|
|
119
123
|
)
|
|
120
124
|
|
|
121
125
|
|
|
@@ -148,7 +152,10 @@ def transaction_directory(request: BootstrapRequest, create: bool = False) -> Pa
|
|
|
148
152
|
|
|
149
153
|
|
|
150
154
|
def request_payload(request: BootstrapRequest) -> dict:
|
|
151
|
-
|
|
155
|
+
payload = {"schema": "gsd-path/new-github/v1", **asdict(request)}
|
|
156
|
+
if not request.reuse_empty_worktree:
|
|
157
|
+
del payload["reuse_empty_worktree"]
|
|
158
|
+
return payload
|
|
152
159
|
|
|
153
160
|
|
|
154
161
|
def read_journal(request: BootstrapRequest) -> Optional[dict]:
|
|
@@ -272,6 +279,16 @@ def transaction_stages(request: BootstrapRequest) -> dict:
|
|
|
272
279
|
}
|
|
273
280
|
|
|
274
281
|
|
|
282
|
+
def reusable_empty_worktree(request: BootstrapRequest) -> bool:
|
|
283
|
+
path = request.worktree_path
|
|
284
|
+
return (
|
|
285
|
+
request.reuse_empty_worktree
|
|
286
|
+
and not path.is_symlink()
|
|
287
|
+
and path.is_dir()
|
|
288
|
+
and not any(path.iterdir())
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
|
|
275
292
|
def preview(request: BootstrapRequest) -> dict:
|
|
276
293
|
gh_authentication()
|
|
277
294
|
stages = transaction_stages(request)
|
|
@@ -288,8 +305,12 @@ def preview(request: BootstrapRequest) -> dict:
|
|
|
288
305
|
("default checkout", request.checkout_path),
|
|
289
306
|
("linked worktree", request.worktree_path),
|
|
290
307
|
):
|
|
308
|
+
if path == request.worktree_path and reusable_empty_worktree(request):
|
|
309
|
+
continue
|
|
291
310
|
if path.exists() or path.is_symlink():
|
|
292
|
-
raise BootstrapError(
|
|
311
|
+
raise BootstrapError(
|
|
312
|
+
f"{label} path already exists: {path}; preserve it and choose another path"
|
|
313
|
+
)
|
|
293
314
|
return {**request_payload(request), "mode": "create", "stages": stages}
|
|
294
315
|
|
|
295
316
|
|
|
@@ -448,7 +469,7 @@ def allowed_partial_project_status(worktree: Path) -> bool:
|
|
|
448
469
|
def create_or_verify_worktree(request: BootstrapRequest, base: str) -> None:
|
|
449
470
|
checkout = request.checkout_path
|
|
450
471
|
worktree = request.worktree_path
|
|
451
|
-
if not worktree.exists():
|
|
472
|
+
if not worktree.exists() or reusable_empty_worktree(request):
|
|
452
473
|
branch_ref = f"refs/heads/{request.branch}"
|
|
453
474
|
branch = run("git", "-C", str(checkout), "rev-parse", "--verify", branch_ref)
|
|
454
475
|
if branch.returncode == 0:
|
|
@@ -680,6 +701,7 @@ def parser() -> argparse.ArgumentParser:
|
|
|
680
701
|
argument_parser.add_argument("--default-checkout", type=Path, required=True)
|
|
681
702
|
argument_parser.add_argument("--worktree", type=Path, required=True)
|
|
682
703
|
argument_parser.add_argument("--description")
|
|
704
|
+
argument_parser.add_argument("--reuse-empty-worktree", action="store_true")
|
|
683
705
|
argument_parser.add_argument("--state-template", type=Path)
|
|
684
706
|
argument_parser.add_argument("--repository-template", type=Path)
|
|
685
707
|
return argument_parser
|