Use case
The repo has a thorough internal cross-backend contract suite for journals/snapshot stores, but it is not exported — users who implement a custom backend (the plugin registry explicitly supports this) have no way to prove conformance, and no failure-injection tools to test their actors against journal errors. Pekko invests exactly here (persistence testkit read journal, JournalPersistFailed / JournalPersistRejected signals) because it is what makes third-party backends viable.
Proposed approach
Export from actor-ts/testkit:
verifyJournalContract(() => new MyJournal(options)) — the parameterized conformance suite (ordering, sequence numbers, tags, deletes, concurrency).
- The same for snapshot stores and durable-state stores.
- A
FailureInjectingJournal decorator: scripted failures (persist rejected, persist failed, read timeout, partial batch) to test actor recovery behavior.
Acceptance criteria
Related
Use case
The repo has a thorough internal cross-backend contract suite for journals/snapshot stores, but it is not exported — users who implement a custom backend (the plugin registry explicitly supports this) have no way to prove conformance, and no failure-injection tools to test their actors against journal errors. Pekko invests exactly here (persistence testkit read journal,
JournalPersistFailed/JournalPersistRejectedsignals) because it is what makes third-party backends viable.Proposed approach
Export from
actor-ts/testkit:verifyJournalContract(() => new MyJournal(options))— the parameterized conformance suite (ordering, sequence numbers, tags, deletes, concurrency).FailureInjectingJournaldecorator: scripted failures (persist rejected, persist failed, read timeout, partial batch) to test actor recovery behavior.Acceptance criteria
Related