import { type AcceptanceCriterion } from "../issues/acceptance.js"; import type { deterministicToFindings } from "../backlog/lib.js"; import type { Backlog } from "../backlog/lib.js"; import type { FixCluster } from "../fix/cluster.js"; import type { ResolvedConfig, ShotRecord } from "../types.js"; import { type Parsed } from "../util.js"; export interface RuledAcceptance { /** Every criterion with its verdict, as written back to the record. */ criteria: AcceptanceCriterion[]; /** The ones that stand in the way of a pass. */ unmet: AcceptanceCriterion[]; costUsd: number; /** How much of the scope the model verifier actually saw. */ evidence: { used: number; total: number; }; } /** * The shots the criteria verifier sees when the cap bites, most refuting * first: (1) the issue's own evidence whose pixels changed this run, (2) its * own unchanged evidence, (3) the rest of the scope, changed first. Within a * tier, cover distinct formFactor x scheme pairs before spending slots on * duplicates, so "visible in dark" cannot be ruled met with every dark shot * cut. Exported for the tests; pure. */ export declare function rankVerifyShots(shots: ShotRecord[], ownShotIds: ReadonlySet, changedShots: ReadonlySet, cap: number): ShotRecord[]; export declare function ruleIssueAcceptance(args: { resolved: ResolvedConfig; parsed: Parsed; backlog: Backlog; issueId: string; cluster: FixCluster; shotsById: Map; changedShots: Set; baselineShots: number; /** Every deterministic finding this re-capture produced, whatever its cluster. */ freshDeterministic: ReturnType; runIdNow: string; }): Promise; /** * Judge-authored criteria this run cannot vouch for: never ruled, or last * ruled by a different run. A pass may only rest on rulings earned against * THIS attempt's evidence; a stale "met" is a check that did not happen now. * The other sources are exempt because their rulings are recomputed * mechanically above on every call. */ export declare function unruledJudgeCriteria(criteria: AcceptanceCriterion[], runIdNow: string): AcceptanceCriterion[];