/** * Cross-record Decision classifier — the kernel-side rule used by the * replay harness and the admin-SDK's replay procedure. Lives in core * (not in `@adjudicate/audit`) because: * * 1. It operates on `Decision` + `DecisionBasis` — pure core types. * 2. Both `@adjudicate/audit` (in `replay()`) and `@adjudicate/admin-sdk` * (in `replay.run`) need it. Keeping it in audit forced admin-sdk * to depend on audit at runtime, which closed the cycle with * audit's type-only `import type` from admin-sdk. * * The classifier returns `null` when the two Decisions match, otherwise a * structured `ReplayMismatch` describing the first axis of divergence * (DECISION_KIND > BASIS_DRIFT > REFUSAL_CODE_DRIFT). */ import type { Decision } from "./decision.js"; export type ReplayMismatchKind = "DECISION_KIND" | "BASIS_DRIFT" | "REFUSAL_CODE_DRIFT"; export interface ReplayBasisDelta { readonly missing: readonly string[]; readonly extra: readonly string[]; } export interface ReplayMismatch { readonly intentHash: string; readonly kind: ReplayMismatchKind; readonly expected: Decision; readonly actual: Decision; readonly basisDelta?: ReplayBasisDelta; } /** * Pure classifier — `null` when the two Decisions match, otherwise a * structured `ReplayMismatch`. Exported so adopters can write their own * cross-record audits without re-implementing the rule. */ export declare function classify(intentHash: string, expected: Decision, actual: Decision): ReplayMismatch | null; //# sourceMappingURL=replay-classify.d.ts.map