diff --git a/src/resources/extensions/sf/sf-db.ts b/src/resources/extensions/sf/sf-db.ts index dc64e23f0..1c7fe8a9a 100644 --- a/src/resources/extensions/sf/sf-db.ts +++ b/src/resources/extensions/sf/sf-db.ts @@ -2317,6 +2317,9 @@ export interface SliceRow { replan_triggered_at: string | null; /** Optional freeform scope sketch written at plan-slice time. */ sketch_scope?: string | null; + /** ADR-011: 1 = slice is a sketch awaiting refinement, 0 = full plan. Column may be absent on + * pre-migration installs (gated by phases.progressive_planning preference). */ + is_sketch?: number; } function parsePlanningMeeting(raw: unknown): PlanningMeetingRecord | null { diff --git a/src/resources/extensions/sf/types.ts b/src/resources/extensions/sf/types.ts index 41c72f812..c81aa2676 100644 --- a/src/resources/extensions/sf/types.ts +++ b/src/resources/extensions/sf/types.ts @@ -11,6 +11,7 @@ export type Phase = | "discussing" | "researching" | "planning" + | "refining" | "evaluating-gates" | "executing" | "verifying" @@ -349,6 +350,10 @@ export interface PhaseSkipPreferences { require_slice_discussion?: boolean; /** ADR-011 Phase 2: when true, mid-execution escalation overrides are injected into the execute-task prompt. */ mid_execution_escalation?: boolean; + /** ADR-011: when true, sketch slices (slices.is_sketch=1) enter the "refining" phase + * and dispatch through refine-slice instead of plan-slice. When false (default), sketches + * are indistinguishable from missing plans and fall through to the normal "planning" phase. */ + progressive_planning?: boolean; } export interface NotificationPreferences {