/** * Verification engine (Phase 3) — runs evidence and applies the * status lifecycle: UNVERIFIED/VERIFIED ↔ STALE. REFUTED stays a * deliberate human/agent action, never automatic. * * Transition rules per memory: * - any runnable evidence FAILs → STALE (confidence floored) * - all runnable evidence PASSes (≥1) → VERIFIED (confidence boosted) * - only skipped/unknown evidence, or none → status unchanged * - REFUTED memories are never re-verified (negative knowledge is final * until explicitly superseded) */ import { type RunOptions, type RunOutcome } from "./runners.js"; import type { MemoryStore } from "../db/store.js"; import type { MemoryEntry, MemoryStatus } from "../types.js"; export interface MemoryVerification { memoryId: string; claim: string; before: MemoryStatus; after: MemoryStatus; confidenceBefore: number; confidenceAfter: number; outcomes: RunOutcome[]; decayed?: boolean; } export interface VerifyReport { checked: number; verified: number; stale: number; unchanged: number; decayed: number; results: MemoryVerification[]; } export declare function decayedConfidence(confidence: number, lastAnchorIso: string, halfLifeDays: number, now?: Date): number; export declare function verifyMemory(store: MemoryStore, memory: MemoryEntry, repoRoot: string, opts?: RunOptions): MemoryVerification; export declare function verifyAll(store: MemoryStore, repoRoot: string, opts?: { ids?: string[]; deep?: boolean; }): VerifyReport;