/** * Acceptance-criteria verification: turn ticket text into per-criterion * verdicts grounded in captured evidence. Extraction and judgment happen in * one `claude -p` round-trip: the model reads the ticket, decides what is * visually testable, reads the screenshots, and rules on each criterion. */ import { type ShotRecord } from "../types.js"; import { type Pieces } from "./manifest.js"; export type CriterionVerdict = "pass" | "fail" | "not-verifiable"; export interface CriterionResult { id: number; text: string; verdict: CriterionVerdict; reasoning: string; evidence: string[]; suggestion?: string; } export interface VerifyCriteriaResult { criteria: CriterionResult[]; summary: string; costUsd?: number; raw: string; } /** Verdicts need the full evidence set in one context; cap it predictably. */ export declare const MAX_VERIFY_SHOTS = 20; export declare function buildVerifyPrompt(skillText: string, project: string, criteriaText: string, shots: ShotRecord[], evidenceDir: string, pieces?: Pieces): string; export declare function verifyCriteria(skillText: string, project: string, criteriaText: string, shots: ShotRecord[], evidenceDir: string, model: string): Promise;