import type { Board } from "./model.js"; export interface CaseAssumption { id: string; note: string; status: "active" | "retracted"; /** An explicit case condition, never a design fact. */ condition?: string; value?: boolean; } export interface WalkthroughCase { name: string; initialArtifacts: string[]; conditions?: Record; /** Exactly one declared exit condition per decision job. */ exitChoices?: Record; /** Explicitly take a declared retry; false skips it. Missing is unresolved. */ loopChoices?: Record; assumptions?: CaseAssumption[]; } export interface WalkthroughIssue { jobId?: string; reason: string; } export interface WalkthroughStep { index: number; /** Jobs in the same round were independently eligible before its outputs. */ round: number; jobId: string; occurrence: number; availableBefore: string[]; outputs: string[]; exit?: { condition: string; target: string; }; loop?: { action: "repeat" | "limit" | "skip"; target?: string; }; } export interface WalkthroughResult { snapshot: Board; case: WalkthroughCase; status: "complete" | "waiting" | "unresolved" | "engine-limit"; steps: WalkthroughStep[]; questions: WalkthroughIssue[]; waits: WalkthroughIssue[]; outcomes: { jobId: string; kind: "modelled-completion" | "stop"; description?: string; }[]; availableArtifacts: string[]; assumptions: CaseAssumption[]; maxSteps: number; } /** * A deterministic assessment of declared work, not execution evidence. Artifacts * are persistent facts for this case, not consumable tokens. Jobs run once except * explicitly chosen, bounded self retries. Multi-job retry paths remain unresolved * until the model can declare which work and artifacts reset between attempts. */ export declare function walkThrough(board: Board, input: WalkthroughCase, options?: { maxSteps?: number; }): WalkthroughResult;