/** * Turn a benchmark row into the exact question its decision site asks, the * site's heuristic answer, and the mapping from an answer back to a label * (T12495). * * The request builders are the sites' own (`buildDuplicateDecisionRequest`, * `buildObservationTypeRequest`, `buildContradictionRequest`), so the * benchmark measures the production wording. The heuristic is the rule each * site falls back to: Tier-1 lexical similarity for duplicates, whole-word * keywords for observation types, the word-Jaccard collision check for * decisions. * * @task T12495 * @epic T12486 */ import type { DecisionAnswer, DecisionRequest } from '@cleocode/contracts'; import type { BenchRow } from './types.js'; /** One row made ready to ask. */ export interface BenchQuestion { /** The site's request, with `cache: false` (no provider answer cache). */ readonly req: DecisionRequest; /** The site heuristic's answers, in the request's shape (the fallback). */ readonly heuristicAnswers: Readonly>; /** The label the heuristic predicts. */ readonly heuristicLabel: string; /** * Map answers back to a label. * * @returns The predicted label, or `null` when the answer is unusable. */ readonly predict: (answers: Readonly>) => string | null; } /** * Build the question for `row`. * * @param row - A dataset row. * @returns Request, heuristic answer and label mapping. */ export declare function benchQuestionFor(row: BenchRow): BenchQuestion; //# sourceMappingURL=questions.d.ts.map