packages feed

keiro 0.10.0.0 → 0.11.0.0

raw patch · 4 files changed

+76/−49 lines, 4 filesdep ~keikidep ~keiki-codec-jsondep ~keiro-corePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: keiki, keiki-codec-json, keiro-core

API changes (from Hackage documentation)

+ Keiro.Timer.Schema: instance GHC.Internal.Enum.Bounded Keiro.Timer.Schema.TimerStatus
+ Keiro.Timer.Schema: instance GHC.Internal.Enum.Enum Keiro.Timer.Schema.TimerStatus

Files

CHANGELOG.md view
@@ -4,7 +4,25 @@ [Keep a Changelog](https://keepachangelog.com/), and the project aims to follow the [Haskell Package Versioning Policy](https://pvp.haskell.org/). -## [Unreleased]+## [0.11.0.0] - 2026-08-05++### Breaking Changes++- Requires `keiki >=0.9 && <0.10` and `keiki-codec-json >=0.9 && <0.10`,+  replacing the 0.8 bounds. Keiki 0.9 makes `InCtor` and `WireCtor` read-only+  construction patterns; manual values must use `unavailableInCtor` and+  `unavailableWireCtor`, or use Generic/TH producers when trusted structural+  evidence is required. Validation can report fewer name-collision false+  positives when trusted structural heads differ or exact integral constraints+  prove replay candidates disjoint. The JSON event and snapshot formats are+  unchanged.++### Added++- `Keiro.Timer.Schema.TimerStatus` now derives `Enum` and `Bounded`, so a+  consumer can enumerate the complete stored lifecycle instead of restating+  it. Stored representations are unchanged. keiro-dsl's cross-package+  timer-vocabulary test relies on this.  ## 0.10.0.0 — 2026-08-03 
keiro.cabal view
@@ -1,6 +1,6 @@ cabal-version:   3.0 name:            keiro-version:         0.10.0.0+version:         0.11.0.0 synopsis:        Event sourcing framework and workflow engine description:   A library that composes kiroku, keiki, and shibuya into an@@ -121,9 +121,9 @@     , hs-opentelemetry-api                   >=1.0       && <1.1     , hs-opentelemetry-propagator-w3c        >=1.0       && <1.1     , hs-opentelemetry-semantic-conventions  >=1.40      && <2-    , keiki                                  >=0.8       && <0.9-    , keiki-codec-json                       >=0.8       && <0.9-    , keiro-core                             ^>=0.10.0.0+    , keiki                                  >=0.9       && <0.10+    , keiki-codec-json                       >=0.9       && <0.10+    , keiro-core                             ^>=0.11.0.0     , kiroku-store                           >=0.3       && <0.4     , lens                                   >=5.2       && <5.4     , mmzk-typeid                            >=0.7       && <0.8@@ -191,7 +191,7 @@     , hs-opentelemetry-api  >=1.0       && <1.1     , hs-opentelemetry-sdk  >=1.0       && <1.1     , keiro-    , keiro-core            ^>=0.10.0.0+    , keiro-core            ^>=0.11.0.0     , keiro-test-support     , kiroku-store          >=0.3       && <0.4     , tasty-bench           >=0.4
src/Keiro/Timer/Schema.hs view
@@ -65,7 +65,9 @@   | Fired   | Cancelled   | Dead-  deriving stock (Generic, Eq, Show)+  -- 'Enum'/'Bounded' let a consumer enumerate the complete lifecycle rather than+  -- restate it; keiro-dsl's cross-package vocabulary test relies on this.+  deriving stock (Generic, Eq, Show, Enum, Bounded)  -- | A timer row as stored: the original 'TimerRequest' fields plus the live -- 'status', the 'attempts' count (incremented on each claim), and the
test/Main.hs view
@@ -11250,57 +11250,62 @@  sAddCtor :: InCtor SkipCommand AddFields sAddCtor =-  InCtor-    { icName = "SAdd",-      icMatch = \case+  Keiki.unavailableInCtor+    "SAdd"+    ( \case         SAdd amount -> Just (RCons Proxy amount RNil)-        SSkip -> Nothing,-      icBuild = \case+        SSkip -> Nothing+    )+    ( \case         RCons _ amount RNil -> SAdd amount-    }+    )  sSkipCtor :: InCtor SkipCommand '[] sSkipCtor =-  InCtor-    { icName = "SSkip",-      icMatch = \case+  Keiki.unavailableInCtor+    "SSkip"+    ( \case         SAdd {} -> Nothing-        SSkip -> Just RNil,-      icBuild = \case+        SSkip -> Just RNil+    )+    ( \case         RNil -> SSkip-    }+    )  addCtor :: InCtor CounterCommand AddFields addCtor =-  InCtor-    { icName = "Add",-      icMatch = \case-        Add amount -> Just (RCons Proxy amount RNil),-      icBuild = \case+  Keiki.unavailableInCtor+    "Add"+    ( \case+        Add amount -> Just (RCons Proxy amount RNil)+    )+    ( \case         RCons _ amount RNil -> Add amount-    }+    )  counterAddedCtor :: WireCtor CounterEvent (Int, ()) counterAddedCtor =-  WireCtor-    { wcName = "CounterAdded",-      wcMatch = \case+  Keiki.unavailableWireCtor+    "CounterAdded"+    ( \case         CounterAdded amount -> Just (amount, ())-        CounterAudited {} -> Nothing,-      wcBuild = \case+        CounterAudited {} -> Nothing+    )+    ( \case         (amount, ()) -> CounterAdded amount-    }+    )  counterAuditedCtor :: WireCtor CounterEvent (Int, ()) counterAuditedCtor =-  WireCtor-    { wcName = "CounterAudited",-      wcMatch = \case+  Keiki.unavailableWireCtor+    "CounterAudited"+    ( \case         CounterAudited amount -> Just (amount, ())-        CounterAdded {} -> Nothing,-      wcBuild = \case+        CounterAdded {} -> Nothing+    )+    ( \case         (amount, ()) -> CounterAudited amount-    }+    )  counterCodec :: Codec CounterEvent counterCodec =@@ -11352,23 +11357,25 @@  confirmDivertCtor :: InCtor DivertCommand DivertFields confirmDivertCtor =-  InCtor-    { icName = "ConfirmDivert",-      icMatch = \case-        ConfirmDivert acuityBlack -> Just (RCons Proxy acuityBlack RNil),-      icBuild = \case+  Keiki.unavailableInCtor+    "ConfirmDivert"+    ( \case+        ConfirmDivert acuityBlack -> Just (RCons Proxy acuityBlack RNil)+    )+    ( \case         RCons _ acuityBlack RNil -> ConfirmDivert acuityBlack-    }+    )  divertConfirmedCtor :: WireCtor DivertEvent (Bool, ()) divertConfirmedCtor =-  WireCtor-    { wcName = "DivertConfirmed",-      wcMatch = \case-        DivertConfirmed acuityBlack -> Just (acuityBlack, ()),-      wcBuild = \case+  Keiki.unavailableWireCtor+    "DivertConfirmed"+    ( \case+        DivertConfirmed acuityBlack -> Just (acuityBlack, ())+    )+    ( \case         (acuityBlack, ()) -> DivertConfirmed acuityBlack-    }+    )  divertCodec :: Codec DivertEvent divertCodec =