/** * Rerun + compare primitives over grounded run artifacts * (mmnto-ai/totem#2100, strategy#474 slice 1). * * - **Rerun = same immutable bundle.** `rerunArtifact` re-invokes the * recorded backend with the artifact's EXACT `inputBundle` — it never * touches live retrieval (it imports none) and forces `fresh: true` so the * response cache cannot replay a prior answer as if it were a new run. * The rerun emits a NEW artifact; the source record is never mutated. * * - **Compare = artifact-vs-artifact diff, deterministic only.** Structural * equality + content hashes + numeric metric deltas. Deliberately NO * similarity scoring of any kind (#2100 review F3 / Tenet 9) — a scorer in * the deterministic substrate would be an LLM-judge smuggled past the * admission contract. Semantic comparison is eval-harness territory * (#2103+), never a core primitive. */ import type { RunArtifact, TotemConfig } from '@mmnto/totem'; export interface RerunArtifactOptions { /** Content address of the source artifact. */ hash: string; config: TotemConfig; cwd: string; /** Directory containing totem.config.* — defaults to cwd (mirrors runOrchestrator). */ configRoot?: string; } export interface RerunArtifactResult { /** The artifact the rerun replayed. */ sourceHash: string; /** Content address of the NEW record the rerun emitted (append-only). */ hash: string; /** Absolute path of the new record. */ path: string; /** The rerun's response content. */ content: string; } /** * Replay a recorded run against its recorded backend with zero input drift. * Throws (via `loadRunArtifact`) before invoking anything when the source * hash is missing or invalid. */ export declare function rerunArtifact(opts: RerunArtifactOptions): Promise; export interface RunArtifactComparison { /** `inputHash` equality — same logical bundle in. */ sameInput: boolean; /** Grounding hash + provenance equality. */ sameGrounding: boolean; /** Backend identity equality across all recorded fields. */ sameBackend: boolean; /** Backend field names that differ (empty when sameBackend). */ backendDelta: string[]; /** Admission-group equality (mmnto-ai/totem#2102) — presence AND content. */ sameAdmission: boolean; /** Admission member names that differ (empty when sameAdmission). */ admissionDelta: string[]; /** Byte equality of output content. */ sameOutput: boolean; outputDelta: { contentHashA: string; contentHashB: string; }; /** Numeric deltas, B minus A; null when either side did not report. */ metricsDelta: { durationMs: number; inputTokens: number | null; outputTokens: number | null; }; } /** * Deterministic artifact-vs-artifact diff. Pure function of its two inputs — * no I/O, no scoring, no randomness. */ export declare function compareRunArtifacts(a: RunArtifact, b: RunArtifact): RunArtifactComparison; /** Load-then-compare convenience for the CLI verb. */ export declare function compareArtifacts(totemDirAbs: string, hashA: string, hashB: string): RunArtifactComparison; //# sourceMappingURL=run-artifacts.d.ts.map