keiki-0.2.0.0: keiki.cabal
cabal-version: 3.0
name: keiki
version: 0.2.0.0
synopsis: Pure core for symbolic-register transducer event sourcing.
description:
A Haskell library for the pure core of event sourcing, workflow
engines, and durable execution, built on the symbolic-register
finite-state transducer formalism (a hybrid of Symbolic Finite
Transducers and Streaming String Transducers).
.
Provides a typed register-file (@RegFile rs@), a deterministic
transducer DSL with eager builder validation and replay-safety
analyses, structured forward-decision and replay operations,
composition combinators (checked sequential, alternative,
single-step feedback), input- and output-side acceptors, generic
Mermaid renderers, and a GHC-upgrade-safe shape hash
(@Keiki.Shape@) for snapshot discrimination.
.
The library is intentionally codec-free: the pure layer talks
only typed Haskell values. JSON serialisation lives in the
sibling package @keiki-codec-json@; an opt-in test toolkit
lives in @keiki-codec-json-test@.
license: BSD-3-Clause
author: Nadeem Bitar
maintainer: nadeem@gmail.com
copyright: 2026 Nadeem Bitar
category: Control
build-type: Simple
tested-with: GHC >=9.12 && <9.13
extra-doc-files:
CHANGELOG.md
README.md
source-repository head
type: git
location: https://github.com/shinzui/keiki.git
common warnings
ghc-options:
-Wall -Wcompat -Widentities -Wincomplete-record-updates
-Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints
common shared-extensions
default-language: GHC2024
default-extensions:
AllowAmbiguousTypes
DuplicateRecordFields
FunctionalDependencies
OverloadedLabels
OverloadedRecordDot
OverloadedStrings
UndecidableInstances
-- The library's symbolic analyses (sat, isBot, isSingleValuedSym) are
-- backed by SBV and require the z3 SMT solver to be available in PATH
-- at runtime. Install via: brew install z3 (macOS) or apt install z3
-- (Debian). The library will fail loudly if z3 is missing when those
-- analyses run; pure evaluation (delta/omega/step/reconstitute) does
-- not depend on z3.
library
import: warnings, shared-extensions
exposed-modules:
Keiki.Acceptor
Keiki.Builder
Keiki.Composition
Keiki.Core
Keiki.Generics
Keiki.Generics.TH
Keiki.Internal.Slots
Keiki.NoThunks
Keiki.Operators
Keiki.Profunctor
Keiki.Render.Inspector
Keiki.Render.Markdown
Keiki.Render.Mermaid
Keiki.Render.Pretty
Keiki.Render.Validate
Keiki.Shape
Keiki.Symbolic
hs-source-dirs: src
build-depends:
, base ^>=4.21
, bytestring ^>=0.12
, containers >=0.6 && <0.9
, cryptohash-sha256 ^>=0.11
, nothunks >=0.3 && <0.4
, profunctors >=5.6 && <6
, sbv >=11.7 && <15
, template-haskell ^>=2.23
, text ^>=2.1
, time ^>=1.14
test-suite keiki-test
import: warnings, shared-extensions
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Spec.hs
other-modules:
Keiki.AcceptorSpec
Keiki.ArrowSpec
Keiki.BuilderSpec
Keiki.BuilderSpike
Keiki.BuilderTypeErrorsSpec
Keiki.CategorySpec
Keiki.ChoiceSpec
Keiki.CollectionSpike
Keiki.CompositionAlignmentSpec
Keiki.CompositionAlternativeSpec
Keiki.CompositionFeedback1Spec
Keiki.CompositionHomomorphismSpec
Keiki.CompositionMultiEventSpec
Keiki.CompositionNarySpec
Keiki.CompositionSpec
Keiki.CompositionStatefulSpec
Keiki.CoreApplyEventsSpec
Keiki.CoreHiddenInputsGSMSpec
Keiki.CoreInFlightSpec
Keiki.CoreSpec
Keiki.Fixtures.BrokenTailCoverage
Keiki.Fixtures.ComposeStateful
Keiki.Fixtures.CounterPipeline
Keiki.Fixtures.EmailDelivery
Keiki.Fixtures.RegisterEmission
Keiki.Fixtures.SplitCoverage
Keiki.Fixtures.UserRegistration
Keiki.Generics.THSpec
Keiki.LawHelpers
Keiki.NoThunksSpec
Keiki.OperatorsQualifiedSpec
Keiki.OperatorsSpec
Keiki.ProfunctorSpec
Keiki.RecomputeVerifySpec
Keiki.Render.InspectorSpec
Keiki.Render.MarkdownSpec
Keiki.Render.MermaidSpec
Keiki.Render.PrettySpec
Keiki.Render.ValidateSpec
Keiki.ReplayEitherSpec
Keiki.RoundTrip
Keiki.RoundTripSpec
Keiki.ShapeSpec
Keiki.StepEitherSpec
Keiki.StrongSpec
Keiki.SymbolicSpec
Keiki.ValidationReplayAlignmentSpec
Keiki.ValidationSpec
build-depends:
, base ^>=4.21
, containers >=0.6 && <0.9
, deepseq ^>=1.5
, hspec ^>=2.11
, keiki
, nothunks >=0.3 && <0.4
, profunctors >=5.6 && <6
, QuickCheck ^>=2.15
, sbv >=11.7 && <15
, text ^>=2.1
, time ^>=1.14