Skip to content
Cratis
Search
Ctrl
K
Cancel
GitHub
Discord
YouTube
Select theme
Dark
Light
Auto
Cratis Stack
Chronicle
Arc
Components
Screenplay
CLI
Fundamentals
Contributing
Architecture
Prompter
Overview
Start here
Getting started
Quickstart
Overview
Choose an application host model
Console
Worker Service
ASP.NET Core
Tutorial
Tutorial
Overview
1. Your first event
2. Building a read model
3. Reacting to events
Scenarios
Overview
Rebuild a read model
Enforce a unique value
React to an event
Get read models
Test a slice
Evolve an event's shape
Client SDKs
Overview
.NET client
Overview
Get started
Kotlin client
Overview
Get Started
Reference
Reference
Annotations
EventStore API
Configuration
Elixir client
Chronicle Elixir Client
Get Started
Connections
Connections
Resilience and the Connection Lifecycle
Connection Strings
Context Management
Event Store Discovery
Event Store Subscriptions
Jobs
WebHooks
Sinks
Seeding
TypeScript client
TypeScript Client
Get Started
Runtime
Sinks
Jobs
Webhooks
Seeding
Identity
Causation
Correlation
Concepts and architecture
Why Event Sourcing
CRUD, EF Core, and Chronicle
Understanding constraints
Understanding event evolution
Concepts
Overview
Event
Event Type
Modeling events well
Event Type Migrations
Event Source
Subject
Event Store
Namespaces
Event Sequence
Observers
Projections, reducers, and reactors
Projection
Designing read models
Deep dive: consistency
Constraints
Event Metadata Tags
Correlation, identity, and causation
Tagging
Tagging Reactors
Geospatial Coordinates
When to use event sourcing
Glossary
Architecture
Dynamic Consistency Boundary
Overview
Chronicle
Event store
Events
Overview
Event Source Id
Appending
Appending with tags
Filtering
Overview
By tag
By event source type
By event stream type
Appending many
Transactions
Observing appends
Getting events
Getting state
Concurrency
Cross-cutting properties
Revision
Redaction
Event Seeding
Overview
Seeding with C#
Namespaces
Overview
DotNET client usage
ASP.NET Core namespace resolution
Constraints
Overview
Declarative
Overview
Unique property constraint
Unique event type constraint
Model-Bound
Overview
Unique property constraint
Unique event type constraint
Closing Streams
Migrations
Overview
C# usage
Generation validation
Compliance
Overview
PII Attribute
Applying PII to ConceptAs types
Working with compliance from the client
Read models and PII
Compliance in Arc applications
Read models and processing
Read Models
Overview
Consistency Models
Getting a Single Instance
Getting a Collection of Instances
Materialized Read Models
Getting Snapshots
Watching Read Models
Pagination and Observation
Projections
Overview
Choose a read-model style
Architecture
Eventual Consistency
Tagging Projections
Nested Objects (Design)
Projection Declaration Language
Overview
Ad-hoc Querying
Model-Bound Projections
Overview
Basic Mapping
Set Constant Value
Convention-Based
FromEvery
FromAll
Counters
Constant key
Children
Nested Objects
Removal
Joins
Event Sequence Source
Not Rewindable
Passive
Declarative Projections
Overview
Simple projection
AutoMap
Passive
Set properties
Children
Nested Objects
Joins
Functions
Composite keys
Constant key
Event context
FromEvery
FromAll
Initial values
RemoveWithJoin
FromEventSequence
NotRewindable
Reactors
Overview
Getting Started
Quickstart
Event Processing
Returning Side Effects
Event Sequence
Subscribe to External Event Stores
OnceOnly
Reducers
Overview
Getting Started
Quickstart
Passive Reducers
Event Processing
Event Sequence
Subscribe to External Event Stores
Tagging Reducers
Subscriptions
Overview
Implicit Event Store Subscriptions
Explicit Event Store Subscriptions
Outbox and Inbox
Compliance and PII
Sinks
Jobs
Webhooks
Running Chronicle
Hosting
Overview
Production
Data Protection Key Encryption
Configuration
Overview
Configuration File
Root Properties
Features
Storage
Compliance Storage
Clustering
Observers
Read Models
Events
Authentication
TLS
Health Endpoint
Identity Provider Certificate
Client Bootstrap
Environment Variables
Open Telemetry
Docker Configuration
Configuration Precedence
Best Practices
Port Reference
Job Throttling
Aspire
Docker Compose
Local Certificates
Configuration
Overview
ChronicleOptions Reference
Camel Casing
gRPC Message Size
Structural Dependencies
TLS
Connection Strings
Overview
Server support
DotNET client usage
Configuration
Testing
Overview
Events
Overview
EventScenario
Append Assertions
Event Sequence Assertions
Read Models
Overview
ReadModelScenario
Reactors
Overview
ReactorScenario
Troubleshooting
Workbench
Overview
Development
Reference
Code Analysis
Code Analysis Rules
CHR0001 - Event type must have [EventType] attribute
CHR0002 - Declarative projection event type must have [EventType] attribute
CHR0003 - Model bound projection attribute must reference event type
CHR0004 - Reactor method has a parameter that cannot be resolved
CHR0005 - Reactor event parameter must have [EventType] attribute
CHR0006 - Reducer method signature must match allowed signatures
CHR0007 - Reducer event parameter must have [EventType] attribute
CHR0012 - Event types should avoid nullable properties
CHR0013 - Reactor cannot combine EventStore with explicit event sequence
CHR0014 - Reducer cannot combine EventStore with explicit event sequence
CHR0015 - Projection must not have side effects
CHR0016 - Projection Define() must not contain imperative code
CHR0017 - Constraint must not have side effects
CHR0018 - Constraint Define() must not contain imperative code
CHR0019 - Projection expression lambda must only access members
CHR0020 - Constraint expression lambda must only access members
CHR0021 - Event types should be record types
CHR0022 - Reactor methods returning event side effects must be marked with [OnceOnly]
CHR0023 - Ambiguous parent key for [ChildrenFrom] collection
CHR0024 - Read model property has no mapping source
CHR0025 - Explicitly sourced property may be overwritten by AutoMap
CHR0026 - [Key] or [Subject] on an EventSourceId identity is redundant
CHR0027 - Ambiguous event stream id
CHR0028 - Redundant .AutoMap() call
CHR0029 - Redundant .Set().To() with matching property names
CHR0030 - [ChildrenFrom] child collection property auto-maps to nothing
CHR0031 - Reactor must not have mutable state
CHR0032 - Reactor must not access storage directly
CHR0034 - [PII] cannot be applied to an EventSourceId
CHR0035 - Read model declares a reserved '_subject' property
CHR0036 - Reducer must not have mutable state
CHR0037 - Event type migration generations must share one explicit [EventType] id
Statistics
Contributing
Overview
Integration Tests
Clients
Contributing to Clients
Client Types
.NET
REST API
Internalization
Protobuf Extraction
TypeScript gRPC Client
Kernel
Overview
Contracts
Services
Patches
GitHub
Discord
YouTube
Select theme
Dark
Light
Auto
Event Log
Copy Markdown
Open
Open in ChatGPT
Open in Claude
View in Markdown
The event log is Chronicle’s primary event sequence and is documented in the shared Chronicle docs.
Events and event logs
Appending events
Appending many events
Optimistic concurrency
TypeScript client setup