@opengsd/gsd-path 1.4.0 → 1.6.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/CHANGELOG.md +460 -341
- package/DOCS.md +16 -5
- package/FULL.md +67 -6
- package/HOOKS.md +158 -10
- package/MIGRATE.md +12 -0
- package/QUICK.md +4 -2
- package/README.md +136 -116
- package/RUNTIME.md +24 -6
- package/UPDATE.md +39 -3
- package/WORKFLOW.md +80 -4
- package/package.json +5 -2
- package/platforms/shared-agents/dispatch.md +13 -0
- package/scripts/_common.py +256 -2
- package/scripts/archive_milestone.py +14 -13
- package/scripts/build_recovery.py +155 -58
- package/scripts/build_state.py +274 -8
- package/scripts/check_docs_audit.py +77 -4
- package/scripts/check_handoffs.py +635 -57
- package/scripts/check_task_briefs.py +293 -32
- package/scripts/detect_project.py +260 -20
- package/scripts/discussion_records.py +9 -1
- package/scripts/discussion_validate.py +93 -35
- package/scripts/dispatch_driver.py +549 -53
- package/scripts/git_guard.py +27 -8
- package/scripts/guard_hook.py +2630 -210
- package/scripts/install.mjs +99 -11
- package/scripts/install.py +231 -46
- package/scripts/integration.py +244 -65
- package/scripts/isolation.py +539 -70
- package/scripts/loop_run.py +16 -4
- package/scripts/members.py +77 -32
- package/scripts/migrate_core.py +2 -0
- package/scripts/model_policy.py +5 -1
- package/scripts/path_config.py +3 -3
- package/scripts/pipeline_diagnose.py +17 -2
- package/scripts/pipeline_git.py +131 -42
- package/scripts/pipeline_state.py +139 -39
- package/scripts/pipeline_undo.py +118 -16
- package/scripts/promote_lookahead.py +3 -3
- package/scripts/review_findings.py +180 -44
- package/scripts/roadmap.py +9 -1
- package/scripts/runtime_store.py +21 -2
- package/scripts/skill-resources.json +9 -2
- package/scripts/state_checkpoint.py +39 -36
- package/scripts/state_promote.py +15 -4
- package/scripts/status_runtime.py +22 -4
- package/scripts/task_context.py +14 -3
- package/scripts/wizard.mjs +1 -0
- package/scripts/workflow_run.py +14 -4
- package/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path/DEFINE.md +34 -5
- package/skills/gsd-path/PLAN.md +14 -3
- package/skills/gsd-path/RESEARCH.md +11 -0
- package/skills/gsd-path/ROADMAP.md +16 -6
- package/skills/gsd-path/SHIP.md +32 -5
- package/skills/gsd-path/SKILL.md +52 -24
- package/skills/gsd-path/references/build-native.md +112 -10
- package/skills/gsd-path/references/build-recovery.md +13 -0
- package/skills/gsd-path/references/coder.md +7 -3
- package/skills/gsd-path/references/dispatch.md +13 -0
- package/skills/gsd-path/references/docs-auditor.md +5 -0
- package/skills/gsd-path/references/operating-rules.md +11 -3
- package/skills/gsd-path/references/planner.md +26 -4
- package/skills/gsd-path/references/reviewer-final.md +20 -2
- package/skills/gsd-path/references/reviewer-wave.md +56 -12
- package/skills/gsd-path/references/reviewer.md +3 -1
- package/skills/gsd-path/references/runtime-selection.md +9 -0
- package/skills/gsd-path/references/spec-probes.md +150 -0
- package/skills/gsd-path/scripts/_common.py +256 -2
- package/skills/gsd-path/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path/scripts/build_recovery.py +155 -58
- package/skills/gsd-path/scripts/build_state.py +274 -8
- package/skills/gsd-path/scripts/check_docs_audit.py +77 -4
- package/skills/gsd-path/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path/scripts/detect_project.py +260 -20
- package/skills/gsd-path/scripts/discussion_records.py +9 -1
- package/skills/gsd-path/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path/scripts/dispatch_driver.py +549 -53
- package/skills/gsd-path/scripts/git_guard.py +27 -8
- package/skills/gsd-path/scripts/integration.py +244 -65
- package/skills/gsd-path/scripts/isolation.py +539 -70
- package/skills/gsd-path/scripts/loop_run.py +16 -4
- package/skills/gsd-path/scripts/members.py +77 -32
- package/skills/gsd-path/scripts/model_policy.py +5 -1
- package/skills/gsd-path/scripts/path_config.py +3 -3
- package/skills/gsd-path/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path/scripts/review_findings.py +180 -44
- package/skills/gsd-path/scripts/roadmap.py +9 -1
- package/skills/gsd-path/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path/scripts/state_promote.py +15 -4
- package/skills/gsd-path/scripts/status_runtime.py +22 -4
- package/skills/gsd-path/scripts/task_context.py +14 -3
- package/skills/gsd-path/scripts/workflow_run.py +14 -4
- package/skills/gsd-path/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path/templates/docs-audit.md +5 -1
- package/skills/gsd-path/templates/final-review.md +11 -2
- package/skills/gsd-path/templates/intent.md +30 -0
- package/skills/gsd-path/templates/patch-findings.md +3 -3
- package/skills/gsd-path/templates/plan.md +17 -2
- package/skills/gsd-path/templates/research-handoff.md +14 -3
- package/skills/gsd-path/templates/state.md +2 -1
- package/skills/gsd-path/templates/task.md +1 -0
- package/skills/gsd-path/templates/wave-review.md +28 -9
- package/skills/gsd-path-build/references/build-native.md +112 -10
- package/skills/gsd-path-build/references/build-recovery.md +13 -0
- package/skills/gsd-path-build/references/coder.md +7 -3
- package/skills/gsd-path-build/references/dispatch.md +13 -0
- package/skills/gsd-path-build/references/operating-rules.md +11 -3
- package/skills/gsd-path-build/references/reviewer-final.md +20 -2
- package/skills/gsd-path-build/references/reviewer-wave.md +56 -12
- package/skills/gsd-path-build/references/reviewer.md +3 -1
- package/skills/gsd-path-build/references/runtime-selection.md +9 -0
- package/skills/gsd-path-build/references/spec-probes.md +150 -0
- package/skills/gsd-path-build/scripts/_common.py +256 -2
- package/skills/gsd-path-build/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-build/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-build/scripts/build_state.py +274 -8
- package/skills/gsd-path-build/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-build/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-build/scripts/detect_project.py +260 -20
- package/skills/gsd-path-build/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-build/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-build/scripts/dispatch_driver.py +549 -53
- package/skills/gsd-path-build/scripts/integration.py +244 -65
- package/skills/gsd-path-build/scripts/isolation.py +539 -70
- package/skills/gsd-path-build/scripts/loop_run.py +16 -4
- package/skills/gsd-path-build/scripts/members.py +77 -32
- package/skills/gsd-path-build/scripts/model_policy.py +5 -1
- package/skills/gsd-path-build/scripts/path_config.py +3 -3
- package/skills/gsd-path-build/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-build/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-build/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-build/scripts/review_findings.py +180 -44
- package/skills/gsd-path-build/scripts/roadmap.py +9 -1
- package/skills/gsd-path-build/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-build/scripts/state_promote.py +15 -4
- package/skills/gsd-path-build/scripts/task_context.py +14 -3
- package/skills/gsd-path-build/scripts/workflow_run.py +14 -4
- package/skills/gsd-path-build/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-build/templates/task.md +1 -0
- package/skills/gsd-path-build/templates/wave-review.md +28 -9
- package/skills/gsd-path-decide/references/dispatch.md +13 -0
- package/skills/gsd-path-decide/references/operating-rules.md +11 -3
- package/skills/gsd-path-decide/references/runtime-selection.md +9 -0
- package/skills/gsd-path-decide/scripts/_common.py +256 -2
- package/skills/gsd-path-decide/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-decide/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-decide/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-decide/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-decide/scripts/detect_project.py +260 -20
- package/skills/gsd-path-decide/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-decide/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-decide/scripts/integration.py +244 -65
- package/skills/gsd-path-decide/scripts/isolation.py +539 -70
- package/skills/gsd-path-decide/scripts/loop_run.py +16 -4
- package/skills/gsd-path-decide/scripts/members.py +77 -32
- package/skills/gsd-path-decide/scripts/model_policy.py +5 -1
- package/skills/gsd-path-decide/scripts/path_config.py +3 -3
- package/skills/gsd-path-decide/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-decide/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-decide/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-decide/scripts/roadmap.py +9 -1
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-decide/scripts/state_promote.py +15 -4
- package/skills/gsd-path-decide/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-define/SKILL.md +34 -5
- package/skills/gsd-path-define/references/build-recovery.md +13 -0
- package/skills/gsd-path-define/references/operating-rules.md +11 -3
- package/skills/gsd-path-define/references/runtime-selection.md +9 -0
- package/skills/gsd-path-define/references/spec-probes.md +150 -0
- package/skills/gsd-path-define/scripts/_common.py +256 -2
- package/skills/gsd-path-define/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-define/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-define/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-define/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-define/scripts/detect_project.py +260 -20
- package/skills/gsd-path-define/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-define/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-define/scripts/integration.py +244 -65
- package/skills/gsd-path-define/scripts/isolation.py +539 -70
- package/skills/gsd-path-define/scripts/loop_run.py +16 -4
- package/skills/gsd-path-define/scripts/members.py +77 -32
- package/skills/gsd-path-define/scripts/model_policy.py +5 -1
- package/skills/gsd-path-define/scripts/path_config.py +3 -3
- package/skills/gsd-path-define/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-define/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-define/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-define/scripts/roadmap.py +9 -1
- package/skills/gsd-path-define/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-define/scripts/state_promote.py +15 -4
- package/skills/gsd-path-define/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-define/templates/intent.md +30 -0
- package/skills/gsd-path-define/templates/state.md +2 -1
- package/skills/gsd-path-discuss/references/operating-rules.md +11 -3
- package/skills/gsd-path-discuss/references/runtime-selection.md +9 -0
- package/skills/gsd-path-discuss/scripts/_common.py +256 -2
- package/skills/gsd-path-discuss/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-discuss/scripts/loop_run.py +16 -4
- package/skills/gsd-path-discuss/scripts/model_policy.py +5 -1
- package/skills/gsd-path-discuss/scripts/path_config.py +3 -3
- package/skills/gsd-path-discuss/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-docs-audit/references/dispatch.md +13 -0
- package/skills/gsd-path-docs-audit/references/docs-auditor.md +5 -0
- package/skills/gsd-path-docs-audit/references/operating-rules.md +11 -3
- package/skills/gsd-path-docs-audit/references/runtime-selection.md +9 -0
- package/skills/gsd-path-docs-audit/scripts/_common.py +256 -2
- package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-docs-audit/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +77 -4
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-docs-audit/scripts/detect_project.py +260 -20
- package/skills/gsd-path-docs-audit/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-docs-audit/scripts/integration.py +244 -65
- package/skills/gsd-path-docs-audit/scripts/isolation.py +539 -70
- package/skills/gsd-path-docs-audit/scripts/loop_run.py +16 -4
- package/skills/gsd-path-docs-audit/scripts/members.py +77 -32
- package/skills/gsd-path-docs-audit/scripts/model_policy.py +5 -1
- package/skills/gsd-path-docs-audit/scripts/path_config.py +3 -3
- package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-docs-audit/scripts/roadmap.py +9 -1
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +15 -4
- package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-docs-audit/templates/docs-audit.md +5 -1
- package/skills/gsd-path-forensics/references/operating-rules.md +11 -3
- package/skills/gsd-path-forensics/references/runtime-selection.md +9 -0
- package/skills/gsd-path-forensics/scripts/_common.py +256 -2
- package/skills/gsd-path-forensics/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-forensics/scripts/loop_run.py +16 -4
- package/skills/gsd-path-forensics/scripts/model_policy.py +5 -1
- package/skills/gsd-path-forensics/scripts/path_config.py +3 -3
- package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +17 -2
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +118 -16
- package/skills/gsd-path-forensics/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-inspect/references/dispatch.md +13 -0
- package/skills/gsd-path-inspect/references/docs-auditor.md +5 -0
- package/skills/gsd-path-inspect/references/operating-rules.md +11 -3
- package/skills/gsd-path-inspect/references/runtime-selection.md +9 -0
- package/skills/gsd-path-inspect/scripts/_common.py +256 -2
- package/skills/gsd-path-inspect/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-inspect/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +77 -4
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-inspect/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-inspect/scripts/detect_project.py +260 -20
- package/skills/gsd-path-inspect/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-inspect/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-inspect/scripts/integration.py +244 -65
- package/skills/gsd-path-inspect/scripts/isolation.py +539 -70
- package/skills/gsd-path-inspect/scripts/loop_run.py +16 -4
- package/skills/gsd-path-inspect/scripts/members.py +77 -32
- package/skills/gsd-path-inspect/scripts/model_policy.py +5 -1
- package/skills/gsd-path-inspect/scripts/path_config.py +3 -3
- package/skills/gsd-path-inspect/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-inspect/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-inspect/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-inspect/scripts/roadmap.py +9 -1
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-inspect/scripts/state_promote.py +15 -4
- package/skills/gsd-path-inspect/scripts/workflow_run.py +14 -4
- package/skills/gsd-path-inspect/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-inspect/templates/docs-audit.md +5 -1
- package/skills/gsd-path-inspect/templates/state.md +2 -1
- package/skills/gsd-path-loop/references/operating-rules.md +11 -3
- package/skills/gsd-path-loop/references/runtime-selection.md +9 -0
- package/skills/gsd-path-loop/scripts/_common.py +256 -2
- package/skills/gsd-path-loop/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-loop/scripts/loop_run.py +16 -4
- package/skills/gsd-path-loop/scripts/model_policy.py +5 -1
- package/skills/gsd-path-loop/scripts/path_config.py +3 -3
- package/skills/gsd-path-loop/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-migrate/SKILL.md +8 -0
- package/skills/gsd-path-migrate/references/operating-rules.md +11 -3
- package/skills/gsd-path-migrate/references/runtime-selection.md +9 -0
- package/skills/gsd-path-migrate/scripts/_common.py +256 -2
- package/skills/gsd-path-migrate/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-migrate/scripts/loop_run.py +16 -4
- package/skills/gsd-path-migrate/scripts/migrate_core.py +2 -0
- package/skills/gsd-path-migrate/scripts/model_policy.py +5 -1
- package/skills/gsd-path-migrate/scripts/path_config.py +3 -3
- package/skills/gsd-path-plan/SKILL.md +14 -3
- package/skills/gsd-path-plan/references/build-recovery.md +13 -0
- package/skills/gsd-path-plan/references/dispatch.md +13 -0
- package/skills/gsd-path-plan/references/operating-rules.md +11 -3
- package/skills/gsd-path-plan/references/planner.md +26 -4
- package/skills/gsd-path-plan/references/runtime-selection.md +9 -0
- package/skills/gsd-path-plan/references/spec-probes.md +150 -0
- package/skills/gsd-path-plan/scripts/_common.py +256 -2
- package/skills/gsd-path-plan/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-plan/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-plan/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-plan/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-plan/scripts/detect_project.py +260 -20
- package/skills/gsd-path-plan/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-plan/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-plan/scripts/integration.py +244 -65
- package/skills/gsd-path-plan/scripts/isolation.py +539 -70
- package/skills/gsd-path-plan/scripts/loop_run.py +16 -4
- package/skills/gsd-path-plan/scripts/members.py +77 -32
- package/skills/gsd-path-plan/scripts/model_policy.py +5 -1
- package/skills/gsd-path-plan/scripts/path_config.py +3 -3
- package/skills/gsd-path-plan/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-plan/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-plan/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-plan/scripts/roadmap.py +9 -1
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-plan/scripts/state_promote.py +15 -4
- package/skills/gsd-path-plan/scripts/workflow_run.py +14 -4
- package/skills/gsd-path-plan/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-plan/templates/patch-findings.md +3 -3
- package/skills/gsd-path-plan/templates/plan.md +17 -2
- package/skills/gsd-path-plan/templates/task.md +1 -0
- package/skills/gsd-path-research/SKILL.md +11 -0
- package/skills/gsd-path-research/references/dispatch.md +13 -0
- package/skills/gsd-path-research/references/operating-rules.md +11 -3
- package/skills/gsd-path-research/references/runtime-selection.md +9 -0
- package/skills/gsd-path-research/scripts/_common.py +256 -2
- package/skills/gsd-path-research/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-research/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-research/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-research/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-research/scripts/detect_project.py +260 -20
- package/skills/gsd-path-research/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-research/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-research/scripts/integration.py +244 -65
- package/skills/gsd-path-research/scripts/isolation.py +539 -70
- package/skills/gsd-path-research/scripts/loop_run.py +16 -4
- package/skills/gsd-path-research/scripts/members.py +77 -32
- package/skills/gsd-path-research/scripts/model_policy.py +5 -1
- package/skills/gsd-path-research/scripts/path_config.py +3 -3
- package/skills/gsd-path-research/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-research/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-research/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-research/scripts/roadmap.py +9 -1
- package/skills/gsd-path-research/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-research/scripts/state_promote.py +15 -4
- package/skills/gsd-path-research/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-research/templates/research-handoff.md +14 -3
- package/skills/gsd-path-roadmap/SKILL.md +16 -6
- package/skills/gsd-path-roadmap/references/dispatch.md +13 -0
- package/skills/gsd-path-roadmap/references/operating-rules.md +11 -3
- package/skills/gsd-path-roadmap/references/runtime-selection.md +9 -0
- package/skills/gsd-path-roadmap/scripts/_common.py +256 -2
- package/skills/gsd-path-roadmap/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-roadmap/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-roadmap/scripts/detect_project.py +260 -20
- package/skills/gsd-path-roadmap/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-roadmap/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-roadmap/scripts/integration.py +244 -65
- package/skills/gsd-path-roadmap/scripts/isolation.py +539 -70
- package/skills/gsd-path-roadmap/scripts/loop_run.py +16 -4
- package/skills/gsd-path-roadmap/scripts/members.py +77 -32
- package/skills/gsd-path-roadmap/scripts/model_policy.py +5 -1
- package/skills/gsd-path-roadmap/scripts/path_config.py +3 -3
- package/skills/gsd-path-roadmap/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-roadmap/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-roadmap/scripts/roadmap.py +9 -1
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-roadmap/scripts/state_promote.py +15 -4
- package/skills/gsd-path-roadmap/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-ship/SKILL.md +32 -5
- package/skills/gsd-path-ship/references/dispatch.md +13 -0
- package/skills/gsd-path-ship/references/operating-rules.md +11 -3
- package/skills/gsd-path-ship/references/reviewer-final.md +20 -2
- package/skills/gsd-path-ship/references/reviewer-wave.md +56 -12
- package/skills/gsd-path-ship/references/reviewer.md +3 -1
- package/skills/gsd-path-ship/references/runtime-selection.md +9 -0
- package/skills/gsd-path-ship/references/spec-probes.md +150 -0
- package/skills/gsd-path-ship/scripts/_common.py +256 -2
- package/skills/gsd-path-ship/scripts/archive_milestone.py +14 -13
- package/skills/gsd-path-ship/scripts/build_recovery.py +155 -58
- package/skills/gsd-path-ship/scripts/build_state.py +274 -8
- package/skills/gsd-path-ship/scripts/check_handoffs.py +635 -57
- package/skills/gsd-path-ship/scripts/check_task_briefs.py +293 -32
- package/skills/gsd-path-ship/scripts/detect_project.py +260 -20
- package/skills/gsd-path-ship/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-ship/scripts/discussion_validate.py +93 -35
- package/skills/gsd-path-ship/scripts/integration.py +244 -65
- package/skills/gsd-path-ship/scripts/isolation.py +539 -70
- package/skills/gsd-path-ship/scripts/loop_run.py +16 -4
- package/skills/gsd-path-ship/scripts/members.py +77 -32
- package/skills/gsd-path-ship/scripts/model_policy.py +5 -1
- package/skills/gsd-path-ship/scripts/path_config.py +3 -3
- package/skills/gsd-path-ship/scripts/pipeline_git.py +131 -42
- package/skills/gsd-path-ship/scripts/pipeline_state.py +139 -39
- package/skills/gsd-path-ship/scripts/promote_lookahead.py +3 -3
- package/skills/gsd-path-ship/scripts/roadmap.py +9 -1
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +39 -36
- package/skills/gsd-path-ship/scripts/state_promote.py +15 -4
- package/skills/gsd-path-ship/scripts/workflow_run.py +14 -4
- package/skills/gsd-path-ship/scripts/worktree_paths.py +54 -2
- package/skills/gsd-path-ship/templates/final-review.md +11 -2
- package/skills/gsd-path-ship/templates/patch-findings.md +3 -3
- package/skills/gsd-path-ship/templates/wave-review.md +28 -9
- package/skills/gsd-path-undo/references/operating-rules.md +11 -3
- package/skills/gsd-path-undo/references/runtime-selection.md +9 -0
- package/skills/gsd-path-undo/scripts/_common.py +256 -2
- package/skills/gsd-path-undo/scripts/discussion_records.py +9 -1
- package/skills/gsd-path-undo/scripts/loop_run.py +16 -4
- package/skills/gsd-path-undo/scripts/model_policy.py +5 -1
- package/skills/gsd-path-undo/scripts/path_config.py +3 -3
- package/skills/gsd-path-undo/scripts/pipeline_undo.py +118 -16
- package/skills/gsd-path-undo/scripts/worktree_paths.py +54 -2
- package/skills/path/DEFINE.md +34 -5
- package/skills/path/PLAN.md +14 -3
- package/skills/path/RESEARCH.md +11 -0
- package/skills/path/ROADMAP.md +16 -6
- package/skills/path/SHIP.md +32 -5
- package/skills/path/SKILL.md +52 -24
- package/skills/path/references/build-native.md +112 -10
- package/skills/path/references/build-recovery.md +13 -0
- package/skills/path/references/coder.md +7 -3
- package/skills/path/references/dispatch.md +13 -0
- package/skills/path/references/docs-auditor.md +5 -0
- package/skills/path/references/operating-rules.md +11 -3
- package/skills/path/references/planner.md +26 -4
- package/skills/path/references/reviewer-final.md +20 -2
- package/skills/path/references/reviewer-wave.md +56 -12
- package/skills/path/references/reviewer.md +3 -1
- package/skills/path/references/runtime-selection.md +9 -0
- package/skills/path/references/spec-probes.md +150 -0
- package/skills/path/scripts/_common.py +256 -2
- package/skills/path/scripts/archive_milestone.py +14 -13
- package/skills/path/scripts/build_recovery.py +155 -58
- package/skills/path/scripts/build_state.py +274 -8
- package/skills/path/scripts/check_docs_audit.py +77 -4
- package/skills/path/scripts/check_handoffs.py +635 -57
- package/skills/path/scripts/check_task_briefs.py +293 -32
- package/skills/path/scripts/detect_project.py +260 -20
- package/skills/path/scripts/discussion_records.py +9 -1
- package/skills/path/scripts/discussion_validate.py +93 -35
- package/skills/path/scripts/dispatch_driver.py +549 -53
- package/skills/path/scripts/git_guard.py +27 -8
- package/skills/path/scripts/integration.py +244 -65
- package/skills/path/scripts/isolation.py +539 -70
- package/skills/path/scripts/loop_run.py +16 -4
- package/skills/path/scripts/members.py +77 -32
- package/skills/path/scripts/model_policy.py +5 -1
- package/skills/path/scripts/path_config.py +3 -3
- package/skills/path/scripts/pipeline_git.py +131 -42
- package/skills/path/scripts/pipeline_state.py +139 -39
- package/skills/path/scripts/promote_lookahead.py +3 -3
- package/skills/path/scripts/review_findings.py +180 -44
- package/skills/path/scripts/roadmap.py +9 -1
- package/skills/path/scripts/state_checkpoint.py +39 -36
- package/skills/path/scripts/state_promote.py +15 -4
- package/skills/path/scripts/status_runtime.py +22 -4
- package/skills/path/scripts/task_context.py +14 -3
- package/skills/path/scripts/workflow_run.py +14 -4
- package/skills/path/scripts/worktree_paths.py +54 -2
- package/skills/path/templates/docs-audit.md +5 -1
- package/skills/path/templates/final-review.md +11 -2
- package/skills/path/templates/intent.md +30 -0
- package/skills/path/templates/patch-findings.md +3 -3
- package/skills/path/templates/plan.md +17 -2
- package/skills/path/templates/research-handoff.md +14 -3
- package/skills/path/templates/state.md +2 -1
- package/skills/path/templates/task.md +1 -0
- package/skills/path/templates/wave-review.md +28 -9
- package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
|
@@ -38,8 +38,9 @@ the how.
|
|
|
38
38
|
security-critical; `verify-only` suits polish and low-risk feature waves
|
|
39
39
|
whose Verify commands meaningfully cover the criteria.
|
|
40
40
|
|
|
41
|
-
Every dependency must be in an earlier wave or in the same wave
|
|
42
|
-
|
|
41
|
+
Every dependency must be in an earlier wave or in the same wave. Same-wave
|
|
42
|
+
tasks may share files only when one transitively depends on the other. Produce
|
|
43
|
+
an acyclic graph; same-wave chains execute in layers.
|
|
43
44
|
|
|
44
45
|
Declare a dependency only when something real crosses it: data — the dependent
|
|
45
46
|
consumes a symbol, signature, schema, endpoint, file format, or path named in
|
|
@@ -72,8 +73,17 @@ plan order above, which still keeps plan-invalidating risk in wave 1.
|
|
|
72
73
|
criterion may appear in only one surface block. Put the surface in the same
|
|
73
74
|
wave as the capability behind it. A milestone with a surface is not done
|
|
74
75
|
when only its internals run.
|
|
76
|
+
- When INTENT.md carries `## Edge coverage` or `## Prohibitions` (read the
|
|
77
|
+
supplied [spec-reach probes](spec-probes.md)), treat every ruling as a hard
|
|
78
|
+
limit on its criterion. For each `held-out` edge, write one PLAN.md
|
|
79
|
+
`## Held-out checks` row: a test file in the owning task's `files`, a
|
|
80
|
+
Verify that runs it, and an Acceptance criterion that names the edge id
|
|
81
|
+
and states its ruling from Detail. Omit the section when no edge is
|
|
82
|
+
held-out. Put each `judgment` prohibition's Must not and Detail in the
|
|
83
|
+
owning task's Approach.
|
|
75
84
|
- Make `files` exhaustive, including imports, routes, generated artifacts,
|
|
76
|
-
tests, and wiring. Require disjoint files for same-wave tasks
|
|
85
|
+
tests, and wiring. Require disjoint files for same-wave tasks that are not
|
|
86
|
+
dependency-ordered. A declared directory overlaps every path below it.
|
|
77
87
|
- Write an Interface contract in every task: `None` for independent tasks;
|
|
78
88
|
for any tasks that exchange a symbol, signature, schema, endpoint, file
|
|
79
89
|
format, or path, the exact shapes both sides code against — identical text
|
|
@@ -86,6 +96,18 @@ plan order above, which still keeps plan-invalidating risk in wave 1.
|
|
|
86
96
|
this task's work is skipped. That command must name a path from `files`,
|
|
87
97
|
and must not be PLAN.md's project Verify unless an SC this task owns names
|
|
88
98
|
that command. Criteria and Verify are the contract; Approach is guidance.
|
|
99
|
+
A task that lists a file of an earlier-wave task must also pass that
|
|
100
|
+
task's Verify to land. When it changes that behavior on purpose, list the
|
|
101
|
+
tests that Verify runs in its `files`.
|
|
102
|
+
- Add `supersedes: [<task id>]` only when INTENT.md requires this task to
|
|
103
|
+
remove or replace behavior of an earlier-wave task, and that task's Verify
|
|
104
|
+
cannot pass after the change. The named task must be in an earlier wave,
|
|
105
|
+
in the same repo, and share a file with this task. Its Verify is then
|
|
106
|
+
retired: it does not run at this landing or at a later landing. State the
|
|
107
|
+
replacement in this task's acceptance criteria. This task's Verify then
|
|
108
|
+
runs in its place for each later task that shares a file with the named
|
|
109
|
+
task, so it must check the replacement behavior for all files of that
|
|
110
|
+
task.
|
|
89
111
|
- In a multi-repo milestone (`.project/MEMBERS.md` lists members), each task
|
|
90
112
|
changes exactly one repo. Give a member task `repo: <member>`; its `files`
|
|
91
113
|
and Verify are relative to that member's root, and its Verify runs there.
|
|
@@ -105,7 +127,7 @@ family list. Copy `Finding skeptics:` from INTENT.md into PLAN.md Config as
|
|
|
105
127
|
invent `on`. Quick-lane plans always write both values as `off`.
|
|
106
128
|
|
|
107
129
|
Before returning, check veto exclusion, decision coverage, Intent coverage,
|
|
108
|
-
the Surface contract, dependencies, file overlap, task size, criteria, and
|
|
130
|
+
the Surface contract, Held-out checks, dependencies, file overlap, task size, criteria, and
|
|
109
131
|
Verify commands.
|
|
110
132
|
|
|
111
133
|
Return a brief structured summary: wave count, task count, and the wave-1
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
## Final integration mode
|
|
2
2
|
|
|
3
3
|
Use only final-review.md. Treat INTENT.md success criteria as the rubric.
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
Each `### SCn —` heading must have every word of the criterion in INTENT.md
|
|
5
|
+
`## Success criteria`: join indented continuation lines and sub-bullets
|
|
6
|
+
with a single space. You can keep or remove the `- ` markers of the
|
|
7
|
+
sub-bullets; the gate compares every other word. Exercise the running
|
|
8
|
+
system and record `met`, `not-met`, or
|
|
9
|
+
`unverifiable` with checked command output or a precise file reference.
|
|
10
|
+
When PLAN.md carries
|
|
6
11
|
a `## Surface contract`, every criterion it lists under a surface is checked
|
|
7
12
|
by performing that surface's Walkthrough from its Entry in the supplied
|
|
8
13
|
sidecar: `Surface` names that surface, Check names what was performed,
|
|
@@ -14,6 +19,19 @@ re-run PLAN.md's project Verify; cite the orchestrator's recorded
|
|
|
14
19
|
project-verify sidecar output. `pass`
|
|
15
20
|
requires every criterion to be `met`.
|
|
16
21
|
|
|
22
|
+
When INTENT.md `## Edge coverage` or `## Prohibitions` tags a criterion with a
|
|
23
|
+
`held-out` edge or a `judgment` prohibition, grade that criterion on cited
|
|
24
|
+
evidence for every tag (see the [spec-reach probes](spec-probes.md)). Name
|
|
25
|
+
each id in Check, Observed, or Reference with its evidence: the held-out
|
|
26
|
+
test's recorded passing output from the PLAN.md `## Held-out checks` test, or
|
|
27
|
+
the observed behavior judged against the prohibition's Detail. When a tag's
|
|
28
|
+
evidence is missing, did not run, or cannot be judged, record `unverifiable`
|
|
29
|
+
with `Finding: insufficient spec evidence: <id> <what is missing>` and a Fix
|
|
30
|
+
direction naming the check to add or run. Never mark such a criterion `met`
|
|
31
|
+
on inference or on code that merely looks right; the ship gate refuses a
|
|
32
|
+
`met` verdict that does not cite every tag. Grade untagged criteria as usual:
|
|
33
|
+
the trigger is the INTENT.md tag, never your own doubt.
|
|
34
|
+
|
|
17
35
|
## Final gap mode
|
|
18
36
|
|
|
19
37
|
Use only gap-review.md. Check the one cross-wave risk in the brief against the
|
|
@@ -17,16 +17,26 @@ tasks in this wave as the rubric. For each task:
|
|
|
17
17
|
criterion. Never use the primary worktree or branch tip as task
|
|
18
18
|
evidence. Do not create or remove Git worktrees yourself.
|
|
19
19
|
4. Mark `pass` or `fail`. Before the evidence separator (` — `), copy the
|
|
20
|
-
complete task acceptance or interface criterion
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
complete task acceptance or interface criterion (see Review file format
|
|
21
|
+
below). Do not substitute an AC id or summary: finding grouping binds
|
|
22
|
+
this text to the task. Give the observed result, `file:line`, and
|
|
23
23
|
concrete fix direction for each failure.
|
|
24
24
|
|
|
25
|
+
A Log entry `orchestrator regression Verify of <task id> retired: superseded
|
|
26
|
+
by <task id>` is not evidence: judge the superseding task's acceptance
|
|
27
|
+
criteria. The same applies to the entry `orchestrator regression Verify of
|
|
28
|
+
<fix task id>: part of <task id> retired: superseded by <task id>`.
|
|
29
|
+
|
|
25
30
|
Then check each INTENT.md success criterion owned by a task in this wave
|
|
26
|
-
against that same isolated product.
|
|
27
|
-
INTENT.md
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
against that same isolated product. In each `### SCn —` heading, copy the
|
|
32
|
+
complete criterion text from INTENT.md `## Success criteria` (see Review
|
|
33
|
+
file format below). Mark `pass` or `fail` with evidence; a failed owned SC
|
|
34
|
+
blocks the wave. Omit the Intent coverage section when no task in the wave owns
|
|
35
|
+
an SC. When INTENT.md `## Edge coverage` or `## Prohibitions` has rows for
|
|
36
|
+
an owned SC, judge it against those rulings too: cite each `held-out` edge
|
|
37
|
+
id with its held-out test's recorded output and each `judgment` prohibition
|
|
38
|
+
id with what you observed. A missing held-out result or a violated ruling
|
|
39
|
+
fails the SC.
|
|
30
40
|
|
|
31
41
|
Allow changed paths only in the task's `files` plus its assigned task file.
|
|
32
42
|
Within the task file, allow orchestrator-owned `base`, `worktree`,
|
|
@@ -40,6 +50,30 @@ For cycle greater than 1, read the previous review, re-check every failure,
|
|
|
40
50
|
and regression-check affected passes. State when the same criterion fails for
|
|
41
51
|
a different reason. Use only the wave-review template.
|
|
42
52
|
|
|
53
|
+
### Review file format
|
|
54
|
+
|
|
55
|
+
`scripts/check_handoffs.py wave` rejects a review file that breaks one of
|
|
56
|
+
these rules, and `scripts/review_findings.py` cannot group a failure whose
|
|
57
|
+
criterion text does not match. Apply the rules before you write the file.
|
|
58
|
+
|
|
59
|
+
- **Section order.** Put the `## T### —` sections in task id order (T001
|
|
60
|
+
before T002). The order of the PLAN.md wave table does not apply. A `pass`
|
|
61
|
+
review has one section for each task of the wave.
|
|
62
|
+
- **Section heading.** Write `## T### — <title>: pass` or `: fail`, where
|
|
63
|
+
`<title>` is the exact `title:` value of the task file.
|
|
64
|
+
- **Evidence lines.** An evidence line starts with `- ✅ ` for pass or
|
|
65
|
+
`- ❌ ` for fail. Each task section and each `### SCn —` block needs one
|
|
66
|
+
or more lines with the marker of its own verdict. A failed task needs a
|
|
67
|
+
`- ❌ ` criterion line, also when other text describes the failure.
|
|
68
|
+
- **Criterion text.** In a task evidence line and in a `### SCn —` heading,
|
|
69
|
+
copy every word of the criterion. Join wrapped lines and sub-bullets with
|
|
70
|
+
one space. You can keep or remove the `- ` markers of the sub-bullets.
|
|
71
|
+
A changed, added, removed or moved word does not match.
|
|
72
|
+
- **Angle brackets.** Text such as `<b>` or `<path>` outside backticks reads
|
|
73
|
+
as an unfilled template placeholder and is rejected. Write literal markup
|
|
74
|
+
and code in backticks inside a sentence, for example: the output has
|
|
75
|
+
`<b>hello</b>`.
|
|
76
|
+
|
|
43
77
|
### Re-review after a proven repair
|
|
44
78
|
|
|
45
79
|
When the brief supplies a `review_findings.py repair-evidence` receipt, use
|
|
@@ -47,14 +81,21 @@ its isolated repair product for the linked original criteria, including owned
|
|
|
47
81
|
INTENT criteria. The original faulty landing and earlier verdicts remain
|
|
48
82
|
historical evidence; they do not force the later verdict to remain failed.
|
|
49
83
|
Reconstruct the receipt's repair `base` plus only its `commit^..commit` patch
|
|
50
|
-
for `files` inside the supplied sidecar.
|
|
51
|
-
|
|
84
|
+
for `files` inside the supplied sidecar. For a member repair (the receipt
|
|
85
|
+
names `member`), use `member_base` and `member_commit` in that member's
|
|
86
|
+
repository. `earlier_repairs` are linked repairs of the same findings that
|
|
87
|
+
are already in the repair base. When the receipt has `later_repairs`, linked
|
|
88
|
+
repairs changed the same files after this repair: apply their patches in
|
|
89
|
+
order too. Read the repair task's recorded
|
|
90
|
+
Verify, or with `later_repairs` that of the last one, which is the receipt's
|
|
91
|
+
`verification`; inspect the patch against the original unchanged contract, and reuse
|
|
52
92
|
settled checks. Check unaffected criteria from their prior evidence plus the
|
|
53
93
|
repair diff for regressions. Cite the receipt, repair landing and task Log in
|
|
54
94
|
the new review. A receipt proves provenance, not acceptance: judge whether the
|
|
55
95
|
repair actually satisfies the criterion. A missing or rejected receipt blocks
|
|
56
|
-
using that repair; the parent resolves it
|
|
57
|
-
|
|
96
|
+
using that repair; the parent resolves it, or briefs this review in full at
|
|
97
|
+
the current HEAD without a receipt, rather than creating another product fix
|
|
98
|
+
for the unchanged historical failure.
|
|
58
99
|
|
|
59
100
|
## Final scope in a quick full wave
|
|
60
101
|
|
|
@@ -65,7 +106,10 @@ criterion's Intent coverage block includes `- **Surface**:`, `- **Check**:`, and
|
|
|
65
106
|
`- **Observed**:` with the walked states and actual result. `Surface` holds
|
|
66
107
|
exactly the surface name from PLAN's Surface contract; walkthrough detail belongs
|
|
67
108
|
in Check and Observed. Reuse recorded task
|
|
68
|
-
output if it proves that exact walkthrough; run only a missing check.
|
|
109
|
+
output if it proves that exact walkthrough; run only a missing check. Cite
|
|
110
|
+
every `held-out` edge and `judgment` prohibition id of each criterion in its
|
|
111
|
+
evidence; shipping derives FINAL.md from these records, and an uncited id
|
|
112
|
+
sends the milestone to a dispatched final review instead. Final-scope
|
|
69
113
|
coverage shares this wave artifact; do not write a second report. Shipping's
|
|
70
114
|
runtime checks freshness and derives the final view from these records.
|
|
71
115
|
|
|
@@ -46,7 +46,9 @@ Resolve sibling links against this role file's directory.
|
|
|
46
46
|
from the same model family is one evidence path; independence comes
|
|
47
47
|
from re-run evidence, different sources, or a different model family.
|
|
48
48
|
- Pass any reasonable satisfied reading of an ambiguous wave criterion and
|
|
49
|
-
warn that it needs tightening.
|
|
49
|
+
warn that it needs tightening, unless INTENT.md `## Edge coverage` or
|
|
50
|
+
`## Prohibitions` rules on that reading: a ruling there binds, and a
|
|
51
|
+
reading that contradicts it fails.
|
|
50
52
|
- Do not edit code, tasks, plans, or implementation state.
|
|
51
53
|
|
|
52
54
|
Return verdicts and the review output path without extra prose.
|
|
@@ -20,6 +20,15 @@ references to bundled copies of those helpers. Other skill helpers, templates,
|
|
|
20
20
|
and role briefs remain in the installed skill bundle. Pass `-B` to Python helper
|
|
21
21
|
invocations so execution does not create bytecode in the runtime store.
|
|
22
22
|
|
|
23
|
+
The selected runtime is authoritative for each helper in its `manifest.json`;
|
|
24
|
+
this includes `review_findings.py` and `task_context.py`. A selected runtime
|
|
25
|
+
that was published before a helper became a runtime file does not list that
|
|
26
|
+
helper: run the bundled copy until the project runtime is upgraded.
|
|
27
|
+
`dispatch_driver.py` and `workflow_run.py` always run from the installed skill
|
|
28
|
+
bundle, because they read role briefs and templates from it; a skill update
|
|
29
|
+
replaces them, a runtime upgrade does not. The driver reloads the helper modules
|
|
30
|
+
that it imports from the selected runtime.
|
|
31
|
+
|
|
23
32
|
With no declaration, retain the legacy helper lookup. An existing
|
|
24
33
|
`.gsd-path/runtime/` requires the explicit `--runtime-migrate --project PATH`
|
|
25
34
|
operation before adopting external storage; review the resulting Git diff.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Spec-reach probes
|
|
2
|
+
|
|
3
|
+
Define runs two probes over the success criteria before approval: the edge
|
|
4
|
+
probe (what each criterion must do at its edges) and the prohibition probe
|
|
5
|
+
(what each criterion must never silently become). Both leave a table in
|
|
6
|
+
INTENT.md. Plan, build review, and final review read those tables; the
|
|
7
|
+
`check_handoffs.py intent`, `plan`, and `final` gates enforce them.
|
|
8
|
+
|
|
9
|
+
## Why define owns this
|
|
10
|
+
|
|
11
|
+
A reviewer can only check what the intent states. An edge nobody wrote down
|
|
12
|
+
is never checked: final review covers exactly the INTENT success criteria,
|
|
13
|
+
and a reviewer passes any reasonable reading of an ambiguous one. Model
|
|
14
|
+
reviewers are also confidently wrong on exactly these gaps. On three tasks
|
|
15
|
+
whose correct behavior the spec left unstated, LLM verifier verdicts caught
|
|
16
|
+
the defect 0 times in 12 while a held-out test caught all three; in a larger
|
|
17
|
+
replication, stating the surfaced edge in the spec raised the verifier's
|
|
18
|
+
catch rate to 98% ([Verifier Reach Is Spec Reach](https://github.com/davesienkowski/verifier-reach-is-spec-reach)).
|
|
19
|
+
A smarter reviewer does not close that gap; a wider intent does. The user is
|
|
20
|
+
present at define, so define is where the edge gets its ruling.
|
|
21
|
+
|
|
22
|
+
## Edge probe
|
|
23
|
+
|
|
24
|
+
Walk every success criterion:
|
|
25
|
+
|
|
26
|
+
1. Name the data shapes the criterion handles, then raise only the
|
|
27
|
+
categories those shapes reach:
|
|
28
|
+
|
|
29
|
+
| Shape | Categories |
|
|
30
|
+
|-------|------------|
|
|
31
|
+
| numeric range, dates, money, counts | boundary, precision |
|
|
32
|
+
| list, set, rows, intervals | adjacency, empty, ordering |
|
|
33
|
+
| text, names, identifiers | empty, encoding |
|
|
34
|
+
| state that persists or repeats | idempotency, concurrency |
|
|
35
|
+
| files, network, processes | concurrency |
|
|
36
|
+
|
|
37
|
+
2. For each raised category, write one concrete candidate edge and the
|
|
38
|
+
ruling you recommend:
|
|
39
|
+
|
|
40
|
+
| Category | Probe question |
|
|
41
|
+
|----------|----------------|
|
|
42
|
+
| boundary | What happens exactly at each minimum, maximum, or threshold, and one step either side? |
|
|
43
|
+
| adjacency | When two items are equal or just touch, do they merge, collide, or stay separate? |
|
|
44
|
+
| empty | What is the result for empty, single-item, or missing input? |
|
|
45
|
+
| encoding | Whose length or equality applies: bytes, code points, grapheme clusters, normalized form, case? |
|
|
46
|
+
| ordering | When items compare equal, is output order specified and stable? |
|
|
47
|
+
| precision | Where can rounding, overflow, or truncation happen, and which rule applies? |
|
|
48
|
+
| idempotency | What happens when this runs twice on the same input? |
|
|
49
|
+
| concurrency | If interrupted or run in parallel, what is guaranteed? |
|
|
50
|
+
|
|
51
|
+
3. Ask the user in one small round, all criteria together, recommended
|
|
52
|
+
ruling first. Never rule on an edge's behavior yourself: the correct
|
|
53
|
+
answer is exactly what the criteria did not say, so a guess here is the
|
|
54
|
+
defect this probe exists to prevent. Under pre-approval, an edge whose
|
|
55
|
+
behavior the user has not stated is still a required answer: stop and
|
|
56
|
+
ask instead of ruling.
|
|
57
|
+
|
|
58
|
+
4. Record each ruling as one row:
|
|
59
|
+
- `criterion SCn` when the answer is observable where the user sees the
|
|
60
|
+
work. Add or amend that success criterion (define owns criteria), then
|
|
61
|
+
point the row at it. An existing criterion that already states the
|
|
62
|
+
edge may be named directly.
|
|
63
|
+
- `held-out` when the answer is a precise rule or a set of examples that
|
|
64
|
+
belongs in a test rather than a user-facing criterion (a normalization
|
|
65
|
+
form, a rounding rule, an inclusive bound on an internal API). Write the
|
|
66
|
+
ruling or the user's examples verbatim in Detail. The plan must schedule
|
|
67
|
+
a named test that pins it.
|
|
68
|
+
- `dismissed` when the edge cannot occur for this criterion. Detail says
|
|
69
|
+
why ("input is a closed enum"). "Not important" is not a reason.
|
|
70
|
+
|
|
71
|
+
Every criterion gets at least one row. A criterion with no data shape gets
|
|
72
|
+
one row with category `none`, dismissed with its reason.
|
|
73
|
+
|
|
74
|
+
## Prohibition probe
|
|
75
|
+
|
|
76
|
+
Walk every success criterion with one adversarial question: what could this
|
|
77
|
+
silently become that the user would not want, although nothing in INTENT.md
|
|
78
|
+
forbids it? Generate candidates privately, then keep only values, safety,
|
|
79
|
+
privacy, fairness, and transparency items: "must not email unsubscribed
|
|
80
|
+
users", "must not store raw card numbers in logs", "must not use guilt
|
|
81
|
+
wording". Drop routine engineering items (mutating input, throwing on empty
|
|
82
|
+
input, leaking handles); those are edges or ordinary review. Do not mint
|
|
83
|
+
generic security or compliance canon (injection, path traversal, data
|
|
84
|
+
retention law); record a real compliance need under Constraints instead.
|
|
85
|
+
Expect two or three kept items for work people touch, and often none for
|
|
86
|
+
internals.
|
|
87
|
+
|
|
88
|
+
Present the kept items with a recommended ruling and record each as a row:
|
|
89
|
+
|
|
90
|
+
- `criterion SCn` when a test or command can check it. State it as a
|
|
91
|
+
success criterion and point the row at it.
|
|
92
|
+
- `judgment` when it is real but not mechanically checkable. Detail says
|
|
93
|
+
what the final reviewer looks for.
|
|
94
|
+
- `dismissed` when the user rules it out. Detail records the reason.
|
|
95
|
+
|
|
96
|
+
Work that affects no person directly records a single row instead, and no
|
|
97
|
+
other: `| N1 | all | none | dismissed | <why no person is affected> |`.
|
|
98
|
+
|
|
99
|
+
## INTENT.md tables
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
## Edge coverage
|
|
103
|
+
|
|
104
|
+
| Edge | Criterion | Category | Disposition | Detail |
|
|
105
|
+
|------|-----------|----------|-------------|--------|
|
|
106
|
+
| E1 | SC1 | boundary | criterion SC4 | |
|
|
107
|
+
| E2 | SC1 | empty | dismissed | the command always receives at least one file |
|
|
108
|
+
| E3 | SC2 | encoding | held-out | names compare by NFC code points, case-sensitive |
|
|
109
|
+
|
|
110
|
+
## Prohibitions
|
|
111
|
+
|
|
112
|
+
| Prohibition | Criterion | Must not | Disposition | Detail |
|
|
113
|
+
|-------------|-----------|----------|-------------|--------|
|
|
114
|
+
| N1 | SC2 | send a reminder to an unsubscribed user | criterion SC5 | |
|
|
115
|
+
| N2 | SC2 | use guilt or shame wording | judgment | reminder copy is neutral and states only the due item |
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Ids are contiguous from `E1` and `N1`. Detail is required for every row that
|
|
119
|
+
is not `criterion SCn`. The headings are exact: `## Edge coverage` and
|
|
120
|
+
`## Prohibitions`. An INTENT.md without them predates the probes and is not
|
|
121
|
+
rechecked; a near-miss heading fails the gate rather than switching it off.
|
|
122
|
+
|
|
123
|
+
## Downstream
|
|
124
|
+
|
|
125
|
+
- **Plan.** Every `held-out` edge gets one PLAN.md `## Held-out checks` row
|
|
126
|
+
naming the task that owns the edge's criterion and the test file (a
|
|
127
|
+
`path::test_name` node id is fine). That file is listed in the task's
|
|
128
|
+
`files`, the task's Verify runs it, and the task's Acceptance criteria
|
|
129
|
+
state the edge id and its ruling. A `criterion SCn` row needs nothing extra: SCn is
|
|
130
|
+
already covered like any criterion. A `judgment` prohibition belongs in
|
|
131
|
+
the owning task's Approach so the coder knows the line.
|
|
132
|
+
- **Review.** A row pins the reading of its criterion. A reviewer does not
|
|
133
|
+
pass a reading that contradicts a ruling in either table, and cites each
|
|
134
|
+
held-out edge and judgment prohibition id with its evidence.
|
|
135
|
+
- **Final review.** A criterion that carries a held-out edge or a judgment
|
|
136
|
+
prohibition is `met` only when its Check, Observed, or Reference cites
|
|
137
|
+
every such id with the evidence: the held-out test's recorded passing
|
|
138
|
+
output, or the observed behavior judged against Detail. When that
|
|
139
|
+
evidence is missing, did not run, or cannot be judged, record
|
|
140
|
+
`unverifiable` with `Finding: insufficient spec evidence: <id> ...`;
|
|
141
|
+
never `met` on inference. The trigger is the tag, not reviewer doubt:
|
|
142
|
+
criteria without a tag are graded as usual and never abstained.
|
|
143
|
+
|
|
144
|
+
## What the gates can and cannot prove
|
|
145
|
+
|
|
146
|
+
`check_handoffs.py intent` (before approval and again when define records
|
|
147
|
+
approval), `plan`, and `final` prove the tables are complete, every held-out
|
|
148
|
+
edge has a scheduled test, and every tagged `met` cites its tags. They cannot
|
|
149
|
+
prove who made a ruling or that a cited result says what the verdict claims.
|
|
150
|
+
Those stay with the define conversation and the reviewer's recorded evidence.
|