diff --git a/src/resources/extensions/gsd/auto-prompts.ts b/src/resources/extensions/gsd/auto-prompts.ts index c507035f5..5e1984c56 100644 --- a/src/resources/extensions/gsd/auto-prompts.ts +++ b/src/resources/extensions/gsd/auto-prompts.ts @@ -1392,6 +1392,21 @@ export async function buildValidateMilestonePrompt( if (uatInline) inlined.push(uatInline); } + // Aggregate unresolved follow-ups and known limitations across slices + const outstandingItems: string[] = []; + for (const sid of valSliceIds) { + const summaryPath = resolveSliceFile(base, mid, sid, "SUMMARY"); + if (!summaryPath) continue; + const content = await loadFile(summaryPath); + if (!content) continue; + const summary = parseSummary(content); + if (summary.followUps) outstandingItems.push(`- **${sid} Follow-ups:** ${summary.followUps.trim()}`); + if (summary.knownLimitations) outstandingItems.push(`- **${sid} Known Limitations:** ${summary.knownLimitations.trim()}`); + } + if (outstandingItems.length > 0) { + inlined.push(`### Outstanding Items (aggregated from slice summaries)\n\nThese follow-ups and known limitations were documented during slice completion but have not been resolved.\n\n${outstandingItems.join('\n')}`); + } + // Inline existing VALIDATION file if this is a re-validation round const validationPath = resolveMilestoneFile(base, mid, "VALIDATION"); const validationRel = relMilestoneFile(base, mid, "VALIDATION"); diff --git a/src/resources/extensions/gsd/files.ts b/src/resources/extensions/gsd/files.ts index c2095ab70..9bd194604 100644 --- a/src/resources/extensions/gsd/files.ts +++ b/src/resources/extensions/gsd/files.ts @@ -269,6 +269,8 @@ function _parseSummaryImpl(content: string): Summary { whatHappened: nativeResult.whatHappened, deviations: nativeResult.deviations, filesModified: nativeResult.filesModified, + followUps: extractSection(content, 'Follow-ups') ?? '', + knownLimitations: extractSection(content, 'Known Limitations') ?? '', }; } @@ -330,7 +332,10 @@ function _parseSummaryImpl(content: string): Summary { } } - return { frontmatter, title, oneLiner, whatHappened, deviations, filesModified }; + const followUps = extractSection(body, 'Follow-ups') ?? ''; + const knownLimitations = extractSection(body, 'Known Limitations') ?? ''; + + return { frontmatter, title, oneLiner, whatHappened, deviations, filesModified, followUps, knownLimitations }; } // ─── Continue Parser ─────────────────────────────────────────────────────── diff --git a/src/resources/extensions/gsd/types.ts b/src/resources/extensions/gsd/types.ts index e56093f6a..ffecfc75e 100644 --- a/src/resources/extensions/gsd/types.ts +++ b/src/resources/extensions/gsd/types.ts @@ -157,6 +157,8 @@ export interface Summary { whatHappened: string; deviations: string; filesModified: FileModified[]; + followUps: string; + knownLimitations: string; } // ─── Continue-Here ─────────────────────────────────────────────────────────