/** * Deterministic idea-snapshot rules for humanView (BP-22). * Law 5: possible reasons, never verdicts. Law 6: interpretation never hashed. * Rules read only the receipt's own observed fields/tags — never claim-text heuristics. */ import type { IdeaSnapshot, NetworkReceipt } from '../types'; /** Score facts used by spread rules (subset of HumanViewOptions.scores). */ export interface SnapshotScoreFacts { absoluteConsensusValue?: { median: number | null; n: number; min: number | null; max: number | null; }; } export type { IdeaSnapshot }; export interface SnapshotRule { id: string; /** Human-readable pattern description (also used as `basis`). */ pattern: string; match: (ctx: SnapshotContext) => boolean; text: (ctx: SnapshotContext) => string; } export interface SnapshotContext { tags: string[]; sourceCount: number; originCount: number | null; inferredTimestampCount: number; scrapedValueCount: number; obsStatuses: string[]; hasComparabilityRefusal: boolean; absoluteSpread: { min: number; max: number; n: number; } | null; } /** Build observation context from receipt fields/tags only (no claim-text scrape). */ export declare function buildSnapshotContext(receipt: NetworkReceipt, options?: { scores?: SnapshotScoreFacts; }): SnapshotContext; /** * Ordered rule catalogue. Order is normative for multi-fire determinism. * Sentences use "may" — never truth, motive, or trustworthiness verdicts. */ export declare const SNAPSHOT_RULES: SnapshotRule[]; export interface BuildIdeaSnapshotsOptions { scores?: SnapshotScoreFacts; /** * Optional model-layer seam. Default false — off. When true, appends a clearly * marked model-generated placeholder without loading keys or calling a network model. */ enableModelSnapshots?: boolean; } /** * Evaluate rules in fixed order. Same receipt → same snapshots (determinism). * Model layer is off by default and never loads a key. */ export declare function buildIdeaSnapshots(receipt: NetworkReceipt, options?: BuildIdeaSnapshotsOptions): IdeaSnapshot[]; //# sourceMappingURL=rules.d.ts.map