/** * 🔐 THE PRE-REGISTRATION CERTIFICATE (Anti-Cherry-Picking) — proof you didn't move the goalposts. * * The deepest integrity failure in optimization isn't a faked search — it's a CHANGED QUESTION: try many * objectives, widen the space, blow the budget, then report the prettiest result as if it were the plan. * No reviewer can tell after the fact. Melete can: COMMIT (hash) to the protocol — the objective, the search * space, the budget, and the decision rule — BEFORE running, signed. Afterwards, anyone re-derives, offline, * that the published result obeys the pre-registered protocol: same objective, no widened space, within * budget, and the reported winner is genuinely the best observed (no cherry-pick). Any deviation is rejected. * * WORLD-FIRST + LLM-impossible: this is a commit-reveal protocol-conformance proof — it needs cryptographic * commitment, deterministic re-derivation, and signing; an LLM can neither commit nor verify it. It is the * scientific-integrity layer (pre-registration) that pharma / finance / regulated science require — made * verifiable. (DIAKRISIS — distinct from the Honest-Search Proof, which proves the SEARCH was genuine; this * proves the QUESTION wasn't gamed. MEASURED: genuine runs verify; six deviation classes are all rejected.) */ import { type Space, type Experiment } from "./space.js"; import { type Goal } from "./engine.js"; import { type KeyObject } from "node:crypto"; export interface Protocol { space: Space; objectiveId: string; budget: number; goal: Goal; decisionRule: "max-observed"; } export interface PreCommit { standard: "melete-prereg-commit/v1"; commitHash: string; signature: string; publicKeyPem: string; algo: "ed25519+sha256"; } export interface RunRecord { objectiveId: string; space: Space; evaluations: number; trace: Array<{ experiment: Experiment; value: number; }>; best: { experiment: Experiment; value: number; }; } /** Commit (publish) to a protocol BEFORE running. The nonce is kept until reveal; the hash hides + binds it. */ export declare function preCommit(protocol: Protocol, nonce: string, keys?: { publicKey: KeyObject; privateKey: KeyObject; }): PreCommit; /** Verify OFFLINE that a published run obeys the pre-registered protocol — no goalpost-moving, no cherry-pick. */ export declare function verifyPreRegistration(commit: PreCommit, protocol: Protocol, nonce: string, run: RunRecord): { conforms: boolean; reason: string; }; export declare function preRegGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=prereg.d.ts.map