/** * DISCOVERY TRACE — the moat. A signed, hash-chained, offline-verifiable record of HOW a discovery was * made: every hypothesis (proposed experiment + the brain's rationale), every observation, every update, * in causal order. Anyone — a reviewer, a regulator, a journal, an acquirer, a competitor — can verify * OFFLINE, with the public key alone (no Melete, no network, no shared secret), that: * • the trace was produced by the holder of the private key (Ed25519 signatures), * • not one frame was altered or reordered (a sha-256 hash chain: each frame commits to the previous), * • and, given the same seed + oracle, the run reproduces exactly (the engine is deterministic). * * Self-driving labs and Bayesian optimisation exist; a CRYPTOGRAPHIC, reproducible PROVENANCE-OF-DISCOVERY * trail does not. That is the composition Melete owns: discovery you can prove, not just discovery. */ import { type KeyObject } from "node:crypto"; export type FrameKind = "genesis" | "hypothesis" | "observation" | "result"; export interface Frame { seq: number; kind: FrameKind; payload: unknown; prevHash: string; hash: string; sig: string; } export interface SignedTrace { publicKeyPem: string; algo: "ed25519+sha256-chain"; frames: Frame[]; } /** A tamper-evident recorder. Holds a private key; every record() appends a signed, chained frame. */ export declare class Tracer { private priv; private pub; private frames; private prev; constructor(keys?: { privateKey: KeyObject; publicKey: KeyObject; }); record(kind: FrameKind, payload: unknown): Frame; get publicKeyPem(): string; export(): SignedTrace; } export interface VerifyResult { ok: boolean; frames: number; brokenAt: number | null; reason: string; } /** Re-verify a trace OFFLINE with the embedded public key: signatures + hash chain + ordering. */ export declare function verifyTrace(trace: SignedTrace): VerifyResult; export declare function traceGauntlet(): { score: 0 | 100; checks: Array<{ name: string; pass: boolean; detail: string; }>; }; //# sourceMappingURL=trace.d.ts.map