# cratis_chronicle v3.16.1 - Table of Contents > Idiomatic Elixir client for Cratis Chronicle, the open-source event-sourcing database and runtime ## Pages - [Chronicle Elixir Client](readme.md) ## Modules - [Chronicle](Chronicle.md): Idiomatic Elixir client for the Chronicle event-sourcing platform. - [Chronicle.Artifacts](Chronicle.Artifacts.md): Discovers Chronicle artifacts in an OTP application. - [Chronicle.Behaviour](Chronicle.Behaviour.md): Behaviour declaring the public API of the `Chronicle` facade. - [Chronicle.Captures](Chronicle.Captures.md): Idiomatic API for working with Chronicle captures. - [Chronicle.Captures.Capture](Chronicle.Captures.Capture.md): DSL for defining discoverable Chronicle captures. - [Chronicle.Captures.CaptureDetails](Chronicle.Captures.CaptureDetails.md): A capture as reported by the Chronicle kernel: its id, name, compiled CDL declaration text, and whether it is running. - [Chronicle.Captures.Declaration](Chronicle.Captures.Declaration.md): Renders a capture definition to Capture Declaration Language (CDL) text. - [Chronicle.Client](Chronicle.Client.md): Supervisor that manages a Chronicle connection and all registered observers. - [Chronicle.Compliance](Chronicle.Compliance.md): Compliance support for marking event and read model fields as containing sensitive data, mirroring the `@pii` decorator in the C# and TypeScript clients. - [Chronicle.Compliance.ComplianceMetadataType](Chronicle.Compliance.ComplianceMetadataType.md): Identifies a kind of compliance metadata that can be attached to a property or type in a generated JSON schema. - [Chronicle.Concept](Chronicle.Concept.md): Macro for defining Chronicle concepts — strongly-typed wrappers over a single primitive value, mirroring `ConceptAs` in the C# client and `ConceptAs` in the Kotlin client. - [Chronicle.Confidentiality](Chronicle.Confidentiality.md): Plain-confidentiality encryption for marking event and read model fields as needing encryption at rest without being personal data — mirroring the `@encrypted` decorator in the C#, TypeScript, and Kotlin clients. - [Chronicle.Confidentiality.SecurityMetadataType](Chronicle.Confidentiality.SecurityMetadataType.md): Identifies a kind of security metadata that can be attached to a property or type in a generated JSON schema. - [Chronicle.Connections.ConnectionString.ServerAddress](Chronicle.Connections.ConnectionString.ServerAddress.md): Represents a Chronicle server address with host and port. - [Chronicle.Connections.DnsResolver](Chronicle.Connections.DnsResolver.md): Resolves `chronicle+srv://` connection strings via DNS SRV lookups. - [Chronicle.Connections.Lifecycle](Chronicle.Connections.Lifecycle.md): Tracks the Chronicle connection lifecycle and broadcasts phase changes. - [Chronicle.Connections.LoadBalancer](Chronicle.Connections.LoadBalancer.md): Selects a Chronicle server address to connect to from a resolved candidate list. - [Chronicle.Connections.LoadBalancer.HttpProbe](Chronicle.Connections.LoadBalancer.HttpProbe.md): Default HTTP transport for `Chronicle.Connections.LoadBalancer`'s `:least_connections` strategy. - [Chronicle.Connections.Watchdog](Chronicle.Connections.Watchdog.md): Reconnects a client that has been stuck without being registered. - [Chronicle.Diagnostics.Tracing](Chronicle.Diagnostics.Tracing.md): OpenTelemetry span helper for the Chronicle Elixir client. - [Chronicle.Discovery.Artifact](Chronicle.Discovery.Artifact.md): One artifact found by `Chronicle.Discovery.Report.build/1`. - [Chronicle.Discovery.DefaultedIdWarning](Chronicle.Discovery.DefaultedIdWarning.md): Warns, at most once per module for the lifetime of the BEAM node, that a reactor, reducer or projection is relying on its module name as its identifier. - [Chronicle.Discovery.Drift](Chronicle.Discovery.Drift.md): One artifact identity finding from `Chronicle.Discovery.DriftDetector`: evidence that the kernel's record of an artifact and the client's current code have diverged, not proof of a problem on its own. - [Chronicle.Discovery.DriftDetector](Chronicle.Discovery.DriftDetector.md): Compares a discovery report with what the kernel already knows, before registration. - [Chronicle.Discovery.EventSchemaShape](Chronicle.Discovery.EventSchemaShape.md): Extracts a canonical, coarse shape from an event's JSON schema for identity comparison. - [Chronicle.Discovery.Report](Chronicle.Discovery.Report.md): What the client found, across every artifact kind `Chronicle.Artifacts` knows how to discover: event types, event sources, reactors, reducers, declarative projections, read models, constraints, webhooks, event store subscriptions, seeders, migrations, global handlers and captures. - [Chronicle.EventSequences.AppendResult](Chronicle.EventSequences.AppendResult.md): The detailed outcome of an append, mirroring the .NET client's `AppendResult` / `AppendManyResult`. - [Chronicle.EventSequences.EventForEventSourceId](Chronicle.EventSequences.EventForEventSourceId.md): Represents an event buffered for a specific event source within an event sequence. - [Chronicle.EventSequences.PreparedEvent](Chronicle.EventSequences.PreparedEvent.md): An immutable, pre-serialized snapshot of an event, bound to the client, namespace and event sequence that prepared it. - [Chronicle.EventSequences.ResolvedIdentity](Chronicle.EventSequences.ResolvedIdentity.md): The identity that caused an event, as the kernel resolved it when reading event metadata (`Chronicle.EventSequences.Streams.get_metadata/2` and `get_metadata_at/2`). - [Chronicle.EventSequences.Streams](Chronicle.EventSequences.Streams.md): Closing, reopening and inspecting event streams, and reading event metadata. - [Chronicle.EventSequences.Streams.ClosedStream](Chronicle.EventSequences.Streams.ClosedStream.md): A closed stream scope: which scope it is, how it was closed (`:complete_stream` for an operator's call, `:closing_event` for a closing event), by whom, and when. - [Chronicle.EventSources.Routing](Chronicle.EventSources.Routing.md): The routing of an append that has been resolved from an event source definition. - [Chronicle.Events.AppendedEvent](Chronicle.Events.AppendedEvent.md): An event read back from an event sequence, decoded into the event struct it was appended as. - [Chronicle.Events.Constraint](Chronicle.Events.Constraint.md): Macro for defining a standalone constraint module. - [Chronicle.Events.ConstraintViolation](Chronicle.Events.ConstraintViolation.md): Helpers for working with a constraint violation returned on an `t:Chronicle.EventSequences.AppendResult.constraint_violation/0` or the raw wire violation passed to a `:message` callback (see `Chronicle.Events.EventType.unique/2`, `Chronicle.Events.EventType.unique_event_type/1`, and `Chronicle.Events.Constraint`). - [Chronicle.Events.EventContext](Chronicle.Events.EventContext.md): The context of an event handed to reactors and reducers. - [Chronicle.ExternalServices](Chronicle.ExternalServices.md): Idiomatic API for registering external service definitions with Chronicle. - [Chronicle.ExternalServices.Definition](Chronicle.ExternalServices.Definition.md): Represents an external service definition registered with Chronicle. - [Chronicle.ExternalServices.DefinitionBuilder](Chronicle.ExternalServices.DefinitionBuilder.md): Immutable, pipe-friendly builder for external service definitions. - [Chronicle.FailedPartitions](Chronicle.FailedPartitions.md): Idiomatic API for working with Chronicle failed partitions. - [Chronicle.FailedPartitions.Attempt](Chronicle.FailedPartitions.Attempt.md): A single failed attempt to observe a partition. - [Chronicle.FailedPartitions.FailedPartition](Chronicle.FailedPartitions.FailedPartition.md): A partition that failed to be observed, along with its failed attempts. - [Chronicle.Identities](Chronicle.Identities.md): Manager operations for identities known to Chronicle. - [Chronicle.Middleware](Chronicle.Middleware.md): Wraps the handling of an event by a reactor or reducer, for cross-cutting concerns: tracing, metrics, logging, impersonating the identity that caused the event, tenant scoping, transactional wrapping. Mirrors the .NET client's reactor middleware. - [Chronicle.Observers](Chronicle.Observers.md): Idiomatic API for working with Chronicle observers. - [Chronicle.Observers.FastForwardResult](Chronicle.Observers.FastForwardResult.md): What came back from asking an event store to fast forward an observer. - [Chronicle.Observers.Lag](Chronicle.Observers.Lag.md): How far behind the tail of an event sequence each observer is. - [Chronicle.Observers.Lag.Reporter](Chronicle.Observers.Lag.Reporter.md): Polls `Chronicle.Observers.Lag.measure/1` and publishes a telemetry event per observer. - [Chronicle.Observers.ObserverInformation](Chronicle.Observers.ObserverInformation.md): What the event store knows about one of its observers. - [Chronicle.Observers.RemovalResult](Chronicle.Observers.RemovalResult.md): What came back from asking an event store to remove an observer. - [Chronicle.Patterns](Chronicle.Patterns.md): Idiomatic Elixir interface for Chronicle behavior patterns. - [Chronicle.Patterns.BehaviorPattern](Chronicle.Patterns.BehaviorPattern.md): A recurring combination of facets that survived Chronicle's support and confidence thresholds. - [Chronicle.Patterns.FacetName](Chronicle.Patterns.FacetName.md): Well-known facet name constants for `Chronicle.Patterns`. - [Chronicle.PayloadLimit](Chronicle.PayloadLimit.md): A client-side guard for payloads the kernel would reject. - [Chronicle.Projections](Chronicle.Projections.md): Idiomatic Elixir interface for ad-hoc projection querying and waiting for a registered projection to catch up. - [Chronicle.Projections.Children](Chronicle.Projections.Children.md): Declares a **child collection** of a read model: a list on the parent that grows, changes and shrinks as events arrive. Mirrors the .NET client's `[ChildrenFrom]` / `ChildrenBuilder`. - [Chronicle.Projections.GlobalHandler](Chronicle.Projections.GlobalHandler.md): Macro for defining a mapping shared across every read model variant of a given identity, without repeating it on each variant module. - [Chronicle.Projections.Projection](Chronicle.Projections.Projection.md): Macro for defining Chronicle declarative projections. - [Chronicle.ReadModels.Changeset](Chronicle.ReadModels.Changeset.md): A live read-model change delivered to a subscriber of `Chronicle.ReadModels.watch/2`. - [Chronicle.ReadModels.DecisionRead](Chronicle.ReadModels.DecisionRead.md): A read model instance together with the concurrency guard that protects the decision made from it. - [Chronicle.ReadModels.DecisionReads](Chronicle.ReadModels.DecisionReads.md): Client-side decision-consistent reads: fold a read model, carry forward the exact log position it was folded at, and let `Chronicle.Transactions.UnitOfWork` guard a subsequent append with it — the Dynamic Consistency Boundary (DCB) pattern. - [Chronicle.ReadModels.Definition](Chronicle.ReadModels.Definition.md): Read-model definition metadata returned by `Chronicle.ReadModels.definitions/1`. - [Chronicle.ReadModels.Occurrence](Chronicle.ReadModels.Occurrence.md): Metadata describing a replay occurrence for a read model. - [Chronicle.ReadModels.QueryResult](Chronicle.ReadModels.QueryResult.md): Result returned by `Chronicle.ReadModels.query/2`. - [Chronicle.ReadModels.Reactor](Chronicle.ReadModels.Reactor.md): Reacts to **changes of a read model** rather than to events. - [Chronicle.ReadModels.Snapshot](Chronicle.ReadModels.Snapshot.md): Historical snapshot returned by `Chronicle.ReadModels.snapshots/3`. - [Chronicle.Registration.RetryPolicy](Chronicle.Registration.RetryPolicy.md): How registration with the kernel is retried: capped exponential backoff with jitter, a maximum number of attempts, and a distinction between failures worth retrying and failures that will never succeed. Mirrors the .NET client's `RegistrationRetryOptions` / `RegistrationBackoff`. - [Chronicle.Schemas.JsonSchemaGenerator](Chronicle.Schemas.JsonSchemaGenerator.md): Generates JSON schemas for struct-backed event types and read models. - [Chronicle.Seeding](Chronicle.Seeding.md): Accumulates and registers seed events with Chronicle. - [Chronicle.Seeding.Seeder](Chronicle.Seeding.Seeder.md): Behaviour and macro for defining Chronicle seeders. - [Chronicle.Serialization](Chronicle.Serialization.md): Encodes event and read model structs to Chronicle's JSON wire format and decodes them back. - [Chronicle.Testing](Chronicle.Testing.md): Testing support for applications built on Chronicle: an in-memory fake kernel, deterministic helpers, and assertions — so a spec can exercise commands, reactors, reducers, constraints and concurrency without a running kernel. - [Chronicle.Testing.Assertions](Chronicle.Testing.Assertions.md): ExUnit assertions for events appended to a `Chronicle.Testing.start_supervised_client/1` client, and for the structured rejections `Chronicle.EventSequences.EventLog` returns. - [Chronicle.Testing.Case](Chronicle.Testing.Case.md): `ExUnit.CaseTemplate` that starts an isolated `Chronicle.Testing.start_supervised_client/1` before each test, puts it in the test context as `:chronicle`, and stops it in `on_exit`. Safe under `async: true` — every test gets its own in-memory kernel and client, and `start_supervised_client/1` always generates a unique event store name, so tests never see one another's events. - [Chronicle.Testing.InMemoryKernel](Chronicle.Testing.InMemoryKernel.md): An in-memory fake Chronicle kernel: a `GenServer` holding an event log plus a `%GRPC.Channel{}` interceptor answering the subset of the Chronicle wire protocol the client needs to append, read, and register artifacts. - [Chronicle.Testing.Integration](Chronicle.Testing.Integration.md): Helpers for integration specs that need a **real** running kernel — because they exercise something `Chronicle.Testing.InMemoryKernel` does not model (the server-side projection engine, `closes_stream` constraints, and the rest listed on its moduledoc). - [Chronicle.Testing.Projections](Chronicle.Testing.Projections.md): Evaluates the supported subset of a `Chronicle.ReadModels.ReadModel`'s embedded projection declarations against events, in memory — for a spec that wants to assert on a projected read model without a kernel to run the real projection engine. - [Chronicle.WireResult](Chronicle.WireResult.md): Unwraps a Chronicle gRPC command/query result envelope. - Connections - [Chronicle.Connections.Connection](Chronicle.Connections.Connection.md): Manages a resilient Chronicle gRPC channel with automatic reconnection. - [Chronicle.Connections.ConnectionString](Chronicle.Connections.ConnectionString.md): Parses and formats Chronicle connection strings. - Context - [Chronicle.Auditing.CausationEntry](Chronicle.Auditing.CausationEntry.md): Represents a single causation entry in an audit chain. - [Chronicle.Auditing.CausationManager](Chronicle.Auditing.CausationManager.md): Process-scoped causation chain manager. - [Chronicle.Auditing.CausationType](Chronicle.Auditing.CausationType.md): Identifies the kind of operation that caused an event append. - [Chronicle.Correlation.CorrelationId](Chronicle.Correlation.CorrelationId.md): Represents a correlation identifier for a logical operation. - [Chronicle.Correlation.CorrelationIdManager](Chronicle.Correlation.CorrelationIdManager.md): Process-scoped correlation id manager. - [Chronicle.Identity](Chronicle.Identity.md): Represents the identity that caused a state change. - [Chronicle.Identity.IdentityProvider](Chronicle.Identity.IdentityProvider.md): Process-scoped identity provider. - Event Sourcing - [Chronicle.EventSequences.EventLog](Chronicle.EventSequences.EventLog.md): Appends and queries events in a Chronicle event log. - [Chronicle.EventSequences.EventSequence](Chronicle.EventSequences.EventSequence.md): Represents a Chronicle event sequence. - [Chronicle.EventSequences.TransactionalEventSequence](Chronicle.EventSequences.TransactionalEventSequence.md): Transactional view of an event sequence. - [Chronicle.EventSources](Chronicle.EventSources.md): Describes, validates and registers event source definitions (see `Chronicle.EventSources.EventSource`). - [Chronicle.EventSources.ConcurrencyDimensions](Chronicle.EventSources.ConcurrencyDimensions.md): The dimensions of an append that take part in its concurrency check. - [Chronicle.EventSources.EventSource](Chronicle.EventSources.EventSource.md): Declares an event source definition. - [Chronicle.EventSources.EventSourceDefinition](Chronicle.EventSources.EventSourceDefinition.md): A discovered event source definition: stable name, description, default concurrency dimensions and streams. - [Chronicle.EventSources.EventStream](Chronicle.EventSources.EventStream.md): A named stream declared by an event source. - [Chronicle.EventStores](Chronicle.EventStores.md): Lists event stores and namespaces from the Chronicle kernel. - [Chronicle.Events.ConcurrencyScope](Chronicle.Events.ConcurrencyScope.md): Represents a concurrency scope for Chronicle append operations. - [Chronicle.Events.EventType](Chronicle.Events.EventType.md): Macro for defining Chronicle event types. - [Chronicle.Events.EventTypes](Chronicle.Events.EventTypes.md): Registers event types with a Chronicle event store. - [Chronicle.Events.Migration](Chronicle.Events.Migration.md): Behaviour and macro for defining event type migrations. - [Chronicle.Events.MigrationBuilder](Chronicle.Events.MigrationBuilder.md): Fluent builder for event migration property transformations. - [Chronicle.Events.Migrators](Chronicle.Events.Migrators.md): Discovers, groups, and materializes event type migrations. - Transactions - [Chronicle.Transactions.UnitOfWork](Chronicle.Transactions.UnitOfWork.md): Buffers event appends and commits them as a single Chronicle append-many operation. - Observers - [Chronicle.EventStoreSubscriptions](Chronicle.EventStoreSubscriptions.md): Idiomatic API for working with Chronicle event store subscriptions. - [Chronicle.EventStoreSubscriptions.Definition](Chronicle.EventStoreSubscriptions.Definition.md): Represents an event store subscription definition registered with Chronicle. - [Chronicle.EventStoreSubscriptions.DefinitionBuilder](Chronicle.EventStoreSubscriptions.DefinitionBuilder.md): Immutable builder for event store subscription definitions. - [Chronicle.EventStoreSubscriptions.EventType](Chronicle.EventStoreSubscriptions.EventType.md): Represents an event type included in an event store subscription definition. - [Chronicle.EventStoreSubscriptions.Subscription](Chronicle.EventStoreSubscriptions.Subscription.md): Behaviour and macro for defining discoverable Chronicle event store subscriptions. - [Chronicle.Reactors.Reactor](Chronicle.Reactors.Reactor.md): Behaviour and macro for defining Chronicle reactors. - [Chronicle.Reducers.Reducer](Chronicle.Reducers.Reducer.md): Behaviour and macro for defining Chronicle reducers. - Read Models - [Chronicle.ReadModels](Chronicle.ReadModels.md): Idiomatic Elixir interface for Chronicle read models. - [Chronicle.ReadModels.ReadModel](Chronicle.ReadModels.ReadModel.md): Macro for defining Chronicle read models with embedded model-bound projections. - Sinks - [Chronicle.Sinks.WellKnownSinkTypes](Chronicle.Sinks.WellKnownSinkTypes.md): Well-known sink type identifiers for Chronicle projections and reducers. - Jobs - [Chronicle.Jobs](Chronicle.Jobs.md): Idiomatic API for working with Chronicle jobs. - [Chronicle.Jobs.Job](Chronicle.Jobs.Job.md): Represents the current state of a Chronicle job. - [Chronicle.Jobs.JobProgress](Chronicle.Jobs.JobProgress.md): Represents aggregate progress for a Chronicle job. - [Chronicle.Jobs.JobStatusChanged](Chronicle.Jobs.JobStatusChanged.md): Represents a status transition for a Chronicle job. - [Chronicle.Jobs.JobStep](Chronicle.Jobs.JobStep.md): Represents the current state of a Chronicle job step. - [Chronicle.Jobs.JobStepProgress](Chronicle.Jobs.JobStepProgress.md): Represents progress for an individual Chronicle job step. - [Chronicle.Jobs.JobStepStatusChanged](Chronicle.Jobs.JobStepStatusChanged.md): Represents a status transition for a Chronicle job step. - WebHooks - [Chronicle.WebHooks](Chronicle.WebHooks.md): Idiomatic API for working with Chronicle webhooks. - [Chronicle.WebHooks.Definition](Chronicle.WebHooks.Definition.md): Represents a webhook definition registered with Chronicle. - [Chronicle.WebHooks.DefinitionBuilder](Chronicle.WebHooks.DefinitionBuilder.md): Immutable builder for webhook definitions. - [Chronicle.WebHooks.EventType](Chronicle.WebHooks.EventType.md): Represents an event type referenced by a webhook definition. - [Chronicle.WebHooks.Target](Chronicle.WebHooks.Target.md): Represents the delivery target for a webhook. - [Chronicle.WebHooks.Webhook](Chronicle.WebHooks.Webhook.md): Behaviour and macro for defining discoverable Chronicle webhooks. - Constraints - [Chronicle.Events.Constraints](Chronicle.Events.Constraints.md): Registers event constraints with a Chronicle event store. - Exceptions - [Chronicle.Captures.MissingAppendCondition](Chronicle.Captures.MissingAppendCondition.md): Raised at compile time when an `append/2` or `append/3` block does not declare `when:`. - [Chronicle.Captures.MissingCaptureKey](Chronicle.Captures.MissingCaptureKey.md): Raised at compile time when a `Chronicle.Captures.Capture` does not declare a `key/1`. - [Chronicle.Captures.MissingCaptureSourceConfiguration](Chronicle.Captures.MissingCaptureSourceConfiguration.md): Raised at compile time when a `Chronicle.Captures.Capture` declares no source (`api_source/2`, `webhook_source/1`, or `events_source/1`), or declares more than one. - [Chronicle.Captures.TargetPropertyMustBeAProperty](Chronicle.Captures.TargetPropertyMustBeAProperty.md): Raised at compile time when `set/2` targets a field that is not a property of the appended event's struct. - [Chronicle.Confidentiality.PiiAndEncryptedCombinedNotSupported](Chronicle.Confidentiality.PiiAndEncryptedCombinedNotSupported.md): Raised when a property, or the concept it resolves metadata from, carries both `Chronicle.Compliance.pii/1,2` and `Chronicle.Confidentiality.encrypted/1,2,3`. - [Chronicle.EventSources.DuplicateEventSourceName](Chronicle.EventSources.DuplicateEventSourceName.md): Raised when more than one event source definition uses the same name. - [Chronicle.EventSources.DuplicateEventStreamName](Chronicle.EventSources.DuplicateEventStreamName.md): Raised when an event source declares the same stream name more than once. - [Chronicle.Events.EventTypeGenerationForCannotBeCombinedWithEventType](Chronicle.Events.EventTypeGenerationForCannotBeCombinedWithEventType.md): Raised when a module gives both `:id` and `:generation_for` to `use Chronicle.Events.EventType`. - [Chronicle.Events.EventTypeGenerationReferencesNonEventType](Chronicle.Events.EventTypeGenerationReferencesNonEventType.md): Raised when `generation_for:` references a module that doesn't `use Chronicle.Events.EventType`. - [Chronicle.Events.InvalidMigrationGenerationGap](Chronicle.Events.InvalidMigrationGenerationGap.md): Raised when a migration does not connect adjacent generations. - [Chronicle.Events.MultipleEventTypesWithSameIdFound](Chronicle.Events.MultipleEventTypesWithSameIdFound.md): Raised when several event type modules represent the same generation of the same event type id. - [Chronicle.Events.MultipleMigratorsForSameEventTypeGeneration](Chronicle.Events.MultipleMigratorsForSameEventTypeGeneration.md): Raised when more than one migration module defines the migration between the same pair of generations for an event type. Exactly one migrator may bridge a pair of generations. - [Chronicle.Observers.MultipleGenerationsOfEventTypeInObserver](Chronicle.Observers.MultipleGenerationsOfEventTypeInObserver.md): Raised when an observer with pinned generation delivery handles several generations of the same event type. - [Chronicle.Projections.GlobalHandlerPropertyNotOnVariant](Chronicle.Projections.GlobalHandlerPropertyNotOnVariant.md): Raised when a `Chronicle.Projections.GlobalHandler` shared handler declares a mapping that targets a member a variant it applies to does not have. - [Chronicle.Projections.VariantMustDeclareEntersOnEvent](Chronicle.Projections.VariantMustDeclareEntersOnEvent.md): Raised when a read model or declarative projection variant does not declare at least one `enters_on` event. - [Chronicle.ReadModels.DecisionConflict](Chronicle.ReadModels.DecisionConflict.md): Raised (by `Chronicle.Transactions.UnitOfWork.with_unit_of_work/2`) or returned as `{:error, %DecisionConflict{}}` (by `Chronicle.decide/2`) when a unit of work commits events whose enrolled decision reads (`Chronicle.ReadModels.DecisionReads.get/3`) are no longer current: something else appended a matching event to one of the guarded event sources between the read and the commit. The kernel rejects the whole batch when this happens, so none of the unit of work's events were appended. - [Chronicle.ReadModels.DecisionReadRefused](Chronicle.ReadModels.DecisionReadRefused.md): Raised when a read model's shape, or the requested stream scope, is not safe to guard a decision with. - [Chronicle.ReadModels.ObserveError](Chronicle.ReadModels.ObserveError.md): Raised by `Chronicle.ReadModels.observe_stream/2` when the underlying kernel stream fails. - [Chronicle.Testing.UnsupportedProjectionOperation](Chronicle.Testing.UnsupportedProjectionOperation.md): Raised by `Chronicle.Testing.Projections` when a read model declares a projection operation the in-memory evaluator does not support — `join/2`, `children/2`, `from_every/1` and their variants. - [Chronicle.Transactions.NoUnitOfWorkStarted](Chronicle.Transactions.NoUnitOfWorkStarted.md): Raised when transaction-scoped APIs are used without an active unit of work. - [Chronicle.Transactions.UnitOfWorkIsAlreadyCommitted](Chronicle.Transactions.UnitOfWorkIsAlreadyCommitted.md): Raised when a committed unit of work is mutated or committed again. - [Chronicle.Transactions.UnitOfWorkIsAlreadyRolledBack](Chronicle.Transactions.UnitOfWorkIsAlreadyRolledBack.md): Raised when a rolled back unit of work is mutated or rolled back again. ## Mix Tasks - [mix chronicle.discover](Mix.Tasks.Chronicle.Discover.md): Prints the artifacts `Chronicle.Artifacts.discover/1` finds in an OTP application, and optionally compares them with a running kernel for artifact identity drift (see `Chronicle.Discovery.DriftDetector`).