/** * SENSITIVITY — the diamond no simple optimizer ships: not just "what's the best setting?" but "how tightly * must you hold each knob, and is this optimum robust or fragile?" * * A factory or lab can hit the perfect setting once — but in production every variable DRIFTS. If the optimum * is a sharp spike, a tiny drift ruins the batch; if it sits on a plateau, you can be sloppy and still win. * SENSITIVITY reads the measurements you already collected and reports, per variable: how much the score * moves when that variable moves (a local slope), how important it is relative to the others, and the * TOLERANCE — how far it may drift before the score drops meaningfully. It then rates the optimum * robust / moderate / fragile. That is process-control guidance (Taguchi-style robust design) straight out * of the optimization run — actionable for real manufacturing, not just a number. * * Honest by construction (DIAKRISIS): this is a LOCAL estimate from your own data via distance-weighted * regression (it assumes a roughly smooth response near the best, and sharpens with more measurements); * it abstains to UNKNOWN when there are too few points. It is decision support, not a guarantee. */ import { type Space } from "./space.js"; import { type Observation, type Goal } from "./engine.js"; export interface VarSensitivity { name: string; sensitivity: number; importancePct: number; toleranceFrac: number; toleranceAbs: number; } export interface SensitivityReport { n: number; best: Observation | null; valueRange: number; variables: VarSensitivity[]; robustness: "robust" | "moderate" | "fragile" | "unknown"; note: string; } /** Per-variable sensitivity + tolerance at the best, estimated from the observations. */ export declare function analyzeSensitivity(obs: ReadonlyArray, space: Space, goal?: Goal): SensitivityReport; export declare function sensitivityGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=sensitivity.d.ts.map