@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.
Files changed (455) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.opencode/plugins/gsd-core.js +12 -0
  4. package/agents/gsd-advisor-researcher.compact.md +85 -0
  5. package/agents/gsd-ai-researcher.compact.md +96 -0
  6. package/agents/gsd-assumptions-analyzer.compact.md +81 -0
  7. package/agents/gsd-code-fixer.compact.md +458 -0
  8. package/agents/gsd-code-fixer.md +5 -5
  9. package/agents/gsd-code-reviewer.compact.md +269 -0
  10. package/agents/gsd-code-reviewer.md +15 -3
  11. package/agents/gsd-codebase-mapper.compact.md +760 -0
  12. package/agents/gsd-debug-session-manager.compact.md +345 -0
  13. package/agents/gsd-doc-classifier.compact.md +192 -0
  14. package/agents/gsd-doc-synthesizer.compact.md +200 -0
  15. package/agents/gsd-doc-verifier.compact.md +143 -0
  16. package/agents/gsd-doc-writer.compact.md +440 -0
  17. package/agents/gsd-dom-verifier.compact.md +138 -0
  18. package/agents/gsd-domain-researcher.compact.md +141 -0
  19. package/agents/gsd-eval-auditor.compact.md +160 -0
  20. package/agents/gsd-eval-planner.compact.md +137 -0
  21. package/agents/gsd-executor.md +63 -35
  22. package/agents/gsd-framework-selector.compact.md +82 -0
  23. package/agents/gsd-integration-checker.compact.md +245 -0
  24. package/agents/gsd-intel-updater.compact.md +226 -0
  25. package/agents/gsd-mempalace-curator.compact.md +45 -0
  26. package/agents/gsd-nyquist-auditor.compact.md +179 -0
  27. package/agents/gsd-pattern-mapper.compact.md +275 -0
  28. package/agents/gsd-plan-checker.md +76 -57
  29. package/agents/gsd-planner.md +14 -0
  30. package/agents/gsd-project-researcher.compact.md +587 -0
  31. package/agents/gsd-research-synthesizer.compact.md +212 -0
  32. package/agents/gsd-roadmapper.compact.md +454 -0
  33. package/agents/gsd-roadmapper.md +13 -0
  34. package/agents/gsd-security-auditor.compact.md +162 -0
  35. package/agents/gsd-ui-auditor.compact.md +404 -0
  36. package/agents/gsd-ui-checker.compact.md +277 -0
  37. package/agents/gsd-ui-checker.md +19 -3
  38. package/agents/gsd-ui-researcher.compact.md +282 -0
  39. package/agents/gsd-ui-researcher.md +29 -0
  40. package/agents/gsd-user-profiler.compact.md +108 -0
  41. package/agents/gsd-verifier.md +23 -1
  42. package/bin/install.js +444 -134
  43. package/commands/gsd/cleanup.md +1 -0
  44. package/commands/gsd/code-review.md +2 -1
  45. package/commands/gsd/complete-milestone.md +1 -0
  46. package/commands/gsd/config.md +1 -0
  47. package/commands/gsd/debug.md +1 -0
  48. package/commands/gsd/execute-phase.md +1 -1
  49. package/commands/gsd/graphify.md +1 -0
  50. package/commands/gsd/health.md +1 -0
  51. package/commands/gsd/mempalace-capture.md +1 -0
  52. package/commands/gsd/mempalace-recall.md +1 -0
  53. package/commands/gsd/new-milestone.md +1 -0
  54. package/commands/gsd/new-project.md +1 -0
  55. package/commands/gsd/next.md +1 -0
  56. package/commands/gsd/ns-workflow.md +2 -1
  57. package/commands/gsd/pause-work.md +1 -0
  58. package/commands/gsd/phase.md +2 -1
  59. package/commands/gsd/pr-branch.md +1 -0
  60. package/commands/gsd/quick-batch.md +105 -0
  61. package/commands/gsd/resume-work.md +1 -0
  62. package/commands/gsd/review-backlog.md +1 -0
  63. package/commands/gsd/settings.md +2 -1
  64. package/commands/gsd/stats.md +1 -0
  65. package/commands/gsd/surface.md +18 -8
  66. package/commands/gsd/thread.md +1 -0
  67. package/commands/gsd/workspace.md +1 -0
  68. package/commands/gsd/workstreams.md +1 -0
  69. package/gsd-core/bin/check-latest-version.cjs +8 -3
  70. package/gsd-core/bin/gsd-tools.cjs +532 -174
  71. package/gsd-core/bin/lib/adr-parser.cjs +1 -1
  72. package/gsd-core/bin/lib/artifacts.cjs +2 -1
  73. package/gsd-core/bin/lib/audit.cjs +39 -22
  74. package/gsd-core/bin/lib/broken-windows.cjs +168 -49
  75. package/gsd-core/bin/lib/capability-activation.cjs +27 -0
  76. package/gsd-core/bin/lib/capability-lifecycle.cjs +10 -6
  77. package/gsd-core/bin/lib/capability-loader.cjs +135 -1
  78. package/gsd-core/bin/lib/capability-registry.cjs +528 -116
  79. package/gsd-core/bin/lib/capability-source.cjs +19 -2
  80. package/gsd-core/bin/lib/capability-state.cjs +7 -1
  81. package/gsd-core/bin/lib/capability-validator.cjs +134 -5
  82. package/gsd-core/bin/lib/capability-writer.cjs +14 -4
  83. package/gsd-core/bin/lib/check-command-router.cjs +198 -38
  84. package/gsd-core/bin/lib/claude-orchestration.cjs +10 -25
  85. package/gsd-core/bin/lib/clusters.cjs +1 -0
  86. package/gsd-core/bin/lib/code-review-depth.cjs +2 -2
  87. package/gsd-core/bin/lib/command-aliases.cjs +16 -0
  88. package/gsd-core/bin/lib/commands.cjs +981 -79
  89. package/gsd-core/bin/lib/config-loader.cjs +4 -0
  90. package/gsd-core/bin/lib/config.cjs +153 -38
  91. package/gsd-core/bin/lib/core-utils.cjs +34 -7
  92. package/gsd-core/bin/lib/coverage.cjs +1 -1
  93. package/gsd-core/bin/lib/decisions.cjs +343 -28
  94. package/gsd-core/bin/lib/edge-probe.cjs +14 -1
  95. package/gsd-core/bin/lib/external-descriptor-trust.cjs +29 -14
  96. package/gsd-core/bin/lib/file-overlap-partitioner.cjs +74 -0
  97. package/gsd-core/bin/lib/frontmatter.cjs +137 -23
  98. package/gsd-core/bin/lib/gap-checker.cjs +22 -13
  99. package/gsd-core/bin/lib/git-base-branch.cjs +10 -2
  100. package/gsd-core/bin/lib/gsd2-import.cjs +1 -2
  101. package/gsd-core/bin/lib/health-diagnostic-rules/phase-structure.cjs +8 -2
  102. package/gsd-core/bin/lib/health-diagnostic-rules/roadmap-disk-consistency.cjs +54 -11
  103. package/gsd-core/bin/lib/health-diagnostic-rules/state-consistency.cjs +87 -23
  104. package/gsd-core/bin/lib/health-diagnostic-rules/worktree-health.cjs +1 -1
  105. package/gsd-core/bin/lib/host-integration.cjs +57 -5
  106. package/gsd-core/bin/lib/init-command-router.cjs +14 -0
  107. package/gsd-core/bin/lib/init.cjs +539 -60
  108. package/gsd-core/bin/lib/install-engine.cjs +199 -14
  109. package/gsd-core/bin/lib/install-model-override-resolver.cjs +45 -0
  110. package/gsd-core/bin/lib/install-profiles.cjs +36 -14
  111. package/gsd-core/bin/lib/installer-migration-report.cjs +1 -0
  112. package/gsd-core/bin/lib/installer-migrations.cjs +33 -4
  113. package/gsd-core/bin/lib/io.cjs +35 -0
  114. package/gsd-core/bin/lib/loop-resolver.cjs +64 -39
  115. package/gsd-core/bin/lib/markdown-table.cjs +123 -0
  116. package/gsd-core/bin/lib/mcp-catalog.cjs +2 -2
  117. package/gsd-core/bin/lib/milestone.cjs +41 -10
  118. package/gsd-core/bin/lib/model-resolver.cjs +101 -10
  119. package/gsd-core/bin/lib/phase-command-router.cjs +20 -7
  120. package/gsd-core/bin/lib/phase-id.cjs +412 -31
  121. package/gsd-core/bin/lib/phase-lifecycle.cjs +61 -0
  122. package/gsd-core/bin/lib/phase.cjs +941 -98
  123. package/gsd-core/bin/lib/plan-document.cjs +10 -0
  124. package/gsd-core/bin/lib/planning-inspect.cjs +34 -18
  125. package/gsd-core/bin/lib/planning-snapshot.cjs +206 -30
  126. package/gsd-core/bin/lib/planning-workspace.cjs +153 -29
  127. package/gsd-core/bin/lib/pristine-baseline.cjs +182 -0
  128. package/gsd-core/bin/lib/prohibition-enforcement.cjs +91 -4
  129. package/gsd-core/bin/lib/quick-batch-command-router.cjs +285 -0
  130. package/gsd-core/bin/lib/quick-batch-dispatch.cjs +250 -0
  131. package/gsd-core/bin/lib/quick-batch.cjs +840 -0
  132. package/gsd-core/bin/lib/refactor-trigger-command-router.cjs +61 -2
  133. package/gsd-core/bin/lib/research-store.cjs +11 -12
  134. package/gsd-core/bin/lib/review-lane-descriptor.cjs +53 -5
  135. package/gsd-core/bin/lib/review-lane-invocation.cjs +96 -1
  136. package/gsd-core/bin/lib/review-lane-runner.cjs +136 -10
  137. package/gsd-core/bin/lib/reviewer-step-dispatch.cjs +337 -0
  138. package/gsd-core/bin/lib/roadmap-parser.cjs +555 -41
  139. package/gsd-core/bin/lib/roadmap.cjs +292 -69
  140. package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +260 -43
  141. package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +28 -20
  142. package/gsd-core/bin/lib/runtime-artifact-layout.cjs +294 -108
  143. package/gsd-core/bin/lib/runtime-hooks-surface.cjs +408 -47
  144. package/gsd-core/bin/lib/security.cjs +126 -7
  145. package/gsd-core/bin/lib/shell-command-projection.cjs +4 -0
  146. package/gsd-core/bin/lib/smart-entry.cjs +7 -9
  147. package/gsd-core/bin/lib/state-document.cjs +159 -32
  148. package/gsd-core/bin/lib/state-md-schema.cjs +44 -27
  149. package/gsd-core/bin/lib/state-transition.cjs +465 -62
  150. package/gsd-core/bin/lib/state.cjs +906 -151
  151. package/gsd-core/bin/lib/surface.cjs +83 -10
  152. package/gsd-core/bin/lib/task-command-router.cjs +12 -6
  153. package/gsd-core/bin/lib/tdd-red-evidence.cjs +133 -0
  154. package/gsd-core/bin/lib/uat.cjs +1420 -516
  155. package/gsd-core/bin/lib/update-context.cjs +36 -26
  156. package/gsd-core/bin/lib/validate.cjs +230 -12
  157. package/gsd-core/bin/lib/vendor/js-yaml.cjs +11 -3
  158. package/gsd-core/bin/lib/verification-command-router.cjs +2 -1
  159. package/gsd-core/bin/lib/verification.cjs +316 -23
  160. package/gsd-core/bin/lib/verify-command-grounding.cjs +1 -1
  161. package/gsd-core/bin/lib/verify-command-router.cjs +1 -0
  162. package/gsd-core/bin/lib/verify.cjs +531 -36
  163. package/gsd-core/bin/lib/workstream-inventory.cjs +21 -2
  164. package/gsd-core/bin/lib/worktree-safety.cjs +21 -7
  165. package/gsd-core/bin/shared/config-defaults.manifest.json +1 -0
  166. package/gsd-core/bin/shared/config-schema.manifest.json +13 -0
  167. package/gsd-core/bin/verify-reapply-patches.cjs +507 -81
  168. package/gsd-core/references/agent-contracts.md +3 -3
  169. package/gsd-core/references/compact-content-gate.md +66 -0
  170. package/gsd-core/references/edge-probe.md +17 -13
  171. package/gsd-core/references/execute-mvp-tdd.md +18 -16
  172. package/gsd-core/references/execute-phase-response-language.md +6 -0
  173. package/gsd-core/references/executor-examples.md +42 -0
  174. package/gsd-core/references/few-shot-examples/plan-checker.md +15 -15
  175. package/gsd-core/references/loop-hook-dispatch.md +18 -0
  176. package/gsd-core/references/model-profiles.md +12 -3
  177. package/gsd-core/references/mvp-concepts.md +2 -2
  178. package/gsd-core/references/plan-checker-examples.md +41 -0
  179. package/gsd-core/references/planner-antipatterns.md +25 -0
  180. package/gsd-core/references/planner-chunked.md +5 -1
  181. package/gsd-core/references/planner-coupling.md +42 -0
  182. package/gsd-core/references/planner-quick-batch.md +71 -0
  183. package/gsd-core/references/planner-reviews.md +47 -0
  184. package/gsd-core/references/planner-revision.md +75 -2
  185. package/gsd-core/references/planning-config.md +5 -1
  186. package/gsd-core/references/response-language-directive.md +9 -0
  187. package/gsd-core/references/revision-loop.md +118 -11
  188. package/gsd-core/references/tdd.md +17 -9
  189. package/gsd-core/references/thinking-models-planning.md +18 -2
  190. package/gsd-core/references/verification-patterns.md +17 -4
  191. package/gsd-core/references/verifier-evidence-gate.md +160 -0
  192. package/gsd-core/references/worktree-path-safety.md +112 -2
  193. package/gsd-core/templates/README.md +7 -1
  194. package/gsd-core/templates/phase-prompt.md +4 -0
  195. package/gsd-core/templates/state.md +6 -3
  196. package/gsd-core/templates/summary.compact.md +212 -0
  197. package/gsd-core/templates/user-setup.compact.md +199 -0
  198. package/gsd-core/templates/user-setup.md +0 -9
  199. package/gsd-core/templates/verification-report.md +5 -0
  200. package/gsd-core/workflows/add-backlog.md +2 -0
  201. package/gsd-core/workflows/add-phase.md +2 -0
  202. package/gsd-core/workflows/add-tests.md +1 -1
  203. package/gsd-core/workflows/add-todo.md +4 -3
  204. package/gsd-core/workflows/ai-integration-phase.md +1 -1
  205. package/gsd-core/workflows/analyze-dependencies.md +2 -0
  206. package/gsd-core/workflows/audit-fix.md +2 -0
  207. package/gsd-core/workflows/audit-milestone.md +2 -0
  208. package/gsd-core/workflows/audit-uat.md +2 -0
  209. package/gsd-core/workflows/autonomous.md +15 -10
  210. package/gsd-core/workflows/check-todos.md +5 -3
  211. package/gsd-core/workflows/cleanup.md +4 -2
  212. package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +22 -13
  213. package/gsd-core/workflows/code-review-fix.md +5 -3
  214. package/gsd-core/workflows/code-review.md +211 -43
  215. package/gsd-core/workflows/complete-milestone/detail/elaboration.md +274 -0
  216. package/gsd-core/workflows/complete-milestone.md +40 -254
  217. package/gsd-core/workflows/debug.md +1 -1
  218. package/gsd-core/workflows/diagnose-issues.md +5 -1
  219. package/gsd-core/workflows/discuss-phase/modes/advisor.md +2 -0
  220. package/gsd-core/workflows/discuss-phase/modes/all.md +2 -0
  221. package/gsd-core/workflows/discuss-phase/modes/analyze.md +2 -0
  222. package/gsd-core/workflows/discuss-phase/modes/auto.md +2 -0
  223. package/gsd-core/workflows/discuss-phase/modes/batch.md +2 -0
  224. package/gsd-core/workflows/discuss-phase/modes/chain.md +2 -0
  225. package/gsd-core/workflows/discuss-phase/modes/default.md +2 -0
  226. package/gsd-core/workflows/discuss-phase/modes/power.md +2 -0
  227. package/gsd-core/workflows/discuss-phase/modes/text.md +2 -0
  228. package/gsd-core/workflows/discuss-phase/templates/context.md +2 -0
  229. package/gsd-core/workflows/discuss-phase/templates/discussion-log.md +2 -0
  230. package/gsd-core/workflows/discuss-phase-assumptions.md +1 -1
  231. package/gsd-core/workflows/discuss-phase-power.md +2 -0
  232. package/gsd-core/workflows/discuss-phase.md +1 -1
  233. package/gsd-core/workflows/do.md +43 -13
  234. package/gsd-core/workflows/docs-update/detail/elaboration.md +179 -0
  235. package/gsd-core/workflows/docs-update.md +15 -156
  236. package/gsd-core/workflows/edit-phase.md +2 -0
  237. package/gsd-core/workflows/eval-review.md +1 -1
  238. package/gsd-core/workflows/execute-phase/detail/elaboration.md +124 -0
  239. package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +20 -3
  240. package/gsd-core/workflows/execute-phase/steps/completion-reconciliation.md +56 -0
  241. package/gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md +24 -3
  242. package/gsd-core/workflows/execute-phase/steps/executor-progress-policy.md +43 -0
  243. package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +8 -2
  244. package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +2 -0
  245. package/gsd-core/workflows/execute-phase/steps/sequential-root-pin.md +35 -0
  246. package/gsd-core/workflows/execute-phase/steps/tdd-applicability-resolution.md +25 -0
  247. package/gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md +2 -0
  248. package/gsd-core/workflows/execute-phase.md +78 -159
  249. package/gsd-core/workflows/execute-plan.md +28 -15
  250. package/gsd-core/workflows/explore.md +2 -0
  251. package/gsd-core/workflows/extract-learnings.md +2 -0
  252. package/gsd-core/workflows/fast.md +6 -0
  253. package/gsd-core/workflows/forensics.md +2 -0
  254. package/gsd-core/workflows/graduation.md +1 -1
  255. package/gsd-core/workflows/health.md +1 -1
  256. package/gsd-core/workflows/help/modes/brief.md +2 -0
  257. package/gsd-core/workflows/help/modes/default.md +2 -0
  258. package/gsd-core/workflows/help/modes/full.compact.md +398 -0
  259. package/gsd-core/workflows/help/modes/full.md +12 -0
  260. package/gsd-core/workflows/help/modes/topic.md +2 -0
  261. package/gsd-core/workflows/help.md +3 -1
  262. package/gsd-core/workflows/import.md +3 -3
  263. package/gsd-core/workflows/inbox.md +1 -1
  264. package/gsd-core/workflows/ingest-docs.md +1 -1
  265. package/gsd-core/workflows/insert-phase.md +2 -0
  266. package/gsd-core/workflows/list-phase-assumptions.md +2 -0
  267. package/gsd-core/workflows/list-seeds.md +2 -0
  268. package/gsd-core/workflows/list-workspaces.md +2 -0
  269. package/gsd-core/workflows/manager.md +3 -3
  270. package/gsd-core/workflows/map-codebase.md +52 -3
  271. package/gsd-core/workflows/milestone-summary.md +2 -0
  272. package/gsd-core/workflows/mvp-phase.md +1 -1
  273. package/gsd-core/workflows/new-milestone.md +55 -13
  274. package/gsd-core/workflows/new-project/detail/elaboration.md +216 -0
  275. package/gsd-core/workflows/new-project.md +37 -205
  276. package/gsd-core/workflows/new-workspace.md +1 -1
  277. package/gsd-core/workflows/next.md +2 -0
  278. package/gsd-core/workflows/node-repair.md +2 -0
  279. package/gsd-core/workflows/note.md +2 -0
  280. package/gsd-core/workflows/onboard.md +1 -1
  281. package/gsd-core/workflows/pause-work.md +19 -4
  282. package/gsd-core/workflows/plan-phase/detail/elaboration.md +209 -0
  283. package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +100 -18
  284. package/gsd-core/workflows/plan-phase/steps/prd-express-path.md +2 -0
  285. package/gsd-core/workflows/plan-phase/steps/stall-detection-helpers.md +9 -0
  286. package/gsd-core/workflows/plan-phase.md +144 -185
  287. package/gsd-core/workflows/plan-review-convergence.md +102 -10
  288. package/gsd-core/workflows/plant-seed.md +1 -1
  289. package/gsd-core/workflows/pr-branch.md +30 -10
  290. package/gsd-core/workflows/profile-user.md +1 -1
  291. package/gsd-core/workflows/progress/steps/forensic-audit.md +1 -1
  292. package/gsd-core/workflows/progress.md +25 -3
  293. package/gsd-core/workflows/quick/steps/plan-checker-loop.md +37 -2
  294. package/gsd-core/workflows/quick/steps/research-phase.md +3 -3
  295. package/gsd-core/workflows/quick-batch/steps/batch-init.md +55 -0
  296. package/gsd-core/workflows/quick-batch/steps/completion.md +65 -0
  297. package/gsd-core/workflows/quick-batch/steps/merge-wave.md +100 -0
  298. package/gsd-core/workflows/quick-batch/steps/plan-checker-loop.md +147 -0
  299. package/gsd-core/workflows/quick-batch/steps/planner-wave.md +158 -0
  300. package/gsd-core/workflows/quick-batch/steps/research-phase.md +95 -0
  301. package/gsd-core/workflows/quick-batch/steps/resume-mode.md +49 -0
  302. package/gsd-core/workflows/quick-batch/steps/verification-wave.md +73 -0
  303. package/gsd-core/workflows/quick-batch/steps/worktree-dispatch.md +169 -0
  304. package/gsd-core/workflows/quick-batch.md +203 -0
  305. package/gsd-core/workflows/quick.md +21 -4
  306. package/gsd-core/workflows/reapply-patches.md +79 -3
  307. package/gsd-core/workflows/remove-phase.md +2 -0
  308. package/gsd-core/workflows/remove-workspace.md +1 -1
  309. package/gsd-core/workflows/resume-project.md +6 -2
  310. package/gsd-core/workflows/review.md +215 -10
  311. package/gsd-core/workflows/scan.md +2 -0
  312. package/gsd-core/workflows/section-manifest.json +12 -0
  313. package/gsd-core/workflows/secure-phase.md +1 -1
  314. package/gsd-core/workflows/session-report.md +2 -0
  315. package/gsd-core/workflows/settings-advanced.md +2 -0
  316. package/gsd-core/workflows/settings-integrations.md +9 -8
  317. package/gsd-core/workflows/settings.md +19 -6
  318. package/gsd-core/workflows/ship.md +10 -10
  319. package/gsd-core/workflows/sketch-wrap-up.md +2 -0
  320. package/gsd-core/workflows/sketch.md +1 -1
  321. package/gsd-core/workflows/smart-entry.md +1 -1
  322. package/gsd-core/workflows/spec-phase.md +24 -19
  323. package/gsd-core/workflows/spike-wrap-up.md +2 -0
  324. package/gsd-core/workflows/spike.md +1 -1
  325. package/gsd-core/workflows/stats.md +2 -0
  326. package/gsd-core/workflows/sync-skills.md +12 -4
  327. package/gsd-core/workflows/thread.md +2 -0
  328. package/gsd-core/workflows/transition.md +2 -0
  329. package/gsd-core/workflows/ui-phase.md +26 -5
  330. package/gsd-core/workflows/ui-review.md +1 -1
  331. package/gsd-core/workflows/ultraplan-phase.md +2 -0
  332. package/gsd-core/workflows/undo.md +1 -1
  333. package/gsd-core/workflows/update.md +48 -43
  334. package/gsd-core/workflows/validate-phase.md +1 -1
  335. package/gsd-core/workflows/verify-work/detail/elaboration.md +230 -0
  336. package/gsd-core/workflows/verify-work.md +68 -182
  337. package/hooks/dist/gsd-agent-isolation-guard.js +42 -16
  338. package/hooks/dist/gsd-check-update-worker.js +19 -2
  339. package/hooks/dist/gsd-context-monitor.js +371 -27
  340. package/hooks/dist/gsd-cursor-subagent-start.js +34 -14
  341. package/hooks/dist/gsd-node-runner.sh +1 -0
  342. package/hooks/dist/gsd-prompt-guard.js +30 -5
  343. package/hooks/dist/gsd-read-guard.js +2 -0
  344. package/hooks/dist/gsd-read-injection-scanner.js +5 -5
  345. package/hooks/dist/gsd-secret-read-guard.js +1105 -0
  346. package/hooks/dist/gsd-statusline.js +18 -10
  347. package/hooks/dist/gsd-validate-commit.sh +474 -7
  348. package/hooks/dist/gsd-workflow-guard.js +2 -1
  349. package/hooks/dist/gsd-worktree-path-guard.js +25 -14
  350. package/hooks/dist/gsd-write-guard.js +46 -1
  351. package/hooks/dist/lib/dispatch-identity.js +187 -0
  352. package/hooks/dist/lib/filename-classification.js +64 -0
  353. package/hooks/dist/lib/git-cmd.js +210 -1
  354. package/hooks/dist/lib/injection-patterns.js +36 -6
  355. package/hooks/dist/lib/isolation-deny-reason.js +53 -1
  356. package/hooks/dist/lib/isolation-sentinel.js +58 -19
  357. package/hooks/dist/managed-hooks-registry.cjs +1 -0
  358. package/hooks/gsd-agent-isolation-guard.js +42 -16
  359. package/hooks/gsd-check-update-worker.js +19 -2
  360. package/hooks/gsd-context-monitor.js +371 -27
  361. package/hooks/gsd-cursor-subagent-start.js +34 -14
  362. package/hooks/gsd-node-runner.sh +1 -0
  363. package/hooks/gsd-prompt-guard.js +30 -5
  364. package/hooks/gsd-read-guard.js +2 -0
  365. package/hooks/gsd-read-injection-scanner.js +5 -5
  366. package/hooks/gsd-secret-read-guard.js +1105 -0
  367. package/hooks/gsd-statusline.js +18 -10
  368. package/hooks/gsd-validate-commit.sh +474 -7
  369. package/hooks/gsd-workflow-guard.js +2 -1
  370. package/hooks/gsd-worktree-path-guard.js +25 -14
  371. package/hooks/gsd-write-guard.js +46 -1
  372. package/hooks/hooks.json +6 -0
  373. package/hooks/lib/dispatch-identity.js +187 -0
  374. package/hooks/lib/filename-classification.js +64 -0
  375. package/hooks/lib/git-cmd.js +210 -1
  376. package/hooks/lib/injection-patterns.js +36 -6
  377. package/hooks/lib/isolation-deny-reason.js +53 -1
  378. package/hooks/lib/isolation-sentinel.js +58 -19
  379. package/hooks/managed-hooks-registry.cjs +1 -0
  380. package/package.json +13 -9
  381. package/scripts/benchmark-compact-content-variants.cjs +298 -0
  382. package/scripts/benchmark-compact-content.cjs +368 -0
  383. package/scripts/build-hooks.js +11 -4
  384. package/scripts/check-contract-drift.cjs +4 -1
  385. package/scripts/check-env.cjs +36 -8
  386. package/scripts/check-glossary-refs.cjs +25 -21
  387. package/scripts/ci-next-health.cjs +271 -0
  388. package/scripts/ci-prepare-test-scope.cjs +7 -7
  389. package/scripts/ci-test-scope.cjs +133 -20
  390. package/scripts/ci-timeout-report.cjs +1 -1
  391. package/scripts/diff-touches-shipped-paths.cjs +1 -1
  392. package/scripts/docs-guard-registry.cjs +17 -2
  393. package/scripts/gen-adr-index.cjs +8 -2
  394. package/scripts/gen-inventory-manifest.cjs +12 -0
  395. package/scripts/gen-loop-host-contract.cjs +67 -15
  396. package/scripts/gen-platform-conformance-tier.cjs +557 -0
  397. package/scripts/lib/drift-scan.cjs +1 -1
  398. package/scripts/lib/macos-conformance-tier.generated.cjs +210 -0
  399. package/scripts/lib/npm-version-check-diagnosis.cjs +59 -0
  400. package/scripts/lib/platform-conformance-tier.generated.cjs +276 -0
  401. package/scripts/lib/shellcheck-fetch.cjs +247 -0
  402. package/scripts/lib/suite-detection.cjs +32 -0
  403. package/scripts/lint-allow-test-rule-refs.allowlist.json +0 -6
  404. package/scripts/lint-allow-test-rule-refs.effective-ceiling.json +1 -1
  405. package/scripts/lint-allow-test-rule-refs.unverified-ceiling.json +1 -1
  406. package/scripts/lint-allowed-tools-parity.cjs +221 -0
  407. package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +24 -2
  408. package/scripts/lint-phase-enumeration-drift.cjs +24 -6
  409. package/scripts/lint-phase-id-drift.cjs +465 -15
  410. package/scripts/lint-portable-grep.cjs +176 -0
  411. package/scripts/lint-response-language-coverage.cjs +530 -0
  412. package/scripts/lint-source-test-name-collision.cjs +1 -1
  413. package/scripts/lint-test-file-count.allowlist.json +4 -1
  414. package/scripts/lint-vendored-deps.cjs +128 -17
  415. package/scripts/lint-workflow-shellcheck-baseline.json +1112 -0
  416. package/scripts/lint-workflow-shellcheck.cjs +614 -0
  417. package/scripts/npm-audit-baseline.cjs +376 -0
  418. package/scripts/prompt-injection-scan.sh +22 -0
  419. package/scripts/require-issue-link-policy.cjs +16 -1
  420. package/scripts/workflow-size.cjs +139 -0
  421. package/skills/gsd-cleanup/SKILL.md +1 -0
  422. package/skills/gsd-code-review/SKILL.md +2 -1
  423. package/skills/gsd-complete-milestone/SKILL.md +1 -0
  424. package/skills/gsd-config/SKILL.md +1 -0
  425. package/skills/gsd-debug/SKILL.md +1 -0
  426. package/skills/gsd-execute-phase/SKILL.md +1 -1
  427. package/skills/gsd-graphify/SKILL.md +1 -0
  428. package/skills/gsd-health/SKILL.md +1 -0
  429. package/skills/gsd-mempalace-capture/SKILL.md +1 -0
  430. package/skills/gsd-mempalace-recall/SKILL.md +1 -0
  431. package/skills/gsd-new-milestone/SKILL.md +1 -0
  432. package/skills/gsd-new-project/SKILL.md +1 -0
  433. package/skills/gsd-next/SKILL.md +1 -0
  434. package/skills/gsd-ns-workflow/SKILL.md +1 -0
  435. package/skills/gsd-pause-work/SKILL.md +1 -0
  436. package/skills/gsd-phase/SKILL.md +2 -1
  437. package/skills/gsd-pr-branch/SKILL.md +1 -0
  438. package/skills/gsd-quick-batch/SKILL.md +105 -0
  439. package/skills/gsd-resume-work/SKILL.md +1 -0
  440. package/skills/gsd-review-backlog/SKILL.md +1 -0
  441. package/skills/gsd-settings/SKILL.md +2 -1
  442. package/skills/gsd-stats/SKILL.md +1 -0
  443. package/skills/gsd-surface/SKILL.md +18 -8
  444. package/skills/gsd-thread/SKILL.md +1 -0
  445. package/skills/gsd-workspace/SKILL.md +1 -0
  446. package/skills/gsd-workstreams/SKILL.md +1 -0
  447. package/vscode/package.json +1 -1
  448. package/gsd-core/templates/claude-md.md +0 -145
  449. package/gsd-core/templates/codebase/concerns.md +0 -310
  450. package/gsd-core/templates/codebase/conventions.md +0 -307
  451. package/gsd-core/templates/codebase/integrations.md +0 -280
  452. package/gsd-core/templates/codebase/structure.md +0 -285
  453. package/gsd-core/templates/codebase/testing.md +0 -480
  454. package/gsd-core/templates/debug-subagent-prompt.md +0 -91
  455. 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
- Issues without a severity classification are not valid output.
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 WARNING, never a blocker.** Coupling is sometimes intentional; the finding
237
- lets the planner declare the edge, move a plan to a later wave, or justify the pair.
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: warning
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 justify either order"
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
- description: "Plan 01 has 5 tasks - split recommended"
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: 5
327
- files: 12
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 blockers or warnings. Plans need revision.
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
- ## Scope Exceeded (most common miss)
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
- description: "..."
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** - Must fix before execution
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}] {description}**
993
+ **1. [{dimension}] {required_property}**
986
994
  - Plan: {plan}
987
995
  - Task: {task if applicable}
988
- - Fix: {fix_hint}
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
- ### Warnings (should fix)
1006
+ ### Advisories (info)
991
1007
 
992
- **1. [{dimension}] {description}**
1008
+ **1. [{dimension}] {required_property}**
993
1009
  - Plan: {plan}
994
- - Fix: {fix_hint}
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>
@@ -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: