/**
 * Pipeline step: Per-judgment attribution ensemble (v0).
 *
 * Reads `grader-judgments.json` and `score-summary.json` from the latest
 * results, calls the pure `computeJudgmentAttribution(...)` helper for each
 * judgment, and emits:
 *
 *   - One `perEntryAttribution` artifact per judgment at
 *     `runs/{runId}/attribution/{entryKey}.json`
 *   - One `attributionMeta` artifact at
 *     `runs/{runId}/attribution-meta.json`
 *
 * Additionally, when any hallucinated citations are detected, the step
 * atomically rewrites `score-summary.json` to persist
 * `graderReliability.hallucinationCount` (D-05 — only this one direct-
 * mutation path uses the temp+rename pattern; all artifact emissions go
 * through `ctx.artifactWriter.emit` which handles atomicity internally).
 *
 * This step is `optional: true` — it self-skips when either
 * `grader-judgments.json` or `score-summary.json` is missing, so
 * non-graded runs are unaffected.
 *
 * Task → judgment join (D-10): `judgment.taskId` is the promptfoo row
 * description, which for literacy mode is `"${task.title} (gold|baseline)"`.
 * The join strips the variant suffix and looks up in a triple-keyed cache
 * by `task.title` (primary), `task.description`, and `task.id` (defensive
 * fallbacks for non-literacy modes).
 *
 * Retrieved signal (D-11/D-12): `FeatureAgentBehavior.feature` is the join
 * key — for literacy mode it equals `task.area` exactly (compiler propagates
 * `task.area → __featureArea → ab.feature`).
 *
 * @see docs/decisions/D0033-unified-artifact-writer.md
 * @see docs/decisions/D0049-shared-confidence-contract.md
 * @see docs/decisions/D0050-per-entry-attribution-layout.md
 * @see docs/decisions/D0052-judgment-ref-granularity.md
 */
import type { AppContext, PipelineState, PipelineStep, StepResult, ValidationIssue } from "../../_vendor/ailf-core/index.d.ts";
export declare class ComputeAttributionStep implements PipelineStep {
    readonly name = "compute-attribution";
    readonly optional = true;
    check(ctx: AppContext): ValidationIssue[];
    execute(ctx: AppContext, state?: PipelineState): Promise<StepResult>;
}
