Skip to content

Glossary

Verified by tests

RouteTests, DispatchModeTests, LifecycleStageTests, IPerspectiveForTests — library CI run #37346231411 (2026-10-05)

Quick reference for Whizbang terminology. Terms link to their full documentation.


A

AOT (Ahead-of-Time Compilation)

Native AOT compilation that eliminates runtime reflection. Whizbang achieves zero-reflection via source generators. See Native AOT.

Apply Method

A pure function on a Perspective that transforms the current model state given an event. Must be synchronous, deterministic, and free of side effects.

ApplyResult

Return type for Perspectives with Actions that supports Delete/Purge in addition to normal updates.

Auto-Populate

Attributes that automatically set message properties from envelope context (timestamps, service info, identifiers). See Auto-Populate.

C

Cascade

Automatic routing of events returned by a Receptor to the outbox, event store, or local processing. See Dispatcher.

CascadeContext

Security and scope context that flows through message hops. See Cascade Context.

Command

A message representing intent or a request for action (e.g., CreateOrder). Implements ICommand. Routed point-to-point via shared inbox topic. See Commands and Events.

CorrelationId

A value object that links related messages across a distributed workflow. Propagated automatically through message hops.

D

Delivery Receipt

Acknowledgment returned by SendAsync containing MessageId, CorrelationId, Status, and metadata. See Delivery Receipts.

Dispatcher

The central message router providing three patterns: SendAsync (commands), LocalInvokeAsync (RPC), PublishAsync (events). See Dispatcher Guide.

DispatchModes

Flags enum controlling where messages route. Base flags: None, LocalDispatch, Outbox, EventStore. Combined values: Local (dispatch + persist), LocalNoPersist, Both (local + outbox), EventStoreOnly. See Dispatcher.

E

Envelope

Wrapper around a message payload containing hops, tracing context, scope deltas, and metadata. See Message Envelopes.

Event

A message representing a fact or something that happened (e.g., OrderCreated). Implements IEvent. Published via namespace-based topics. See Events.

Event Store

Append-only storage for events organized by stream. Supports polymorphic reads and sync verification. See Event Store.

Event Stream

A sequence of events grouped by StreamId, representing the history of an aggregate.

F

FireAt Attribute

Declarative attribute that controls when a Lifecycle Receptor executes in the message processing pipeline. See Lifecycle Receptors.

G

Global Perspective

A Perspective that aggregates events across multiple streams using a partition key. See Multi-Stream Perspectives.

H

Hop

A record of a message passing through a service. Envelopes accumulate hops for distributed tracing. See Message Context.

I

Inbox

Incoming message store for exactly-once deduplication. Messages received from transport are stored and deduplicated before processing. See Inbox Pattern.

L

Lens

Read-side query interface for querying Perspective data. Supports scoping, filtering, and multi-model queries. See Lenses Guide.

Lifecycle Coordinator

Singleton that manages stage transitions, guarantees exactly-once firing, and coordinates WhenAll completion across processing paths. See Lifecycle Coordinator.

Lifecycle Receptor

A Receptor decorated with [FireAt] that executes at a specific stage in the message processing pipeline. See Lifecycle Receptors.

Lifecycle Stage

One of 28 stages in the message processing pipeline. Stage names carry a Detached or Inline suffix (e.g., ImmediateDetached, PostPerspectiveInline, PostAllPerspectivesDetached, PostLifecycleInline) covering the Immediate, Distribute, Outbox, Inbox, Perspective, PostAllPerspectives, PostLifecycle, and Destruction phases. See Lifecycle Stages.

M

Message

Base marker interface (IMessage) for all message types. Subtypes: ICommand, IEvent, IQuery. See Messages.

MessageId

Value object uniquely identifying a message instance. Generated as UUIDv7 (time-ordered).

O

Outbox

Transactional outbox for reliable event publishing. Events are persisted atomically with business data, then published asynchronously. See Outbox Pattern.

P

Perspective

A pure-function event handler that maintains an eventually-consistent read model. The "Q" in CQRS. See Perspectives Guide.

Physical Field

A perspective model property extracted to a dedicated database column for native indexing. See Physical Fields.

PostLifecycle

Terminal lifecycle stage that fires exactly once per event after all processing paths complete. Managed by Lifecycle Coordinator.

R

Receptor

A stateless message handler that encapsulates business logic. Receives commands/queries and returns events/responses. See Receptors Guide.

Rebuild

Reconstructing a Perspective's read model from event history. Modes: Blue-Green, In-Place, Selected Streams. See Perspective Rebuild.

Route

Static factory class for controlling message dispatch: Route.Local(), Route.LocalNoPersist(), Route.Outbox(), Route.Both(), Route.None(), Route.EventStoreOnly().

S

Scope

Security and authorization context (tenant, user, roles) that propagates through message envelopes. See Scoping.

Source Generator

Roslyn-based compile-time code generator that enables zero-reflection, AOT-compatible type discovery. See Source Generators.

StreamId

Property marked with [StreamId] that identifies which event stream a message belongs to. Required on all events and perspective models. See Stream ID.

T

Tag

Declarative cross-cutting concern attached to messages via attributes. Tags fire at every lifecycle stage. See Message Tags.

Temporal Perspective

An append-only Perspective that creates a new row per event (INSERT not UPSERT). Used for activity feeds and audit logs. See Temporal Perspectives.

Transport

Message broker integration (RabbitMQ, Azure Service Bus, In-Memory). See Transports.

V

Vector Field

A perspective model property storing embeddings for similarity search via pgvector. See Vector Fields.

W

WhenAll

Pattern where PostLifecycle fires only after all processing paths complete. Used for Route.Both() events and multi-perspective coordination. See Lifecycle Coordinator.

Work Coordinator

Distributed batch processing system with lease-based coordination, partition distribution, and stream ordering. See Work Coordinator.