@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
package/CHANGELOG.md
CHANGED
|
@@ -3,379 +3,498 @@
|
|
|
3
3
|
All notable changes to [@opengsd/gsd-path](https://www.npmjs.com/package/@opengsd/gsd-path)
|
|
4
4
|
are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
This file covers the npm package: the skills, the installer, the pipeline
|
|
7
|
+
scripts and project runtime, the guard hooks, and their documentation. Until
|
|
8
|
+
1.4.0 it also lists changes to the monitor daemon and its dashboard, which are
|
|
9
|
+
in this repository but not in the npm package. From October 2026 the desktop
|
|
10
|
+
app and the daemon have their own file,
|
|
11
|
+
[daemon/app/CHANGELOG.md](daemon/app/CHANGELOG.md). Release bookkeeping and
|
|
12
|
+
test-only changes are not listed; the Git history has them.
|
|
13
|
+
|
|
14
|
+
## [1.6.0] - 2026-10-12
|
|
7
15
|
|
|
8
16
|
### Added
|
|
9
|
-
-
|
|
10
|
-
-
|
|
17
|
+
- let a later task supersede an earlier task and retire its Verify
|
|
18
|
+
- document the default branch record of a member
|
|
19
|
+
- member paths read the default branch that MEMBERS.md records
|
|
20
|
+
- record the default branch of a member in MEMBERS.md
|
|
21
|
+
- add --uninstall to the skill installers
|
|
22
|
+
- expose default_branch to the router and document the rule
|
|
23
|
+
- refuse members under a coordinator whose default branch is not main
|
|
24
|
+
- status, promotion and the git guard follow STATE default_branch
|
|
25
|
+
- integrate and validate on the default branch that STATE records
|
|
26
|
+
- bind milestones at the default branch that STATE records
|
|
27
|
+
- record the origin default branch in STATE at initialization
|
|
11
28
|
|
|
12
29
|
### Changed
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
30
|
+
- make each checkpoint commit different in the stale sidecar test
|
|
31
|
+
- record 1.6.0 live release evidence
|
|
32
|
+
- prepare 1.6.0 minor candidate
|
|
33
|
+
- Merge main into fix/issue-392-wave-review-validator
|
|
34
|
+
- Merge main into fix/issue-393-helper-papercuts
|
|
35
|
+
- Merge main into fix/issue-357-regression-verify
|
|
36
|
+
- Merge main into fix/issue-358-multi-repo-batches
|
|
37
|
+
- Merge main into fix/issue-390-build-helpers-runtime
|
|
38
|
+
- state the repair base-to-landing rule in build-native.md
|
|
39
|
+
- document supersedes gate rule in plan skill
|
|
40
|
+
- describe finish retry, stale Verify sidecar, leftover isolate
|
|
41
|
+
- document retired Verify key in RUNTIME.md
|
|
42
|
+
- name per-repo batching in review_findings docstring
|
|
43
|
+
- correct task_review_observation docstring after marker-tolerant matching
|
|
44
|
+
- state the wave review format rules and name them in the gate errors
|
|
45
|
+
- Document alias denial in directories that do not exist
|
|
46
|
+
- a done task brief with a deleted Context path does not fail later lint
|
|
47
|
+
- Document directory overlap rule in planner brief
|
|
48
|
+
- prove the issue 374 fixes through the real commands
|
|
49
|
+
- prove a define re-slice that removes a surface reaches the plan gate
|
|
50
|
+
- Merge remote-tracking branch 'origin/main' into fix/issue-344-scope-destructive-git-guards
|
|
51
|
+
- correct fix-tasks carried rule in RUNTIME.md
|
|
52
|
+
- document regression Verify at landing in RUNTIME.md
|
|
53
|
+
- point stale Python-installer flag lists to README
|
|
54
|
+
- say how more than one person can work on a project
|
|
55
|
+
- show host proof tiers in README and QUICK
|
|
56
|
+
- Document literal attestation limit for declared directories
|
|
57
|
+
- Align coder file-scope rule with declared-directory landing
|
|
58
|
+
- add contributing guide, security policy, and issue forms
|
|
59
|
+
- style: fix assignment spacing in round lint test
|
|
60
|
+
- prove round lint accepts dependency-supplied contract paths
|
|
61
|
+
- bind the next milestone after a direct ship on a master default
|
|
62
|
+
- Add GitHub Actions workflow for Discord changelog
|
|
63
|
+
- update release notes for v1.5.0
|
|
64
|
+
- quote portable repository paths in shell fixture
|
|
16
65
|
|
|
17
|
-
###
|
|
18
|
-
-
|
|
19
|
-
-
|
|
66
|
+
### Fixed
|
|
67
|
+
- plan gate reads a declared directory when it checks supersedes
|
|
68
|
+
- give no removal advice for an isolate that holds a gitignored file
|
|
69
|
+
- replace a stale Verify sidecar only when it is proven untouched
|
|
70
|
+
- check the chain files from the repair base, not from the repair landing
|
|
71
|
+
- read update-ref, branch and worktree targets as Git does
|
|
72
|
+
- deny scoped deletions when the guard cannot prove the repository
|
|
73
|
+
- link review repairs by finding, not by criterion text alone
|
|
74
|
+
- give a superseding task the protective role of the task it supersedes
|
|
75
|
+
- check the files of every later linked repair before a chain receipt
|
|
76
|
+
- name only the leftover isolate when a landed task could not be cleaned up
|
|
77
|
+
- make only sub-bullet line markers optional in a criterion quote
|
|
78
|
+
- give a receipt to a chain of review repairs on the same files
|
|
79
|
+
- report a landed task as landed when the removal of its isolate fails
|
|
80
|
+
- deliver review_findings and task_context through the project runtime
|
|
81
|
+
- prove a member review repair in the member repository
|
|
82
|
+
- match a quoted criterion without the list markers of its sub-bullets
|
|
83
|
+
- let finish run again after a failed serial Verify, and prepare-task replace a stale Verify sidecar
|
|
84
|
+
- accept a review repair whose files are not in its fix batch
|
|
85
|
+
- report unreviewed earlier waves in ready and prove repair-wave order
|
|
86
|
+
- say how to record a Log event when a transition changes no field
|
|
87
|
+
- tell the user how to get the full SHA when a ref is refused
|
|
88
|
+
- name the differing identity field when a model policy record does not match
|
|
89
|
+
- a review cycle replaces an older one only with a valid wave verdict
|
|
90
|
+
- land tasks that share an earlier task one at a time
|
|
91
|
+
- list worktrees on Git versions without worktree list -z
|
|
92
|
+
- keep tracked cd targets valid with the scoped deletion rules
|
|
93
|
+
- keep ordinary Git commands allowed with env and in new directories
|
|
94
|
+
- accept an unset base milestone only for a closed build recovery
|
|
95
|
+
- keep review evidence checks when a criterion number repeats
|
|
96
|
+
- keep the fallback for a missing bundled helper module
|
|
97
|
+
- git guard uses main when STATE has no default_branch
|
|
98
|
+
- do not skip an earlier Verify because its text is in the own Verify
|
|
99
|
+
- treat a declared directory and a path below it as overlapping files
|
|
100
|
+
- accept a default branch that starts with origin/ at ship
|
|
101
|
+
- re-raise an import error from inside a bundled helper module
|
|
102
|
+
- keep a blocked review cycle until a newer cycle has a verdict
|
|
103
|
+
- keep the cap exemption when a cap line carries the template comment
|
|
104
|
+
- run earlier-wave Verify at landing when a task edits the same files
|
|
105
|
+
- keep each review repair in one repo and lint landed briefs as history
|
|
106
|
+
- give a repeat finding its next repair and ignore repairs of a replaced review
|
|
107
|
+
- land files under a declared files directory
|
|
108
|
+
- let a define-entered re-slice amend the active roadmap entry
|
|
109
|
+
- keep wave reviews when a plan repair changes only caps or dependency notes
|
|
110
|
+
- drop superseded review cycles from the dashboard attention list
|
|
111
|
+
- load bundled helpers when a foreign `scripts` package is importable
|
|
112
|
+
- tolerate repeated criterion numbers and unset recovery base milestone
|
|
113
|
+
- chain an existing Git hook instead of refusing the hook install
|
|
114
|
+
- accept external-landing proof when the forge deletes the bound branch
|
|
115
|
+
- fail early on a non-main default and document external-landing
|
|
116
|
+
- cover all parameter syntaxes in scoped deletion
|
|
117
|
+
- fail closed on literal parameter target ambiguity
|
|
118
|
+
- scope destructive Git cleanup to Path-owned targets
|
|
20
119
|
|
|
21
|
-
|
|
120
|
+
### Other
|
|
121
|
+
- Resolve macOS temp path in ownership scope test fixture
|
|
122
|
+
- Check unfolded and folded readings of process substitutions
|
|
123
|
+
- Fold process substitutions; count only real earlier Git commands
|
|
124
|
+
- Check each reading of inexact Git commands; limit descriptor denial
|
|
125
|
+
- Split separator-joined redirections; read attached printf -v name
|
|
126
|
+
- Strip shell redirections before Git detection; keep alias words
|
|
127
|
+
- Both Windows failures have one cause, and it is a test defect, not a product defect. The fix is one line in `tests/test_member_native.py`; it is not committed. **Cause.** The failing assertion is the second leftover check in `test_next_finish_names_only_the_leftover_sidecar_of_a_landed_member_task` (line 136). The test's `attempt()` helper writes `app.py` with `write_text("v2\n")`, which is `v2\r\n` on Windows, and CI runs with `core.autocrlf=false`, so the landed blob is CRLF. The test then wrote the file back with `write_bytes(b"v2\n")`. On Windows those bytes are not the landed blob, so the driver correctly gave no "remove its leftover isolate" stop and reported `landed`, and the test raised `KeyError: 'reason'`. **Invariant.** A test that puts a "landed" file back must write the same bytes that were landed, on every platform. This was the only place in the branch's new tests that broke it: the sibling leftover tests in `test_dispatch_driver.py` and `test_isolation.py` pass on Windows. **Fix.** The restore now uses the same `write_text("v2\n", encoding="utf-8")` call as `attempt()`. No product code changed, so no generated copies needed a sync. **Verification (macOS only; no Windows run was possible here).** - `python3 -m unittest tests.test_member_native`: 6 tests pass. - With `Path.write_text` patched to write CRLF for `app.py` (to emulate Windows), the original test fails with the same `KeyError: 'reason'` at line 136, and the fixed test passes
|
|
128
|
+
- Read redirections and Git context names as the shell does
|
|
129
|
+
- list a part as retired only when dropped; document it
|
|
130
|
+
- record each retired part of a fix-task Verify
|
|
131
|
+
- retire copied Verify in fix tasks; restore _task_deps
|
|
132
|
+
- Prefer exact criterion quote; join any-indent sub-bullets
|
|
133
|
+
- give the leftover-isolate stop only after a content check
|
|
134
|
+
- Cause: both Windows checks fail in one test only, `test_gsd_path_text_in_a_path_does_not_make_a_worktree_path_owned` (18 subtest failures = 6 targets x 3 pipeline states). The test put a native path, not quoted, into a Bash command. On Windows the path has backslashes, Bash word splitting removes them (`C:\Users\x` becomes `C:Usersx`), and the guard correctly answers "needs a literal target". The guard code is correct; the test was not cross-platform. Invariant: a test that puts a filesystem path into a shell command must quote it, so the guard sees the same path on each OS. Fix (tests/test_guard_hook.py only, no change to scripts/guard_hook.py): - The two commands in the failing test now use `shlex.quote(str(target))`, the convention the file already uses in other tests. - Same edit at the two sibling sites in `test_forced_worktree_remove_checks_registered_path_and_owner` (`{task_worktree}`, `{managed}`). They passed on Windows only because `assert_denied` accepts any denial reason, so they did not test ownership there. - No other unquoted path interpolation into a `worktree remove` command exists in tests/test_guard_hook.py, tests/test_guard_hook_windows.py or tests/test_git_guard.py. Verification: the two changed tests pass locally on macOS (2 tests, OK). A check with `shlex.split` on a sample Windows path shows the unquoted form loses the backslashes and the quoted form keeps them. Not verified: an actual Windows run; that needs the next CI run. The full test suite was not run, because only two test methods changed. Changes are in the working tree, not committed
|
|
135
|
+
- restore the exact-heading repair marker test method
|
|
136
|
+
- align plan gate supersedes with runtime; trim reviewer rule
|
|
137
|
+
- match em-dash criteria in review_findings; correct placeholder message
|
|
138
|
+
- leave landed repair waves out of unreviewed_waves
|
|
139
|
+
- scope guard built-ins and worktree ownership correctly
|
|
140
|
+
- void wave reviews on any review_panel line change
|
|
141
|
+
- Cause: the PR's new test `test_validate_refuses_a_default_branch_that_cannot_be_recorded` (tests/test_members.py) wrote a MEMBERS.md row with `Checkout: /x`. On Windows `/x` is not an absolute path, so `members.py validate` stopped at the earlier check (`Checkout must be absolute`) and never reached the `Default branch` check. All 3 subtests failed on both Windows jobs (3.9 and 3.12, shard 2). The product code is correct. Invariant: a test row that targets one validation rule must be valid for every earlier rule on every OS. Sites checked in the changed area: - `test_validate_refuses_a_default_branch_that_cannot_be_recorded`: violated, fixed. - `repeated default branch` case in `test_validate_refuses_malformed_members_file` (also added by this PR, also uses `/x`): holds. It asserts only `MEMBERS.md` in stderr and passed on Windows. Not changed. Fix (1 line, test only): the row now uses `Checkout: {self.root / 'web'}`, which is absolute on each OS. This is the same pattern as the existing row at tests/test_members.py:190. Verification (macOS, local): - `python3 -m unittest tests.test_members -k default_branch`: 6 tests, OK. - Mutation check: with the `valid_default_branch` check in scripts/members.py disabled, the test fails with `failures=3`. The mutation was reverted; only tests/test_members.py is changed. - Not run on Windows locally. The Windows result depends on the next CI run. The change is not committed. The test-writer and ponytail skills were not invoked for this one-line test edit
|
|
142
|
+
- drop dash from cap value class, allow cost caps
|
|
143
|
+
- compare Config as raw text except cap values
|
|
144
|
+
- accept member-create rerun on row without default branch
|
|
145
|
+
- All 4 failing checks have one cause: the two new tests `test_land_staging_failure_reports_git_stderr` and `test_checkpoint_staging_failure_reports_git_stderr` in `tests/test_isolation.py` ("IsolationError not raised"). The fix is a test-only change in the helper `refuse_crlf_staging`; the product code is correct and is not changed. Root cause: the helper made `git add` fail with repository config `core.autocrlf=input` + `core.safecrlf=true`. The CI test runner (`scripts/dev/py.mjs`) sets `core.autocrlf=false` through `GIT_CONFIG_*` environment variables, and the environment overrides repository config. Thus on CI git did no CRLF conversion, `git add` passed, and no error was raised. The tests passed with plain `python3 -m unittest`, which is why the failure was not seen before the push. This is not an OS or git-version problem (Linux and Windows failed the same way). Invariant: a test that needs `git add` to fail must not depend on a git setting that the test runner overrides. The helper is the one shared boundary; only these two tests use it. No other test in this change sets `core.autocrlf`. Fix: the helper now writes `* text eol=lf` to `.git/info/attributes` (an attribute overrides `core.autocrlf`, and the file is outside the work tree, so it adds no pending path) and keeps `core.safecrlf=true`. The assertions are unchanged: they still require the error to end with git's stderr ("CRLF would be replaced by LF") and HEAD to stay at the base. Verification: - Reproduced the CI failure locally through `node scripts/dev/py.mjs` before the fix (2 failures). - After the fix the two tests pass through `node scripts/dev/py.mjs`, with plain `python3`, and with `core.autocrlf=true` forced through the environment. - Full `tests/test_isolation.py` through the CI runner: 155 tests, 1 failure. That failure is `RecoverTests.test_serial_task_recovers_after_only_project_bookkeeping_commits` (blocked subtest: verdict 'none', expected 'reconcile'). It also fails when run alone, it does not use the changed helper, the test and the recover code are not in this PR's diff, and CI reported only the two staging tests as failures. I did not change it. It looks like a local-environment difference (local git is 2.54, CI is 2.55), but I did not find its cause. Not run: the full repository suite and the Windows jobs (CI owns those)
|
|
146
|
+
- identify replaced-review repairs by history, not name
|
|
147
|
+
- split cap lines like the Config parser
|
|
148
|
+
- state Codex native hook needs trust in README
|
|
149
|
+
- keep cap lines with comment markers under Config guard
|
|
150
|
+
- correct canonical-file rule in CONTRIBUTING.md
|
|
151
|
+
- journal recovery_reviews so resumed approvals report dropped reviews
|
|
152
|
+
## [1.5.0] - 2026-10-09
|
|
22
153
|
|
|
23
154
|
### Added
|
|
24
|
-
-
|
|
25
|
-
- add
|
|
26
|
-
-
|
|
27
|
-
-
|
|
155
|
+
- record runtime hotfix provenance on the declaration
|
|
156
|
+
- add signed self-update
|
|
157
|
+
- add the Skills, Stats, Settings, and Environment pages and the setup wizard
|
|
158
|
+
- register the hosts, project operation, and env routes
|
|
159
|
+
- add project setup operations for the app
|
|
160
|
+
- detect installed coding agents
|
|
161
|
+
- add the env file module for the app's Environment page
|
|
162
|
+
- add the stats route for the app's charts
|
|
163
|
+
- add the project board, project page, and tray popover
|
|
164
|
+
- add the Tauri shell and React setup screens
|
|
165
|
+
- add settings and diagnostics routes
|
|
166
|
+
- install skills from the verified npm release
|
|
167
|
+
- report requirements in the launch check
|
|
168
|
+
- add the launch check for the native app
|
|
169
|
+
- add --require-token to gate POST routes
|
|
170
|
+
- add external-landing mode for forge-neutral ship
|
|
171
|
+
- add Muse Code as a shared-agents host
|
|
172
|
+
- rule on edges and prohibitions at define, gate held-out checks at plan and final
|
|
28
173
|
|
|
29
174
|
### Changed
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
175
|
+
- prepare 1.5.0 minor candidate
|
|
176
|
+
- point trust evidence link to current receipts
|
|
177
|
+
- refresh all seven host release receipts
|
|
178
|
+
- Name interactive.diffFilter in HOOKS.md executed-key list
|
|
179
|
+
- align guard, worktree pin, provenance, planner docs
|
|
180
|
+
- sync generated skill resource copies
|
|
181
|
+
- describe daemon hook-op migration and default hosts
|
|
182
|
+
- app: migrate a legacy runtime in the same click as a hook action
|
|
183
|
+
- app: send a legacy runtime to the update, not a hook refresh
|
|
184
|
+
- say macOS app builds are signed and notarized
|
|
185
|
+
- app: prepare 0.1.1, the first signed macOS build
|
|
186
|
+
- prove signing setup keeps keychain on success
|
|
187
|
+
- app: delete signing keychain on setup failure
|
|
188
|
+
- remove stale unsigned-build text after macOS signing
|
|
189
|
+
- app: sign and notarize macOS builds in the release workflow
|
|
190
|
+
- make diagnostic command assertion platform independent
|
|
191
|
+
- clarify patch finding source fields (#326)
|
|
192
|
+
- require maintainer rewrite of drafted changelog entry
|
|
193
|
+
- strengthen alias update regression assertions
|
|
194
|
+
- assert router alias payload refreshes on update
|
|
195
|
+
- rewrite the changelog entries for readers
|
|
196
|
+
- list the release upload script test in RELEASE.md
|
|
197
|
+
- prove the release upload script on macOS, Windows, and Linux runners
|
|
198
|
+
- Sync generated skill resource copies
|
|
199
|
+
- cover dispatch brief bases and in-flight lint regressions
|
|
200
|
+
- describe the desktop app in the README and add its changelog
|
|
201
|
+
- Document round exit-receipt reread in RUNTIME.md
|
|
202
|
+
- Merge validated main integration while preserving PR history
|
|
203
|
+
- Update ADR 0004 for Windows pinned-handle evidence reads
|
|
204
|
+
- sync detect_project skill copies
|
|
205
|
+
- correct app update check and release facts
|
|
206
|
+
- point README page list at route.ts
|
|
207
|
+
- Fix daemon README same-origin list and hosts docstring
|
|
208
|
+
- add app workflows to the RELEASE.md CI table
|
|
209
|
+
- Merge remote-tracking branch 'origin/main' into HEAD
|
|
210
|
+
- build tester installers on app-v tags and run shell tests
|
|
211
|
+
- Revert "fix: treat empty .project directory trees as greenfield (#273) (#292)"
|
|
212
|
+
- Revert "fix: reject Verify commands the host guard would refuse at plan time (#302)"
|
|
213
|
+
- Revert "fix(guard): allow read-only closed-milestone shell between ship and bind-next (#301)"
|
|
214
|
+
- match only real pip commands in the launch tests
|
|
215
|
+
- document INTENT SC heading text for multi-line criteria (#279) (#303)
|
|
216
|
+
- align plugin source wording with npm release source
|
|
217
|
+
- Document daemon version and pid in /status
|
|
218
|
+
- record native app design handoff and React frontend ruling
|
|
219
|
+
- run pinned-runtime reload in subprocess to avoid import pollution
|
|
220
|
+
- merge main: integrate #254/#265 and keep pinned-runtime test cleanup
|
|
221
|
+
- sync skill copies for state_checkpoint landed base fix
|
|
222
|
+
- sync skill copies for landed member base fix
|
|
223
|
+
- double-restore bundled scripts after pinned-runtime test
|
|
224
|
+
- drop pinned-runtime tests from native-attempt PR (#209 owns them)
|
|
225
|
+
- Revert "test: restore bundled scripts after pinned-runtime reload test"
|
|
226
|
+
- restore bundled scripts after pinned-runtime reload test
|
|
227
|
+
- invoke pipeline_state CLI from bundled script path
|
|
228
|
+
- retrigger checks
|
|
229
|
+
- sync skill copies after isolation change
|
|
230
|
+
- revert: keep ca89 dispatch finish path that passes member round tests
|
|
231
|
+
- merge main
|
|
232
|
+
- platform-neutral PowerShell path quoting expectation
|
|
233
|
+
- sync worktree_paths skill copies
|
|
234
|
+
- align package verify graph with main (drop stray check:locks)
|
|
235
|
+
- sync state_checkpoint skill copies
|
|
236
|
+
- expect LF-normalized intent hash for CRLF on-disk files
|
|
237
|
+
- skip WSL drvfs mount probes on Windows CI
|
|
238
|
+
- merge main into cursor/fix-spec-reach-probes-f72c
|
|
239
|
+
- merge main and sync skill resources
|
|
240
|
+
- merge main into cursor/fix-git-worktree-legacy-f72c
|
|
241
|
+
- merge main into cursor/fix-task-briefs-plan-deps-f72c
|
|
242
|
+
- merge main into cursor/fix-windows-member-lock-run-shell-f72c
|
|
243
|
+
- patch os.path.normcase in Windows session path test
|
|
244
|
+
- fix Windows normcase test on Linux CI (create=True, patch sep)
|
|
245
|
+
- sync detect_project copies after listdir_anchored fix
|
|
246
|
+
- update release notes for v1.4.0
|
|
247
|
+
- Point local shard command at py.mjs wrapper
|
|
248
|
+
- shard the Windows Python suite
|
|
51
249
|
|
|
52
250
|
### Fixed
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
251
|
+
- parse research questions with backticks
|
|
252
|
+
- Fix package-level dispatch resource defaults
|
|
253
|
+
- deny git -c keys whose value git executes
|
|
254
|
+
- close zsh flag and escaped-marker gaps in the git parameter exception
|
|
255
|
+
- review findings on the 353 branch
|
|
256
|
+
- dispatch footguns from the 1.4.0 multi-repo field report
|
|
257
|
+
- dashboard probe resolves the pinned runtime via the project launcher
|
|
258
|
+
- guard hook precision for read-only commands
|
|
259
|
+
- allow same-wave file overlap between dependency-ordered tasks
|
|
260
|
+
- members validate and repair stop rejecting the refs Path creates
|
|
261
|
+
- lint landed member briefs at their member base
|
|
262
|
+
- ignore stale retired bind-next journals
|
|
263
|
+
- recover blocked serial tasks and retire unused verify sidecars
|
|
264
|
+
- preserve code spans in archive validation (#328)
|
|
265
|
+
- allow proven safe shell guard commands
|
|
266
|
+
- tolerate bytecode caches in pinned runtimes
|
|
267
|
+
- validate superseded wave review cycles together
|
|
268
|
+
- prioritize repair waves after blocked review (#315)
|
|
269
|
+
- accept prepared archive ship log events
|
|
270
|
+
- exclude Python bytecode from npm releases
|
|
271
|
+
- stabilize docs audit numbering (#299)
|
|
272
|
+
- allow research questions across multiple dimensions
|
|
273
|
+
- fix installer ownership of prerelease aliases
|
|
274
|
+
- fix installer recognition of suffixed versions
|
|
275
|
+
- Fix dispatch task brief validation bases
|
|
276
|
+
- find release files without globstar in the app release workflow
|
|
277
|
+
- reread task exit receipt before marking orphaned
|
|
278
|
+
- verify Windows pins and drain refused POST bodies
|
|
279
|
+
- list Windows evidence dirs by path while opens stay handle-relative
|
|
280
|
+
- anchor detect_project evidence reads on pinned handles
|
|
281
|
+
- remove the host guard Verify check that PR #305 carried from #302
|
|
282
|
+
- reject Verify commands the host guard would refuse at plan time (#302)
|
|
283
|
+
- tolerate missing lower milestone archives (#269) (#306)
|
|
284
|
+
- treat superseded wave review cycles as history (#274, #278) (#305)
|
|
285
|
+
- allow plan intent corrections to return to define (#304)
|
|
286
|
+
- allow read-only closed-milestone shell between ship and bind-next (#301)
|
|
287
|
+
- Fix final-review HEAD checks to allow runtime-pin commits (#297)
|
|
288
|
+
- require wave evidence line in quick-lane final scope template (#296)
|
|
289
|
+
- tighten task brief path token detection (#281) (#295)
|
|
290
|
+
- Fix multiline review bullet field parsing for final gate and archive (#294)
|
|
291
|
+
- Fix Surfaces parsing to split only on top-level commas (#293)
|
|
292
|
+
- treat empty .project directory trees as greenfield (#273) (#292)
|
|
293
|
+
- isolate pinned-runtime in-process test and reload order
|
|
294
|
+
- parse frontmatter # only as YAML comment (#268) (#289)
|
|
295
|
+
- keep the pinned-runtime reload test out of suite discovery
|
|
296
|
+
- landed member base resolution and missing STATE.md dispatch records
|
|
297
|
+
- resolve landed member base on coordinator or member repo
|
|
298
|
+
- allow dispatch records when STATE.md is absent
|
|
299
|
+
- validate landed member task base in member repo
|
|
300
|
+
- do not refresh native shell when prior attempt is blocked
|
|
301
|
+
- restore finish_task landing flow while keeping native shell refresh
|
|
302
|
+
- validate landed member task bases on coordinator
|
|
303
|
+
- member finish verify logging and force sidecar retirement
|
|
304
|
+
- allow force member sidecar retirement without task-file rejection gate
|
|
305
|
+
- pass task-file when force-retiring member sidecars
|
|
306
|
+
- record member verify on coordinator task and force-retire sidecar
|
|
307
|
+
- resolve landed member bases on coordinator and finish native member dispatches cleanly
|
|
308
|
+
- refresh native dispatch shells on re-activation and prefer live task state at finish
|
|
309
|
+
- exclude check_lock_usage from LK_LOCK self-scan
|
|
310
|
+
- reject Windows symlinks and junctions in handle-based reads
|
|
311
|
+
- lazy pipeline_git import with git fallback for skill bundles
|
|
312
|
+
- prefer isolation import before scripts package
|
|
313
|
+
- treat native shells as pre-spawn, not orphaned
|
|
314
|
+
- phase-gate shell writes only on bound milestone branch in-tree
|
|
315
|
+
- Windows parity for file reads, subprocess, tray, and install
|
|
316
|
+
- record native activations for attempt limits
|
|
317
|
+
- WSL drvfs index.lock workaround for state commits
|
|
318
|
+
- phase-gate shell writes to product files
|
|
319
|
+
- load pinned runtime helpers in dispatch_driver
|
|
320
|
+
- ignore same-wave overlap between landed tasks
|
|
321
|
+
- normalize CRLF in user-edited pipeline text
|
|
322
|
+
- prefer scripts.isolation when scripts/ is on sys.path
|
|
323
|
+
- worktree list without -z and posix show paths
|
|
324
|
+
- allow optional git trailers after ship commit body
|
|
325
|
+
- align gate-plan task brief check with approval checkpoint
|
|
326
|
+
- allow path_config model-policy.json at approval
|
|
327
|
+
- list .project through fresh directory fd on Linux
|
|
328
|
+
- member landing lock and spec command timeout drain
|
|
329
|
+
- copy staged skill entries into reserved directory
|
|
57
330
|
|
|
58
331
|
### Other
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
|
|
70
|
-
|
|
332
|
+
- fix install command receipts and 1.4.0 trust evidence
|
|
333
|
+
- deny pager.<cmd> config keys that git executes
|
|
334
|
+
- parse runner short options as getopt, deny non-literal option words
|
|
335
|
+
- deny file-valued runner options and non-literal runner operands
|
|
336
|
+
- unwrap command runners so git checks reach payload
|
|
337
|
+
- scope git wrapper denial to exec-prefix programs
|
|
338
|
+
- deny git behind programs the guard does not model
|
|
339
|
+
- deny unresolved git option words and credential helpers
|
|
340
|
+
- deny joined continuations and expanding git option values
|
|
341
|
+
- require literal git subcommand, deny comments in git config
|
|
342
|
+
- deny non-literal git config arguments
|
|
343
|
+
- treat only one ASCII digit as redirection file descriptor
|
|
344
|
+
- allow redirected git config reads, keep digit sets denied
|
|
345
|
+
- deny gpg program keys and redirected git config sets
|
|
346
|
+
- parse git config modes; .git/config append stays open
|
|
347
|
+
- close executed git config keys, persisted form, disabling values
|
|
348
|
+
- narrow zsh flag detector and cover git -C paths
|
|
349
|
+
- keep exact --text allowed under git option prefix rule
|
|
350
|
+
- match denied git options by abbreviated prefix
|
|
351
|
+
- deny parameters in command-valued git options
|
|
352
|
+
- accept only plain name expansions in git parameter exception
|
|
353
|
+
- deny git parameters inside wrapped shell strings
|
|
354
|
+
- fail closed on unrecognized quoting in git parameter exception
|
|
355
|
+
- allow git parameters only inside double-quoted spans
|
|
356
|
+
- deny bare and substituted parameters in read-only git arguments
|
|
357
|
+
- fix guard fail-opens and remaining 353 review findings
|
|
358
|
+
- app: Add guards uses installed agents when no hosts sent
|
|
359
|
+
- narrow macOS signing claim to Privacy & Security approval
|
|
360
|
+
- Correct unsupported Fixed and Security changelog entries
|
|
361
|
+
- assert incomplete builds upload nothing at all
|
|
362
|
+
- Insert new changelog entries above existing entries
|
|
363
|
+
- Restore Windows start step in manual monitor README section
|
|
364
|
+
- Classify directory SKILL.md marker as unverified on Windows
|
|
365
|
+
- Reject symlinked SKILL.md marker in Windows bundle probe
|
|
366
|
+
- Detect junctions at held Windows handles; stat-only file opens
|
|
367
|
+
- stop daemon before install, add .deb update, tray dialog
|
|
368
|
+
- Cause: GitGuardian reported one "Generic High Entropy Secret" in commit be3bd5d4, file daemon/app/src/mocks/environment.ts line 10. The value was `tsk_mock_8f3a91c2d7`, a made-up key for TYPESAFE_API_KEY in the dev-only browser mock. It is not a real credential, so nothing needs rotation. Fix: replaced the value with the plain placeholder `mock-api-key` (one line). No other file uses the old value. No test added: this is mock data, not logic. Verification: `tsc --noEmit` is clean and Vitest passes (14 files, 226 tests). GitGuardian was not run locally, so the check result is not confirmed. Remaining risk: GitGuardian scans each commit of the PR, and commit be3bd5d4 still contains the old string. The check can stay red after this commit. If it does, the owner has two options: mark incident 37796517 as a false positive / test credential in the GitGuardian dashboard, or rewrite the branch history to drop the string from be3bd5d4. I did neither: the dashboard needs the owner's account, and a history rewrite plus push is outside this phase
|
|
369
|
+
- compare with release in use, share plugin state
|
|
370
|
+
- unify update rules, badge count, and env switch
|
|
371
|
+
- Fix hooks-init host flags and member hook state
|
|
372
|
+
- Fix env quoted values, host commands, None phase
|
|
373
|
+
- Remove command line from port owner detail
|
|
374
|
+
- Report program name, pass PATH to children, handle Reopen
|
|
375
|
+
- Serialize boot, refresh PATH, fix port screen and autostart
|
|
376
|
+
- The fix is in place, but the Windows failure is not reproduced locally (macOS); only CI on Windows can confirm it. - **Cause:** `test_foreign_host_refused` got `WinError 10053` on `/api/config/parents`. `do_POST` in `daemon/gsd_daemon/serve.py` sent a refusal (403 or 415) without reading the request body. On Windows, a socket closed with unread data resets the connection, so the client can lose the reply. This is a timing race, which is why only one shard and one route failed. - **Origin:** the same-origin refusal is already on main, so the race is not new in this PR. The token refusal that this PR adds has the same exposure. - **Fix:** `do_POST` now reads the full body (per `Content-Length`) before any reply and gives it to the route handlers through `self.rfile`. It is one change at the top of `do_POST`, plus `import io`. It covers all refusals, the 404, and `/api/refresh`. The check order (origin 403, content type 415, token 403) and the route handlers are unchanged. - **Behavior change:** a negative `Content-Length` is now read as 0. Before, the server waited on the socket. - **Verification:** `python3 -m unittest tests.test_daemon_serve` ran 32 tests, all OK. I added no test, because the existing `PostOriginTests` is the test that fails on Windows. - **Not done:** the ponytail and test-writer skills were not run as separate steps, and the change is not committed; it is one modified file in the worktree
|
|
377
|
+
- Keep unknown config keys, wake poll, mask log credentials
|
|
378
|
+
- Apply settings under scan lock; skip session scan in request
|
|
379
|
+
- Harden daemon settings routes: atomic save, host check, finite prices
|
|
380
|
+
- compare updates with release in use; refuse git-source selection
|
|
381
|
+
- fail loud on unpublished pin; reject prerelease selection
|
|
382
|
+
- Two test defects from this PR are fixed in tests/test_daemon_launch.py. No product code changed. The other failures are not from this change. Caused by this PR (fixed): 1. daemon, verify (18), verify (20): test_other_service_on_port_blocks_without_install failed on Linux. The assertion `runner.ran("pip") == []` matches by substring, so it caught the Linux-only python-venv check `python -c "import ensurepip"`. The assertion now checks that no `python -m venv` command ran, which is the first step of an install. 2. windows (3.9 and 3.12, shard 0): three LegacyAutostartTests run with platform="darwin" and reach `os.getuid()`, which does not exist on Windows. They now skip when `os.getuid` is absent, the same rule tests/test_daemon_install.py uses. Not caused by this PR (no change): - windows (3.9 and 3.12, shard 3): the 3.12 log shows only two test_member_tasks errors; I did not read the 3.9 log. - verify (18): the other 43 errors are in test_member_*, test_pipeline_*, test_workflow_architecture, test_trust_evidence and one test_rebase_recovery test. I did not read the verify (20) log beyond the excerpt. - The intent names all of these suites except test_rebase_recovery as the main-branch pollution from PR #260. These checks stay red until that separate fix lands. Verification: - RED: the CI log shows the Linux failure (`['.../python3', '-c', 'import ensurepip']] != []`) and the Windows AttributeError on `os.getuid`. - GREEN: `python3 -m unittest discover -s tests -p test_daemon_launch.py` ran 30 tests, OK (macOS). The changed test also passes with the installer platform forced to linux. With `os.getuid` removed, LegacyAutostartTests ran 6 tests, OK, 3 skipped. - Sabotage: with the port problem made non-blocking, the changed test fails. - Not run locally: the tests on real Linux or Windows, and the full suite
|
|
383
|
+
- Make the temporary daemon build copy user-writable
|
|
384
|
+
- Report failed legacy cleanup as non-blocking; check venv pip
|
|
385
|
+
- Harden launch check requirements and error reporting
|
|
386
|
+
- record env route flag rule and browser transport
|
|
387
|
+
- record read-only browser and token-gated env rulings
|
|
388
|
+
## [1.4.0] - 2026-09-30
|
|
71
389
|
|
|
72
390
|
### Added
|
|
73
|
-
-
|
|
391
|
+
- **Multi-repo milestones.** One coordinator project can plan, build, review,
|
|
392
|
+
and ship tasks in other repositories (members). A task names its repository
|
|
393
|
+
with `repo:`. Each member gets a marker, guard hooks
|
|
394
|
+
(`--member-of`), a Path-owned checkout for its tasks, and a bound branch at
|
|
395
|
+
build start. Landings in two repositories are journaled so an interrupted
|
|
396
|
+
one can be finished. Members integrate by direct merge or pull request, and
|
|
397
|
+
a member landing can be undone. A member accepts a push only with an
|
|
398
|
+
authorization for that ref, and refuses symlinked lock, marker, and task
|
|
399
|
+
copy paths.
|
|
400
|
+
- **Native Windows support.** The installer, hooks, state locking, dispatch,
|
|
401
|
+
Verify commands, and the project runtime run on Windows with Git for
|
|
402
|
+
Windows (Git Bash). A Windows job in CI now blocks a merge.
|
|
403
|
+
- **Managed `AGENTS.md` block.** The installer adds a marked Path block to an
|
|
404
|
+
existing `AGENTS.md` and keeps the owner's text, on update and on uninstall.
|
|
405
|
+
The block is smaller; phase rules moved into the skills.
|
|
406
|
+
- **Pre-approved gates.** `--pre-approve intent,plan` grants the intent and
|
|
407
|
+
plan approvals for one milestone, for unattended quick-lane runs (#150).
|
|
408
|
+
Ship approval stays manual.
|
|
409
|
+
- **Native retry.** A failed task that was dispatched natively can be retried
|
|
410
|
+
and finished, also for a member task.
|
|
74
411
|
|
|
75
412
|
### Changed
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
-
|
|
413
|
+
- The verify ledger records the repository of each row, and a build stops when
|
|
414
|
+
a member repository changed outside Path.
|
|
415
|
+
- The monitor daemon refuses POST requests from other websites and requests
|
|
416
|
+
that are not JSON.
|
|
417
|
+
- The dashboard and the tray show the project folder beside the worktree and
|
|
418
|
+
wrap long paths.
|
|
79
419
|
|
|
80
420
|
### Fixed
|
|
81
|
-
-
|
|
82
|
-
|
|
83
|
-
-
|
|
421
|
+
- An ignored `.DS_Store` inside `.project` no longer blocks setup, landings, or
|
|
422
|
+
the ship check (#149).
|
|
423
|
+
- A landing is refused when ignore rules hide `.project` state (#145).
|
|
424
|
+
- `finish` lands parallel tasks that were dispatched natively (#142).
|
|
425
|
+
- `retire` recovers a task worktree that was only half retired (#143).
|
|
426
|
+
- Empty host `.claude` folders are removed before `.project` gates (#144).
|
|
427
|
+
- The docs audit keeps `Repo root` on the primary repository (#148).
|
|
428
|
+
- A build checkpoint commits a verify ledger that old ignore rules hid (#158).
|
|
429
|
+
- The decide phase can run the research handoff check.
|
|
430
|
+
- The installer names a working path when `--project` finds an existing
|
|
431
|
+
contract.
|
|
432
|
+
- The update notice says that local edits to skills are not carried forward
|
|
433
|
+
(#151).
|
|
84
434
|
|
|
85
|
-
###
|
|
86
|
-
-
|
|
87
|
-
|
|
435
|
+
### Security
|
|
436
|
+
- Guard bypasses through Git Bash paths and directory junctions on Windows are
|
|
437
|
+
closed.
|
|
88
438
|
|
|
89
439
|
## [1.3.1] - 2026-09-22
|
|
90
440
|
|
|
91
441
|
### Changed
|
|
92
|
-
-
|
|
93
|
-
- Consolidate legacy runtime migration guidance
|
|
94
|
-
- prepare 1.3.1 patch candidate
|
|
95
|
-
- Clarify legacy runtime migration documentation
|
|
96
|
-
- update release notes for v1.3.0
|
|
442
|
+
- Clearer guidance for the legacy runtime migration and its backup.
|
|
97
443
|
|
|
98
444
|
### Fixed
|
|
99
|
-
-
|
|
100
|
-
|
|
445
|
+
- The legacy runtime migration keeps older runtime folders that Git does not
|
|
446
|
+
track, and the installer help describes this case.
|
|
101
447
|
|
|
102
|
-
## [1.
|
|
448
|
+
## [1.3.0] - 2026-09-21
|
|
449
|
+
|
|
450
|
+
### Added
|
|
451
|
+
- An upgrade moves a legacy in-repository runtime out of the project and
|
|
452
|
+
leaves a backup to review (`--runtime-migrate`).
|
|
453
|
+
|
|
454
|
+
### Changed
|
|
455
|
+
- On Cursor and Copilot, only the reviewer corrects a review, and only while
|
|
456
|
+
its review cycle is open. A closed review cycle is not rewritten.
|
|
457
|
+
|
|
458
|
+
## [1.2.0] - 2026-09-20
|
|
103
459
|
|
|
104
460
|
### Added
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
-
|
|
118
|
-
|
|
119
|
-
- add member mode to git guard with push authorization (S2b)
|
|
120
|
-
- add multi-repo member role marker (S2a)
|
|
121
|
-
- add multi-repo member contract (S1)
|
|
461
|
+
- **Path settings.** Set the shipping mode, the review panel, and the model and
|
|
462
|
+
effort per role, for the user or for one project, in the dashboard or with
|
|
463
|
+
`path_config.py`.
|
|
464
|
+
- **Project history in the dashboard.** Browse project files and archived
|
|
465
|
+
milestones, read a file at any Git commit, and load the full recorded
|
|
466
|
+
evidence.
|
|
467
|
+
- **Optional Jev evidence screening.** Reviewers can ask for an advisory check
|
|
468
|
+
of chosen criteria and evidence. It is off by default and never replaces a
|
|
469
|
+
recorded review or Verify.
|
|
470
|
+
- **External worktrees and pinned runtimes.** Task, verification, and
|
|
471
|
+
integration worktrees live outside the project checkout. A project pins its
|
|
472
|
+
runtime version by content digest, with upgrade and restore commands.
|
|
473
|
+
- **One model policy.** User, project, host, and task choices for sub-agent
|
|
474
|
+
models go through one resolver. A recorded assignment stays pinned.
|
|
122
475
|
|
|
123
476
|
### Changed
|
|
124
|
-
-
|
|
125
|
-
|
|
126
|
-
-
|
|
127
|
-
|
|
128
|
-
- multi-repo: native retry for a failed member task
|
|
129
|
-
- Refresh multi-repo activation docs and host guidance
|
|
130
|
-
- multi-repo: native member task dispatch
|
|
131
|
-
- evaluate_host: keep the release addendum on the quick scenario only
|
|
132
|
-
- multi-repo S5d: two-repo host scenario
|
|
133
|
-
- Clarify optional hooks and remove obsolete gate note
|
|
134
|
-
- multi-repo S5c: activate member execution and document it
|
|
135
|
-
- Correct S5b member documentation
|
|
136
|
-
- record app release tags and Linux formats
|
|
137
|
-
- daemon: refuse cross-site and non-JSON POSTs
|
|
138
|
-
- plan a native dashboard app for every OS
|
|
139
|
-
- multi-repo S5b: greenfield members and member detect
|
|
140
|
-
- Make ReplaceTests portable to POSIX Python 3.9
|
|
141
|
-
- Align two-repo proof documentation with test coverage
|
|
142
|
-
- multi-repo S5a: two-repo full-cycle proof
|
|
143
|
-
- Point lookahead drift guidance to S4d
|
|
144
|
-
- multi-repo S4d: member lookahead drift check
|
|
145
|
-
- Clarify active milestone member status documentation
|
|
146
|
-
- multi-repo S4c3: member plan check, status, and diagnose
|
|
147
|
-
- Document member undo safeguards
|
|
148
|
-
- multi-repo S4c2: undo a member landing
|
|
149
|
-
- Document member retirement guards and correct proof scope
|
|
150
|
-
- multi-repo S4c1: retire member bound branches at bind-next
|
|
151
|
-
- Exercise core.autocrlf=true in the attributes test under the dev runner
|
|
152
|
-
- Keep .project LF under core.autocrlf=true with a local attributes rule
|
|
153
|
-
- Port the member-close changes from main to native Windows
|
|
154
|
-
- Patch only the probe module's os in the Windows retry test
|
|
155
|
-
- Port the multi-repo member tests to native Windows
|
|
156
|
-
- Run the native Windows gate in CI and make it blocking
|
|
157
|
-
- Never skip an archive check because resolve() raised on Windows
|
|
158
|
-
- Decode test subprocess output as UTF-8
|
|
159
|
-
- Use the directory mutex for the discussion lock outside git on Windows
|
|
160
|
-
- Make member-isolation and release-receipt tests portable to Windows
|
|
161
|
-
- Decode archive and projection test output as UTF-8
|
|
162
|
-
- Lock discussions outside git on Windows and report sync paths with slashes
|
|
163
|
-
- Type guard-test helper paths the way Git Bash agents do
|
|
164
|
-
- Retry installer lock and skill-directory moves on Windows
|
|
165
|
-
- Make installer and core-migration tests portable to Windows
|
|
166
|
-
- Keep doctor running when git is not on PATH on Windows
|
|
167
|
-
- Make the runtime lifecycle tests portable to Windows
|
|
168
|
-
- Retry runtime directory renames on Windows and copy the launcher exactly
|
|
169
|
-
- Expect native paths in the Zed and Grok host command tests
|
|
170
|
-
- Close OpenCode session-store connections so Windows can delete them
|
|
171
|
-
- Read dispatch briefs as UTF-8 in the fake children
|
|
172
|
-
- Send native Windows relative paths to git with forward slashes
|
|
173
|
-
- Make daemon tests platform-correct on Windows
|
|
174
|
-
- Write plugin-managed files as UTF-8 bytes
|
|
175
|
-
- Keep discovered project roots in their original case on Windows
|
|
176
|
-
- Compare lookahead layout as POSIX paths on Windows
|
|
177
|
-
- Resolve codex through PATHEXT in the Codex evaluation harness
|
|
178
|
-
- Shadow the real codex in the evaluate_codex test on Windows
|
|
179
|
-
- Keep tests from ever reaching a real GitHub account
|
|
180
|
-
- Send subprocess input to git byte-exact on Windows
|
|
181
|
-
- Document native Windows requirements
|
|
182
|
-
- Make the Node suite and dev runner portable to Windows
|
|
183
|
-
- Make test fixtures portable to Windows
|
|
184
|
-
- Update member ship documentation and sync skill copies
|
|
185
|
-
- multi-repo S4b2b: post-commit member ship checks
|
|
186
|
-
- tests: hold and reap dispatch wrappers started in-process
|
|
187
|
-
- Align multi-repo work plan with S4b2a
|
|
188
|
-
- Reuse a final-scope wave review whose Surface field carries detail
|
|
189
|
-
- tests: keep git auto-maintenance in the foreground
|
|
190
|
-
- multi-repo S4b2a: member close and ship body lines
|
|
191
|
-
- tests: finish git housekeeping before trust-evidence temp cleanup
|
|
192
|
-
- Clarify member PR integration documentation
|
|
193
|
-
- multi-repo S4b1b: member pull-request integration
|
|
194
|
-
- Document member integration recovery and refresh rules
|
|
195
|
-
- multi-repo S4b1a: member direct integration
|
|
196
|
-
- Split child commands with POSIX quoting and write runtime output as UTF-8
|
|
197
|
-
- Install hooks and wrap Core hooks correctly on Windows
|
|
198
|
-
- Close Windows guard bypasses and decode text as UTF-8
|
|
199
|
-
- Run dispatch, verify, and loop processes portably on Windows
|
|
200
|
-
- Create STATE.md on Windows through pinned handles
|
|
201
|
-
- Lock pipeline state on Windows and write product files as LF bytes
|
|
202
|
-
- Leave the Windows CI job to the PR where Windows passes
|
|
203
|
-
- Isolate USERPROFILE with HOME in tests
|
|
204
|
-
- Pick the lock implementation by what imports, and split Windows CI suites
|
|
205
|
-
- Write test fixtures as exact UTF-8 LF bytes
|
|
206
|
-
- Write package.json as LF bytes in the skill-resource sync
|
|
207
|
-
- Add Windows platform helpers, portable dev runners, and a Windows CI job
|
|
208
|
-
- Clarify member head binding documentation
|
|
209
|
-
- multi-repo S4a2: member reviewed heads in the final review
|
|
210
|
-
- Point workflow to member Verify contract
|
|
211
|
-
- multi-repo S4a1: member sidecars for project Verify
|
|
212
|
-
- Correct S3d ledger and drift guidance
|
|
213
|
-
- Clarify member sidecar hook documentation
|
|
214
|
-
- Refresh member dispatch documentation and generated comments
|
|
215
|
-
- Document member activation safeguards and recovery
|
|
216
|
-
- Document member landing proof and archive recovery
|
|
217
|
-
- Correct member landing documentation and hook details
|
|
218
|
-
- merge: preserve validated dashboard fixes after publication timeout
|
|
219
|
-
- Refresh dashboard and tray documentation
|
|
220
|
-
- Clarify native retry finish documentation
|
|
221
|
-
- Align S3c documentation with member execution timing
|
|
222
|
-
- dispatch_driver: finish a native retry after a blocked driver attempt
|
|
223
|
-
- Drop the Node copy of the project runtime file list
|
|
224
|
-
- Correct managed AGENTS.md guidance and ADR context
|
|
225
|
-
- Document ignored .DS_Store setup behavior
|
|
226
|
-
- Document S3b build-start lock and recovery
|
|
227
|
-
- Sync generated GSD Path scripts
|
|
228
|
-
- Clarify Finder junk handling in pipeline docs
|
|
229
|
-
- Document pre-approval scope and reconcile gate guidance
|
|
230
|
-
- Correct stale multi-repo planning documentation
|
|
231
|
-
- Document legacy ledger checkpoint behavior
|
|
232
|
-
- Document ignored .project artifact handling
|
|
233
|
-
- Clarify local skill edit recovery guidance
|
|
234
|
-
- Correct stale S2d work plan guidance
|
|
235
|
-
- Clarify research transition gate documentation
|
|
236
|
-
- propose ADR 0003 managed AGENTS.md block
|
|
237
|
-
- Clarify first-install contract collision guidance
|
|
238
|
-
- Clarify half-retire recovery documentation and verify formatting
|
|
239
|
-
- Document Claude staging cleanup during shipment
|
|
240
|
-
- Document ignored pipeline state recovery
|
|
241
|
-
- Correct S2c member hook work plan
|
|
242
|
-
- Document native parallel finish recovery
|
|
243
|
-
- Clarify member guard documentation and authorization lifetime
|
|
244
|
-
- Clarify member marker documentation and verify formatting
|
|
245
|
-
- Update S1 plan and remove stale allowlist entry
|
|
246
|
-
- Clarify member delete authorization and close recovery proof
|
|
247
|
-
- close multi-repo plan open items R23-R24
|
|
248
|
-
- Clarify member documentation and correct S5 doc targets
|
|
249
|
-
- close multi-repo plan open items R17-R20
|
|
250
|
-
- add multi-repo coordinator ADR and work plan
|
|
251
|
-
- update release notes for v1.3.1
|
|
477
|
+
- npm releases are automated: release notes, package verification, and
|
|
478
|
+
provenance.
|
|
479
|
+
- The release gate validates only the hosts a change affects and reuses
|
|
480
|
+
unchanged host receipts.
|
|
252
481
|
|
|
253
482
|
### Fixed
|
|
254
|
-
-
|
|
255
|
-
-
|
|
256
|
-
|
|
257
|
-
- Fix the last native Windows test failures
|
|
258
|
-
- show actual project folders in toolbar rows
|
|
259
|
-
- group tray status progress and usage on separate lines
|
|
260
|
-
- keep tray folder paths in tooltips
|
|
261
|
-
- show project identity and wrap tray panel details
|
|
262
|
-
- wrap full project paths on dashboard board
|
|
263
|
-
- show main project folder alongside dashboard worktree
|
|
264
|
-
- keep runtime module identity independent of test order
|
|
265
|
-
- detect legacy marker as a whole line; keep distribution layout in AGENTS.md
|
|
266
|
-
- match AGENTS.md markers as whole lines; doctor flags a cut block
|
|
267
|
-
- harden AGENTS.md block install and uninstall
|
|
268
|
-
- ignored .DS_Store in .project no longer orphans project setup (#149)
|
|
269
|
-
- skip ignored .DS_Store inside .project subdirectories (#149)
|
|
270
|
-
- keep DOCS-AUDIT Repo root on the primary repo, not the sidecar (#148)
|
|
271
|
-
- commit a legacy ignored verify ledger in build checkpoints
|
|
272
|
-
- skip ignored untracked .project entries in ship allowlist checks (#149)
|
|
273
|
-
- say local skill edits are not carried forward (#151)
|
|
274
|
-
- let decide run the research handoff check at decide/active
|
|
275
|
-
- name a working path when --project finds an existing contract
|
|
276
|
-
- prune empty host .claude dirs before .project gates
|
|
277
|
-
- let retire recover a half-retired task worktree
|
|
278
|
-
- refuse landings when ignore rules hide .project state
|
|
279
|
-
- let finish land natively dispatched parallel tasks
|
|
483
|
+
- The dashboard shows project runtime updates and their results.
|
|
484
|
+
- After verified integration, ordinary branches can take product work again
|
|
485
|
+
while archived milestones stay protected.
|
|
280
486
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
-
|
|
285
|
-
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
-
|
|
294
|
-
-
|
|
295
|
-
- Plan legacy autostart cleanup during app upgrade
|
|
296
|
-
- Resolve native app plan review findings
|
|
297
|
-
- Fixed the Windows test fixtures in tests/test_member_create.py: Git now gets a forward-slash temporary path, and the gh test uses a platform-independent fake process. All 22 focused tests pass locally; both fixes failed sensitivity checks when deliberately undone. Windows CI still needs to rerun
|
|
298
|
-
- Pin GitHub host and verify remote main
|
|
299
|
-
- Verify checkout history and resume partial clones
|
|
300
|
-
- Honor configured origins and prevent repository recreation
|
|
301
|
-
- Reject invalid checkouts and stale clone reuse
|
|
302
|
-
- Fix member creation recovery and validation
|
|
303
|
-
- Prove member hook denials and branch retirement
|
|
304
|
-
- Fixed two Windows daemon test races in tests/test_daemon_serve.py. The activity test now counts events for its own project. The poll test stages STATE.md outside the watched directory and retries a transient replacement lock. The activity failure was reproduced locally before the fix; all 15 daemon serve tests pass after it, including a simulated file-lock check. PR #230 remains open; CI has not been rerun in this phase
|
|
305
|
-
- Reuse linted member base for lookahead approval
|
|
306
|
-
- Detect member rename drift and fix done-task test
|
|
307
|
-
- Filter done member drift; focused test remains failing
|
|
308
|
-
- Scope member status to the active milestone
|
|
309
|
-
- Block member undo while landing journals are pending
|
|
310
|
-
- Guard member undo against publication and concurrent landings
|
|
311
|
-
- Harden member undo journaling, recovery, and locking
|
|
312
|
-
- Guard member retirement against moved refs and team checkouts
|
|
313
|
-
- Sync member status fix to generated skill copies
|
|
314
|
-
- Keep member status validation read-only
|
|
315
|
-
- Read staged member lock in ship guard
|
|
316
|
-
- Repair merged member PR body before tagging
|
|
317
|
-
- Validate member PR provenance and repair reused bodies
|
|
318
|
-
- Set Git identity in the temporary member test repository to fix the CI merge failures. The focused test reproduced the failure before the change; all 11 member integration tests passed after it, and a sabotage check reproduced the failure. Ponytail review found no smaller fix. CI has not rerun
|
|
319
|
-
- Fixed the test fixture in tests/test_member_integration.py by setting the bare remote’s HEAD to main. The CI-style Git setting reproduced the 4 failures and 5 errors before the fix; all 11 focused tests passed after it. Skipping the new line caused the original error again. Ponytail review found no smaller fix. CI has not rerun
|
|
320
|
-
- Guard member merges, resume interrupted branches, and refresh validation
|
|
321
|
-
- Ignore commented member heads in review headers
|
|
322
|
-
- Retire switched member sidecars without changing bound branches
|
|
323
|
-
- Retire detached sidecars and retain member Verify output
|
|
324
|
-
- Refuse colliding members and clean up rejected Verify
|
|
325
|
-
- Fix member Verify sidecars and final review reuse
|
|
326
|
-
- Fix member drift detection and document Verify output policy
|
|
327
|
-
- Report untracked host config collisions during activation
|
|
328
|
-
- Restore and validate member hooks before every launch
|
|
329
|
-
- Both CI jobs failed because the temporary member repository had no Git author identity. I set its identity in the test fixture. The member-round suite passed (9 tests) with automatic identity discovery disabled; removing the fixture setting reproduced the failure. `git diff --check` passed. The ponytail skill was unavailable. An earlier diagnostic command created an empty `/tmp/ci-verify-18.log` outside the worktree; I made no other out-of-worktree changes
|
|
330
|
-
- Retire recovered members and clarify locked brief bases
|
|
331
|
-
- Recover partial and stale member isolates
|
|
332
|
-
- Fix member task resume, retirement, and contract drift
|
|
333
|
-
- Reject tracked and symlinked member copy paths
|
|
334
|
-
- Reject missing member task agents
|
|
335
|
-
- Unify member task contract field checks
|
|
336
|
-
- Fix member recovery, activation, and retirement safeguards
|
|
337
|
-
- Reject changed member task contracts after landing
|
|
338
|
-
- Harden member landing proof across archival and status
|
|
339
|
-
- Serialize coordinator landings and block pending member journals
|
|
340
|
-
- Serialize member landings with per-member locks
|
|
341
|
-
- Guard member landing with STATE branch checks
|
|
342
|
-
- Fix member landing recovery and contract checks
|
|
343
|
-
- Preserve bare-backed worktree identity and paths
|
|
344
|
-
- Fix nested project identity and worktree paths
|
|
345
|
-
- Fix dashboard search by repository name
|
|
346
|
-
- Guard member checkout reuse and retirement ownership
|
|
347
|
-
- Fix member isolation placement, lock guidance, and retirement
|
|
348
|
-
- Preserve AGENTS.md owner text across updates and uninstall
|
|
349
|
-
- Reject symlinked member lock paths
|
|
350
|
-
- Remove stale member lock when tasks drop members
|
|
351
|
-
- Preflight member build starts before creating refs
|
|
352
|
-
- Preserve tracked .DS_Store in archive manifests
|
|
353
|
-
- Resolve landed member bases during plan approval
|
|
354
|
-
- Honor canonical lane and Config during preauthorization
|
|
355
|
-
- Fix staged legacy ledger checkpoint retries
|
|
356
|
-
- Validate docs audit rulings before preapproval
|
|
357
|
-
- Warn on legacy Codex skill backups
|
|
358
|
-
- Clarify block cutoff and release evaluation scope
|
|
359
|
-
- Reference PR #161 in rejected option
|
|
360
|
-
- Clarify managed block size and migration exceptions
|
|
361
|
-
- Skip unreadable listed checkouts when checking foreign members
|
|
362
|
-
- Resume blocked decide before the research recheck
|
|
363
|
-
- Fix stale member markers, symlinks, and Git inspection failures
|
|
364
|
-
- Suppress unsafe move when contract backup exists
|
|
365
|
-
- Probe plan and archived ledger ignore rules
|
|
366
|
-
- Probe fixed-name project files before landing
|
|
367
|
-
- Require managed coordinator guard before installing member hooks
|
|
368
|
-
- Harden member hook staging and worktree path checks
|
|
369
|
-
- Require origin/main baseline for member joins and pushes
|
|
370
|
-
- Reject nonfile member markers until manual removal
|
|
371
|
-
- Preserve marker directory errors in validation
|
|
372
|
-
- Reject redirected member marker directories
|
|
373
|
-
- Write member marker before recording membership
|
|
374
|
-
- Skip valid markers during member repair
|
|
375
|
-
- Fix member marker recovery and coordinator ownership
|
|
376
|
-
- Fix member validation and duplicate repository detection
|
|
377
|
-
- Authorize direct member bound branch publication
|
|
378
|
-
- Specify per-ref member push authorization for close
|
|
379
|
-
- Fix member branch, landing, and ship recovery plan
|
|
380
|
-
- Revise multi-repo plan for accepted design reviews
|
|
381
|
-
- Align multi-repo plan with member binding decisions
|
|
487
|
+
## [1.1.0] - 2026-09-18
|
|
488
|
+
|
|
489
|
+
### Added
|
|
490
|
+
- Scoped npm package `@opengsd/gsd-path` with trusted publishing.
|
|
491
|
+
- Release trust evidence validation and the host matrix.
|
|
492
|
+
|
|
493
|
+
### Changed
|
|
494
|
+
- Release workflow and maintainer documentation for npm publication.
|
|
495
|
+
|
|
496
|
+
## [1.0.0] - 2026-09-15
|
|
497
|
+
|
|
498
|
+
### Added
|
|
499
|
+
- First public release of the disk-backed GSD Path pipeline.
|
|
500
|
+
- Multi-host installer, skills package, and project contracts.
|