/** * `cleo doctor` view of row uids (T12341; spec `t12341-uid-scheme` §5, §6). * * Reads the project store read-only, WITHOUT binding a domain, and reports: * * - rows still without a uid or birth fingerprint (an older build wrote them; * the next open by this build fills them); * - rows the uid recipes flag: an unknown birth (uid timestamp 0), a natural * row whose key references a missing row (`dangling:` uid), and the reversed * twin of a symmetric relation stored both ways (a duplicate to drop). * * @module * @task T12341 */ import type { DatabaseSync } from 'node:sqlite'; /** One row of the default `cleo doctor` report (the `DoctorCheck` shape). */ export interface RowIdentityDoctorCheck { readonly check: 'row_identity'; readonly status: 'ok' | 'warning'; readonly message: string; readonly details?: Record; } /** * The `row_identity` check of the default `cleo doctor` report: `warning` when * rows lack a uid or fingerprint, or when the recipes flag rows. * * @param projectRoot - Project directory. * @returns The check row. * @task T12341 */ export declare function rowIdentityDoctorCheck(projectRoot: string): RowIdentityDoctorCheck; /** * Received rows held in the identity quarantine, per reason (`invalid`, * `ref-pending`, `uid-collision`, ...). Read-only; empty when the table is * absent (T12801 review). * * @param db - Connection on the project store (read-only is fine). * @returns Count per reason. * @task T12801 */ export declare function heldRowCounts(db: DatabaseSync): Record; //# sourceMappingURL=row-identity.d.ts.map