import type { AuthoringLedgerEntry } from './authoring-ledger.js'; import type { SplitArtifact } from './split.js'; /** * Q2 (strategy floor): the held-out slice must be ≥ 50% of the non-excluded * scored window `N = |trainPrs| + |heldOutPrs|` — inclusive (`=0.5` passes), so * per-rule generalization evidence (§5.3) rests on a substantial unseen slice. * Returns [] or the single violation message. */ export declare function checkHeldOutFloor(split: SplitArtifact): string[]; /** * Q3.1 (strategy temporal): the split's `frozenAt` must PRECEDE every effective * rule's `authoredAt` — §5.1 "frozen before authoring" made mechanical. A split * frozen at-or-after authoring is a HARD FAIL (the author may have tuned matchers * against held-out code — an exposure re-freezing cannot undo). Returns per-rule * violation messages ([] if clean). A missing `frozenAt` is itself a violation * (no mechanical proof possible). */ export declare function checkFrozenBeforeAuthoring(split: SplitArtifact, effectiveEntries: readonly AuthoringLedgerEntry[]): string[]; /** * Q3.2 (strategy membership) — LEAKAGE SEMANTICS (the #2294-couple ruling, * operator option (a) recorded on strategy#810): a positive fixture PR is legal * iff `∉ heldOutPrs` AND (`∈ trainPrs` OR strictly pre-window). Falsifying * Metric (c)'s condition is HELD-OUT membership — a pre-window anchor cannot * leak code that post-dates it, so the Q4-ruled cert-1 anchor set (all pre- * window) stays legal without re-anchoring. * * This gate stays PURE (no git): "strictly pre-window" is proven by ANCESTRY * (`is-ancestor(mergeCommit(pr), cutBoundarySha)` — never PR-number order, * which is not merge-ordered) at the command layer that has git, and handed in * as `verifiedPreWindowPrs`. An empty set reproduces the strict pre-ruling * behavior byte-for-byte (the legacy lane passes empty). Returns per-(rule,pr) * violation messages ([] if clean). */ export declare function checkPositiveFixturesTrainSide(split: SplitArtifact, effectiveEntries: readonly AuthoringLedgerEntry[], verifiedPreWindowPrs: ReadonlySet): string[]; /** * The composed authored freeze precondition (strategy D5 Q2 + Q3). Runs all three * orthogonal gates, aggregates EVERY violation, and throws ONE `GATE_INVALID` * naming them all (compose-never-replace; both axes surfaced, never short-circuit). * No-op on clean input. Call at the authored producer's freeze step, before any * lock/substrate write (Tenet 13 sensor-not-actuator: detect + fail, never repair). */ export declare function assertAuthoredFreezePreconditions(split: SplitArtifact, effectiveEntries: readonly AuthoringLedgerEntry[], /** Fixture PRs proven strictly pre-window by ancestry at the git-holding boundary (empty ⇒ strict). */ verifiedPreWindowPrs: ReadonlySet): void; //# sourceMappingURL=authored-freeze-gates.d.ts.map