/** * @copyright Sister Software * @license AGPL-3.0 * @author Teffen Ellis, et al. * @file Every surface that appears as an input on a gauntlet board, so a recipe can refuse to train on one. * * A recipe's own reserve list holds the strings its author knew about. The boards are a separate instrument with a * separate history — `cz/bare-postcode.jsonl` was authored months before the recipe that trains on Czech postcodes — * so neither register knows the other exists. A board row that reaches the corpus measures recall of one string * instead of a capability. * * read from disk rather than imported. `mailwoman` depends on `@mailwoman/corpus`, so this package cannot import the * gauntlet loader without a cycle. A recipe is a build tool reading the repository it is built in. * This is a file read rather than a dependency. The shipped package never calls this. */ import { type PathBuilderLike } from "path-ts"; /** * The committed board corpus, as a path rather than a module. */ export declare const GAUNTLET_CASES_DIR: PathBuilderLike; /** * The comparison surface: case-folded, every run of whitespace removed. * * Whitespace-insensitive because a postcode's board spelling and its corpus spelling * differ by exactly that — `100 00` against `10000` — and a check that missed the * pair would report a clean build over a leaked row. */ export declare function normalizeGauntletSurface(surface: string): string; /** * Every board row's `input`, normalized. * * Reads the whole corpus once. * Callers retain the output. * * A row that does not parse is skipped. * The gauntlet loader validates the corpus. * * A recipe that refused to build over a malformed board row would stop a build * for a check that is advisory to it. */ export declare function readGauntletInputs(dir?: PathBuilderLike): Promise>; //# sourceMappingURL=gauntlet-inputs.d.ts.map