/** * specs/deep-interview.ts — Typed deep-interview spec artifact * (F-204, Phase 1 OMX adoption). * * A `DeepInterviewSpec` is the durable artifact produced by a * `/deep-interview` Socratic loop. The interview runs for a bounded * number of rounds (a `depth` profile) and produces: * - a `ClarityBreakdown` — per-dimension clarity scores; * - one or more `PressureFinding` records — the Socratic pressure * ladder's catch-list, what the loop exposed and tried to * de-risk; * - a `TerminologyLedger` — every contested term and the meaning * the operator committed to. * * `closeInterview(spec)` is the terminal step: it (a) terminates at * the depth-profile cap (never beyond), (b) forces `nonGoals` and * `decisionBoundaries` to be explicit lists even if empty, and * (c) stamps the final `AmbiguityScore` computed from * `clarityBreakdown`. * * The spec round-trips through JSON; every field is `readonly`. */ import { AMBIGUITY_SCHEMA_VERSION, type AmbiguityKind, type AmbiguityScore } from "../ambiguity/score.js"; export declare const DEEP_INTERVIEW_SCHEMA_VERSION: "1.0.0"; /** Bounded round counts per depth profile. */ export type DeepInterviewDepth = "quick" | "standard" | "deep"; export declare const DEEP_INTERVIEW_MAX_ROUNDS: Readonly>; /** Per-dimension clarity values in `[0, 1]`. Keys mirror the * ambiguity-weight-set dimensions for the chosen `kind`. */ export interface ClarityBreakdown { readonly intent: number; readonly outcome: number; readonly scope: number; readonly constraints: number; readonly success: number; readonly context: number; } /** A single finding from the Socratic pressure ladder. */ export interface PressureFinding { /** Stable identifier (slug) for the finding. */ readonly id: string; /** One-line summary the operator can scan. */ readonly summary: string; /** The dimension the finding maps to. */ readonly dimension: keyof ClarityBreakdown; /** The lever the loop applied to expose or de-risk the issue. */ readonly lever: "pre_mortem" | "inversion" | "second_order" | "steel_man" | "dialectic" | "concrete"; /** ISO 8601 timestamp the finding was recorded. */ readonly recordedAt: string; /** Optional resolution note. */ readonly resolution?: string; } /** One entry in the terminology ledger. */ export interface TerminologyLedgerEntry { readonly term: string; readonly meaning: string; /** ISO 8601 timestamp the operator committed to the meaning. */ readonly committedAt: string; } export type TerminologyLedger = ReadonlyArray; /** Operator-facing artifact persisted at `docs/specs/deep-interview-.md`. */ export interface DeepInterviewSpec { readonly schemaVersion: typeof DEEP_INTERVIEW_SCHEMA_VERSION; readonly slug: string; readonly title: string; readonly depth: DeepInterviewDepth; readonly kind: AmbiguityKind; /** Maximum rounds permitted by `depth`. */ readonly maxRounds: number; /** Number of rounds actually run. Capped at `maxRounds` by `closeInterview`. */ readonly rounds: number; readonly clarityBreakdown: ClarityBreakdown; readonly findings: ReadonlyArray; readonly terminologyLedger: TerminologyLedger; /** Explicit list of out-of-scope items. `closeInterview` guarantees this is present. */ readonly nonGoals: ReadonlyArray; /** Explicit decision boundaries — what's locked vs negotiable. */ readonly decisionBoundaries: ReadonlyArray; /** Computed once at closure; reflects the final `clarityBreakdown`. */ readonly ambiguity: AmbiguityScore; /** ISO 8601 stamp `closeInterview` was invoked. */ readonly closedAt?: string; } /** * Build the typed `DeepInterviewSpec` and finalize it for * persistence. Closure guarantees: * - `rounds` is capped at the depth-profile maximum (never exceeds * `DEEP_INTERVIEW_MAX_ROUNDS[depth]`); * - `nonGoals` and `decisionBoundaries` are explicit arrays * (empty arrays are accepted; missing is coerced to empty); * - `ambiguity` is computed from the supplied `clarityBreakdown` * and the chosen `kind`. * * Throws `TypeError` on malformed input. */ export declare function closeInterview(input: { slug: string; title: string; depth: DeepInterviewDepth; kind: AmbiguityKind; rounds: number; clarityBreakdown: ClarityBreakdown; findings: ReadonlyArray; terminologyLedger: TerminologyLedger; nonGoals?: ReadonlyArray; decisionBoundaries?: ReadonlyArray; now?: Date; }): DeepInterviewSpec; /** Re-export the ambiguity schema version so consumers that already * import from `specs/deep-interview` get a single import. */ export { AMBIGUITY_SCHEMA_VERSION }; //# sourceMappingURL=deep-interview.d.ts.map