/** * Output-contract drift detection. * * DQL composition is intentionally unbounded freeform `ref()` between blocks. * The cost of that freedom: when a child block changes its output columns, a * parent that `ref()`s it can break *silently*. We do not restrict composition * — instead we make drift *visible*. * * This pass compares the columns a parent block references on a `ref()`'d child * (extracted from the parent's SQL) against the child's current `outputContract` * (its actual output schema). A referenced column that is missing/renamed * produces a `kind: 'drift'`, `severity: 'warning'` diagnostic naming the * parent, the child, and the drifted column. It never fails the build, and * additive changes (the child gaining new columns) produce no warning. * * Non-goals (explicitly rejected — see the feature spec): * - Hard compile-time parent→child binding / failing the build. * - Runtime enforcement. */ import type { ManifestBlock, ManifestDiagnostic } from './types.js'; /** * Detect output-contract drift across all blocks. For each parent block that * `ref()`s a child block and references one of its columns, warn when that * column is no longer in the child's `outputContract`. * * Conservative on every axis: unknown child schemas, unparseable parent SQL, * and ambiguous (multi-source, unqualified) column references all yield no * warning rather than a false positive — see `extractRefColumnUsage`. */ export declare function detectOutputDrift(blocks: Record): ManifestDiagnostic[]; //# sourceMappingURL=output-drift.d.ts.map