/**
 * `failure_modes`, one row per run × mode × failure category (D0091).
 *
 * The failure-taxonomy table: how many low-scoring judgments fell into each
 * classified failure category, per mode, with a derived severity. Answers
 * "which failure categories dominate and how does the mix drift over time".
 *
 * Grain is one `failureModes` entry (per run × mode × category; the writer
 * emits one entry per classified category, zero-count categories skipped). A
 * run whose gap-analysis produced no classified failures yields zero rows.
 *
 * `severity` is derived with the same `severityForCount` bucketing the
 * artifact manifest preview uses, one source of truth, no drift.
 *
 * The `failureModes` emit object (`{ category, count, title, judgments }`) has
 * no canonical core type, so its read-projection is a local minimal interface;
 * the heavy `judgments` array stays in GCS, reachable via `gs_uri`.
 *
 * @see packages/eval/src/orchestration/steps/gap-analysis-step.ts, emit site
 * @see docs/design-docs/bigquery-analytics-fact-loader.md
 */
import { z } from "zod";
import { type RunFactBase } from "./common.js";
export type FailureModeFactRow = RunFactBase & {
    /** Evaluation mode (or literacy variant) the failures were classified in. */
    readonly mode: string;
    /** Failure category id (e.g. `missing-docs`, `hallucination`). */
    readonly category: string;
    /** Number of classified judgments in this category. */
    readonly count: number;
    /** Severity tier bucketed from `count`. */
    readonly severity: "low" | "medium" | "high" | "critical";
    /** Human-readable category title. */
    readonly title: string | null;
};
declare const rowSchema: z.ZodObject<{
    mode: z.ZodString;
    category: z.ZodString;
    count: z.ZodNumber;
    severity: z.ZodEnum<{
        low: "low";
        medium: "medium";
        high: "high";
        critical: "critical";
    }>;
    title: z.ZodNullable<z.ZodString>;
    run_id: z.ZodString;
    report_id: z.ZodNullable<z.ZodString>;
    completed_at: z.ZodString;
    gs_uri: z.ZodString;
}, z.core.$strip>;
export declare const failureModes: import("../descriptor.js").FactTableDescriptor<import("../descriptor.js").FactRow>;
export { rowSchema as failureModeFactRowSchema };
