/** * The single validation and approved-membership authority for the canonical * audit-findings.json contract. */ import { type AuditFindingsReport, type Finding, type WorkBlock, type WorkBlockSeam } from "../types/finding.js"; import type { ContentCoherenceTrace } from "../decompose/contentCoherence.js"; import type { ValidationIssue } from "./basic.js"; export declare const AUDIT_FINDINGS_CONTRACT_VERSION: "audit-tools/audit-findings/v1alpha1"; export interface ApprovedFindingDisposition { status: "approved" | "quarantined_refuted"; source: "findings" | "quarantined_findings"; workBlockId: string | null; themeId: string | null; } export interface ApprovedFindingsProjection { findings: Finding[]; coherenceTrace: ContentCoherenceTrace; workBlocks: WorkBlock[]; workBlockSeams: WorkBlockSeam[]; dispositionById: Map; } export declare function validateAuditFindingsReport(value: unknown, path?: string): ValidationIssue[]; export declare function projectApprovedFindings(value: unknown): ApprovedFindingsProjection; /** * Project a validated audit report onto an approved finding subset without * recomputing its canonical content-coherence membership. * * The original report is validated before any projection is attempted. Each * surviving coherence component is the original component with rejected ids * removed; empty components (and their corresponding work blocks) disappear. * This preserves the auditor's membership decision while ensuring no rejected * finding can leak back through trace, block, seam, theme, or summary metadata. * The finished projection is validated again before it is returned. */ export declare function projectAuditFindingsReportSubset(value: unknown, selectedFindings: readonly Finding[]): AuditFindingsReport; export declare function isValidAuditFindingsReport(value: unknown): value is AuditFindingsReport; /** * Whether a parsed value CLAIMS to be the audit-findings contract: the * canonical `contract_version` plus a `findings` array. Deliberately light — * this is the ROUTING predicate (structured-contract path vs markdown/freeform * input), not a validity check. A report that claims the contract but fails * full validation must enter the structured path and be refused THERE with its * real issues (`projectApprovedFindings` / `validateAuditFindingsReport`); * routing on full validity would silently divert a malformed report to the * markdown parser, laundering a contract violation into a wrong-path parse. * INV-remediate-state-07 still holds: an absent or non-canonical * contract_version never routes structured. */ export declare function claimsAuditFindingsContract(value: unknown): boolean; //# sourceMappingURL=findingsReport.d.ts.map