import type { Violation } from "../types.js"; import type { Inv1Config } from "./config.js"; import { type WritePoint } from "./scan.js"; export interface Inv1CheckResult { /** false when the scan couldn't run (no git checkout) — a loud skip, not a silent pass. */ ran: boolean; skippedReason?: string; /** Every classified write point (allowed + violation + unanalyzable) — the inventory for human verification. */ writePoints: WritePoint[]; candidateFiles: number; filesScanned: number; timingMs: number; } export interface Inv1CheckOptions { /** * Incremental mode (B2): when set, only candidate files also in this set are * scanned — the diff closure, not the whole repo. `candidateFiles` still * reports the full candidate count so the ratio (scanned/candidate) is visible. */ onlyFiles?: Set; } /** * Runs the INV-1 canonical-writer scan over `repoRoot` using `config`. Kept * OUT of `runT0` on purpose (see t0.ts docstring): it needs a whole-repo scan, * so it is timed and gated independently. The scan primitive it calls is pure; * only the candidate selection + file reads here do I/O. */ export declare function runInv1Check(repoRoot: string, config: Inv1Config, options?: Inv1CheckOptions): Promise; /** * Maps scan write points to T0 violations: a `violation` verdict is a blocking * error (a guarded column written from outside the allowlist); `unanalyzable` * is an advisory warning (surfaced for human confirmation, never silently * passed); `allowed` points are inventory only, not violations. */ export declare function inv1ViolationsFrom(result: Inv1CheckResult): Violation[]; //# sourceMappingURL=check.d.ts.map