keiro-core-0.2.0.0: CHANGELOG.md
# Changelog
All notable changes to `keiro-core` are recorded here. The format follows
[Keep a Changelog](https://keepachangelog.com/), and the package follows the
[Haskell Package Versioning Policy](https://pvp.haskell.org/).
## [Unreleased]
_No unreleased changes._
## 0.2.0.0 — 2026-07-13
### Breaking Changes
- `keiro-core` now requires post-MP-16 Keiki 0.2 (`keiki >=0.2 && <0.3`) and
Kiroku 0.3 (`kiroku-store >=0.3 && <0.4`). Stream validation runs Keiki's new
head-recoverability, inversion-ambiguity, unguarded-input-read, and
state-changing-silent-edge checks; any warning enabled by the selected
`ValidationOptions` makes `mkEventStream` reject the stream at startup.
- `validateEventStreamWith` and `mkEventStreamWith` now force-enable Keiki's
`checkHeadRecoverability` and `checkStateChangingEpsilon`. Caller-supplied
options may only strengthen validation at Keiro's durable boundary; use the
explicitly unsafe `mkEventStreamUnchecked` only for tests and emergency
forensics, never for production streams.
- `mkEventStream` now rejects snapshot codecs that cannot encode their initial
state and register file. Snapshot-enabled streams built from `emptyRegFile`
must initialize every slot before validation; the labelled `uninit: <slot>`
`ErrorCall` is reported as an `EventStreamWarning` instead of escaping at the
first snapshot write.
### New Features
- New module `Keiro.Schema`, exporting `keiroSchema :: Text` (`"keiro"`). This
is the single source of truth for the dedicated PostgreSQL schema that owns
Keiro's framework tables: `keiro-migrations` creates them schema-qualified and
the `keiro` runtime queries resolve against the same name.
- Added `mkEventStreamUnchecked`, which wraps an `EventStream` with no Keiki or
Keiro checks at all. It exists for tests and emergency forensics; a stream
admitted through it can silently lose state changes and fail hydration.
### Other Changes
- Keiki 0.2 and Kiroku 0.3 now resolve from Hackage; their obsolete Git package
overrides and the local Cabal overlay are no longer needed.
- Added a `deepseq` dependency: `validateEventStream` forces the configured
`stateCodec` over the initial state and registers, observing only `ErrorCall`
so that any other exception stays programmer-visible.
## 0.1.0.0 — 2026-07-05
Initial Hackage release.
### Breaking Changes
- Finalized the pre-release stream naming, codec, and event-stream contracts,
including safer stream category construction and validated event-stream
boundaries.
### New Features
- Added shared `Keiro.Codec`, `Keiro.Stream`, `Keiro.EventStream`,
`Keiro.EventStream.Validate`, `Keiro.Integration.Event`,
`Keiro.Snapshot.Policy`, and `Keiro.Prelude` modules.
- Added replay-safety validation helpers built on keiki's transducer validator.
### Other Changes
- Added Haddock coverage and migration documentation for validated event streams.