import { type ExperienceRoute } from "./experience-route-policy.js"; import { type LunaFabricAdmission, type LunaFabricContract } from "./luna-fabric-contract.js"; import { type RecoveryOutcomeAggregateResult } from "./recovery-outcome-aggregate.js"; import { type RunFlightEventRecord } from "./run-flight-ledger.js"; export declare const EXPERIENCE_ROUTING_INDEX_PATH = ".sortie-dogs/experience-routing.json"; export declare const EXPERIENCE_ROUTING_SCHEMA_VERSION = "0.8.5-experience-routing-v1"; export declare const EXPERIENCE_ROUTE_POLICY_VERSION = "experience-route-policy/v1"; export declare const EXPERIENCE_TASK_SHAPE_VERSION = "luna-contract-shape/v1"; export interface ExperienceTaskShape { readonly version: typeof EXPERIENCE_TASK_SHAPE_VERSION; readonly id: string; readonly characteristics: { readonly units: number; readonly width: number; readonly depth: number; readonly dependency_edges: number; readonly read_scopes: number; readonly write_scopes: number; readonly shared_paths: number; readonly exclusive_resources: number; readonly validation_levels: readonly ("full" | "targeted")[]; readonly validation_commands_fingerprint: string; }; } export interface ExperienceAttemptAudit { readonly run_id: string; readonly unit_id: string; readonly attempt_id: string; readonly disposition: string; readonly failure_category: string | null; readonly recovery_kind: string; readonly intervention_count: number; readonly terminal_rescue_eligibility: "eligible" | "not-eligible"; readonly terminal_rescue_attempted: boolean; readonly selected_target: { readonly model: string; readonly variant: string | null; }; readonly actual_target: { readonly model: string | null; readonly variant: string | null; }; } export interface ExperienceRunAudit { readonly run_id: string; readonly route: ExperienceRoute; readonly ledger_ref: string; readonly contract_fingerprint: string; readonly ledger_tail_hash: string; readonly evidence_sequences: readonly number[]; readonly accepted_completion: boolean; readonly wall_clock_duration_ms: number | null; readonly total_cost_per_accepted_completion: number | null; readonly cost_denominator: "accepted-completion"; readonly intervention_count: number; readonly live_deadline_takeover_proven: boolean; readonly exclusion_reason: string | null; readonly attempts: readonly ExperienceAttemptAudit[]; } export interface ExperienceRoutingTrace { readonly policy_version: typeof EXPERIENCE_ROUTE_POLICY_VERSION; readonly shape: ExperienceTaskShape | null; readonly evidence_window: string | null; readonly chosen_route: ExperienceRoute; readonly fallback_reason: string | null; readonly escalation_availability: "available" | "unproven-live-deadline-takeover" | "not-requested"; readonly evidence_refs: readonly { readonly run_id: string; readonly ledger_ref: string; readonly ledger_tail_hash: string; readonly evidence_sequences: readonly number[]; readonly exclusion_reason: string | null; }[]; readonly aggregates: readonly { readonly route: ExperienceRoute; readonly recovery: RecoveryOutcomeAggregateResult; readonly runs: readonly ExperienceRunAudit[]; }[]; readonly decision_fingerprint: string; } export interface ExperienceRoutingDecision { readonly route: ExperienceRoute; /** Null preserves the pre-v0.8.5 Luna preparation/takeover behavior. */ readonly escalation_enabled: boolean | null; readonly trace: ExperienceRoutingTrace; } export declare function deriveExperienceTaskShape(admission: LunaFabricAdmission): ExperienceTaskShape | null; /** Terminal model rescue is intentionally irrelevant to this proof. */ export declare function hasObservedLiveDeadlineTakeover(records: readonly RunFlightEventRecord[]): boolean; /** * Structural Luna admission is the first and immutable gate. The optional index binds fixed rows to * hash-chained ledgers; it contains no caller-provided duration or cost values and is never updated here. */ export declare function resolveExperienceRouting(projectRoot: string, structuralAdmission: LunaFabricAdmission): Promise; export declare function experienceContractFingerprint(contract: LunaFabricContract): string;