@opengsd/gsd-path 1.0.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 +397 -0
- package/DOCS.md +341 -0
- package/FULL.md +475 -0
- package/GUIDE.md +23 -0
- package/HOOKS.md +273 -0
- package/LICENSE +21 -0
- package/MIGRATE.md +100 -0
- package/QUICK.md +146 -0
- package/README.md +280 -0
- package/RUNTIME.md +229 -0
- package/UPDATE.md +196 -0
- package/WORKFLOW.md +683 -0
- package/package.json +80 -0
- package/platforms/claude/dispatch.md +63 -0
- package/platforms/copilot/dispatch.md +61 -0
- package/platforms/cursor/agent.md +17 -0
- package/platforms/cursor/dispatch.md +63 -0
- package/platforms/grok/dispatch.md +61 -0
- package/platforms/kimi/dispatch.md +64 -0
- package/platforms/kiro/dispatch.md +58 -0
- package/platforms/opencode/dispatch.md +62 -0
- package/platforms/qwen/dispatch.md +60 -0
- package/platforms/shared-agents/dispatch.md +131 -0
- package/plugin.json +14 -0
- package/scripts/_common.py +180 -0
- package/scripts/archive_milestone.py +2265 -0
- package/scripts/bootstrap_repository.py +710 -0
- package/scripts/build_state.py +854 -0
- package/scripts/check_docs_audit.py +463 -0
- package/scripts/check_handoffs.py +1855 -0
- package/scripts/check_task_briefs.py +376 -0
- package/scripts/check_update.py +93 -0
- package/scripts/core_hook_gate.py +34 -0
- package/scripts/core_hook_settings.py +119 -0
- package/scripts/detect_project.py +1517 -0
- package/scripts/discussion_records.py +619 -0
- package/scripts/discussion_validate.py +1321 -0
- package/scripts/dispatch_driver.py +1812 -0
- package/scripts/git_guard.py +759 -0
- package/scripts/guard_hook.py +2124 -0
- package/scripts/install.mjs +3239 -0
- package/scripts/install.py +3008 -0
- package/scripts/integration.py +1433 -0
- package/scripts/isolation.py +3538 -0
- package/scripts/lean_verification.py +256 -0
- package/scripts/loop_run.py +837 -0
- package/scripts/migrate_core.py +169 -0
- package/scripts/pipeline_diagnose.py +715 -0
- package/scripts/pipeline_git.py +940 -0
- package/scripts/pipeline_state.py +2291 -0
- package/scripts/pipeline_undo.py +1039 -0
- package/scripts/promote_lookahead.py +415 -0
- package/scripts/review_findings.py +714 -0
- package/scripts/review_panel.py +553 -0
- package/scripts/skill-resources.json +340 -0
- package/scripts/state_checkpoint.py +1039 -0
- package/scripts/state_promote.py +743 -0
- package/scripts/status_runtime.py +122 -0
- package/scripts/sync_skill_resources.py +259 -0
- package/scripts/token_budget.py +146 -0
- package/scripts/wizard.mjs +179 -0
- package/scripts/workflow_run.py +117 -0
- package/skills/gsd-path/BUILD.md +700 -0
- package/skills/gsd-path/DECIDE.md +115 -0
- package/skills/gsd-path/DEFINE.md +297 -0
- package/skills/gsd-path/DOCS-AUDIT.md +190 -0
- package/skills/gsd-path/INSPECT.md +167 -0
- package/skills/gsd-path/PLAN.md +411 -0
- package/skills/gsd-path/RESEARCH.md +159 -0
- package/skills/gsd-path/ROADMAP.md +215 -0
- package/skills/gsd-path/SHIP.md +412 -0
- package/skills/gsd-path/SKILL.md +471 -0
- package/skills/gsd-path/agents/openai.yaml +6 -0
- package/skills/gsd-path/references/codebase-mapper.md +52 -0
- package/skills/gsd-path/references/coder.md +90 -0
- package/skills/gsd-path/references/decider.md +36 -0
- package/skills/gsd-path/references/dispatch.md +131 -0
- package/skills/gsd-path/references/docs-auditor.md +60 -0
- package/skills/gsd-path/references/planner.md +104 -0
- package/skills/gsd-path/references/researcher.md +42 -0
- package/skills/gsd-path/references/reviewer.md +188 -0
- package/skills/gsd-path/references/roadmapper.md +48 -0
- package/skills/gsd-path/scripts/_common.py +180 -0
- package/skills/gsd-path/scripts/archive_milestone.py +2265 -0
- package/skills/gsd-path/scripts/bootstrap_repository.py +710 -0
- package/skills/gsd-path/scripts/build_state.py +854 -0
- package/skills/gsd-path/scripts/check_docs_audit.py +463 -0
- package/skills/gsd-path/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path/scripts/check_update.py +93 -0
- package/skills/gsd-path/scripts/detect_project.py +1517 -0
- package/skills/gsd-path/scripts/discussion_records.py +619 -0
- package/skills/gsd-path/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path/scripts/dispatch_driver.py +1812 -0
- package/skills/gsd-path/scripts/integration.py +1433 -0
- package/skills/gsd-path/scripts/isolation.py +3538 -0
- package/skills/gsd-path/scripts/lean_verification.py +256 -0
- package/skills/gsd-path/scripts/loop_run.py +837 -0
- package/skills/gsd-path/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path/scripts/promote_lookahead.py +415 -0
- package/skills/gsd-path/scripts/review_findings.py +714 -0
- package/skills/gsd-path/scripts/review_panel.py +553 -0
- package/skills/gsd-path/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path/scripts/state_promote.py +743 -0
- package/skills/gsd-path/scripts/token_budget.py +146 -0
- package/skills/gsd-path/scripts/workflow_run.py +117 -0
- package/skills/gsd-path/templates/answers.md +29 -0
- package/skills/gsd-path/templates/archive-manifest.md +37 -0
- package/skills/gsd-path/templates/charter.md +50 -0
- package/skills/gsd-path/templates/codebase.md +46 -0
- package/skills/gsd-path/templates/dialogue.md +21 -0
- package/skills/gsd-path/templates/docs-audit.md +69 -0
- package/skills/gsd-path/templates/evidence.md +24 -0
- package/skills/gsd-path/templates/final-review.md +27 -0
- package/skills/gsd-path/templates/gap-review.md +20 -0
- package/skills/gsd-path/templates/intent.md +98 -0
- package/skills/gsd-path/templates/loop.md +59 -0
- package/skills/gsd-path/templates/patch-findings.md +16 -0
- package/skills/gsd-path/templates/plan-panel.md +25 -0
- package/skills/gsd-path/templates/plan.md +89 -0
- package/skills/gsd-path/templates/repository.md +16 -0
- package/skills/gsd-path/templates/research-handoff.md +25 -0
- package/skills/gsd-path/templates/roadmap.md +38 -0
- package/skills/gsd-path/templates/skeptic.md +36 -0
- package/skills/gsd-path/templates/state.md +27 -0
- package/skills/gsd-path/templates/synthesis.md +36 -0
- package/skills/gsd-path/templates/task.md +74 -0
- package/skills/gsd-path/templates/wave-panel.md +25 -0
- package/skills/gsd-path/templates/wave-review.md +64 -0
- package/skills/gsd-path-build/SKILL.md +700 -0
- package/skills/gsd-path-build/agents/openai.yaml +6 -0
- package/skills/gsd-path-build/references/coder.md +90 -0
- package/skills/gsd-path-build/references/dispatch.md +131 -0
- package/skills/gsd-path-build/references/reviewer.md +188 -0
- package/skills/gsd-path-build/scripts/_common.py +180 -0
- package/skills/gsd-path-build/scripts/archive_milestone.py +2265 -0
- package/skills/gsd-path-build/scripts/build_state.py +854 -0
- package/skills/gsd-path-build/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-build/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-build/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-build/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-build/scripts/dispatch_driver.py +1812 -0
- package/skills/gsd-path-build/scripts/integration.py +1433 -0
- package/skills/gsd-path-build/scripts/isolation.py +3538 -0
- package/skills/gsd-path-build/scripts/loop_run.py +837 -0
- package/skills/gsd-path-build/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-build/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-build/scripts/review_findings.py +714 -0
- package/skills/gsd-path-build/scripts/review_panel.py +553 -0
- package/skills/gsd-path-build/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-build/scripts/state_promote.py +743 -0
- package/skills/gsd-path-build/scripts/token_budget.py +146 -0
- package/skills/gsd-path-build/scripts/workflow_run.py +117 -0
- package/skills/gsd-path-build/templates/skeptic.md +36 -0
- package/skills/gsd-path-build/templates/task.md +74 -0
- package/skills/gsd-path-build/templates/wave-panel.md +25 -0
- package/skills/gsd-path-build/templates/wave-review.md +64 -0
- package/skills/gsd-path-decide/SKILL.md +115 -0
- package/skills/gsd-path-decide/agents/openai.yaml +6 -0
- package/skills/gsd-path-decide/references/decider.md +36 -0
- package/skills/gsd-path-decide/references/dispatch.md +131 -0
- package/skills/gsd-path-decide/scripts/_common.py +180 -0
- package/skills/gsd-path-decide/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-decide/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-decide/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-decide/scripts/isolation.py +3538 -0
- package/skills/gsd-path-decide/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-decide/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-decide/scripts/state_promote.py +743 -0
- package/skills/gsd-path-decide/templates/synthesis.md +36 -0
- package/skills/gsd-path-define/SKILL.md +297 -0
- package/skills/gsd-path-define/agents/openai.yaml +6 -0
- package/skills/gsd-path-define/scripts/_common.py +180 -0
- package/skills/gsd-path-define/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-define/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-define/scripts/detect_project.py +1517 -0
- package/skills/gsd-path-define/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-define/scripts/isolation.py +3538 -0
- package/skills/gsd-path-define/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-define/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-define/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-define/scripts/state_promote.py +743 -0
- package/skills/gsd-path-define/templates/charter.md +50 -0
- package/skills/gsd-path-define/templates/intent.md +98 -0
- package/skills/gsd-path-define/templates/state.md +27 -0
- package/skills/gsd-path-discuss/SKILL.md +162 -0
- package/skills/gsd-path-discuss/agents/openai.yaml +6 -0
- package/skills/gsd-path-discuss/scripts/_common.py +180 -0
- package/skills/gsd-path-discuss/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-discuss/templates/answers.md +29 -0
- package/skills/gsd-path-discuss/templates/dialogue.md +21 -0
- package/skills/gsd-path-docs-audit/SKILL.md +190 -0
- package/skills/gsd-path-docs-audit/agents/openai.yaml +6 -0
- package/skills/gsd-path-docs-audit/references/dispatch.md +131 -0
- package/skills/gsd-path-docs-audit/references/docs-auditor.md +60 -0
- package/skills/gsd-path-docs-audit/scripts/_common.py +180 -0
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +463 -0
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-docs-audit/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-docs-audit/scripts/isolation.py +3538 -0
- package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +743 -0
- package/skills/gsd-path-docs-audit/templates/docs-audit.md +69 -0
- package/skills/gsd-path-forensics/SKILL.md +39 -0
- package/skills/gsd-path-forensics/agents/openai.yaml +6 -0
- package/skills/gsd-path-forensics/scripts/_common.py +180 -0
- package/skills/gsd-path-forensics/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +715 -0
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +1039 -0
- package/skills/gsd-path-inspect/SKILL.md +167 -0
- package/skills/gsd-path-inspect/agents/openai.yaml +6 -0
- package/skills/gsd-path-inspect/references/codebase-mapper.md +52 -0
- package/skills/gsd-path-inspect/references/dispatch.md +131 -0
- package/skills/gsd-path-inspect/references/docs-auditor.md +60 -0
- package/skills/gsd-path-inspect/scripts/_common.py +180 -0
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +463 -0
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-inspect/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-inspect/scripts/detect_project.py +1517 -0
- package/skills/gsd-path-inspect/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-inspect/scripts/isolation.py +3538 -0
- package/skills/gsd-path-inspect/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-inspect/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-inspect/scripts/state_promote.py +743 -0
- package/skills/gsd-path-inspect/templates/codebase.md +46 -0
- package/skills/gsd-path-inspect/templates/docs-audit.md +69 -0
- package/skills/gsd-path-inspect/templates/state.md +27 -0
- package/skills/gsd-path-loop/SKILL.md +98 -0
- package/skills/gsd-path-loop/agents/openai.yaml +6 -0
- package/skills/gsd-path-loop/examples/ci-repair.LOOP.md +61 -0
- package/skills/gsd-path-loop/scripts/_common.py +180 -0
- package/skills/gsd-path-loop/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-loop/scripts/loop_run.py +837 -0
- package/skills/gsd-path-loop/templates/loop.md +59 -0
- package/skills/gsd-path-migrate/SKILL.md +134 -0
- package/skills/gsd-path-migrate/agents/openai.yaml +6 -0
- package/skills/gsd-path-migrate/scripts/core_hook_gate.py +34 -0
- package/skills/gsd-path-migrate/scripts/core_hook_settings.py +119 -0
- package/skills/gsd-path-migrate/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-migrate/scripts/migrate_core.py +169 -0
- package/skills/gsd-path-plan/SKILL.md +411 -0
- package/skills/gsd-path-plan/agents/openai.yaml +6 -0
- package/skills/gsd-path-plan/references/dispatch.md +131 -0
- package/skills/gsd-path-plan/references/planner.md +104 -0
- package/skills/gsd-path-plan/scripts/_common.py +180 -0
- package/skills/gsd-path-plan/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-plan/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-plan/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-plan/scripts/isolation.py +3538 -0
- package/skills/gsd-path-plan/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-plan/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-plan/scripts/review_panel.py +553 -0
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-plan/scripts/state_promote.py +743 -0
- package/skills/gsd-path-plan/scripts/workflow_run.py +117 -0
- package/skills/gsd-path-plan/templates/patch-findings.md +16 -0
- package/skills/gsd-path-plan/templates/plan-panel.md +25 -0
- package/skills/gsd-path-plan/templates/plan.md +89 -0
- package/skills/gsd-path-plan/templates/task.md +74 -0
- package/skills/gsd-path-research/SKILL.md +159 -0
- package/skills/gsd-path-research/agents/openai.yaml +6 -0
- package/skills/gsd-path-research/references/dispatch.md +131 -0
- package/skills/gsd-path-research/references/researcher.md +42 -0
- package/skills/gsd-path-research/scripts/_common.py +180 -0
- package/skills/gsd-path-research/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-research/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-research/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-research/scripts/isolation.py +3538 -0
- package/skills/gsd-path-research/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-research/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-research/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-research/scripts/state_promote.py +743 -0
- package/skills/gsd-path-research/templates/evidence.md +24 -0
- package/skills/gsd-path-research/templates/research-handoff.md +25 -0
- package/skills/gsd-path-roadmap/SKILL.md +215 -0
- package/skills/gsd-path-roadmap/agents/openai.yaml +6 -0
- package/skills/gsd-path-roadmap/references/dispatch.md +131 -0
- package/skills/gsd-path-roadmap/references/roadmapper.md +48 -0
- package/skills/gsd-path-roadmap/scripts/_common.py +180 -0
- package/skills/gsd-path-roadmap/scripts/archive_milestone.py +2265 -0
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-roadmap/scripts/detect_project.py +1517 -0
- package/skills/gsd-path-roadmap/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-roadmap/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-roadmap/scripts/integration.py +1433 -0
- package/skills/gsd-path-roadmap/scripts/isolation.py +3538 -0
- package/skills/gsd-path-roadmap/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-roadmap/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +415 -0
- package/skills/gsd-path-roadmap/scripts/review_panel.py +553 -0
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-roadmap/scripts/state_promote.py +743 -0
- package/skills/gsd-path-roadmap/templates/roadmap.md +38 -0
- package/skills/gsd-path-ship/SKILL.md +412 -0
- package/skills/gsd-path-ship/agents/openai.yaml +6 -0
- package/skills/gsd-path-ship/references/dispatch.md +131 -0
- package/skills/gsd-path-ship/references/reviewer.md +188 -0
- package/skills/gsd-path-ship/scripts/_common.py +180 -0
- package/skills/gsd-path-ship/scripts/archive_milestone.py +2265 -0
- package/skills/gsd-path-ship/scripts/build_state.py +854 -0
- package/skills/gsd-path-ship/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-ship/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-ship/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-ship/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-ship/scripts/integration.py +1433 -0
- package/skills/gsd-path-ship/scripts/isolation.py +3538 -0
- package/skills/gsd-path-ship/scripts/lean_verification.py +256 -0
- package/skills/gsd-path-ship/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-ship/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-ship/scripts/review_panel.py +553 -0
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-ship/scripts/state_promote.py +743 -0
- package/skills/gsd-path-ship/scripts/workflow_run.py +117 -0
- package/skills/gsd-path-ship/templates/archive-manifest.md +37 -0
- package/skills/gsd-path-ship/templates/final-review.md +27 -0
- package/skills/gsd-path-ship/templates/gap-review.md +20 -0
- package/skills/gsd-path-ship/templates/patch-findings.md +16 -0
- package/skills/gsd-path-ship/templates/wave-review.md +64 -0
- package/skills/gsd-path-undo/SKILL.md +45 -0
- package/skills/gsd-path-undo/agents/openai.yaml +6 -0
- package/skills/gsd-path-undo/scripts/_common.py +180 -0
- package/skills/gsd-path-undo/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-undo/scripts/pipeline_undo.py +1039 -0
- package/skills/path/BUILD.md +700 -0
- package/skills/path/DECIDE.md +115 -0
- package/skills/path/DEFINE.md +297 -0
- package/skills/path/DOCS-AUDIT.md +190 -0
- package/skills/path/INSPECT.md +167 -0
- package/skills/path/PLAN.md +411 -0
- package/skills/path/RESEARCH.md +159 -0
- package/skills/path/ROADMAP.md +215 -0
- package/skills/path/SHIP.md +412 -0
- package/skills/path/SKILL.md +471 -0
- package/skills/path/agents/openai.yaml +6 -0
- package/skills/path/references/codebase-mapper.md +52 -0
- package/skills/path/references/coder.md +90 -0
- package/skills/path/references/decider.md +36 -0
- package/skills/path/references/dispatch.md +131 -0
- package/skills/path/references/docs-auditor.md +60 -0
- package/skills/path/references/planner.md +104 -0
- package/skills/path/references/researcher.md +42 -0
- package/skills/path/references/reviewer.md +188 -0
- package/skills/path/references/roadmapper.md +48 -0
- package/skills/path/scripts/_common.py +180 -0
- package/skills/path/scripts/archive_milestone.py +2265 -0
- package/skills/path/scripts/bootstrap_repository.py +710 -0
- package/skills/path/scripts/build_state.py +854 -0
- package/skills/path/scripts/check_docs_audit.py +463 -0
- package/skills/path/scripts/check_handoffs.py +1855 -0
- package/skills/path/scripts/check_task_briefs.py +376 -0
- package/skills/path/scripts/check_update.py +93 -0
- package/skills/path/scripts/detect_project.py +1517 -0
- package/skills/path/scripts/discussion_records.py +619 -0
- package/skills/path/scripts/discussion_validate.py +1321 -0
- package/skills/path/scripts/dispatch_driver.py +1812 -0
- package/skills/path/scripts/integration.py +1433 -0
- package/skills/path/scripts/isolation.py +3538 -0
- package/skills/path/scripts/lean_verification.py +256 -0
- package/skills/path/scripts/loop_run.py +837 -0
- package/skills/path/scripts/pipeline_git.py +940 -0
- package/skills/path/scripts/pipeline_state.py +2291 -0
- package/skills/path/scripts/promote_lookahead.py +415 -0
- package/skills/path/scripts/review_findings.py +714 -0
- package/skills/path/scripts/review_panel.py +553 -0
- package/skills/path/scripts/state_checkpoint.py +1039 -0
- package/skills/path/scripts/state_promote.py +743 -0
- package/skills/path/scripts/token_budget.py +146 -0
- package/skills/path/scripts/workflow_run.py +117 -0
- package/skills/path/templates/answers.md +29 -0
- package/skills/path/templates/archive-manifest.md +37 -0
- package/skills/path/templates/charter.md +50 -0
- package/skills/path/templates/codebase.md +46 -0
- package/skills/path/templates/dialogue.md +21 -0
- package/skills/path/templates/docs-audit.md +69 -0
- package/skills/path/templates/evidence.md +24 -0
- package/skills/path/templates/final-review.md +27 -0
- package/skills/path/templates/gap-review.md +20 -0
- package/skills/path/templates/intent.md +98 -0
- package/skills/path/templates/loop.md +59 -0
- package/skills/path/templates/patch-findings.md +16 -0
- package/skills/path/templates/plan-panel.md +25 -0
- package/skills/path/templates/plan.md +89 -0
- package/skills/path/templates/repository.md +16 -0
- package/skills/path/templates/research-handoff.md +25 -0
- package/skills/path/templates/roadmap.md +38 -0
- package/skills/path/templates/skeptic.md +36 -0
- package/skills/path/templates/state.md +27 -0
- package/skills/path/templates/synthesis.md +36 -0
- package/skills/path/templates/task.md +74 -0
- package/skills/path/templates/wave-panel.md +25 -0
- package/skills/path/templates/wave-review.md +64 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Intent — <project name>
|
|
2
|
+
|
|
3
|
+
<!-- Written by $gsd-path-define. Every downstream agent reads this first.
|
|
4
|
+
Constraints and vetoes here override everything downstream. -->
|
|
5
|
+
|
|
6
|
+
Lane: standard <!-- standard | quick | milestone — quick: at most two
|
|
7
|
+
deliverable-sized tasks in one wave, no RESEARCH or
|
|
8
|
+
NEEDS-USER items, no cross-wave risk; set by define at
|
|
9
|
+
approval. Quick skips research and decide. Milestone:
|
|
10
|
+
derived from an approved ROADMAP.md entry in a program;
|
|
11
|
+
research/decide run only when the entry has open
|
|
12
|
+
questions. -->
|
|
13
|
+
|
|
14
|
+
Review panel: off <!-- off | detected | claude,gpt,grok,composer,gemini,deepseek,kimi,qwen — this
|
|
15
|
+
milestone's panel setting. In program flow, copy
|
|
16
|
+
CHARTER.md's durable default and override only when
|
|
17
|
+
the user says so. off is the default. detected uses
|
|
18
|
+
advertised host families except the parent, at most 3.
|
|
19
|
+
Named families are an assertion, at most 3. Quick
|
|
20
|
+
lane stays off. -->
|
|
21
|
+
|
|
22
|
+
Finding skeptics: off <!-- off | on — build spawns one read-only skeptic
|
|
23
|
+
per blocking deep-review finding before fix tasks
|
|
24
|
+
are opened; a refuted finding spawns no fix task unless
|
|
25
|
+
the user explicitly overrides all cycle refutations.
|
|
26
|
+
off is the default. Quick lane stays off. -->
|
|
27
|
+
|
|
28
|
+
Surfaces: none <!-- none | comma-separated list of the human-facing
|
|
29
|
+
surfaces this milestone delivers: a web app, a CLI, an
|
|
30
|
+
HTTP API. Anything a person opens, sees, or types into
|
|
31
|
+
is a surface. Use none only when nobody touches this
|
|
32
|
+
work directly — a library, a migration, internals.
|
|
33
|
+
Every named surface needs a success criterion
|
|
34
|
+
observable there and a PLAN.md Surface contract. -->
|
|
35
|
+
|
|
36
|
+
## Summary
|
|
37
|
+
|
|
38
|
+
<3–5 sentences: the problem, who has it, what the first release does. This is the
|
|
39
|
+
paragraph the user signed off on — do not edit without a new sign-off.>
|
|
40
|
+
|
|
41
|
+
## Problem
|
|
42
|
+
|
|
43
|
+
<What hurts today, for whom, how badly. Evidence if the user gave any.>
|
|
44
|
+
|
|
45
|
+
## Users
|
|
46
|
+
|
|
47
|
+
<Who, how many, how technical, what they use today.>
|
|
48
|
+
|
|
49
|
+
## Success criteria
|
|
50
|
+
|
|
51
|
+
<!-- Observable statements, numbered from 1. PLAN.md maps each to a task
|
|
52
|
+
AC and Verify as SC1, SC2, …. Wave review checks the SCs a wave owns.
|
|
53
|
+
Final review checks every SC.
|
|
54
|
+
Every surface named above needs at least one criterion a person can
|
|
55
|
+
observe at that surface — a screen reached, an output seen — never a
|
|
56
|
+
passing test standing in for the experience. -->
|
|
57
|
+
1. <criterion — a thing you can run/measure/see>
|
|
58
|
+
2. ...
|
|
59
|
+
|
|
60
|
+
## Scope: in
|
|
61
|
+
|
|
62
|
+
<The smallest version that hits the success criteria. Bullet list.>
|
|
63
|
+
|
|
64
|
+
## Scope: out (vetoes)
|
|
65
|
+
|
|
66
|
+
<!-- Hard constraints. Nothing in research, plans, or tasks may include these. -->
|
|
67
|
+
- <vetoed item> — <user's stated reason, verbatim where possible>
|
|
68
|
+
|
|
69
|
+
## Constraints
|
|
70
|
+
|
|
71
|
+
<Stack preferences, deadline, budget, existing code, integrations, compliance.>
|
|
72
|
+
|
|
73
|
+
## Current state (brownfield only)
|
|
74
|
+
|
|
75
|
+
<!-- Filled from evidence-codebase.md during brownfield define. Omit the
|
|
76
|
+
section entirely for greenfield projects. -->
|
|
77
|
+
- **What exists**: <stack, architecture, maturity in 2–3 sentences>
|
|
78
|
+
- **Must not break**: <existing behavior the user ruled protected — these are vetoes>
|
|
79
|
+
- **Doc-vs-code rulings**: <each DOCS-AUDIT conflict → user's ruling: fix-doc | fix-code | accept-drift>
|
|
80
|
+
- **Ground truth**: `<track>/research/evidence-codebase.md`, `<track>/research/DOCS-AUDIT.md`
|
|
81
|
+
|
|
82
|
+
## Risks
|
|
83
|
+
|
|
84
|
+
<!-- What the user is most unsure about. Research prioritizes these. -->
|
|
85
|
+
- <risk>
|
|
86
|
+
|
|
87
|
+
## Open questions
|
|
88
|
+
|
|
89
|
+
<!-- Unresolved at define end. Tags: RESEARCH (research phase answers it),
|
|
90
|
+
NEEDS-USER (a human decision, surface at next checkpoint). -->
|
|
91
|
+
- [RESEARCH] <question>
|
|
92
|
+
- [NEEDS-USER] <question>
|
|
93
|
+
|
|
94
|
+
## Corrections
|
|
95
|
+
|
|
96
|
+
<!-- Verbatim user corrections from playback and later phases. Append-only.
|
|
97
|
+
These are the highest-signal intent data in the file. -->
|
|
98
|
+
- <date>: "<what the user said>"
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# LOOP — <loop name>
|
|
2
|
+
|
|
3
|
+
<!-- Written by whoever designs the loop. Executed one bounded pass at a time
|
|
4
|
+
by $gsd-path-loop. The key: value lines below are the machine fields read
|
|
5
|
+
by scripts/loop_run.py — keep them exact: one field per line, no nesting,
|
|
6
|
+
no duplicate fields except verify. A single trailing HTML comment on a
|
|
7
|
+
field line is stripped by the parser. The prose sections are read by the
|
|
8
|
+
model, never by the parser. Mandatory fields:
|
|
9
|
+
loop, status, trigger, verify, max_iterations, wall_clock, log.
|
|
10
|
+
Optional fields: cooldown, skip_when, period, period_budget. -->
|
|
11
|
+
|
|
12
|
+
loop: <kebab-case name>
|
|
13
|
+
status: active <!-- active | paused | done -->
|
|
14
|
+
trigger: manual <!-- who invokes one pass: manual | event | schedule -->
|
|
15
|
+
cooldown: 15m <!-- optional: minimum gap between recorded passes -->
|
|
16
|
+
skip_when: <shell command> <!-- optional: exit 0 = skip this pass -->
|
|
17
|
+
verify: <shell command> <!-- repeat the line per verifier command, in order;
|
|
18
|
+
include a secret-scan or dependency-audit
|
|
19
|
+
verifier when the loop touches code or
|
|
20
|
+
dependencies -->
|
|
21
|
+
max_iterations: 3 <!-- fix → verify cycles allowed in one pass -->
|
|
22
|
+
wall_clock: 30m <!-- per-pass wall-clock budget -->
|
|
23
|
+
period: 24h <!-- optional: rolling window for period_budget -->
|
|
24
|
+
period_budget: 4h <!-- optional: total wall-clock usable per period;
|
|
25
|
+
requires period -->
|
|
26
|
+
log: .project/loop/<name>.LOG.jsonl
|
|
27
|
+
|
|
28
|
+
## Goal
|
|
29
|
+
|
|
30
|
+
<What "green" means — the one outcome the verify commands must prove. If the
|
|
31
|
+
loop cannot state this in a sentence, it is not ready to run.>
|
|
32
|
+
|
|
33
|
+
## Worker scope
|
|
34
|
+
|
|
35
|
+
<What one fix worker must do, and what it must never do: no commits, pushes,
|
|
36
|
+
or tags; no editing tests to match broken code; paths that are read-only to
|
|
37
|
+
the worker.>
|
|
38
|
+
|
|
39
|
+
## Feedback route
|
|
40
|
+
|
|
41
|
+
<On a failed verify, what the worker gets back: the exact failing command and
|
|
42
|
+
its output tail, aimed at the smallest failed unit — not a retry of the whole
|
|
43
|
+
goal.>
|
|
44
|
+
|
|
45
|
+
## Human gates
|
|
46
|
+
|
|
47
|
+
<Never-auto actions. When a fix requires one of these, the pass stops with
|
|
48
|
+
BLOCKED: <reason> and the named action goes to the user.>
|
|
49
|
+
|
|
50
|
+
## Stops
|
|
51
|
+
|
|
52
|
+
<Conditions that end a pass honestly: verify green (pass), max_iterations or
|
|
53
|
+
wall_clock spent (fail), a human-gate action required (blocked). Never keep
|
|
54
|
+
iterating past these.>
|
|
55
|
+
|
|
56
|
+
## Output
|
|
57
|
+
|
|
58
|
+
<What one pass reports to the user and where: the record appended to the log
|
|
59
|
+
path above, plus the Outcome / Review / Next report.>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Patch Findings
|
|
2
|
+
|
|
3
|
+
<!-- Written by final review when it blocks and consumed by patch planning. -->
|
|
4
|
+
|
|
5
|
+
Reviewed HEAD: <full SHA>
|
|
6
|
+
State: ship/blocked
|
|
7
|
+
|
|
8
|
+
## Findings
|
|
9
|
+
|
|
10
|
+
<!-- Copy only evidenced, selected findings. Keep IDs contiguous and ordered. -->
|
|
11
|
+
### P001 — <short finding title>
|
|
12
|
+
|
|
13
|
+
- **Source**: `.project/review/FINAL.md`
|
|
14
|
+
- **Locator**: `<SC number or gap risk row>`
|
|
15
|
+
- **Evidence**: <observed result copied from the source review>
|
|
16
|
+
- **Fix direction**: <concrete direction for the patch task>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Plan panel — <family>
|
|
2
|
+
|
|
3
|
+
<!-- Written by one review-panel child. The orchestrator validates this file
|
|
4
|
+
with scripts/review_panel.py merge and never treats it as a plan gate.
|
|
5
|
+
Kind criterion requires a named PLAN/task criterion; preference is
|
|
6
|
+
taste or an alternate design and must not flip approval. -->
|
|
7
|
+
|
|
8
|
+
- Family: <claude | gpt | grok | composer | gemini | deepseek | kimi | qwen>
|
|
9
|
+
- Model: <exact advertised slug>
|
|
10
|
+
|
|
11
|
+
## Findings
|
|
12
|
+
|
|
13
|
+
<!-- One ### F# block per finding, or a single `- none` line. -->
|
|
14
|
+
|
|
15
|
+
### F1
|
|
16
|
+
- Severity: high
|
|
17
|
+
- Kind: criterion
|
|
18
|
+
- Criterion: Wave 1 / T001 / acceptance 1
|
|
19
|
+
- Evidence: .project/tasks/T001-slug.md:12
|
|
20
|
+
- Found: <what is missing or wrong>
|
|
21
|
+
- Fix direction: <concrete plan/task edit>
|
|
22
|
+
|
|
23
|
+
## Summary
|
|
24
|
+
|
|
25
|
+
<one paragraph; do not edit PLAN.md or tasks>
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Plan — <project name>
|
|
2
|
+
|
|
3
|
+
<!-- Written by the planner role. Executed wave-by-wave by $gsd-path-build. -->
|
|
4
|
+
|
|
5
|
+
Project verify: `<command that installs dependencies, builds + tests the whole project>`
|
|
6
|
+
<!-- Run once at ship, in a fresh sidecar worktree checked out at the
|
|
7
|
+
reviewed commit: no node_modules, virtualenv, build output, or untracked
|
|
8
|
+
env files exist there. The command must provision what it needs first,
|
|
9
|
+
e.g. `pnpm install --frozen-lockfile && pnpm test`. A task Verify must
|
|
10
|
+
not copy this command unless an owned INTENT success criterion names it.
|
|
11
|
+
Otherwise the task Verify names a path from that task's files. -->
|
|
12
|
+
|
|
13
|
+
## Config
|
|
14
|
+
|
|
15
|
+
- max_review_cycles: 3 <!-- review→fix→re-review loops per wave before escalating -->
|
|
16
|
+
- wave_budget: none <!-- none | optional per-wave resource cap: wall-clock,
|
|
17
|
+
tokens, or cost (e.g. 2h, 500k tokens). Reaching the
|
|
18
|
+
cap blocks the wave like an exhausted cycle cap and
|
|
19
|
+
escalates to the user. none is default. -->
|
|
20
|
+
- review_panel: off <!-- off | detected | claude,gpt,grok — optional
|
|
21
|
+
cross-model panel. off is default. detected uses
|
|
22
|
+
advertised host families except the parent, cap 3.
|
|
23
|
+
Named families are an assertion. Quick lane stays
|
|
24
|
+
off. The planner copies INTENT.md; it does not
|
|
25
|
+
invent a non-off value. -->
|
|
26
|
+
- finding_skeptics: off <!-- off | on — deep waves only. on spawns one
|
|
27
|
+
read-only skeptic per blocking finding before
|
|
28
|
+
fix tasks are batched; a refuted finding spawns
|
|
29
|
+
no fix task unless the user explicitly overrides
|
|
30
|
+
all cycle refutations. off is default. The planner
|
|
31
|
+
copies INTENT.md; it does not invent on. -->
|
|
32
|
+
|
|
33
|
+
## Wave 1 — risk burn-down
|
|
34
|
+
|
|
35
|
+
Goal: <what this wave proves; if it fails, what changes>
|
|
36
|
+
Review depth: full <!-- full | deep | verify-only. Wave 1 and auth/payments/
|
|
37
|
+
data migration/concurrency waves must be full or
|
|
38
|
+
deep. Assign deep sparingly: irreversible or
|
|
39
|
+
security-critical merges. -->
|
|
40
|
+
|
|
41
|
+
<!-- No task table. Task id, title, deps, and files live only in each
|
|
42
|
+
`tasks/T###-slug.md` frontmatter; `wave: N` there assigns it here. -->
|
|
43
|
+
|
|
44
|
+
## Wave 2 — walking skeleton
|
|
45
|
+
|
|
46
|
+
Goal: <the end-to-end slice that runs>
|
|
47
|
+
Review depth: <full | deep | verify-only>
|
|
48
|
+
|
|
49
|
+
<!-- More waves: features by dependency, then polish. Rules:
|
|
50
|
+
- deps only in earlier waves, or same wave with no file overlap
|
|
51
|
+
- no two same-wave tasks share files
|
|
52
|
+
- nothing from INTENT.md scope-out appears anywhere -->
|
|
53
|
+
|
|
54
|
+
## Surface contract
|
|
55
|
+
|
|
56
|
+
<!-- Required when INTENT.md `Surfaces:` is not `none`; omit the section
|
|
57
|
+
entirely when it is. One block per declared surface, named exactly as
|
|
58
|
+
INTENT.md names it, owned by the task that delivers it. That task must
|
|
59
|
+
name in Criteria the success criteria this surface is proven by — the
|
|
60
|
+
owning task must own every listed criterion in its Intent coverage. A
|
|
61
|
+
criterion may appear in only one surface block. This is what the final
|
|
62
|
+
reviewer walks before the milestone is called done, and FINAL.md records
|
|
63
|
+
the surface it was walked on. Replace every whole-value angle-bracket
|
|
64
|
+
placeholder; angle brackets may appear inside concrete routes, commands,
|
|
65
|
+
states, and walkthrough steps. -->
|
|
66
|
+
|
|
67
|
+
### <surface name as INTENT.md writes it> — T001
|
|
68
|
+
|
|
69
|
+
Criteria: SC1
|
|
70
|
+
Entry: <the route, screen, or command a person opens>
|
|
71
|
+
States: <what empty, loading, error, and success each show>
|
|
72
|
+
Walkthrough:
|
|
73
|
+
1. <step a reviewer performs to see this surface working>
|
|
74
|
+
|
|
75
|
+
## Intent coverage
|
|
76
|
+
|
|
77
|
+
<!-- Every INTENT.md success criterion, as SCn, maps to at least one task
|
|
78
|
+
acceptance item. The named task's Verify command is what must fail if
|
|
79
|
+
that criterion is skipped. `scripts/check_handoffs.py plan` gates this
|
|
80
|
+
table against INTENT.md and each task's Intent coverage section. -->
|
|
81
|
+
|
|
82
|
+
| Criterion | Task | Acceptance |
|
|
83
|
+
|-----------|------|------------|
|
|
84
|
+
| SC1 | T001 | AC1 |
|
|
85
|
+
|
|
86
|
+
## Dependency notes
|
|
87
|
+
|
|
88
|
+
<Per non-obvious edge: the exact data or landed effect that makes X precede Y,
|
|
89
|
+
and how a reviewer sees it. Narrative order is not a dependency.>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Repository Binding
|
|
2
|
+
|
|
3
|
+
<!-- Written once by the journaled new-GitHub repository transaction. This
|
|
4
|
+
fixed-format artifact is the recovery and build handoff; do not infer its
|
|
5
|
+
values from STATE.md prose. The pipeline never enters the default
|
|
6
|
+
checkout, so its local default branch ref may lag origin; run
|
|
7
|
+
`git pull --ff-only` there before working in it. -->
|
|
8
|
+
|
|
9
|
+
Kind: <kind>
|
|
10
|
+
Remote: <remote>
|
|
11
|
+
Visibility: <visibility>
|
|
12
|
+
Remote default: <remote-default>
|
|
13
|
+
Remote default SHA: <remote-default-sha>
|
|
14
|
+
Default checkout: <default-checkout>
|
|
15
|
+
GSD Path branch: <branch>
|
|
16
|
+
Primary worktree: <primary-worktree>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Research Handoff
|
|
2
|
+
|
|
3
|
+
<!-- Written by the research orchestrator and consumed by decide. -->
|
|
4
|
+
|
|
5
|
+
Phase: research
|
|
6
|
+
Status: complete
|
|
7
|
+
Intent: `.project/intent/INTENT.md`
|
|
8
|
+
<!-- Program flow (no milestone INTENT exists): write the Intent line as
|
|
9
|
+
`.project/CHARTER.md` instead — the validator accepts exactly one of the
|
|
10
|
+
two paths, matching the file that actually exists. -->
|
|
11
|
+
|
|
12
|
+
## Dispatch
|
|
13
|
+
|
|
14
|
+
<!-- Include every standard dimension exactly once. A custom dimension may
|
|
15
|
+
supplement these rows, never replace a standard row. -->
|
|
16
|
+
- `domain` — dispatched → `.project/research/evidence-domain.md` — <why this dimension ran>
|
|
17
|
+
- `stack` — skipped → none — <why this dimension was skipped>
|
|
18
|
+
- `pitfalls` — skipped → none — <why this dimension was skipped>
|
|
19
|
+
- `similar` — skipped → none — <why this dimension was skipped>
|
|
20
|
+
|
|
21
|
+
## Question assignments
|
|
22
|
+
|
|
23
|
+
<!-- Copy every [RESEARCH] question from INTENT.md exactly once. Use `- none`
|
|
24
|
+
only when INTENT.md has no [RESEARCH] questions. -->
|
|
25
|
+
- `[RESEARCH] <question copied from INTENT.md>` → `domain`
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Roadmap — <program name>
|
|
2
|
+
|
|
3
|
+
<!-- Written and owned by $gsd-path-roadmap. Rolling-wave: milestone-granularity
|
|
4
|
+
scope for EVERY milestone; waves and tasks are planned only for the active
|
|
5
|
+
milestone. Never edit a shipped entry except its Status, Archive, and
|
|
6
|
+
Integrated fields; never edit an abandoned entry at all. Lives at
|
|
7
|
+
.project/ top
|
|
8
|
+
level and persists across milestones; it never archives. -->
|
|
9
|
+
|
|
10
|
+
## Milestones
|
|
11
|
+
|
|
12
|
+
### M001 — <slug>
|
|
13
|
+
|
|
14
|
+
Goal: <one sentence — the independently shippable outcome>
|
|
15
|
+
Depends on: [] # milestone ids; acyclic; earlier ids only
|
|
16
|
+
Surfaces: none # none | the human-facing surfaces this milestone
|
|
17
|
+
# delivers (web app, CLI, HTTP API). Each one needs a
|
|
18
|
+
# success criterion observable there.
|
|
19
|
+
Status: pending # pending | active | shipped | abandoned
|
|
20
|
+
Archive: null # .project/archive/<NNN>-<slug>/ recorded at ship
|
|
21
|
+
Integrated: null # optional; merge SHA of the integrate commit onto
|
|
22
|
+
# the remote default, filled after integration
|
|
23
|
+
|
|
24
|
+
Scope: in
|
|
25
|
+
- <deliverable sized capability>
|
|
26
|
+
|
|
27
|
+
Scope: out
|
|
28
|
+
- <explicit exclusion deferred to a later milestone or vetoed>
|
|
29
|
+
|
|
30
|
+
Success criteria
|
|
31
|
+
1. <observable criterion the milestone's final review can check>
|
|
32
|
+
|
|
33
|
+
Risks
|
|
34
|
+
- <risk that could invalidate this milestone or its dependents>
|
|
35
|
+
|
|
36
|
+
Open questions
|
|
37
|
+
- None # any real question here inserts milestone-scoped
|
|
38
|
+
# research + decide before that milestone's planning
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Skeptic — wave <N>, cycle <C>
|
|
2
|
+
|
|
3
|
+
<!-- Written by one finding-skeptic child. Advisory to fix-task batching
|
|
4
|
+
only: the inherit reviewer owns Wave verdict. -->
|
|
5
|
+
|
|
6
|
+
- Criterion: <the failed criterion, verbatim from the lens file>
|
|
7
|
+
- Criterion locator: <t001_ac2 | t001_files | sc3>
|
|
8
|
+
- Lenses: <contract | adversarial | both>
|
|
9
|
+
|
|
10
|
+
## Observations
|
|
11
|
+
|
|
12
|
+
<!-- Repeat for every distinct lens observation. Collapse only true
|
|
13
|
+
duplicates. Give each observation a unique number and exactly one
|
|
14
|
+
verdict with that number below; unknown or duplicate verdict numbers
|
|
15
|
+
are invalid. The criterion locator, not these local numbers, is the
|
|
16
|
+
finding identity across cycles. -->
|
|
17
|
+
|
|
18
|
+
### Observation <n> — <contract | adversarial>
|
|
19
|
+
|
|
20
|
+
<the observation verbatim: criterion, observed result, file:line>
|
|
21
|
+
|
|
22
|
+
## Observation verdicts
|
|
23
|
+
|
|
24
|
+
### Observation <n>: <refuted | stands>
|
|
25
|
+
|
|
26
|
+
<checked evidence for this observation>
|
|
27
|
+
|
|
28
|
+
## Verdict
|
|
29
|
+
|
|
30
|
+
<refuted | stands>
|
|
31
|
+
|
|
32
|
+
## Evidence
|
|
33
|
+
|
|
34
|
+
<checked evidence: the command re-run in the sidecar or the artifact
|
|
35
|
+
re-read, with its result. A refuted verdict requires every observation above
|
|
36
|
+
to be individually refuted; anything short of that is stands.>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
pipeline: gsd-path/v2
|
|
3
|
+
project: <slug>
|
|
4
|
+
milestone: null # set by define; names the archive directory at ship
|
|
5
|
+
phase: define # v2 tokens: inspect | define | research | decide | roadmap | plan | build | ship | shipped
|
|
6
|
+
# inspect only for brownfield; greenfield starts at define
|
|
7
|
+
# roadmap only in program flow (CHARTER.md exists)
|
|
8
|
+
status: active # active | done | blocked; shipped is only phase: shipped + status: done
|
|
9
|
+
branch: null # bound per milestone as gsd-path/M00N; after integration
|
|
10
|
+
# the router rebinds before any next-milestone file change
|
|
11
|
+
# the bound branch is never main; ship integrates it there
|
|
12
|
+
archive: null # persisted archive transaction path; never recomputed
|
|
13
|
+
integration_default: direct # direct | pull-request; project setting
|
|
14
|
+
integration: direct # current milestone; may override the default before build
|
|
15
|
+
integration_source: default # default | milestone; preserves override provenance
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Project State
|
|
19
|
+
|
|
20
|
+
One file, always current. The router reads this first; every phase updates
|
|
21
|
+
it on completion. If this file and the artifacts disagree, the artifacts win
|
|
22
|
+
— fix this file.
|
|
23
|
+
|
|
24
|
+
## Log
|
|
25
|
+
|
|
26
|
+
<!-- append one line per transition: date, phase, event -->
|
|
27
|
+
- YYYY-MM-DD — <phase> — project initialized
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Synthesis
|
|
2
|
+
|
|
3
|
+
<!-- Written by the decider role. The planner treats Decisions as settled. -->
|
|
4
|
+
|
|
5
|
+
## Settled
|
|
6
|
+
|
|
7
|
+
<!-- Choices closed by an intent constraint or the existing codebase.
|
|
8
|
+
One line each, citing the settling source. No invented runner-ups. -->
|
|
9
|
+
- <area> — <what stands> (<settling source>)
|
|
10
|
+
|
|
11
|
+
## Decisions
|
|
12
|
+
|
|
13
|
+
<!-- One block per genuinely open choice the evidence resolved. -->
|
|
14
|
+
### <decision area, e.g. Stack>
|
|
15
|
+
|
|
16
|
+
- **Decision**: <what we're doing>
|
|
17
|
+
- **Runner-up**: <what lost, and why>
|
|
18
|
+
- **Evidence**: <evidence-file.md § finding heading, ...>
|
|
19
|
+
- **Confidence**: <high | medium | low — low ⇒ verify in wave 1>
|
|
20
|
+
|
|
21
|
+
## For the planner
|
|
22
|
+
|
|
23
|
+
<!-- The shape of the build. -->
|
|
24
|
+
- **Wave-1 blockers**: <riskiest assumptions to burn down first>
|
|
25
|
+
- **Walking skeleton**: <the thinnest end-to-end slice>
|
|
26
|
+
- **Pitfalls → tasks**: <known trap → which future task must dodge it>
|
|
27
|
+
|
|
28
|
+
## User rulings
|
|
29
|
+
|
|
30
|
+
<!-- NEEDS-USER items answered at the synthesis checkpoint. Verbatim-ish. -->
|
|
31
|
+
- <question> → <ruling>
|
|
32
|
+
|
|
33
|
+
## Still unknown
|
|
34
|
+
|
|
35
|
+
<!-- Carried-forward gaps. Never let a question vanish between phases. -->
|
|
36
|
+
- <gap> — <plan: wave-1 spike | accept risk | NEEDS-USER>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: T001
|
|
3
|
+
title: <imperative, specific>
|
|
4
|
+
wave: 1
|
|
5
|
+
deps: [] # task ids whose output or landed effect this task needs
|
|
6
|
+
status: pending # orchestrator-owned: pending | in-progress | done | failed | blocked
|
|
7
|
+
agent: null # orchestrator-owned: set at dispatch
|
|
8
|
+
base: null # orchestrator-owned: clean layer SHA for isolated Verify
|
|
9
|
+
worktree: null # orchestrator-owned: isolated task worktree while active
|
|
10
|
+
task_branch: null # orchestrator-owned: gsd-path-task/<id> while parallel; null when serial
|
|
11
|
+
files: # every file this task may touch — dispatch checks overlap
|
|
12
|
+
- <path>
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# T001 — <title>
|
|
16
|
+
|
|
17
|
+
## Context
|
|
18
|
+
|
|
19
|
+
<!-- 3–5 sentences. Everything the coder needs from SYNTHESIS, inlined.
|
|
20
|
+
The coder reads this file, INTENT.md, and the codebase. -->
|
|
21
|
+
|
|
22
|
+
## Approach
|
|
23
|
+
|
|
24
|
+
<!-- Constraints, applicable pitfalls from research, and pointers to real
|
|
25
|
+
paths, symbols, and schemas. Not an edit script — the coder owns the
|
|
26
|
+
how within these constraints and the acceptance criteria. -->
|
|
27
|
+
- <constraint or pointer>
|
|
28
|
+
|
|
29
|
+
## Interface contract
|
|
30
|
+
|
|
31
|
+
<!-- Planner-owned. The exact shared symbols, signatures, types, paths,
|
|
32
|
+
schemas, or formats this task exchanges with other tasks. Required when
|
|
33
|
+
another task consumes this task's output or this task consumes a
|
|
34
|
+
sibling's; write the identical contract in every involved task. Otherwise
|
|
35
|
+
write `None`. Only shapes this task's `files` define or consume — never
|
|
36
|
+
the whole plan's contracts. Binding like the acceptance criteria: needing to deviate
|
|
37
|
+
is a plan defect — block, never negotiate or improvise. -->
|
|
38
|
+
- None
|
|
39
|
+
|
|
40
|
+
## Intent coverage
|
|
41
|
+
|
|
42
|
+
<!-- SCn ids this task owns, matching PLAN.md Intent coverage. Write
|
|
43
|
+
`- None` when this task owns no INTENT success criterion. -->
|
|
44
|
+
- SC1
|
|
45
|
+
|
|
46
|
+
## Acceptance criteria
|
|
47
|
+
|
|
48
|
+
<!-- Observable. The reviewer checks the diff against exactly these. -->
|
|
49
|
+
1. <behavior/command/output that must be true>
|
|
50
|
+
|
|
51
|
+
## Verify
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
<one command that fails if this task wasn't done; names a path from files>
|
|
55
|
+
```
|
|
56
|
+
<!-- Runs in a fresh sidecar worktree at the landed commit with nothing
|
|
57
|
+
installed. Provision dependencies inside the command when the project
|
|
58
|
+
needs them, e.g. `pnpm install --frozen-lockfile && pnpm vitest run
|
|
59
|
+
src/x.test.ts`. -->
|
|
60
|
+
|
|
61
|
+
Heavy: no <!-- yes when this command must not run beside another heavy Verify -->
|
|
62
|
+
|
|
63
|
+
<!-- Fix tasks only: add ## Review findings before Log, with one
|
|
64
|
+
### <canonical locator> block per group in the helper's batch.
|
|
65
|
+
Each block contains Criterion: <verbatim criterion> and all supplied
|
|
66
|
+
observations verbatim. Set deps to include the source tasks and files
|
|
67
|
+
to the batch's files. Ordinary tasks omit this section. -->
|
|
68
|
+
|
|
69
|
+
## Log
|
|
70
|
+
|
|
71
|
+
<!-- Append-only: coder summary, blocks (`NEEDS-ORCHESTRATOR: <question> —
|
|
72
|
+
readings: <candidates>` for contract ambiguity), orchestrator answers,
|
|
73
|
+
review verdicts, fixes. -->
|
|
74
|
+
- <date> — created by planner
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Panel — wave <N>, cycle <C>
|
|
2
|
+
|
|
3
|
+
<!-- Written by one review-panel child. Advisory only: the inherit reviewer
|
|
4
|
+
owns Wave verdict. Kind criterion may be presented to the user when
|
|
5
|
+
Severity is high; preference stays a warning. -->
|
|
6
|
+
|
|
7
|
+
- Family: <claude | gpt | grok | composer | gemini | deepseek | kimi | qwen>
|
|
8
|
+
- Model: <exact advertised slug>
|
|
9
|
+
- Depth: <full | adversarial>
|
|
10
|
+
|
|
11
|
+
## Findings
|
|
12
|
+
|
|
13
|
+
<!-- One ### F# block per finding, or a single `- none` line. -->
|
|
14
|
+
|
|
15
|
+
### F1
|
|
16
|
+
- Severity: high
|
|
17
|
+
- Kind: criterion
|
|
18
|
+
- Criterion: T001 acceptance 1
|
|
19
|
+
- Evidence: src/app.py:12
|
|
20
|
+
- Found: <what exists instead>
|
|
21
|
+
- Fix direction: <concrete coder direction>
|
|
22
|
+
|
|
23
|
+
## Summary
|
|
24
|
+
|
|
25
|
+
<one paragraph; do not edit code, tasks, or the canonical wave review>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Review — wave <N>, cycle <C>
|
|
2
|
+
|
|
3
|
+
<!-- Written by the reviewer role in wave mode. File: wave-N.cycleC.md —
|
|
4
|
+
deep reviews use wave-N.cycleC.contract.md and
|
|
5
|
+
wave-N.cycleC.adversarial.md instead. Keep validated fields on their
|
|
6
|
+
own lines: Cycle holds only the number
|
|
7
|
+
(C > 1 means re-review after fixes; see previous cycle file). -->
|
|
8
|
+
|
|
9
|
+
<!-- For quick single-full-wave final scope, include these two metadata lines
|
|
10
|
+
with actual values, otherwise omit them:
|
|
11
|
+
Reviewed HEAD: <full review commit SHA>
|
|
12
|
+
Review scope: final
|
|
13
|
+
In each surface SC block also include Surface, Check, and Observed fields
|
|
14
|
+
using the final-review format. Record the actual walkthrough evidence once. -->
|
|
15
|
+
|
|
16
|
+
Wave verdict: <pass | blocked — blocked if any task fails>
|
|
17
|
+
Cycle: <C>
|
|
18
|
+
Depth: <full | deep | verify-only — verify-only is orchestrator-written from
|
|
19
|
+
its isolated Verify evidence; no independent reviewer ran>
|
|
20
|
+
Lens: <contract | adversarial — deep reviews only; empty or omitted
|
|
21
|
+
otherwise>
|
|
22
|
+
Tasks reviewed: <count>
|
|
23
|
+
|
|
24
|
+
## T001 — <title>: <pass | fail>
|
|
25
|
+
|
|
26
|
+
<!-- Per task criterion: copy the full acceptance/interface criterion verbatim
|
|
27
|
+
before the em dash; join wrapped lines with spaces. An AC id or summary
|
|
28
|
+
alone cannot be matched by review_findings.py. -->
|
|
29
|
+
- ✅ <criterion> — <evidence: verify output / file:line checked>
|
|
30
|
+
- ❌ <criterion> — found: <what exists instead, file:line>
|
|
31
|
+
fix: <concrete direction a coder can execute without re-investigating>
|
|
32
|
+
|
|
33
|
+
Warnings (non-blocking):
|
|
34
|
+
- <weakened test / unfailable verify / none>
|
|
35
|
+
|
|
36
|
+
Contract violations (blocking):
|
|
37
|
+
- ❌ <task changed path outside its files list> — <evidence and fix direction>
|
|
38
|
+
|
|
39
|
+
<!-- Repeat per task. -->
|
|
40
|
+
|
|
41
|
+
## Intent coverage
|
|
42
|
+
|
|
43
|
+
<!-- One heading per INTENT.md success criterion owned by a task in this
|
|
44
|
+
wave, ending `: pass` or `: fail`. `scripts/check_handoffs.py wave
|
|
45
|
+
--review <this file>` gates the SC id set and verdicts. Omit this
|
|
46
|
+
section when no task in the wave owns an SC. -->
|
|
47
|
+
|
|
48
|
+
### SC1 — <criterion>: <pass | fail>
|
|
49
|
+
- ✅ <evidence: verify output / file:line checked>
|
|
50
|
+
- ❌ <criterion> — found: <what exists instead, file:line>
|
|
51
|
+
fix: <concrete direction a coder can execute without re-investigating>
|
|
52
|
+
|
|
53
|
+
## Fixed since last cycle
|
|
54
|
+
|
|
55
|
+
<!-- C > 1 only: previously failed criteria now confirmed fixed (re-checked,
|
|
56
|
+
not assumed), and any regressions the fixes introduced. -->
|
|
57
|
+
- <criterion> — confirmed fixed / regressed: <evidence>
|
|
58
|
+
|
|
59
|
+
## Summary for orchestrator
|
|
60
|
+
|
|
61
|
+
- blocked findings: <failed criteria grouped by disjoint file scope; the
|
|
62
|
+
orchestrator applies the configured skeptic or fix-task path>
|
|
63
|
+
- repeat offenders: <criteria failing across cycles — possible plan defect>
|
|
64
|
+
- warnings worth a human eye: <...or none>
|