import type { IntentCheckpoint } from 'audit-tools/shared'; /** * Deterministic normalization config. Bumping any field bumps `gate_version` and * invalidates the persisted baseline. Kept as data (not code) so the version * hash captures the active policy, not the module's source text. */ export interface NormalizeConfig { /** Schema/recipe version of the normalization itself. Bump on any change. */ readonly version: string; /** * Fields whose delta is DETERMINISTICALLY `changed` — never LLM-judged. * Everything semantic except the free-prose summaries. */ readonly structuredFields: readonly (keyof IntentCheckpoint)[]; /** * Free-prose fields whose delta (with structured equal) is arbitrated by the * bounded host judge. */ readonly proseFields: readonly (keyof IntentCheckpoint)[]; } /** * The single active normalization config (INV-O2-inv-5 input). The two lists * together cover every `IntentCheckpoint` field except the provenance pair * (`confirmed_at`, `confirmed_by`) — which `NON_SEMANTIC_FIELDS_BY_ARTIFACT` * also strips from the canonical content hash. `schema_version` is deliberately * STRUCTURED (a schema migration is a semantic reinterpretation, not * provenance). */ export declare const DEFAULT_NORMALIZE_CONFIG: NormalizeConfig; /** Static prompt-template version — bump on any judge-prompt change. */ export declare const INTENT_GATE_PROMPT_TEMPLATE_VERSION = "intent-checkpoint-judge-prompt/v1"; /** * The locally-resolved judge id (conversation-first: the host agent is always * the judge). A constant so every `gate_version` component is derivable at * compare time with no probe. */ export declare const HOST_JUDGE_ID = "host"; /** The two semantic normal forms of one checkpoint value. */ export interface CheckpointNormalForms { structured: string; prose: string; } /** * Deterministically normalize an intent_checkpoint value to its two semantic * normal forms. An absent checkpoint normalizes to a stable empty marker so * present-vs-absent is a real difference, not a crash. */ export declare function normalizeCheckpointForms(checkpoint: IntentCheckpoint | undefined, config?: NormalizeConfig): CheckpointNormalForms; /** * Compute the LOCALLY-resolved `gate_version` token: * `hash(normalizeConfig) + judge-id token + prompt-template version`. * NO network/API probe (INV-O2-inv-6). Bumping the normalize config, the judge * id, or the prompt template deterministically invalidates the persisted * baseline (the executor resolves the mismatch as `changed` — over-stale, the * safe direction). */ export declare function computeGateVersion(input?: { normalizeConfig?: NormalizeConfig; /** Locally-resolved judge id token. Defaults to the conversation-first constant. */ judgeId?: string; promptTemplateVersion?: string; }): string; /** * Hash one normal form for pair identification (the judge submission names the * pair it judged by these hashes, and consumption re-derives them from the live * checkpoint to detect an interleaved edit). */ export declare function normalFormHash(normalized: string): string; //# sourceMappingURL=intentCheckpointGate.d.ts.map