Skip to content

fix(config): prevent workflow.research reset during milestone transitions#962

Open
j2h4u wants to merge 1 commit intogsd-build:mainfrom
j2h4u:fix/workflow-research-reset
Open

fix(config): prevent workflow.research reset during milestone transitions#962
j2h4u wants to merge 1 commit intogsd-build:mainfrom
j2h4u:fix/workflow-research-reset

Conversation

@j2h4u
Copy link
Contributor

@j2h4u j2h4u commented Mar 6, 2026

What

Two fixes that prevent workflow.research from being silently reset to false during milestone transitions:

  1. new-milestone.md — Stop persisting the per-milestone research decision to config.json. The research question is now per-invocation only; workflow.research is a persistent user preference changeable via /gsd:settings.

  2. verify.cjs — Health repair (createConfig/resetConfig) now writes the correct nested workflow: { research, plan_check, verifier, nyquist_validation } structure matching config-ensure-section, instead of flat keys with wrong names.

Why

/gsd:new-milestone always asked "Research the domain ecosystem?" and ran config-set workflow.research true/false regardless of the existing config value. This silently overwrote the user's persistent preference, causing subsequent /gsd:plan-phase calls to skip research without the user realizing it.

Separately, /gsd:health --repair wrote config with flat keys (research, plan_checker) instead of the canonical nested workflow object (workflow.research, workflow.plan_check), missing nyquist_validation, branch templates, and brave_search.

User context: I've hit this repeatedly over the last few weeks across multiple milestone transitions in a real project. For a long time I assumed I was accidentally disabling research myself and kept re-enabling it manually — it felt like a mystery. Finally traced it through git history of a project's .planning/config.json and confirmed the pattern: at least 2 out of ~10 milestone transitions silently reset workflow.research to false. The downstream impact is significant — phases get planned without codebase research, the planner guesses at code structure, and plans end up needing replans or heavy correction during execution.

Testing

  • Tested on Linux
  • Tested on macOS
  • Tested on Windows

Checklist

  • Follows GSD style (no enterprise patterns, no filler)
  • Updates CHANGELOG.md for user-facing changes
  • No unnecessary dependencies added
  • Works on Windows (no path-sensitive changes)

Breaking Changes

None

…ions

Two bugs caused workflow.research to silently reset to false:

1. new-milestone.md unconditionally overwrote workflow.research via
   config-set after asking about research — coupling a per-milestone
   decision to a persistent user preference. Now the research question
   is per-invocation only; persistent config changes via /gsd:settings.

2. verify.cjs health repair (createConfig/resetConfig) used flat keys
   (research, plan_checker, verifier) instead of the canonical nested
   workflow object from config.cjs, also missing branch templates,
   nyquist_validation, and brave_search fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@j2h4u j2h4u requested a review from glittercowboy as a code owner March 6, 2026 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant