Merge pull request #1265 from chrisesposito92/feat/plan-phase-reviews-flag

feat: implement --reviews flag for gsd:plan-phase
This commit is contained in:
Tom Boucher
2026-03-20 22:13:10 -04:00
committed by GitHub
7 changed files with 110 additions and 7 deletions

View File

@@ -613,6 +613,7 @@ function searchPhaseInDir(baseDir, relBase, normalized) {
const hasResearch = phaseFiles.some(f => f.endsWith('-RESEARCH.md') || f === 'RESEARCH.md');
const hasContext = phaseFiles.some(f => f.endsWith('-CONTEXT.md') || f === 'CONTEXT.md');
const hasVerification = phaseFiles.some(f => f.endsWith('-VERIFICATION.md') || f === 'VERIFICATION.md');
const hasReviews = phaseFiles.some(f => f.endsWith('-REVIEWS.md') || f === 'REVIEWS.md');
const completedPlanIds = new Set(
summaries.map(s => s.replace('-SUMMARY.md', '').replace('SUMMARY.md', ''))
@@ -634,6 +635,7 @@ function searchPhaseInDir(baseDir, relBase, normalized) {
has_research: hasResearch,
has_context: hasContext,
has_verification: hasVerification,
has_reviews: hasReviews,
};
} catch {
return null;

View File

@@ -60,6 +60,7 @@ function cmdInitExecutePhase(cwd, phase, raw) {
has_research: false,
has_context: false,
has_verification: false,
has_reviews: false,
};
}
const reqMatch = roadmapPhase?.section?.match(/^\*\*Requirements\*\*:[^\S\n]*([^\n]*)$/m);
@@ -152,6 +153,7 @@ function cmdInitPlanPhase(cwd, phase, raw) {
has_research: false,
has_context: false,
has_verification: false,
has_reviews: false,
};
}
const reqMatch = roadmapPhase?.section?.match(/^\*\*Requirements\*\*:[^\S\n]*([^\n]*)$/m);
@@ -184,6 +186,7 @@ function cmdInitPlanPhase(cwd, phase, raw) {
// Existing artifacts
has_research: phaseInfo?.has_research || false,
has_context: phaseInfo?.has_context || false,
has_reviews: phaseInfo?.has_reviews || false,
has_plans: (phaseInfo?.plans?.length || 0) > 0,
plan_count: phaseInfo?.plans?.length || 0,
@@ -218,6 +221,10 @@ function cmdInitPlanPhase(cwd, phase, raw) {
if (uatFile) {
result.uat_path = toPosixPath(path.join(phaseInfo.directory, uatFile));
}
const reviewsFile = files.find(f => f.endsWith('-REVIEWS.md') || f === 'REVIEWS.md');
if (reviewsFile) {
result.reviews_path = toPosixPath(path.join(phaseInfo.directory, reviewsFile));
}
} catch { /* intentionally empty */ }
}
@@ -557,6 +564,7 @@ function cmdInitPhaseOp(cwd, phase, raw) {
has_context: phaseInfo?.has_context || false,
has_plans: (phaseInfo?.plans?.length || 0) > 0,
has_verification: phaseInfo?.has_verification || false,
has_reviews: phaseInfo?.has_reviews || false,
plan_count: phaseInfo?.plans?.length || 0,
// File existence
@@ -589,6 +597,10 @@ function cmdInitPhaseOp(cwd, phase, raw) {
if (uatFile) {
result.uat_path = toPosixPath(path.join(phaseInfo.directory, uatFile));
}
const reviewsFile = files.find(f => f.endsWith('-REVIEWS.md') || f === 'REVIEWS.md');
if (reviewsFile) {
result.reviews_path = toPosixPath(path.join(phaseInfo.directory, reviewsFile));
}
} catch { /* intentionally empty */ }
}