packages feed

keiro 0.22.0.0 → 0.23.0.0

raw patch · 4 files changed

+36/−13 lines, 4 filesdep ~keiro-coredep ~keiro-migrationsdep ~keiro-test-supportPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: keiro-core, keiro-migrations, keiro-test-support, kiroku-store, shibuya-kiroku-adapter

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -6,6 +6,22 @@  ## [Unreleased] +## 0.23.0.0 — 2026-10-30++### Breaking Changes++- Require `kiroku-store ^>=0.13.0.1` from+  mori://shinzui/kiroku/packages/kiroku-store. Update exhaustive custom Store+  interpreters, StoreError matches, and KirokuEvent observers for compaction;+  follow the Keiro upgrade blueprint and its entailed upstream edge.++### Other Changes++- Treat `CompactionConcurrentMutation` as a transient store error so process+  managers retry commands affected by a concurrent compaction mutation.+- Refresh runtime guides and user documentation, including workflow replay,+  snapshots, migration ownership, and operational inspection contracts.+ ## 0.22.0.0 — 2026-10-27  ### Breaking Changes
keiro.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: keiro-version: 0.22.0.0+version: 0.23.0.0 synopsis: Event sourcing framework and workflow engine description:   A library that composes kiroku, keiki, and shibuya into an@@ -176,8 +176,8 @@     hs-opentelemetry-semantic-conventions >=1.40 && <2,     keiki >=0.9 && <0.10,     keiki-codec-json >=0.9 && <0.10,-    keiro-core ^>=0.22.0.0,-    kiroku-store ^>=0.12.0.0,+    keiro-core ^>=0.23.0.0,+    kiroku-store ^>=0.13.0.1,     lens >=5.2 && <5.4,     mmzk-typeid >=0.7 && <0.8,     random >=1.2.1 && <1.4,@@ -247,9 +247,9 @@     keiki,     keiki-codec-json,     keiro,-    keiro-migrations ^>=0.22.0.0,-    keiro-test-support ^>=0.22.0.0,-    kiroku-store ^>=0.12.0.0,+    keiro-migrations ^>=0.23.0.0,+    keiro-test-support ^>=0.23.0.0,+    kiroku-store ^>=0.13.0.1,     process >=1.6 && <1.7,     shibuya-core ^>=0.12.0.0,     stm >=2.5 && <2.6,@@ -284,11 +284,11 @@     keiki >=0.9 && <0.10,     keiki-codec-json >=0.9 && <0.10,     keiro,-    keiro-core ^>=0.22.0.0,-    keiro-test-support ^>=0.22.0.0,-    kiroku-store ^>=0.12.0.0,+    keiro-core ^>=0.23.0.0,+    keiro-test-support ^>=0.23.0.0,+    kiroku-store ^>=0.13.0.1,     shibuya-core ^>=0.12.0.0,-    shibuya-kiroku-adapter ^>=0.7.0.0,+    shibuya-kiroku-adapter ^>=0.7.0.1,     stm >=2.5 && <2.6,     streamly-core >=0.3 && <0.4,     text >=2.1 && <2.2,@@ -334,9 +334,9 @@     hs-opentelemetry-sdk >=1.0 && <1.1,     keiki >=0.9 && <0.10,     keiro,-    keiro-core ^>=0.22.0.0,-    keiro-test-support ^>=0.22.0.0,-    kiroku-store ^>=0.12.0.0,+    keiro-core ^>=0.23.0.0,+    keiro-test-support ^>=0.23.0.0,+    kiroku-store ^>=0.13.0.1,     process >=1.6 && <1.7,     shibuya-core ^>=0.12.0.0,     streamly-core >=0.3 && <0.4,
src/Keiro/ProcessManager.hs view
@@ -361,6 +361,7 @@   EmptyAppendBatch {} -> False   StreamNotFound {} -> False   HistoryRetentionActive {} -> True+  CompactionConcurrentMutation {} -> True   ReservedStreamName {} -> False   StreamNameTooLong {} -> False   DuplicateEvent {} -> False
test/Main.hs view
@@ -364,6 +364,7 @@     workflowStateCodec,   ) import Kiroku.Store qualified as Store+import Kiroku.Store.Compaction.Types (mkCompactionDigest) import Kiroku.Store.Effect (Store) import Kiroku.Store.SQL qualified as KirokuSQL import Kiroku.Store.Subscription.Stream (AckItem (..), subscriptionAckStream)@@ -5987,6 +5988,11 @@       ackForCommandError         (RetryDelay 5)         (StoreFailed (Store.TransientTransactionFailure "40P01" "deadlock detected"))+        `shouldBe` AckRetry (RetryDelay 5)+      digest <- maybe (fail "invalid test compaction digest") pure (mkCompactionDigest (ByteString.replicate 32 0))+      ackForCommandError+        (RetryDelay 5)+        (StoreFailed (Store.CompactionConcurrentMutation digest "concurrent reference"))         `shouldBe` AckRetry (RetryDelay 5)       ackForCommandError (RetryDelay 5) (StoreFailed (Store.EventDecodeFailed (Store.DecodeFailure (EventId sampleUuid) "bad payload")))         `shouldSatisfy` \case