/** * FEDERATED META-BRAIN — the data flywheel that doesn't break sovereignty. The hard truth about a from- * scratch optimizer: every customer starts cold, so the vendor never gets smarter and there's no moat. But * you can't pool customers' raw data either — a pharma lab's secret recipe must never leave the building. * * The META-BRAIN squares that circle. After a run, each site shares only a privacy-safe LANDSCAPE * FINGERPRINT — abstract shape/behaviour features (how rugged, how smooth, how many effective dimensions, * the shape class, how concentrated the good region is) — and NEVER the optimum's coordinates or any * measured value. The central registry learns which SEARCH STRATEGY suits each class of landscape. A new * run whose fingerprint matches gets a recommended search profile (how much to explore vs exploit, how many * seeds) instead of a blind default — so it converges faster. The more sites contribute, the sharper the * strategy, and none of them leaked a secret. * * Honest by construction (DIAKRISIS): the fingerprint shares HOW a landscape behaves (to tune the search), * NOT WHERE the answer is (that would leak the recipe) — the gauntlet proves no raw value or coordinate * appears in what's shared. The benefit is MEASURED (the recommended profile beats the wrong one on that * class), not a promised "5 instead of 20" — the gain depends on how well a new problem matches known ones, * and is bounded. This is meta-learning of SEARCH STRATEGY, not a magic global oracle. */ import { type Space, type Experiment } from "./space.js"; import { type Observation, type Goal } from "./engine.js"; export interface LandscapeFingerprint { dims: number; ruggedness: number; smoothness: number; effectiveDimsFrac: number; concentration: number; } export interface SearchProfile { seeds: number; exploreWeight: number; note: string; } export interface MetaEntry { fingerprint: LandscapeFingerprint; bestExploreWeight: number; bestSeedsFrac: number; n: number; } /** A privacy-safe summary of HOW a landscape behaves — never WHERE the optimum is, never a raw value. */ export declare function landscapeFingerprint(obs: ReadonlyArray, space: Space, goal?: Goal): LandscapeFingerprint; /** Recommend a search profile for a new run, learned from prior landscapes of the SAME behavioural class. */ export declare function recommendProfile(fp: LandscapeFingerprint, registry?: ReadonlyArray): SearchProfile; /** Append a landscape's learned strategy to the registry — anonymised (fingerprint only). CRDT-style merge. */ export declare function contributeFingerprint(registry: ReadonlyArray, fp: LandscapeFingerprint, bestExploreWeight: number, bestSeedsFrac: number): MetaEntry[]; /** A minimal profile-driven search used to MEASURE that a recommended profile actually helps. */ export declare function profiledSearch(space: Space, oracle: (e: Experiment) => number, budget: number, profile: SearchProfile, goal?: Goal, seed?: number): { best: Observation; evaluations: number; }; export declare function metabrainGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=metabrain.d.ts.map