Skip to content

RegistryInvariantCell

Defined in: packages/contracts/src/registry-invariant.ts:41

One (entry × claims fixture) cell handed to a RegistryInvariantSpec.holds predicate.

claims: object

Defined in: packages/contracts/src/registry-invariant.ts:49

[key: string]: unknown

optional app_metadata?: object

[key: string]: unknown

optional roles?: string[]

optional sub?: string


entry: SyncTableEntry

Defined in: packages/contracts/src/registry-invariant.ts:44


fixtureName: string

Defined in: packages/contracts/src/registry-invariant.ts:48

The fixture’s name, as declared in RegistryInvariantSpec.claimsFixtures.


key: string

Defined in: packages/contracts/src/registry-invariant.ts:43

The entry’s key in the registry.


renderedPolicies: RenderedPolicy[]

Defined in: packages/contracts/src/registry-invariant.ts:62

Every RLS policy attached to the entry’s Postgres table, rendered to inline SQL text.


renderedWhere: RowFilterShape | null

Defined in: packages/contracts/src/registry-invariant.ts:60

The read filter this entry sends to Electric FOR THESE CLAIMS — the real read pipeline’s output (buildRowFilterShape, exactly what the proxy calls per shape request).

null means unfiltered, and covers both ways that arises: the entry declares no shape/rowFilter at all, or its customWhere returned null for these claims (the documented “bypass filtering, every row is visible” answer — e.g. an admin persona). Both are the same statement about what the client receives, which is what an invariant reasons about; distinguish them via entry.shape?.rowFilter if a predicate genuinely needs to.


rowClass: string | undefined

Defined in: packages/contracts/src/registry-invariant.ts:46

The entry’s classification, or undefined when it carries none (possible only for a appliesTo predicate).