Skip to main content
Version: Current

StoreCapabilities

@rotorsoft/act-root


@rotorsoft/act-root / act-tck/src / StoreCapabilities

Type Alias: StoreCapabilities

StoreCapabilities = object

Defined in: libs/act-tck/src/store-tck.ts:39

Optional features a Store implementation may or may not support. Default to false โ€” only enable a flag when the adapter exposes the corresponding surface and you want the TCK to cover it.

Propertiesโ€‹

concurrent_claim?โ€‹

readonly optional concurrent_claim?: boolean

Defined in: libs/act-tck/src/store-tck.ts:80

Adapter supports competing consumers โ€” two workers may call claim() concurrently and the store hands each stream to at most one of them (PostgreSQL via FOR UPDATE SKIP LOCKED; the in-memory store via single-threaded atomic claim). When true, the TCK runs the concurrency suite. Single-writer embedded stores (e.g. SQLite, where concurrent write transactions raise SQLITE_BUSY rather than serializing) leave this false: their deployment model is a single drain worker per database file.


notify?โ€‹

readonly optional notify?: boolean

Defined in: libs/act-tck/src/store-tck.ts:52

Adapter implements Store.notify. When true, the TCK runs the cross-instance conformance cases: a listener receives commits from a sibling instance produced by the same factory, never its own commits (the port's self-filtering MUST), and exactly one notification per commit transaction carrying the full event batch. Requires the factory to produce instances sharing one backing store โ€” e.g. two PostgresStores on the same schema/table, or two withBroker decorators on one broker. True cross-process LISTEN/NOTIFY plumbing needs two processes and stays in the adapter's own suite.


pattern_claim_source?โ€‹

readonly optional pattern_claim_source?: boolean

Defined in: libs/act-tck/src/store-tck.ts:106

Adapter matches a pattern reaction source (one carrying regex metacharacters, e.g. the calculator's ^(A|B)$) as a full RegExp in claim()'s has-work probe, so a stream whose max event id exceeds the subscription watermark is claimed when its name matches the pattern. When true, the TCK runs the pattern-source claim suite. Literal sources stay exact everywhere regardless of this flag โ€” the fast, index-friendly path.

Stores that cannot run an arbitrary regex against candidate streams (e.g. SQLite, whose libsql build has no REGEXP and whose portable LIKE grammar cannot express alternation/grouping) leave this false and instead reject a non-portable claim source at subscribe time โ€” see rejects_nonportable_claim_source.


pii_isolation?โ€‹

readonly optional pii_isolation?: boolean

Defined in: libs/act-tck/src/store-tck.ts:69

Adapter supports sensitive-data isolation (#566): accepts the optional pii field on commit messages, returns it on load outputs, and implements Store.forget_pii. When true, the TCK runs the PII isolation suite โ€” commit-with-pii round-trip, commit-without-pii passthrough, forget_pii happy path, idempotency, and isolation across streams.


rejects_nonportable_claim_source?โ€‹

readonly optional rejects_nonportable_claim_source?: boolean

Defined in: libs/act-tck/src/store-tck.ts:116

Adapter cannot faithfully match every regex claim source, so it fails loud at registration: subscribe throws ValidationError for a source outside its portable subset (alternation/grouping like ^(A|B)$), rather than silently never claiming the stream. When true, the TCK runs the reject-at-subscribe case. Currently only SQLite sets this โ€” its message points operators to InMemory/PG for full regex claim sources.


restore?โ€‹

readonly optional restore?: boolean

Defined in: libs/act-tck/src/store-tck.ts:60

Adapter implements Store.restore. When true, the TCK runs the full restore suite โ€” empty-source / single-stream / multi-stream happy paths, ISO-string created, pre-existing wipe, subscription clearing, causation remap, and atomic rollback on mid-iteration throw.


source_matches?โ€‹

readonly optional source_matches?: boolean

Defined in: libs/act-tck/src/store-tck.ts:90

Adapter implements the QueryStreams.source_matches reverse- match filter โ€” "subscriptions whose stored source pattern matches at least one of these names" (name ~ source). When true, the TCK runs the source_matches suite. Stores that can't express reverse- regex (e.g. an anchor-aware LIKE approximation) leave it false; the close-cycle safety probe then falls back to an unfiltered scan, so correctness never depends on this flag โ€” only probe cost.