/** * Zero-effect shadow routing. * * A shadow policy evaluates the same task context and records what it WOULD * have selected, but never executes, never calls a provider, never mutates the * workspace, and never affects the current run. Shadow decisions are durable * and can later be compared counterfactually. */ import type { OrchestrationDecision, OrchestrationFeatureVector, ShadowDecision } from "./types.js"; export interface ShadowRoutingInput { productionDecision: OrchestrationDecision; shadowPolicyId: string; shadowPolicyVersion: number; shadowCandidateId?: string; reasonCodes?: string[]; runId?: string; } /** * Produce a shadow decision. This function is pure with respect to effects: * it only records the shadow record and an event; it performs no execution. */ export declare function shadowEvaluate(productionFeatures: OrchestrationFeatureVector, shadowCandidateId: string | undefined, shadowPolicyId: string, shadowPolicyVersion: number, productionCandidateId: string | undefined, runId: string, reasonCodes?: string[]): ShadowDecision; /** Record a shadow decision durably (still zero execution effects). */ export declare function recordShadowDecision(shadow: ShadowDecision): ShadowDecision; //# sourceMappingURL=shadow.d.ts.map