/** * DRIFT — the temporal-confound detector. The scientific-validity check no optimizer runs: are your results * improving because of the variables you changed, or because something you AREN'T controlling drifted over * the run — the room warmed up through the day, a reagent batch changed, a sensor aged, the operator got * tired? If the part of each score that your variables CAN'T explain trends with the ORDER you measured in, * your conclusions may be confounded with time, not caused by your knobs. * * DRIFT fits a response model to your variables, takes the leftover (residual) of each measurement, and * tests whether those residuals correlate with experiment order. A strong correlation flags a likely * time-confound — a warning that a "winning" setting might just be the setting you happened to try late, on * a good day. It's the difference between a result that replicates and one that doesn't. * * Honest by construction (DIAKRISIS): correlation of residuals with order is EVIDENCE of a time-confound, not * proof of causation (you could have sampled a variable monotonically with time — then it's aliased); it * needs enough points and abstains otherwise. It tells you to LOOK, with a measured strength. */ import { type Space } from "./space.js"; import { type Observation, type Goal } from "./engine.js"; export interface DriftReport { n: number; residualOrderCorr: number; driftFraction: number; detected: boolean; note: string; } /** Detect whether the part of each score your variables can't explain trends with experiment order. */ export declare function analyzeDrift(obs: ReadonlyArray, space: Space, _goal?: Goal): DriftReport; export declare function driftGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=drift.d.ts.map