/**
 * pipeline/enrichment-preconditions.ts
 *
 * Classifies the inputs the post-scoring enrichment steps (gap-analysis,
 * compute-attribution) depend on, so a missing `grader-judgments.json` can be
 * told apart as either a legitimate skip (no graded eval ran this pipeline) or
 * a degraded outcome (a full eval scored tests but no judgments persisted).
 *
 * The degraded case is the failure these steps must stop swallowing:
 * `calculate-scores` wrote `score-summary.json` with per-area `testCount > 0`
 * but never wrote `grader-judgments.json`, so the enrichment steps self-skip
 * and the report ships with no test details while still showing a score.
 * Distinguishing the two is what lets the steps fail loud instead of returning
 * a benign `skipped`.
 */
/**
 * Outcome of classifying the enrichment inputs under `results/latest/`.
 *
 * - `ready` — `grader-judgments.json` is present and non-empty; enrichment
 *   can run.
 * - `no-full-eval` — no graded eval produced judgments this run. A legitimate
 *   skip: standalone gap-analysis on cached results, a non-graded run, or an
 *   eval that scored nothing.
 * - `judgments-missing-after-eval` — a full eval scored tests
 *   (`score-summary.json` carries `testCount > 0`) yet `grader-judgments.json`
 *   is missing or empty. This is the degraded condition the steps surface.
 */
export type EnrichmentInputs = {
    kind: "ready";
    judgmentCount: number;
} | {
    kind: "no-full-eval";
} | {
    kind: "judgments-missing-after-eval";
    scoredTestCount: number;
};
/**
 * Classify the enrichment inputs for a run by inspecting
 * `results/latest/grader-judgments.json` and `score-summary.json`.
 *
 * Pure read-only filesystem inspection — never throws on malformed input; a
 * file that does not parse to the expected shape is treated as absent so that
 * "no usable judgments" and "no usable summary" both collapse to a single
 * branch.
 */
export declare function classifyEnrichmentInputs(rootDir: string): EnrichmentInputs;
/**
 * Build the fail-loud error message for the degraded
 * `judgments-missing-after-eval` case. Shared by the enrichment steps so the
 * pipeline-result and job-document surfaces carry one consistent wording.
 */
export declare function degradedEnrichmentError(step: string, scoredTestCount: number): string;
