@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
|
-
)
|
|
@@ -8,8 +8,8 @@ description: Verify a completed GSD Path milestone, manage evidence-backed patch
|
|
|
8
8
|
Reuse proven review scope; dispatch reviewers for remaining claims. They never fix
|
|
9
9
|
product code.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
After completion, use the executable phase handoff in AGENTS.md.
|
|
12
|
+
Before completion, preserve the approval and recovery gates below.
|
|
13
13
|
|
|
14
14
|
Require `pipeline: gsd-path/v2` in `.project/STATE.md`; a missing or different
|
|
15
15
|
marker returns to `$gsd-path` for ownership checking. Read the local
|
|
@@ -269,8 +269,9 @@ The persisted `STATE.archive` field is the transaction identity.
|
|
|
269
269
|
create the ship phase's one commit with exact subject
|
|
270
270
|
`ship: M00N — <milestone-slug>` and a body of exactly two consecutive lines,
|
|
271
271
|
`Archive: .project/archive/<NNN>-<slug>` then
|
|
272
|
-
`Reviewed-HEAD: <reviewed SHA>`, with no comment lines or blank line between them
|
|
273
|
-
|
|
272
|
+
`Reviewed-HEAD: <reviewed SHA>`, with no comment lines or blank line between them.
|
|
273
|
+
Write the subject, a blank line, and the two body lines to a message file,
|
|
274
|
+
then use `git commit -F <message-file>`. M00N and NNN come from STATE.archive.
|
|
274
275
|
There is no untracked-project exception and no product or older-archive
|
|
275
276
|
path may enter this commit.
|
|
276
277
|
6. Immediately run `python3 <absolute archive_milestone.py> validate --repo <root>`. It requires the committed shipped state, exact archive and
|
|
@@ -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
|
|
@@ -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
|