/** * CERTIFY — the Optimality Certificate. The thing no black-box optimizer ships: a falsifiable bound on * HOW FAR the best-found could be from the true global best. * * Every optimizer returns "here's the best I found". None tell you "and the true optimum cannot be more * than X% better than this" — so you never know if you stopped because it's good or because the optimizer * is bad. CERTIFY closes that: assuming the response surface changes no faster than a Lipschitz constant L * (ESTIMATED FROM YOUR OWN DATA, then held conservatively), the value at any unobserved point x is bounded * by min_i ( f(x_i) + L·‖x − x_i‖ ). Maximising that bound over a space-filling sweep gives a CERTIFIED * CEILING the global optimum cannot exceed. Your best vs that ceiling = a provable "within X% of the best * possible" — signable alongside the discovery trace. * * Honest by construction (DIAKRISIS): this is "certified UNDER a data-estimated Lipschitz bound", not an * unconditional proof — a black box can hide an arbitrarily sharp spike between samples. We estimate L from * the observed pairs and hold a conservative safety factor, and we STATE the assumption. The gauntlet * checks the honest, guaranteed properties (the ceiling never sits below what you already saw, it tightens * as you sample more, it is deterministic) and that on smooth, well-sampled surfaces the certified gap is * small — falsifiable, reproducible. */ import { type Space } from "./space.js"; import { type Observation, type Goal } from "./engine.js"; export interface OptimalityCertificate { n: number; bestObserved: number; certifiedCeiling: number; gap: number; withinPct: number; lipschitz: number; assumption: string; } /** * Certify how close the best-found is to the global optimum, under a data-estimated Lipschitz bound. * @param obs the (experiment, value) history * @param space the search space (for normalisation + the sweep) * @param goal maximise | minimise * @param safety conservative multiplier on the estimated Lipschitz constant (>=1; default 1.5) * @param sweep number of space-filling probe points for the ceiling (default 2000) */ export declare function certifyOptimality(obs: ReadonlyArray, space: Space, goal?: Goal, safety?: number, sweep?: number): OptimalityCertificate; export declare function certifyGauntlet(): Promise<{ score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }>; //# sourceMappingURL=certify.d.ts.map