@opengsd/gsd-core 1.12.0 → 1.14.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.opencode/plugins/gsd-core.js +12 -0
- package/agents/gsd-advisor-researcher.compact.md +85 -0
- package/agents/gsd-ai-researcher.compact.md +96 -0
- package/agents/gsd-assumptions-analyzer.compact.md +81 -0
- package/agents/gsd-code-fixer.compact.md +458 -0
- package/agents/gsd-code-fixer.md +5 -5
- package/agents/gsd-code-reviewer.compact.md +269 -0
- package/agents/gsd-code-reviewer.md +15 -3
- package/agents/gsd-codebase-mapper.compact.md +760 -0
- package/agents/gsd-debug-session-manager.compact.md +345 -0
- package/agents/gsd-doc-classifier.compact.md +192 -0
- package/agents/gsd-doc-synthesizer.compact.md +200 -0
- package/agents/gsd-doc-verifier.compact.md +143 -0
- package/agents/gsd-doc-writer.compact.md +440 -0
- package/agents/gsd-dom-verifier.compact.md +138 -0
- package/agents/gsd-domain-researcher.compact.md +141 -0
- package/agents/gsd-eval-auditor.compact.md +160 -0
- package/agents/gsd-eval-planner.compact.md +137 -0
- package/agents/gsd-executor.md +63 -35
- package/agents/gsd-framework-selector.compact.md +82 -0
- package/agents/gsd-integration-checker.compact.md +245 -0
- package/agents/gsd-intel-updater.compact.md +226 -0
- package/agents/gsd-mempalace-curator.compact.md +45 -0
- package/agents/gsd-nyquist-auditor.compact.md +179 -0
- package/agents/gsd-pattern-mapper.compact.md +275 -0
- package/agents/gsd-plan-checker.md +76 -57
- package/agents/gsd-planner.md +14 -0
- package/agents/gsd-project-researcher.compact.md +587 -0
- package/agents/gsd-research-synthesizer.compact.md +212 -0
- package/agents/gsd-roadmapper.compact.md +454 -0
- package/agents/gsd-roadmapper.md +13 -0
- package/agents/gsd-security-auditor.compact.md +162 -0
- package/agents/gsd-ui-auditor.compact.md +404 -0
- package/agents/gsd-ui-checker.compact.md +277 -0
- package/agents/gsd-ui-checker.md +19 -3
- package/agents/gsd-ui-researcher.compact.md +282 -0
- package/agents/gsd-ui-researcher.md +29 -0
- package/agents/gsd-user-profiler.compact.md +108 -0
- package/agents/gsd-verifier.md +23 -1
- package/bin/install.js +444 -134
- package/commands/gsd/cleanup.md +1 -0
- package/commands/gsd/code-review.md +2 -1
- package/commands/gsd/complete-milestone.md +1 -0
- package/commands/gsd/config.md +1 -0
- package/commands/gsd/debug.md +1 -0
- package/commands/gsd/execute-phase.md +1 -1
- package/commands/gsd/graphify.md +1 -0
- package/commands/gsd/health.md +1 -0
- package/commands/gsd/mempalace-capture.md +1 -0
- package/commands/gsd/mempalace-recall.md +1 -0
- package/commands/gsd/new-milestone.md +1 -0
- package/commands/gsd/new-project.md +1 -0
- package/commands/gsd/next.md +1 -0
- package/commands/gsd/ns-workflow.md +2 -1
- package/commands/gsd/pause-work.md +1 -0
- package/commands/gsd/phase.md +2 -1
- package/commands/gsd/pr-branch.md +1 -0
- package/commands/gsd/quick-batch.md +105 -0
- package/commands/gsd/resume-work.md +1 -0
- package/commands/gsd/review-backlog.md +1 -0
- package/commands/gsd/settings.md +2 -1
- package/commands/gsd/stats.md +1 -0
- package/commands/gsd/surface.md +18 -8
- package/commands/gsd/thread.md +1 -0
- package/commands/gsd/workspace.md +1 -0
- package/commands/gsd/workstreams.md +1 -0
- package/gsd-core/bin/check-latest-version.cjs +8 -3
- package/gsd-core/bin/gsd-tools.cjs +532 -174
- package/gsd-core/bin/lib/adr-parser.cjs +1 -1
- package/gsd-core/bin/lib/artifacts.cjs +2 -1
- package/gsd-core/bin/lib/audit.cjs +39 -22
- package/gsd-core/bin/lib/broken-windows.cjs +168 -49
- package/gsd-core/bin/lib/capability-activation.cjs +27 -0
- package/gsd-core/bin/lib/capability-lifecycle.cjs +10 -6
- package/gsd-core/bin/lib/capability-loader.cjs +135 -1
- package/gsd-core/bin/lib/capability-registry.cjs +528 -116
- package/gsd-core/bin/lib/capability-source.cjs +19 -2
- package/gsd-core/bin/lib/capability-state.cjs +7 -1
- package/gsd-core/bin/lib/capability-validator.cjs +134 -5
- package/gsd-core/bin/lib/capability-writer.cjs +14 -4
- package/gsd-core/bin/lib/check-command-router.cjs +198 -38
- package/gsd-core/bin/lib/claude-orchestration.cjs +10 -25
- package/gsd-core/bin/lib/clusters.cjs +1 -0
- package/gsd-core/bin/lib/code-review-depth.cjs +2 -2
- package/gsd-core/bin/lib/command-aliases.cjs +16 -0
- package/gsd-core/bin/lib/commands.cjs +981 -79
- package/gsd-core/bin/lib/config-loader.cjs +4 -0
- package/gsd-core/bin/lib/config.cjs +153 -38
- package/gsd-core/bin/lib/core-utils.cjs +34 -7
- package/gsd-core/bin/lib/coverage.cjs +1 -1
- package/gsd-core/bin/lib/decisions.cjs +343 -28
- package/gsd-core/bin/lib/edge-probe.cjs +14 -1
- package/gsd-core/bin/lib/external-descriptor-trust.cjs +29 -14
- package/gsd-core/bin/lib/file-overlap-partitioner.cjs +74 -0
- package/gsd-core/bin/lib/frontmatter.cjs +137 -23
- package/gsd-core/bin/lib/gap-checker.cjs +22 -13
- package/gsd-core/bin/lib/git-base-branch.cjs +10 -2
- package/gsd-core/bin/lib/gsd2-import.cjs +1 -2
- package/gsd-core/bin/lib/health-diagnostic-rules/phase-structure.cjs +8 -2
- package/gsd-core/bin/lib/health-diagnostic-rules/roadmap-disk-consistency.cjs +54 -11
- package/gsd-core/bin/lib/health-diagnostic-rules/state-consistency.cjs +87 -23
- package/gsd-core/bin/lib/health-diagnostic-rules/worktree-health.cjs +1 -1
- package/gsd-core/bin/lib/host-integration.cjs +57 -5
- package/gsd-core/bin/lib/init-command-router.cjs +14 -0
- package/gsd-core/bin/lib/init.cjs +539 -60
- package/gsd-core/bin/lib/install-engine.cjs +199 -14
- package/gsd-core/bin/lib/install-model-override-resolver.cjs +45 -0
- package/gsd-core/bin/lib/install-profiles.cjs +36 -14
- package/gsd-core/bin/lib/installer-migration-report.cjs +1 -0
- package/gsd-core/bin/lib/installer-migrations.cjs +33 -4
- package/gsd-core/bin/lib/io.cjs +35 -0
- package/gsd-core/bin/lib/loop-resolver.cjs +64 -39
- package/gsd-core/bin/lib/markdown-table.cjs +123 -0
- package/gsd-core/bin/lib/mcp-catalog.cjs +2 -2
- package/gsd-core/bin/lib/milestone.cjs +41 -10
- package/gsd-core/bin/lib/model-resolver.cjs +101 -10
- package/gsd-core/bin/lib/phase-command-router.cjs +20 -7
- package/gsd-core/bin/lib/phase-id.cjs +412 -31
- package/gsd-core/bin/lib/phase-lifecycle.cjs +61 -0
- package/gsd-core/bin/lib/phase.cjs +941 -98
- package/gsd-core/bin/lib/plan-document.cjs +10 -0
- package/gsd-core/bin/lib/planning-inspect.cjs +34 -18
- package/gsd-core/bin/lib/planning-snapshot.cjs +206 -30
- package/gsd-core/bin/lib/planning-workspace.cjs +153 -29
- package/gsd-core/bin/lib/pristine-baseline.cjs +182 -0
- package/gsd-core/bin/lib/prohibition-enforcement.cjs +91 -4
- package/gsd-core/bin/lib/quick-batch-command-router.cjs +285 -0
- package/gsd-core/bin/lib/quick-batch-dispatch.cjs +250 -0
- package/gsd-core/bin/lib/quick-batch.cjs +840 -0
- package/gsd-core/bin/lib/refactor-trigger-command-router.cjs +61 -2
- package/gsd-core/bin/lib/research-store.cjs +11 -12
- package/gsd-core/bin/lib/review-lane-descriptor.cjs +53 -5
- package/gsd-core/bin/lib/review-lane-invocation.cjs +96 -1
- package/gsd-core/bin/lib/review-lane-runner.cjs +136 -10
- package/gsd-core/bin/lib/reviewer-step-dispatch.cjs +337 -0
- package/gsd-core/bin/lib/roadmap-parser.cjs +555 -41
- package/gsd-core/bin/lib/roadmap.cjs +292 -69
- package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +260 -43
- package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +28 -20
- package/gsd-core/bin/lib/runtime-artifact-layout.cjs +294 -108
- package/gsd-core/bin/lib/runtime-hooks-surface.cjs +408 -47
- package/gsd-core/bin/lib/security.cjs +126 -7
- package/gsd-core/bin/lib/shell-command-projection.cjs +4 -0
- package/gsd-core/bin/lib/smart-entry.cjs +7 -9
- package/gsd-core/bin/lib/state-document.cjs +159 -32
- package/gsd-core/bin/lib/state-md-schema.cjs +44 -27
- package/gsd-core/bin/lib/state-transition.cjs +465 -62
- package/gsd-core/bin/lib/state.cjs +906 -151
- package/gsd-core/bin/lib/surface.cjs +83 -10
- package/gsd-core/bin/lib/task-command-router.cjs +12 -6
- package/gsd-core/bin/lib/tdd-red-evidence.cjs +133 -0
- package/gsd-core/bin/lib/uat.cjs +1420 -516
- package/gsd-core/bin/lib/update-context.cjs +36 -26
- package/gsd-core/bin/lib/validate.cjs +230 -12
- package/gsd-core/bin/lib/vendor/js-yaml.cjs +11 -3
- package/gsd-core/bin/lib/verification-command-router.cjs +2 -1
- package/gsd-core/bin/lib/verification.cjs +316 -23
- package/gsd-core/bin/lib/verify-command-grounding.cjs +1 -1
- package/gsd-core/bin/lib/verify-command-router.cjs +1 -0
- package/gsd-core/bin/lib/verify.cjs +531 -36
- package/gsd-core/bin/lib/workstream-inventory.cjs +21 -2
- package/gsd-core/bin/lib/worktree-safety.cjs +21 -7
- package/gsd-core/bin/shared/config-defaults.manifest.json +1 -0
- package/gsd-core/bin/shared/config-schema.manifest.json +13 -0
- package/gsd-core/bin/verify-reapply-patches.cjs +507 -81
- package/gsd-core/references/agent-contracts.md +3 -3
- package/gsd-core/references/compact-content-gate.md +66 -0
- package/gsd-core/references/edge-probe.md +17 -13
- package/gsd-core/references/execute-mvp-tdd.md +18 -16
- package/gsd-core/references/execute-phase-response-language.md +6 -0
- package/gsd-core/references/executor-examples.md +42 -0
- package/gsd-core/references/few-shot-examples/plan-checker.md +15 -15
- package/gsd-core/references/loop-hook-dispatch.md +18 -0
- package/gsd-core/references/model-profiles.md +12 -3
- package/gsd-core/references/mvp-concepts.md +2 -2
- package/gsd-core/references/plan-checker-examples.md +41 -0
- package/gsd-core/references/planner-antipatterns.md +25 -0
- package/gsd-core/references/planner-chunked.md +5 -1
- package/gsd-core/references/planner-coupling.md +42 -0
- package/gsd-core/references/planner-quick-batch.md +71 -0
- package/gsd-core/references/planner-reviews.md +47 -0
- package/gsd-core/references/planner-revision.md +75 -2
- package/gsd-core/references/planning-config.md +5 -1
- package/gsd-core/references/response-language-directive.md +9 -0
- package/gsd-core/references/revision-loop.md +118 -11
- package/gsd-core/references/tdd.md +17 -9
- package/gsd-core/references/thinking-models-planning.md +18 -2
- package/gsd-core/references/verification-patterns.md +17 -4
- package/gsd-core/references/verifier-evidence-gate.md +160 -0
- package/gsd-core/references/worktree-path-safety.md +112 -2
- package/gsd-core/templates/README.md +7 -1
- package/gsd-core/templates/phase-prompt.md +4 -0
- package/gsd-core/templates/state.md +6 -3
- package/gsd-core/templates/summary.compact.md +212 -0
- package/gsd-core/templates/user-setup.compact.md +199 -0
- package/gsd-core/templates/user-setup.md +0 -9
- package/gsd-core/templates/verification-report.md +5 -0
- package/gsd-core/workflows/add-backlog.md +2 -0
- package/gsd-core/workflows/add-phase.md +2 -0
- package/gsd-core/workflows/add-tests.md +1 -1
- package/gsd-core/workflows/add-todo.md +4 -3
- package/gsd-core/workflows/ai-integration-phase.md +1 -1
- package/gsd-core/workflows/analyze-dependencies.md +2 -0
- package/gsd-core/workflows/audit-fix.md +2 -0
- package/gsd-core/workflows/audit-milestone.md +2 -0
- package/gsd-core/workflows/audit-uat.md +2 -0
- package/gsd-core/workflows/autonomous.md +15 -10
- package/gsd-core/workflows/check-todos.md +5 -3
- package/gsd-core/workflows/cleanup.md +4 -2
- package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +22 -13
- package/gsd-core/workflows/code-review-fix.md +5 -3
- package/gsd-core/workflows/code-review.md +211 -43
- package/gsd-core/workflows/complete-milestone/detail/elaboration.md +274 -0
- package/gsd-core/workflows/complete-milestone.md +40 -254
- package/gsd-core/workflows/debug.md +1 -1
- package/gsd-core/workflows/diagnose-issues.md +5 -1
- package/gsd-core/workflows/discuss-phase/modes/advisor.md +2 -0
- package/gsd-core/workflows/discuss-phase/modes/all.md +2 -0
- package/gsd-core/workflows/discuss-phase/modes/analyze.md +2 -0
- package/gsd-core/workflows/discuss-phase/modes/auto.md +2 -0
- package/gsd-core/workflows/discuss-phase/modes/batch.md +2 -0
- package/gsd-core/workflows/discuss-phase/modes/chain.md +2 -0
- package/gsd-core/workflows/discuss-phase/modes/default.md +2 -0
- package/gsd-core/workflows/discuss-phase/modes/power.md +2 -0
- package/gsd-core/workflows/discuss-phase/modes/text.md +2 -0
- package/gsd-core/workflows/discuss-phase/templates/context.md +2 -0
- package/gsd-core/workflows/discuss-phase/templates/discussion-log.md +2 -0
- package/gsd-core/workflows/discuss-phase-assumptions.md +1 -1
- package/gsd-core/workflows/discuss-phase-power.md +2 -0
- package/gsd-core/workflows/discuss-phase.md +1 -1
- package/gsd-core/workflows/do.md +43 -13
- package/gsd-core/workflows/docs-update/detail/elaboration.md +179 -0
- package/gsd-core/workflows/docs-update.md +15 -156
- package/gsd-core/workflows/edit-phase.md +2 -0
- package/gsd-core/workflows/eval-review.md +1 -1
- package/gsd-core/workflows/execute-phase/detail/elaboration.md +124 -0
- package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +20 -3
- package/gsd-core/workflows/execute-phase/steps/completion-reconciliation.md +56 -0
- package/gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md +24 -3
- package/gsd-core/workflows/execute-phase/steps/executor-progress-policy.md +43 -0
- package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +8 -2
- package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +2 -0
- package/gsd-core/workflows/execute-phase/steps/sequential-root-pin.md +35 -0
- package/gsd-core/workflows/execute-phase/steps/tdd-applicability-resolution.md +25 -0
- package/gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md +2 -0
- package/gsd-core/workflows/execute-phase.md +78 -159
- package/gsd-core/workflows/execute-plan.md +28 -15
- package/gsd-core/workflows/explore.md +2 -0
- package/gsd-core/workflows/extract-learnings.md +2 -0
- package/gsd-core/workflows/fast.md +6 -0
- package/gsd-core/workflows/forensics.md +2 -0
- package/gsd-core/workflows/graduation.md +1 -1
- package/gsd-core/workflows/health.md +1 -1
- package/gsd-core/workflows/help/modes/brief.md +2 -0
- package/gsd-core/workflows/help/modes/default.md +2 -0
- package/gsd-core/workflows/help/modes/full.compact.md +398 -0
- package/gsd-core/workflows/help/modes/full.md +12 -0
- package/gsd-core/workflows/help/modes/topic.md +2 -0
- package/gsd-core/workflows/help.md +3 -1
- package/gsd-core/workflows/import.md +3 -3
- package/gsd-core/workflows/inbox.md +1 -1
- package/gsd-core/workflows/ingest-docs.md +1 -1
- package/gsd-core/workflows/insert-phase.md +2 -0
- package/gsd-core/workflows/list-phase-assumptions.md +2 -0
- package/gsd-core/workflows/list-seeds.md +2 -0
- package/gsd-core/workflows/list-workspaces.md +2 -0
- package/gsd-core/workflows/manager.md +3 -3
- package/gsd-core/workflows/map-codebase.md +52 -3
- package/gsd-core/workflows/milestone-summary.md +2 -0
- package/gsd-core/workflows/mvp-phase.md +1 -1
- package/gsd-core/workflows/new-milestone.md +55 -13
- package/gsd-core/workflows/new-project/detail/elaboration.md +216 -0
- package/gsd-core/workflows/new-project.md +37 -205
- package/gsd-core/workflows/new-workspace.md +1 -1
- package/gsd-core/workflows/next.md +2 -0
- package/gsd-core/workflows/node-repair.md +2 -0
- package/gsd-core/workflows/note.md +2 -0
- package/gsd-core/workflows/onboard.md +1 -1
- package/gsd-core/workflows/pause-work.md +19 -4
- package/gsd-core/workflows/plan-phase/detail/elaboration.md +209 -0
- package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +100 -18
- package/gsd-core/workflows/plan-phase/steps/prd-express-path.md +2 -0
- package/gsd-core/workflows/plan-phase/steps/stall-detection-helpers.md +9 -0
- package/gsd-core/workflows/plan-phase.md +144 -185
- package/gsd-core/workflows/plan-review-convergence.md +102 -10
- package/gsd-core/workflows/plant-seed.md +1 -1
- package/gsd-core/workflows/pr-branch.md +30 -10
- package/gsd-core/workflows/profile-user.md +1 -1
- package/gsd-core/workflows/progress/steps/forensic-audit.md +1 -1
- package/gsd-core/workflows/progress.md +25 -3
- package/gsd-core/workflows/quick/steps/plan-checker-loop.md +37 -2
- package/gsd-core/workflows/quick/steps/research-phase.md +3 -3
- package/gsd-core/workflows/quick-batch/steps/batch-init.md +55 -0
- package/gsd-core/workflows/quick-batch/steps/completion.md +65 -0
- package/gsd-core/workflows/quick-batch/steps/merge-wave.md +100 -0
- package/gsd-core/workflows/quick-batch/steps/plan-checker-loop.md +147 -0
- package/gsd-core/workflows/quick-batch/steps/planner-wave.md +158 -0
- package/gsd-core/workflows/quick-batch/steps/research-phase.md +95 -0
- package/gsd-core/workflows/quick-batch/steps/resume-mode.md +49 -0
- package/gsd-core/workflows/quick-batch/steps/verification-wave.md +73 -0
- package/gsd-core/workflows/quick-batch/steps/worktree-dispatch.md +169 -0
- package/gsd-core/workflows/quick-batch.md +203 -0
- package/gsd-core/workflows/quick.md +21 -4
- package/gsd-core/workflows/reapply-patches.md +79 -3
- package/gsd-core/workflows/remove-phase.md +2 -0
- package/gsd-core/workflows/remove-workspace.md +1 -1
- package/gsd-core/workflows/resume-project.md +6 -2
- package/gsd-core/workflows/review.md +215 -10
- package/gsd-core/workflows/scan.md +2 -0
- package/gsd-core/workflows/section-manifest.json +12 -0
- package/gsd-core/workflows/secure-phase.md +1 -1
- package/gsd-core/workflows/session-report.md +2 -0
- package/gsd-core/workflows/settings-advanced.md +2 -0
- package/gsd-core/workflows/settings-integrations.md +9 -8
- package/gsd-core/workflows/settings.md +19 -6
- package/gsd-core/workflows/ship.md +10 -10
- package/gsd-core/workflows/sketch-wrap-up.md +2 -0
- package/gsd-core/workflows/sketch.md +1 -1
- package/gsd-core/workflows/smart-entry.md +1 -1
- package/gsd-core/workflows/spec-phase.md +24 -19
- package/gsd-core/workflows/spike-wrap-up.md +2 -0
- package/gsd-core/workflows/spike.md +1 -1
- package/gsd-core/workflows/stats.md +2 -0
- package/gsd-core/workflows/sync-skills.md +12 -4
- package/gsd-core/workflows/thread.md +2 -0
- package/gsd-core/workflows/transition.md +2 -0
- package/gsd-core/workflows/ui-phase.md +26 -5
- package/gsd-core/workflows/ui-review.md +1 -1
- package/gsd-core/workflows/ultraplan-phase.md +2 -0
- package/gsd-core/workflows/undo.md +1 -1
- package/gsd-core/workflows/update.md +48 -43
- package/gsd-core/workflows/validate-phase.md +1 -1
- package/gsd-core/workflows/verify-work/detail/elaboration.md +230 -0
- package/gsd-core/workflows/verify-work.md +68 -182
- package/hooks/dist/gsd-agent-isolation-guard.js +42 -16
- package/hooks/dist/gsd-check-update-worker.js +19 -2
- package/hooks/dist/gsd-context-monitor.js +371 -27
- package/hooks/dist/gsd-cursor-subagent-start.js +34 -14
- package/hooks/dist/gsd-node-runner.sh +1 -0
- package/hooks/dist/gsd-prompt-guard.js +30 -5
- package/hooks/dist/gsd-read-guard.js +2 -0
- package/hooks/dist/gsd-read-injection-scanner.js +5 -5
- package/hooks/dist/gsd-secret-read-guard.js +1105 -0
- package/hooks/dist/gsd-statusline.js +18 -10
- package/hooks/dist/gsd-validate-commit.sh +474 -7
- package/hooks/dist/gsd-workflow-guard.js +2 -1
- package/hooks/dist/gsd-worktree-path-guard.js +25 -14
- package/hooks/dist/gsd-write-guard.js +46 -1
- package/hooks/dist/lib/dispatch-identity.js +187 -0
- package/hooks/dist/lib/filename-classification.js +64 -0
- package/hooks/dist/lib/git-cmd.js +210 -1
- package/hooks/dist/lib/injection-patterns.js +36 -6
- package/hooks/dist/lib/isolation-deny-reason.js +53 -1
- package/hooks/dist/lib/isolation-sentinel.js +58 -19
- package/hooks/dist/managed-hooks-registry.cjs +1 -0
- package/hooks/gsd-agent-isolation-guard.js +42 -16
- package/hooks/gsd-check-update-worker.js +19 -2
- package/hooks/gsd-context-monitor.js +371 -27
- package/hooks/gsd-cursor-subagent-start.js +34 -14
- package/hooks/gsd-node-runner.sh +1 -0
- package/hooks/gsd-prompt-guard.js +30 -5
- package/hooks/gsd-read-guard.js +2 -0
- package/hooks/gsd-read-injection-scanner.js +5 -5
- package/hooks/gsd-secret-read-guard.js +1105 -0
- package/hooks/gsd-statusline.js +18 -10
- package/hooks/gsd-validate-commit.sh +474 -7
- package/hooks/gsd-workflow-guard.js +2 -1
- package/hooks/gsd-worktree-path-guard.js +25 -14
- package/hooks/gsd-write-guard.js +46 -1
- package/hooks/hooks.json +6 -0
- package/hooks/lib/dispatch-identity.js +187 -0
- package/hooks/lib/filename-classification.js +64 -0
- package/hooks/lib/git-cmd.js +210 -1
- package/hooks/lib/injection-patterns.js +36 -6
- package/hooks/lib/isolation-deny-reason.js +53 -1
- package/hooks/lib/isolation-sentinel.js +58 -19
- package/hooks/managed-hooks-registry.cjs +1 -0
- package/package.json +13 -9
- package/scripts/benchmark-compact-content-variants.cjs +298 -0
- package/scripts/benchmark-compact-content.cjs +368 -0
- package/scripts/build-hooks.js +11 -4
- package/scripts/check-contract-drift.cjs +4 -1
- package/scripts/check-env.cjs +36 -8
- package/scripts/check-glossary-refs.cjs +25 -21
- package/scripts/ci-next-health.cjs +271 -0
- package/scripts/ci-prepare-test-scope.cjs +7 -7
- package/scripts/ci-test-scope.cjs +133 -20
- package/scripts/ci-timeout-report.cjs +1 -1
- package/scripts/diff-touches-shipped-paths.cjs +1 -1
- package/scripts/docs-guard-registry.cjs +17 -2
- package/scripts/gen-adr-index.cjs +8 -2
- package/scripts/gen-inventory-manifest.cjs +12 -0
- package/scripts/gen-loop-host-contract.cjs +67 -15
- package/scripts/gen-platform-conformance-tier.cjs +557 -0
- package/scripts/lib/drift-scan.cjs +1 -1
- package/scripts/lib/macos-conformance-tier.generated.cjs +210 -0
- package/scripts/lib/npm-version-check-diagnosis.cjs +59 -0
- package/scripts/lib/platform-conformance-tier.generated.cjs +276 -0
- package/scripts/lib/shellcheck-fetch.cjs +247 -0
- package/scripts/lib/suite-detection.cjs +32 -0
- package/scripts/lint-allow-test-rule-refs.allowlist.json +0 -6
- package/scripts/lint-allow-test-rule-refs.effective-ceiling.json +1 -1
- package/scripts/lint-allow-test-rule-refs.unverified-ceiling.json +1 -1
- package/scripts/lint-allowed-tools-parity.cjs +221 -0
- package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +24 -2
- package/scripts/lint-phase-enumeration-drift.cjs +24 -6
- package/scripts/lint-phase-id-drift.cjs +465 -15
- package/scripts/lint-portable-grep.cjs +176 -0
- package/scripts/lint-response-language-coverage.cjs +530 -0
- package/scripts/lint-source-test-name-collision.cjs +1 -1
- package/scripts/lint-test-file-count.allowlist.json +4 -1
- package/scripts/lint-vendored-deps.cjs +128 -17
- package/scripts/lint-workflow-shellcheck-baseline.json +1112 -0
- package/scripts/lint-workflow-shellcheck.cjs +614 -0
- package/scripts/npm-audit-baseline.cjs +376 -0
- package/scripts/prompt-injection-scan.sh +22 -0
- package/scripts/require-issue-link-policy.cjs +16 -1
- package/scripts/workflow-size.cjs +139 -0
- package/skills/gsd-cleanup/SKILL.md +1 -0
- package/skills/gsd-code-review/SKILL.md +2 -1
- package/skills/gsd-complete-milestone/SKILL.md +1 -0
- package/skills/gsd-config/SKILL.md +1 -0
- package/skills/gsd-debug/SKILL.md +1 -0
- package/skills/gsd-execute-phase/SKILL.md +1 -1
- package/skills/gsd-graphify/SKILL.md +1 -0
- package/skills/gsd-health/SKILL.md +1 -0
- package/skills/gsd-mempalace-capture/SKILL.md +1 -0
- package/skills/gsd-mempalace-recall/SKILL.md +1 -0
- package/skills/gsd-new-milestone/SKILL.md +1 -0
- package/skills/gsd-new-project/SKILL.md +1 -0
- package/skills/gsd-next/SKILL.md +1 -0
- package/skills/gsd-ns-workflow/SKILL.md +1 -0
- package/skills/gsd-pause-work/SKILL.md +1 -0
- package/skills/gsd-phase/SKILL.md +2 -1
- package/skills/gsd-pr-branch/SKILL.md +1 -0
- package/skills/gsd-quick-batch/SKILL.md +105 -0
- package/skills/gsd-resume-work/SKILL.md +1 -0
- package/skills/gsd-review-backlog/SKILL.md +1 -0
- package/skills/gsd-settings/SKILL.md +2 -1
- package/skills/gsd-stats/SKILL.md +1 -0
- package/skills/gsd-surface/SKILL.md +18 -8
- package/skills/gsd-thread/SKILL.md +1 -0
- package/skills/gsd-workspace/SKILL.md +1 -0
- package/skills/gsd-workstreams/SKILL.md +1 -0
- package/vscode/package.json +1 -1
- package/gsd-core/templates/claude-md.md +0 -145
- package/gsd-core/templates/codebase/concerns.md +0 -310
- package/gsd-core/templates/codebase/conventions.md +0 -307
- package/gsd-core/templates/codebase/integrations.md +0 -280
- package/gsd-core/templates/codebase/structure.md +0 -285
- package/gsd-core/templates/codebase/testing.md +0 -480
- package/gsd-core/templates/debug-subagent-prompt.md +0 -91
- package/gsd-core/templates/discovery.md +0 -146
|
@@ -39,7 +39,11 @@ You are NOT the executor or verifier — you verify plans WILL work before execu
|
|
|
39
39
|
**Required finding classification:** Every issue must carry an explicit severity:
|
|
40
40
|
- **BLOCKER** — the phase goal will not be achieved if this is not fixed before execution
|
|
41
41
|
- **WARNING** — quality or maintainability is degraded; fix recommended but execution can proceed
|
|
42
|
-
|
|
42
|
+
- **INFO** — advisory; every consuming gate counts only BLOCKER + WARNING, so INFO alone never forces a revision or blocks acceptance (#3724)
|
|
43
|
+
Issues without a severity classification are not valid output. Neither are issues without a
|
|
44
|
+
`required_property` (the invariant that failed) and evidence for the failure — see
|
|
45
|
+
`<issue_structure>`. Your authority is to state what must be true; `fix_hint` is an example
|
|
46
|
+
of one route there, never a prescription.
|
|
43
47
|
</adversarial_stance>
|
|
44
48
|
|
|
45
49
|
<required_reading>
|
|
@@ -85,7 +89,7 @@ REVIEWS.md is audit trail and feedback input, not a hidden execution contract. /
|
|
|
85
89
|
|
|
86
90
|
- Extract current actionable findings from the human-readable per-reviewer and consensus content in REVIEWS.md. Do NOT look for a `CYCLE_SUMMARY: current_high=<N> current_actionable=<M>` line or `## Current HIGH Concerns` / `## Current Actionable Non-HIGH Concerns` section headers — those machine-readable fields exist only in the convergence orchestrator's return message, never in REVIEWS.md (which contains only human-readable review content).
|
|
87
91
|
- Do not re-open historical findings that are already incorporated, explicitly deferred/rejected in PLAN.md, or marked fully resolved.
|
|
88
|
-
- Verify each current actionable review finding appears in executable PLAN.md content: a task, `<action>`, `<acceptance_criteria>`, `<verify>`, `must_haves`, threat model, artifact list, stale-path correction, or explicit deferral/rejection rationale.
|
|
92
|
+
- Verify each current actionable review finding appears in executable PLAN.md content: a task, `<action>`, `<acceptance_criteria>`, `<verify>`, `must_haves`, threat model, artifact list, stale-path correction, or explicit deferral/rejection rationale using the Review Dispositions Ledger in `gsd-core/references/planner-reviews.md`.
|
|
89
93
|
- If a current actionable finding remains only in REVIEWS.md and would be invisible to /gsd:execute-phase, return `## ISSUES FOUND`. Use WARNING by default; use BLOCKER when the missing incorporation can prevent the phase goal, create unsafe execution, or invalidate verification.
|
|
90
94
|
</upstream_input>
|
|
91
95
|
|
|
@@ -142,6 +146,7 @@ For calibration on scoring and issue identification, reference these examples:
|
|
|
142
146
|
issue:
|
|
143
147
|
dimension: requirement_coverage
|
|
144
148
|
severity: blocker
|
|
149
|
+
required_property: "Every phase requirement is claimed by at least one task"
|
|
145
150
|
description: "AUTH-02 (logout) has no covering task"
|
|
146
151
|
plan: "16-01"
|
|
147
152
|
fix_hint: "Add task for logout endpoint in plan 01 or new plan"
|
|
@@ -174,6 +179,7 @@ issue:
|
|
|
174
179
|
issue:
|
|
175
180
|
dimension: task_completeness
|
|
176
181
|
severity: blocker
|
|
182
|
+
required_property: "Every `auto` task has a `<verify>` separating pass from fail"
|
|
177
183
|
description: "Task 2 missing <verify> element"
|
|
178
184
|
plan: "16-01"
|
|
179
185
|
task: 2
|
|
@@ -205,6 +211,7 @@ issue:
|
|
|
205
211
|
issue:
|
|
206
212
|
dimension: dependency_correctness
|
|
207
213
|
severity: blocker
|
|
214
|
+
required_property: "The cross-plan `depends_on` graph is acyclic"
|
|
208
215
|
description: "Circular dependency between plans 02 and 03"
|
|
209
216
|
plans: ["02", "03"]
|
|
210
217
|
fix_hint: "Plan 02 depends on 03, but 03 depends on 02"
|
|
@@ -231,19 +238,25 @@ Execution; strong-but-local coupling inside one plan is fine):
|
|
|
231
238
|
**Do NOT flag:** both sides only READ it, or it is immutable; the pair already overlaps in
|
|
232
239
|
`files_modified` or `files_deleted` (report that once, on the file axis); the plans sit in a different wave, which
|
|
233
240
|
already orders them; two tasks inside one plan; a vague same-subsystem claim naming no
|
|
234
|
-
resource; incompatible *transformations* of one entity — that is Dimension 9
|
|
241
|
+
resource; incompatible *transformations* of one entity — that is Dimension 9; the pair is
|
|
242
|
+
declared `coupling_justified` in either plan's frontmatter by an entry naming the other
|
|
243
|
+
plan (an entry naming only third plans exempts nothing here).
|
|
235
244
|
|
|
236
|
-
**Severity: ALWAYS
|
|
237
|
-
lets the planner declare the edge, move a plan to a later wave, or
|
|
245
|
+
**Severity: ALWAYS INFO, never a blocker.** Coupling is sometimes intentional; the finding
|
|
246
|
+
lets the planner declare the edge, move a plan to a later wave, or mark the pair
|
|
247
|
+
`coupling_justified`. When a `coupling_justified` entry exempts a pair, note the applied
|
|
248
|
+
exemption as its own `info` advisory naming both plans and the declaring plan — the
|
|
249
|
+
declaration stays observable instead of silently suppressing the check.
|
|
238
250
|
|
|
239
251
|
```yaml
|
|
240
252
|
issue:
|
|
241
253
|
dimension: dependency_correctness
|
|
242
|
-
severity:
|
|
254
|
+
severity: info
|
|
255
|
+
required_property: "Ordering between same-wave plans is declared, not implied"
|
|
243
256
|
description: "Plans 02 and 03 are both Wave 1 with no depends_on, but 02 writes config key
|
|
244
257
|
auth.session_ttl and 03 reads it"
|
|
245
258
|
plans: ["02", "03"]
|
|
246
|
-
fix_hint: "Declare depends_on, move 03 to a later wave, or
|
|
259
|
+
fix_hint: "Declare depends_on, move 03 to a later wave, or set coupling_justified"
|
|
247
260
|
```
|
|
248
261
|
|
|
249
262
|
## Dimension 4: Key Links Planned
|
|
@@ -274,6 +287,7 @@ State -> Render: Does action mention displaying state?
|
|
|
274
287
|
issue:
|
|
275
288
|
dimension: key_links_planned
|
|
276
289
|
severity: warning
|
|
290
|
+
required_property: "Dependent artifacts are wired by a task, not merely created"
|
|
277
291
|
description: "Chat.tsx created but no task wires it to /api/chat"
|
|
278
292
|
plan: "01"
|
|
279
293
|
artifacts: ["src/components/Chat.tsx", "src/app/api/chat/route.ts"]
|
|
@@ -320,11 +334,12 @@ issue:
|
|
|
320
334
|
issue:
|
|
321
335
|
dimension: scope_sanity
|
|
322
336
|
severity: warning
|
|
323
|
-
|
|
337
|
+
required_property: "Each plan stays within the per-plan context budget"
|
|
338
|
+
description: "Plan 01 has 4 tasks - borderline, split recommended"
|
|
324
339
|
plan: "01"
|
|
325
340
|
metrics:
|
|
326
|
-
tasks:
|
|
327
|
-
files:
|
|
341
|
+
tasks: 4
|
|
342
|
+
files: 8
|
|
328
343
|
fix_hint: "Split into 2 plans: foundation (01) and integration (02)"
|
|
329
344
|
```
|
|
330
345
|
|
|
@@ -349,6 +364,7 @@ issue:
|
|
|
349
364
|
issue:
|
|
350
365
|
dimension: verification_derivation
|
|
351
366
|
severity: warning
|
|
367
|
+
required_property: "Every `must_haves.truths` entry is user-observable"
|
|
352
368
|
description: "Plan 02 must_haves.truths are implementation-focused"
|
|
353
369
|
plan: "02"
|
|
354
370
|
problematic_truths:
|
|
@@ -382,6 +398,7 @@ issue:
|
|
|
382
398
|
issue:
|
|
383
399
|
dimension: context_compliance
|
|
384
400
|
severity: blocker
|
|
401
|
+
required_property: "No task contradicts a locked decision in CONTEXT.md"
|
|
385
402
|
description: "Plan contradicts locked decision: user specified 'card layout' but Task 2 implements 'table layout'"
|
|
386
403
|
plan: "01"
|
|
387
404
|
task: 2
|
|
@@ -395,6 +412,7 @@ issue:
|
|
|
395
412
|
issue:
|
|
396
413
|
dimension: context_compliance
|
|
397
414
|
severity: blocker
|
|
415
|
+
required_property: "No task implements an idea CONTEXT.md deferred"
|
|
398
416
|
description: "Plan includes deferred idea: 'search functionality' was explicitly deferred"
|
|
399
417
|
plan: "02"
|
|
400
418
|
task: 1
|
|
@@ -432,6 +450,7 @@ issue:
|
|
|
432
450
|
issue:
|
|
433
451
|
dimension: scope_reduction
|
|
434
452
|
severity: blocker
|
|
453
|
+
required_property: "Locked decisions are delivered at full recorded scope"
|
|
435
454
|
description: "Plan reduces D-26 from 'calculated costs in impulses' to 'static hardcoded labels'"
|
|
436
455
|
plan: "03"
|
|
437
456
|
task: 1
|
|
@@ -472,6 +491,7 @@ Plans reduce {N} user decisions. Options:
|
|
|
472
491
|
issue:
|
|
473
492
|
dimension: architectural_tier_compliance
|
|
474
493
|
severity: blocker
|
|
494
|
+
required_property: "Each capability sits in its Responsibility Map tier"
|
|
475
495
|
description: "Task places auth token validation in browser tier, but Architectural Responsibility Map assigns auth to API tier"
|
|
476
496
|
plan: "01"
|
|
477
497
|
task: 2
|
|
@@ -486,6 +506,7 @@ issue:
|
|
|
486
506
|
issue:
|
|
487
507
|
dimension: architectural_tier_compliance
|
|
488
508
|
severity: warning
|
|
509
|
+
required_property: "Each capability sits in its Responsibility Map tier"
|
|
489
510
|
description: "Task places data formatting in API tier, but Architectural Responsibility Map assigns it to Frontend Server"
|
|
490
511
|
plan: "02"
|
|
491
512
|
task: 1
|
|
@@ -552,6 +573,7 @@ failure. Consume the supplied `{FAILING_DIRECTIONS}` probe, never re-derive it:
|
|
|
552
573
|
issue:
|
|
553
574
|
dimension: claude_md_compliance
|
|
554
575
|
severity: blocker
|
|
576
|
+
required_property: "Plans use the toolchain CLAUDE.md mandates"
|
|
555
577
|
description: "Plan uses Jest for testing but CLAUDE.md requires Vitest"
|
|
556
578
|
plan: "01"
|
|
557
579
|
task: 1
|
|
@@ -565,6 +587,7 @@ issue:
|
|
|
565
587
|
issue:
|
|
566
588
|
dimension: claude_md_compliance
|
|
567
589
|
severity: warning
|
|
590
|
+
required_property: "Every `<verify>` runs the checks CLAUDE.md requires"
|
|
568
591
|
description: "Plan does not include lint step required by CLAUDE.md"
|
|
569
592
|
plan: "02"
|
|
570
593
|
claude_md_rule: "All tasks must run eslint before committing"
|
|
@@ -594,6 +617,7 @@ issue:
|
|
|
594
617
|
issue:
|
|
595
618
|
dimension: research_resolution
|
|
596
619
|
severity: blocker
|
|
620
|
+
required_property: "RESEARCH.md carries no unresolved open question"
|
|
597
621
|
description: "RESEARCH.md has unresolved open questions"
|
|
598
622
|
file: "01-RESEARCH.md"
|
|
599
623
|
unresolved_questions:
|
|
@@ -636,6 +660,7 @@ issue:
|
|
|
636
660
|
issue:
|
|
637
661
|
dimension: pattern_compliance
|
|
638
662
|
severity: warning
|
|
663
|
+
required_property: "Every new file names its closest PATTERNS.md analog, or cites RESEARCH.md if none exists"
|
|
639
664
|
description: "Plan 01-03 creates src/controllers/auth.ts but does not reference analog src/controllers/users.ts from PATTERNS.md"
|
|
640
665
|
file: "01-03-PLAN.md"
|
|
641
666
|
expected_analog: "src/controllers/users.ts"
|
|
@@ -647,6 +672,7 @@ issue:
|
|
|
647
672
|
issue:
|
|
648
673
|
dimension: pattern_compliance
|
|
649
674
|
severity: warning
|
|
675
|
+
required_property: "Plans reusing a PATTERNS.md shared pattern reference it"
|
|
650
676
|
description: "Plan 01-02 creates a controller but does not include the shared auth middleware pattern from PATTERNS.md"
|
|
651
677
|
file: "01-02-PLAN.md"
|
|
652
678
|
shared_pattern: "Authentication"
|
|
@@ -861,9 +887,9 @@ Thresholds: 2-3 tasks/plan good, 4 warning, 5+ blocker (split required).
|
|
|
861
887
|
|
|
862
888
|
## Step 10: Determine Overall Status
|
|
863
889
|
|
|
864
|
-
**passed:** All requirements covered, all tasks complete, dependency graph valid, key links planned, scope within budget, must_haves properly derived.
|
|
890
|
+
**passed:** All requirements covered, all tasks complete, dependency graph valid, key links planned, scope within budget, must_haves properly derived — and zero issues of any severity. An INFO-only result is NOT `passed`.
|
|
865
891
|
|
|
866
|
-
**issues_found:** One or more
|
|
892
|
+
**issues_found:** One or more issues of ANY severity, including INFO-only. Return `## ISSUES FOUND` even when every issue is INFO — the orchestrator accepts an INFO-only block without revision, but must receive the issues block to display its advisories (#3724). Plans need revision only when blockers or warnings are present.
|
|
867
893
|
|
|
868
894
|
Severities: `blocker` (must fix), `warning` (should fix), `info` (suggestions).
|
|
869
895
|
|
|
@@ -871,40 +897,7 @@ Severities: `blocker` (must fix), `warning` (should fix), `info` (suggestions).
|
|
|
871
897
|
|
|
872
898
|
<examples>
|
|
873
899
|
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
**Plan 01 analysis:**
|
|
877
|
-
```
|
|
878
|
-
Tasks: 5
|
|
879
|
-
Files modified: 12
|
|
880
|
-
- prisma/schema.prisma
|
|
881
|
-
- src/app/api/auth/login/route.ts
|
|
882
|
-
- src/app/api/auth/logout/route.ts
|
|
883
|
-
- src/app/api/auth/refresh/route.ts
|
|
884
|
-
- src/middleware.ts
|
|
885
|
-
- src/lib/auth.ts
|
|
886
|
-
- src/lib/jwt.ts
|
|
887
|
-
- src/components/LoginForm.tsx
|
|
888
|
-
- src/components/LogoutButton.tsx
|
|
889
|
-
- src/app/login/page.tsx
|
|
890
|
-
- src/app/dashboard/page.tsx
|
|
891
|
-
- src/types/auth.ts
|
|
892
|
-
```
|
|
893
|
-
|
|
894
|
-
5 tasks exceeds 2-3 target, 12 files is high, auth is complex domain → quality degradation risk.
|
|
895
|
-
|
|
896
|
-
```yaml
|
|
897
|
-
issue:
|
|
898
|
-
dimension: scope_sanity
|
|
899
|
-
severity: blocker
|
|
900
|
-
description: "Plan 01 has 5 tasks with 12 files - exceeds context budget"
|
|
901
|
-
plan: "01"
|
|
902
|
-
metrics:
|
|
903
|
-
tasks: 5
|
|
904
|
-
files: 12
|
|
905
|
-
estimated_context: "~80%"
|
|
906
|
-
fix_hint: "Split into: 01 (schema + API), 02 (middleware + lib), 03 (UI components)"
|
|
907
|
-
```
|
|
900
|
+
@~/.claude/gsd-core/references/plan-checker-examples.md
|
|
908
901
|
|
|
909
902
|
</examples>
|
|
910
903
|
|
|
@@ -917,14 +910,29 @@ issue:
|
|
|
917
910
|
plan: "16-01" # Which plan (null if phase-level)
|
|
918
911
|
dimension: "task_completeness" # Which dimension failed
|
|
919
912
|
severity: "blocker" # blocker | warning | info
|
|
920
|
-
|
|
913
|
+
required_property: "..." # BINDING — the invariant that must hold
|
|
914
|
+
description: "..." # BINDING — evidence: what you observed proving it does not
|
|
921
915
|
task: 2 # Task number if applicable
|
|
922
|
-
fix_hint: "..."
|
|
916
|
+
fix_hint: "..." # NON-BINDING — ONE example route to the property
|
|
923
917
|
```
|
|
924
918
|
|
|
919
|
+
## Binding Payload vs Advisory Remediation
|
|
920
|
+
|
|
921
|
+
`required_property` + `description` + `severity` are the binding payload: what must be true,
|
|
922
|
+
the evidence it is not, and how hard that blocks. `fix_hint` is **one example** of a route to
|
|
923
|
+
that property — never the only admissible route, never an instruction. A planner that reaches
|
|
924
|
+
`required_property` by a smaller or different mechanism has addressed the issue in full.
|
|
925
|
+
|
|
926
|
+
State it as the invariant, not the edit — "every `auto` task has a `<verify>` separating pass
|
|
927
|
+
from fail", not "add a verify block". A finding you cannot state without naming your preferred
|
|
928
|
+
edit is a preference, not a defect: drop it or file `info`. Never author a `fix_hint` you can
|
|
929
|
+
see contradicts a locked decision, a CLAUDE.md convention, or an active capability constraint. If
|
|
930
|
+
every route you can name would, name NONE of them: say only that the property conflicts with that
|
|
931
|
+
constraint. A hint carrying a forbidden route is applied by anyone who trusts hints.
|
|
932
|
+
|
|
925
933
|
## Severity Levels
|
|
926
934
|
|
|
927
|
-
**blocker** -
|
|
935
|
+
**blocker** - The `required_property` must hold before execution (the property, never the hint)
|
|
928
936
|
- Missing requirement coverage
|
|
929
937
|
- Missing required task fields
|
|
930
938
|
- Circular dependencies
|
|
@@ -980,18 +988,27 @@ Plans verified. Run `/gsd:execute-phase {phase}` to proceed.
|
|
|
980
988
|
**Plans checked:** {N}
|
|
981
989
|
**Issues:** {X} blocker(s), {Y} warning(s), {Z} info
|
|
982
990
|
|
|
983
|
-
### Blockers (must fix)
|
|
991
|
+
### Blockers — these properties must hold ("must fix" is the property, never the example)
|
|
984
992
|
|
|
985
|
-
**1. [{dimension}] {
|
|
993
|
+
**1. [{dimension}] {required_property}**
|
|
986
994
|
- Plan: {plan}
|
|
987
995
|
- Task: {task if applicable}
|
|
988
|
-
-
|
|
996
|
+
- Evidence: {description}
|
|
997
|
+
- Example fix (non-binding — any mechanism reaching the property counts): {fix_hint}
|
|
998
|
+
|
|
999
|
+
### Warnings — these properties should hold
|
|
1000
|
+
|
|
1001
|
+
**1. [{dimension}] {required_property}**
|
|
1002
|
+
- Plan: {plan}
|
|
1003
|
+
- Evidence: {description}
|
|
1004
|
+
- Example fix (non-binding): {fix_hint}
|
|
989
1005
|
|
|
990
|
-
###
|
|
1006
|
+
### Advisories (info)
|
|
991
1007
|
|
|
992
|
-
**1. [{dimension}] {
|
|
1008
|
+
**1. [{dimension}] {required_property}**
|
|
993
1009
|
- Plan: {plan}
|
|
994
|
-
-
|
|
1010
|
+
- Evidence: {description}
|
|
1011
|
+
- Example fix (non-binding): {fix_hint}
|
|
995
1012
|
|
|
996
1013
|
### Structured Issues
|
|
997
1014
|
|
|
@@ -999,7 +1016,8 @@ Plans verified. Run `/gsd:execute-phase {phase}` to proceed.
|
|
|
999
1016
|
|
|
1000
1017
|
### Recommendation
|
|
1001
1018
|
|
|
1002
|
-
{N} blocker(s) require revision. Returning to planner with feedback.
|
|
1019
|
+
{N} blocker(s), {M} warning(s) require revision. Returning to planner with feedback.
|
|
1020
|
+
(When blockers and warnings are both 0, write instead: Advisory only — no revision required.)
|
|
1003
1021
|
```
|
|
1004
1022
|
|
|
1005
1023
|
</structured_returns>
|
|
@@ -1044,7 +1062,8 @@ Plan verification complete when:
|
|
|
1044
1062
|
- [ ] Architectural tier compliance checked (tasks match responsibility map tiers)
|
|
1045
1063
|
- [ ] Cross-plan data contracts checked (no conflicting transforms on shared data)
|
|
1046
1064
|
- [ ] CLAUDE.md compliance checked (plans respect project conventions)
|
|
1047
|
-
- [ ] Structured issues returned (if any found)
|
|
1065
|
+
- [ ] Structured issues returned (if any found), each carrying a binding `required_property` +
|
|
1066
|
+
evidence + severity, with `fix_hint` rendered as a non-binding example
|
|
1048
1067
|
- [ ] Result returned to orchestrator
|
|
1049
1068
|
|
|
1050
1069
|
</success_criteria>
|
package/agents/gsd-planner.md
CHANGED
|
@@ -587,6 +587,7 @@ Check the invocation mode and load the relevant reference file:
|
|
|
587
587
|
- If `--gaps` flag or gap_closure context present: Read `gsd-core/references/planner-gap-closure.md`
|
|
588
588
|
- If `<revision_context>` provided by orchestrator: Read `gsd-core/references/planner-revision.md`
|
|
589
589
|
- If `--reviews` flag present or reviews mode active: Read `gsd-core/references/planner-reviews.md`
|
|
590
|
+
- If `**Mode:** quick-batch` in `<planning_context>` (#3676, epic #3344): Read `gsd-core/references/planner-quick-batch.md`
|
|
590
591
|
- Standard planning mode: no additional file to read
|
|
591
592
|
|
|
592
593
|
Load the file before proceeding to planning steps. The reference file contains the full
|
|
@@ -754,6 +755,10 @@ for each plan B in plan_order:
|
|
|
754
755
|
```
|
|
755
756
|
|
|
756
757
|
**Rule:** Same-wave plans must have zero `files_modified`/`files_deleted` overlap. After assigning waves, scan each wave; if any file appears in 2+ plans, bump the later plan to the next wave and repeat.
|
|
758
|
+
|
|
759
|
+
**External review ordering:** When a PR opening has known automatic external review (for example a GitHub App reviewer such as CodeRabbit, configured via `.coderabbit.yaml`, which reviews automatically on PR open) and the plan includes internal review lanes, run internal review and apply the accepted internal-review fixes before the final open. If an open-time property exists (for example a not-behind-base check that must legitimately be measured at PR-open instant), re-check it immediately before opening, with nothing intervening; post-open CI, review, and tracking may follow. Examples: @gsd-core/references/planner-antipatterns.md ("External Review Before PR Open (#4107)").
|
|
760
|
+
|
|
761
|
+
Non-file coupling: @~/.claude/gsd-core/references/planner-coupling.md
|
|
757
762
|
</step>
|
|
758
763
|
|
|
759
764
|
<step name="group_into_plans">
|
|
@@ -951,6 +956,15 @@ Your orchestrator dispatches on exact marker strings in your final output. Emit
|
|
|
951
956
|
```
|
|
952
957
|
(cannot produce a plan, include exactly what is missing)
|
|
953
958
|
|
|
959
|
+
```markdown
|
|
960
|
+
## REVISION_CONFLICT
|
|
961
|
+
```
|
|
962
|
+
(revision mode only — a checker `fix_hint` contradicts a locked decision, capability guidance, or
|
|
963
|
+
an existing plan constraint, OR the `required_property` is unreachable without breaking one of
|
|
964
|
+
those. Carries the conflict and the alternatives considered, plus the
|
|
965
|
+
non-conflicting issues you did address. Not a failure: the orchestrator routes it to the user and
|
|
966
|
+
does not spend a revision iteration on it. Shape: `gsd-core/references/planner-revision.md` Step 7b)
|
|
967
|
+
|
|
954
968
|
## Standard Mode
|
|
955
969
|
|
|
956
970
|
Phase planning complete when:
|