Skip to content

CanonicalTable

Defined in: packages/contracts/src/fingerprint.ts:35

columns: CanonicalColumn[]

Defined in: packages/contracts/src/fingerprint.ts:40


consistencyGroup: string | null

Defined in: packages/contracts/src/fingerprint.ts:70

Consistency group (ADR-0009 decision 2). Part of the fingerprint because it decides which subscription-state row a table persists under: moving a table between groups must shift the fingerprint (forcing a cache rebuild + subscription reset) and surface in the diff gate. null = the default singleton group.


key: string

Defined in: packages/contracts/src/fingerprint.ts:36


localPrimaryKey: string[] | null

Defined in: packages/contracts/src/fingerprint.ts:39


managedFields: object[]

Defined in: packages/contracts/src/fingerprint.ts:63

applyOn: string[]

field: string

strategy: string


mode: string

Defined in: packages/contracts/src/fingerprint.ts:37


primaryKey: string[]

Defined in: packages/contracts/src/fingerprint.ts:38


projection: { journalTable: string | null; omitColumns: string[]; overlayTable: string | null; syncedTable: string | null; } | null

Defined in: packages/contracts/src/fingerprint.ts:41


retention: string

Defined in: packages/contracts/src/fingerprint.ts:77

Retention (ADR-0021). Part of the fingerprint because it changes the cluster DDL — an ephemeral table’s whole cluster is emitted as TEMP/pg_temp — so flipping persistent↔ephemeral must force a cache rebuild + subscription reset. (Subscription timing is NOT included: it is pure runtime orchestration over identical tables and needs no rebuild.)


shape: { physicalTable: string | null; rowFilter: CanonicalRowFilter | null; scope: string[] | null; shapeKey: string; tableName: string; where: string | null; } | null

Defined in: packages/contracts/src/fingerprint.ts:47

{ physicalTable: string | null; rowFilter: CanonicalRowFilter | null; scope: string[] | null; shapeKey: string; tableName: string; where: string | null; }

physicalTable: string | null

rowFilter: CanonicalRowFilter | null

scope: string[] | null

Shared-tier scope columns, in declaration order — the order parameterizes the family.

shapeKey: string

tableName: string

where: string | null

The native static predicate, canonicalized in full.

Unlike customPredicate, this one is visible: an AST can be hashed, where a closure could only ever be fingerprinted by its presence. So the revision footgun does not apply here — editing a native where shifts the fingerprint by itself, and a consumer cannot forget to say so.


null