From cd87c9937d085496a4ca03a221f263c592647136 Mon Sep 17 00:00:00 2001 From: Tibsfox Date: Sun, 5 Apr 2026 11:00:09 -0700 Subject: [PATCH] fix(gsd): treat zero-slice roadmap as pre-planning in guided flow --- src/resources/extensions/gsd/guided-flow.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/resources/extensions/gsd/guided-flow.ts b/src/resources/extensions/gsd/guided-flow.ts index d0f400448..6d924d9ac 100644 --- a/src/resources/extensions/gsd/guided-flow.ts +++ b/src/resources/extensions/gsd/guided-flow.ts @@ -1314,7 +1314,19 @@ export async function showSmartEntry( const roadmapFile = resolveMilestoneFile(basePath, milestoneId, "ROADMAP"); const hasRoadmap = !!(roadmapFile && await loadFile(roadmapFile)); - if (!hasRoadmap) { + // A roadmap file with zero parseable slices (placeholder text) should be + // treated the same as no roadmap — offer "Create roadmap" instead of "Go auto" + // which would immediately get stuck in blocked state (#3441). + let roadmapHasSlices = false; + if (hasRoadmap) { + const roadmapContent = await loadFile(roadmapFile!); + if (roadmapContent) { + const parsed = parseRoadmapSlices(roadmapContent); + roadmapHasSlices = parsed.length > 0; + } + } + + if (!hasRoadmap || !roadmapHasSlices) { // No roadmap → discuss or plan const contextFile = resolveMilestoneFile(basePath, milestoneId, "CONTEXT"); const hasContext = !!(contextFile && await loadFile(contextFile));