feat: add require_slice_discussion option to pause auto-mode before each slice (#789) (#845)

This commit is contained in:
Tom Boucher 2026-03-17 10:00:41 -04:00 committed by GitHub
parent 84e772f086
commit 33fff7bab0
4 changed files with 19 additions and 1 deletions

View file

@ -120,6 +120,7 @@ phases:
skip_research: false # skip milestone-level research
skip_reassess: false # skip roadmap reassessment after each slice
skip_slice_research: true # skip per-slice research
require_slice_discussion: false # pause auto-mode before each slice for discussion
```
These are usually set automatically by `token_profile`, but can be overridden explicitly.

View file

@ -3760,6 +3760,20 @@ export async function dispatchDirectPhase(
ctx.ui.notify("Cannot dispatch research-slice: no active slice.", "warning");
return;
}
// When require_slice_discussion is enabled, pause auto-mode before
// each new slice so the user can discuss requirements first (#789).
const sliceContextFile = resolveSliceFile(base, mid, sid, "CONTEXT");
const requireDiscussion = loadEffectiveGSDPreferences()?.preferences?.phases?.require_slice_discussion;
if (requireDiscussion && !sliceContextFile) {
ctx.ui.notify(
`Slice ${sid} requires discussion before planning. Run /gsd discuss to discuss this slice, then /gsd auto to resume.`,
"info",
);
await pauseAuto(ctx, pi);
return;
}
unitType = "research-slice";
unitId = `${mid}/${sid}`;
prompt = await buildResearchSlicePrompt(mid, midTitle, sid, sTitle, base);

View file

@ -916,8 +916,9 @@ export function validatePreferences(preferences: GSDPreferences): {
if (p.skip_reassess !== undefined) validatedPhases.skip_reassess = !!p.skip_reassess;
if (p.skip_slice_research !== undefined) validatedPhases.skip_slice_research = !!p.skip_slice_research;
if (p.skip_milestone_validation !== undefined) validatedPhases.skip_milestone_validation = !!p.skip_milestone_validation;
if ((p as any).require_slice_discussion !== undefined) (validatedPhases as any).require_slice_discussion = !!(p as any).require_slice_discussion;
// Warn on unknown phase keys
const knownPhaseKeys = new Set(["skip_research", "skip_reassess", "skip_slice_research", "skip_milestone_validation"]);
const knownPhaseKeys = new Set(["skip_research", "skip_reassess", "skip_slice_research", "skip_milestone_validation", "require_slice_discussion"]);
for (const key of Object.keys(p)) {
if (!knownPhaseKeys.has(key)) {
warnings.push(`unknown phases key "${key}" — ignored`);

View file

@ -265,6 +265,8 @@ export interface PhaseSkipPreferences {
skip_reassess?: boolean;
skip_slice_research?: boolean;
skip_milestone_validation?: boolean;
/** When true, auto-mode pauses before each slice for discussion (#789). */
require_slice_discussion?: boolean;
}
export interface NotificationPreferences {