/** * Change-set escalation — Layer 2 of the replacement oracle (drift-remediation * plan § 2, [G4]). Runs the review-only change-set probe ONLY on rows whose * Layer-1 verdict is `conditional`/`may` on a stateful or pinned-name * resource: definite createOnly hits are already proven, and stateless * unpinned conditionals never ticket, so probing either buys no proof. A * non-engaged deploy issues zero probe calls. * * Verdict precedence: change-set > registry > cdk-spec. * Replacement: False → the ceremony DOWNGRADES to a warning — the row * becomes an in-place update (directive 2: * never block on a false positive) * Replacement: True → conditional upgrades to definite, verdictSource * `"change-set"` * Replacement: Conditional → stays worst-case (the registry verdict stands) * probe failure → the registry verdict stands, annotated * `"registry (change-set unverified)"` — degrade * to the conservative verdict, never to silence * * A resource the change set omits entirely (including the benign * `didn't contain changes` outcome) will not be touched by the update — * treated as `False`. */ import type { ChangeSetProbeRunner } from "../../../services/infrastructure/changeSetProbe.js"; import type { StackTemplatePair } from "./buildDeployPlan.js"; import type { DeployPlan, DeployPlanResourceChange } from "./types.js"; /** * The [G4] trigger predicate: a replacement row that is neither proven * (`will`) nor irrelevant (`none`), on a resource that would actually ticket * — stateful (data loss) or pinned-name (CloudFormation refusal). */ export declare function needsChangeSetEscalation(change: DeployPlanResourceChange): boolean; export interface ApplyChangeSetEscalationParams { plan: DeployPlan; probe: ChangeSetProbeRunner; /** The diffed template pairs — the probe submits `newTemplate`. */ stacks: readonly StackTemplatePair[]; abortSignal?: AbortSignal; } /** * Apply the change-set escalation to an overlay-corrected plan. Never throws * and never fails the plan: a failed or aborted probe leaves the conservative * registry verdict in place, annotated unverified. One probe per escalated * stack covers every candidate row in it. */ export declare function applyChangeSetEscalation(params: ApplyChangeSetEscalationParams): Promise;