import { type SemanticConfidence, type SemanticConfiguredModel, type SemanticExpressionCue, type SemanticHarness, type SemanticPhase } from "./contract.js"; import type { SemanticOnceOutcome } from "./once.js"; import { type SemanticUsageAggregate } from "./usage.js"; export declare const SEMANTIC_SOAK_SCHEMA_VERSION: 1; export declare const SEMANTIC_SOAK_DEFAULT_MINUTES = 60; export declare const SEMANTIC_SOAK_REVERSAL_WINDOW_MS: number; export interface SemanticSoakReadingV1 { subject_id: string; generated_at: string; source_harness: SemanticHarness; configured_model: SemanticConfiguredModel; resolved_model_id?: string; model_attestation?: "verified" | "requested-only"; origin: "model-call" | "cache"; phase: SemanticPhase; phase_confidence: SemanticConfidence; expression_cue?: SemanticExpressionCue; expression_confidence?: SemanticConfidence; } export interface SemanticSoakReportV1 { schema_version: typeof SEMANTIC_SOAK_SCHEMA_VERSION; generated_at: string; window: { requested_minutes: number; requested_start_at: string; ended_at: string; available_from?: string; available_through?: string; window_complete: boolean; }; service: { running: boolean; stale: boolean; }; coverage: { pass_count: number; instrumented_pass_count: number; legacy_pass_count: number; accepted_reading_count: number; cached_reading_count: number; }; outcomes: SemanticUsageAggregate["outcomes"]; usage: SemanticUsageAggregate; readings: { phase_counts: Partial>; expression_counts: Partial>; expression_confidence_counts: Partial>; by_harness: Partial>; }; stability: { subject_count: number; subjects_with_repeat_observations: number; adjacent_comparisons: number; unchanged_cues: number; cue_changes: number; rapid_reversals: number; stable_repeat_rate?: number; transitions: Array<{ from: SemanticExpressionCue | "abstained"; to: SemanticExpressionCue | "abstained"; count: number; }>; }; limitations: string[]; } /** * Project accepted pass outcomes into bounded log tokens. No task text, model * prose, event IDs, instance IDs, or generation IDs cross this boundary. */ export declare function semanticSoakReadings(coordRootRaw: string, outcomes: readonly SemanticOnceOutcome[]): SemanticSoakReadingV1[]; export declare function readSemanticSoakReport(coordRootRaw: string, options?: { minutes?: number; now?: Date; }): SemanticSoakReportV1; //# sourceMappingURL=soak.d.ts.map