litenova/LiteBus
59.8
Adequate · 21 September 2026
57.7k
lines of production code
C#
primary language
4
measurements over time
What this system is
LiteBus is a .NET messaging framework that provides a unified pipeline for handling commands, queries, and events, alongside durable inbox and outbox patterns for reliable message processing. It supports multiple transport backends including AMQP, AWS SQS, Azure Service Bus, and Kafka, while offering in-memory implementations for local development. The system includes comprehensive tooling such as Roslyn analyzers, OpenTelemetry diagnostics, and ASP.NET Core management endpoints for operational visibility.
Features
Add AMQP and AWS SQS inbox ingress modules
Introduced new modules for AMQP and AWS SQS inbox ingress, enabling the ingestion of messages from these brokers into the LiteBus inbox. The AMQP module registers an \AmqpInboxIngressHandler\ that maps AMQP deliveries to the transport-neutral \TransportInboxIngressHandler\, while the AWS SQS module registers an \AwsSqsInboxIngressModule\ to handle SQS message polling. Both modules support background consumer services and configurable ingress options, allowing users to integrate durable messaging from these specific brokers into the inbox system.
src/LiteBus.Inbox.Ingress.Amqp · high confidence
Add Autofac and Microsoft DI hosting extensions for background services and diagnostics
Introduced new extension methods for registering startup tasks, background services, and diagnostic checks within both Autofac and Microsoft.Extensions.DependencyInjection containers. For Autofac, \AutofacBackgroundServiceHostingExtensions\ and \AutofacDiagnosticHostingExtensions\ handle the registration of these components. For Microsoft DI, \MicrosoftBackgroundServiceHostingExtensions\ and \MicrosoftDiagnosticHostingExtensions\ provide equivalent functionality, including a \BackgroundServiceHostedServiceIndex\ to map background services to hosted services. These changes enable the host to execute startup tasks and background services defined by modules, with corresponding \packages.lock.json\ files added to both projects.
src/LiteBus.Runtime.Extensions.Autofac.Hosting, src/LiteBus.Runtime.Extensions.Microsoft.Hosting · high confidence
Add Autofac integration for LiteBus dependency injection
Users can now register and resolve LiteBus services using the Autofac container. This change introduces the \LiteBus.Runtime.Extensions.Autofac\ package, which provides an \AddLiteBus\ extension method to integrate LiteBus with Autofac's \ContainerBuilder\. The implementation includes an \AutofacDependencyRegistryAdapter\ to bridge LiteBus's internal dependency registration with Autofac's container, handling single and collection registrations, lifetime scopes, and message dispatch scopes. The package depends on Autofac 9.1.0 and Autofac.Extensions.DependencyInjection 10.0.0.
src/LiteBus.Runtime.Extensions.Autofac · high confidence
Add Entity Framework Core inbox storage with transactional support
Introduces a new Entity Framework Core-based inbox storage implementation for LiteBus. The update adds an EF Core module that registers an \EfCoreInboxStore\ and related interfaces, enabling reliable message tracking in the application's database. The implementation supports both immediate persistence and transactional staging via a \SaveChangesInterceptor\, allowing inbox rows to commit alongside application state within the same database transaction. Configuration is handled through \EfCoreInboxStorageModule\ and \EfCoreInboxStorageModuleBuilder\, which allow specifying the database context, schema, and table names. The package depends on Microsoft.EntityFrameworkCore 9.0.4.
src/LiteBus.Inbox.Storage.EntityFrameworkCore · high confidence
Add Fumadocs-based documentation site
A new documentation site built with Fumadocs and Next.js is introduced under the \site/\ directory. The site serves Markdown content from \../docs\, with each page title derived from the first level-one heading. The search route compiles Markdown at runtime, and the build process enforces that all Markdown source files are present in the search trace. A custom script validates that rendered pages do not contain \.md\ source-file links. The site is configured for Vercel deployment with Next.js framework preset, Node.js 24, and specific security headers. Development uses Node.js 24, and the lockfile is managed for cross-platform compatibility.
site · high confidence
Add Microsoft DI integration for LiteBus runtime
Users can now register and configure LiteBus runtime components using the standard Microsoft.Extensions.DependencyInjection API. This change introduces a new adapter layer that bridges LiteBus's internal dependency registry with the Microsoft DI container, allowing services to be registered via the \IServiceCollection\ interface. The implementation includes \MicrosoftDependencyRegistryAdapter\ to handle duplicate registrations and \MicrosoftMessageDispatchScopeFactory\ to manage dispatch scopes within the DI container's scope lifecycle. This enables seamless integration of LiteBus messaging and command handling into applications built on the Microsoft DI ecosystem.
src/LiteBus.Runtime.Extensions.Microsoft.DependencyInjection · high confidence
Add PostgreSQL inbox storage module with schema bootstrap and transactional writes
The PostgreSQL inbox storage module is introduced, providing a new \PostgreSqlInboxModule\ that registers the inbox store, work signal, and schema initializer. Users can configure the store via \InboxModuleBuilderPostgreSqlExtensions.UsePostgreSqlStorage\, which supports connection strings or existing \NpgsqlDataSource\ instances. The module includes automatic schema creation on startup (configurable via \EnsureSchemaCreationOnStartup\), schema validation, and optional ambient transactional inbox support (\ITransactionalInbox\) that participates in the current PostgreSQL transaction. A custom exception \InboxPostgreSqlStorageConfigurationException\ is added for configuration errors.
src/LiteBus.Inbox.Storage.PostgreSql · high confidence
Add PostgreSQL saga storage and schema management
The PostgreSQL saga storage module is now available, providing a new \PostgreSqlSagaStore\ for persisting saga state with optimistic concurrency control. The change introduces a full schema management system, including automatic schema initialization and validation during host startup, along with the ability to manually bootstrap or validate the \litebus\_saga\_instances\ table. Configuration is handled via \PostgreSqlSagaModule\ and \PostgreSqlSagaModuleBuilder\, allowing users to specify connection strings, data sources, and schema options. The implementation relies on the \Npgsql\ library (version 9.0.4) and includes embedded SQL scripts for creating the saga table and required indexes.
src/LiteBus.Saga.Storage.PostgreSql · high confidence
Add inbox and outbox dispatchers for AMQP, AWS SQS, Azure Service Bus, In-Memory, and Kafka
New extension methods are now available on \InboxModuleBuilder\ and \OutboxModuleBuilder\ to register dispatchers for AMQP, AWS SQS, Azure Service Bus, In-Memory, and Kafka transports. Each extension method configures and registers the corresponding transport module, enabling developers to easily integrate durable messaging patterns with these specific message brokers or in-memory storage.
(repo-wide) · high confidence
Add new sample application demonstrating command, query, and event handling with in-memory inbox/outbox
A new ASP.NET Core sample application has been added to the \samples\ directory, providing a complete, runnable example of the LiteBus framework. The sample implements a payment processing workflow using the command, query, and event patterns, including a \ProcessPaymentCommand\ and its handler, a \GetPaymentStatusQuery\, and a \PaymentProcessed\ event. It demonstrates the use of in-memory inbox and outbox storage with in-process dispatch, allowing users to see how to register modules, configure the message bus, and handle durable messaging without external dependencies. The sample includes all necessary project files, lock files, and documentation snippets to serve as a reference for integrating LiteBus into an application.
samples · high confidence
Add pipelined inbox processor benchmark
A new benchmark suite for the pipelined inbox processor has been added to the benchmarks directory. The suite measures throughput at realistic handler latencies, allowing users to evaluate the performance of the processor under varying concurrency and latency conditions.
benchmarks · high confidence
Added in-process dispatchers for command inbox and event outbox
Users can now route inbox and outbox messages through the local in-process message mediators instead of external brokers. The \CommandInboxDispatcher\ deserializes and executes commands via \ICommandMediator\, while the \EventOutboxDispatcher\ publishes events via \IEventMediator\. Registration is simplified with new extension methods: \InboxModuleBuilder.UseInProcessDispatch()\ and \OutboxModuleBuilder.UseInProcessDispatch()\. These modules are registered via \CommandInboxDispatchModule\ and \EventOutboxDispatchModule\ respectively.
src/LiteBus.Inbox.Dispatch.InProcess · high confidence
Adds transport circuit breaker and telemetry infrastructure
The transport layer now includes a configurable circuit breaker that tracks consecutive failures per destination and rejects new operations when a failure threshold is reached, exposing state and failure counts via OpenTelemetry gauges and counters. Additionally, the library introduces a consumer handler invoker that automatically requeues messages on unhandled exceptions, and provides header mapping and tracing utilities for broker-agnostic telemetry.
src/LiteBus.Transport · high confidence
Azure Service Bus transport adapter introduces connectivity diagnostics and resilient messaging
The Azure Service Bus transport adapter now includes a connectivity diagnostic check that verifies reachability of a configured queue or subscription by performing a non-destructive peek, reporting degraded status if no target is set and unhealthy if the entity is unavailable. The adapter also implements a new consumer with automatic processor recovery using exponential backoff for recoverable errors, a publisher with destination-scoped circuit breaker integration, and a message mapper that converts between LiteBus transport messages and Azure Service Bus broker messages. These changes are wired via the \AzureServiceBusTransportModule\ and registered through \AddAzureServiceBusTransport\ extension methods, with configuration options for connection strings, client IDs, and retry intervals.
src/LiteBus.Transport.AzureServiceBus · high confidence
EF Core durable store operations and idempotency resolution
Added three new internal classes to the Entity Framework Core storage layer: EfCoreBulkUpdateCapabilities, which detects support for relational bulk update APIs; EfCoreDurableStoreOperations, which implements shared bulk delete and update logic (falling back to tracked updates for providers like InMemory or SQLite); and EfCoreIdempotencyResolution, which handles tenant normalization, scope key creation, and in-batch duplicate resolution for durable messaging.
src/LiteBus.Storage.EntityFrameworkCore/Stores · high confidence
In-memory inbox storage module for local development and testing
Developers can now register an in-memory implementation of the inbox storage layer via the new \InMemoryInboxStorageModule\. This provides a thread-safe, process-local store for unit tests and local development, supporting configurable capacity limits, lease durations, and time providers. The module registers all necessary inbox store interfaces (e.g., \IInboxStore\, \IInboxLeaseStore\, \IInboxStateWriter\) against the same underlying \InMemoryInboxStore\ instance, enabling rapid iteration without a database.
src/LiteBus.Inbox.Storage.InMemory · high confidence
Introduce AMQP transport with connection, consumer, and publisher implementations
The AMQP transport layer is now available, providing a shared connection manager that handles broker connectivity with circuit breaking, a message consumer that supports manual acknowledgement and configurable prefetch, and a publisher that routes messages to exchanges with configurable persistence and mandatory routing. The transport module registers these components via dependency injection, validates connection settings (including URI or discrete host/port/credentials), and exposes a diagnostic check to verify broker reachability. Users can now configure AMQP broker connections and use the transport for sending and receiving messages with full lifecycle and resilience controls.
src/LiteBus.Transport.Amqp · high confidence
Introduce AWS SQS transport with connectivity diagnostics and configurable backoff
Adds the AWS SQS transport implementation for LiteBus v6, including the \AwsSqsTransportModule\ for dependency registration, \SqsConsumer\ and \SqsPublisher\ for message handling, and \AwsSqsConnectivityDiagnosticCheck\ to verify SQS queue accessibility. The transport supports configurable long-poll wait times, visibility timeouts, and exponential backoff for requeue and poll failures. A new \packages.lock.json\ pins the \AWSSDK.SQS\ dependency.
src/LiteBus.Transport.AwsSqs · high confidence
Introduce IExecutionContext for pipeline state and control
A new IExecutionContext interface has been added to the messaging abstraction layer, providing a central hub for managing the state of a mediation operation. This interface introduces a CancellationToken for supporting operation cancellation, an Items dictionary for passing contextual data between handlers, and a Tags collection for filtering which handlers execute. It also exposes a MessageResult property and an Abort method, allowing pre-handlers or other pipeline components to terminate execution early and set a result. This change enables more flexible state sharing and control flow within the messaging pipeline.
src/LiteBus.Messaging.Abstractions/Contexts/Execution · high confidence
Introduce Kafka-based inbox ingress module
Added the \LiteBus.Inbox.Ingress.Kafka\ module, which registers a Kafka-based inbox ingress as a child module. This includes the \KafkaInboxIngressModule\ for dependency registration and background service hosting, along with configuration options (\KafkaInboxIngressOptions\) for topic destination, retry behavior, and safety settings. The module supports enabling or disabling the ingress consumer and configuring host options, effectively integrating Kafka transport into the inbox messaging pipeline.
src/LiteBus.Inbox.Ingress.Kafka · high confidence
Introduce PostgreSQL schema management and logging infrastructure
The package now includes a comprehensive schema management system for PostgreSQL, featuring an extensible logging interface (IPostgreSqlSchemaLogger) with a default no-op implementation, a advisory lock mechanism to safely bootstrap schemas, and a schema inspector to validate table structures against expected versions. This adds new types for schema operations, including PostgreSqlSchemaManager, PostgreSqlSchemaInspector, and PostgreSqlAdvisoryLockScope, enabling applications to control schema creation, versioning, and logging behavior.
src/LiteBus.Storage.PostgreSql · high confidence
Introduce automated quality gates for packages, documentation, and test coverage
Added a suite of new PowerShell scripts in the \scripts\ directory to enforce build, documentation, and test coverage standards. \Test-Documentation\ and \Test-DocumentationSemantics\ validate markdown files for style, link integrity, and semantic correctness. \Test-Packages\ verifies that built NuGet packages contain required metadata, assets, and structure. \Test-CoverageThreshold\ and \run-coverage.ps1\ enforce minimum line and branch coverage thresholds. \Get-PackageInventory\ generates a reference table of package dependencies. These scripts collectively ensure that the repository's documentation, package outputs, and test coverage meet defined quality gates.
scripts · high confidence
Introduce command mediation and module configuration
Users can now configure and execute commands through a new \CommandMediator\ and \CommandModule\ in the \LiteBus.Commands\ package. The \CommandMediator\ orchestrates the command execution pipeline by delegating to a core \IMessageMediator\, supporting both void and typed command results. The \CommandModule\ handles the registration of command-specific services and discovered handlers, while the \CommandModuleBuilder\ provides a fluent API (\Register\, \RegisterFromAssembly\) to register command types and their associated pre/post/error handlers. This change adds the structural foundation for command handling within the LiteBus composition, relying on the \LiteBus.Messaging\ and \LiteBus.Runtime.Abstractions\ projects for underlying messaging and runtime abstractions.
src/LiteBus.Commands · high confidence
Introduce command mediation settings and typed handler interfaces
The library adds a new \CommandMediationSettings\ class that allows callers to pass contextual metadata and routing configuration (including tag-based filtering and handler predicates) when sending commands. This enables more granular control over which handlers participate in command processing. Alongside this, the diff introduces a suite of new interfaces to support this pipeline: \ICommandMediator\ for sending commands, \ICommandPreHandler\ and \ICommandPostHandler\ (with generic variants) for pre- and post-processing, \ICommandErrorHandler\ for exception handling, and \ICommandValidator\ for pre-processing validation. Additionally, \CommandMediatorExtensions\ are provided to simplify sending commands with optional tags. These changes represent a behavioral shift in how commands are routed and processed, moving towards a more configurable mediation pipeline.
src/LiteBus.Commands.Abstractions · high confidence
Introduce durable messaging abstractions for message envelopes and idempotency
Added a new set of abstractions for durable messaging, including the \RetryBackoff\ enum for processor retry strategies, and several records for message envelope metadata: \Idempotency\ (with \None\ and \Keyed\ variants), \MessageIdentity\ (\Generated\ or \Supplied\), \MessageTrace\ (for correlation, causation, and distributed tracing), \MessageVisibility\ (immediate, at, or after delays), and \TenantScope\ (unscoped or isolated). Also added helper classes for idempotency scope keys, tenant ID normalization, and conflict handling (\IdempotencyConflictException\, \IdempotencyConflictMode\). These types define the contract for storing and querying durable messages, enabling features like deduplication, deferred processing, and multi-tenant isolation.
src/LiteBus.DurableMessaging.Abstractions/Durability, src/LiteBus.DurableMessaging.Abstractions/DurableMessaging · high confidence
Introduce durable outbox processing with background cleanup and telemetry
Added new outbox processing capabilities to the LiteBus platform, including a background service for automatic outbox message cleanup based on retention policies, and comprehensive OpenTelemetry metrics and activity tracing for outbox operations. The update introduces extension methods to register the outbox module, configure storage and dispatchers, and enable the processor and cleanup loops. Users can now monitor outbox queue depth, processor state, and cleanup errors via standard observability tools.
src/LiteBus.Outbox · high confidence
Introduce durable saga persistence with optimistic concurrency and inbox integration
Adds the core abstractions and implementations for durable saga management, including the \ISagaStore\ interface for optimistic concurrency control, the \ISagaContext\ for ambient state access, and the \SagaExecutionContext\ for managing dispatch scopes. The change introduces an in-memory \InMemorySagaStore\ for testing and local development, alongside a \SagaProcessorHook\ that loads and persists saga state around message dispatch. It also integrates with the inbox system via \InboxModuleBuilderSagaExtensions.EnableSaga\ and a \SagaInboxCommandScopePreHandler\ to ensure saga scope is active during in-process command handling.
src/LiteBus.Saga · high confidence
Introduce event mediation interfaces and error handling
The \LiteBus.Events.Abstractions\ library now includes a full set of interfaces for the event mediator and its pipeline, including \IEventMediator\ for publishing events, \IEvent\ as the base event marker, and dedicated interfaces for pre-handlers (\IEventPreHandler\), post-handlers (\IEventPostHandler\), and error handling (\IEventErrorHandler\ and \IEventErrorHandler\<TEvent\>\). This allows developers to implement custom logic that runs before, after, or in case of failure during event processing.
src/LiteBus.Events.Abstractions · high confidence
Introduce event mediation module and builder for event publishing
Adds the \EventMediator\ implementation and the \EventModule\ configuration infrastructure to \src/LiteBus.Events\. This introduces a new module-based approach for registering and publishing events, including the \EventModuleBuilder\ for discovering and registering event types and handlers, and extension methods (\AddEvents\) to wire the event system into the LiteBus composition. The change also includes the \packages.lock.json\ file for the project.
src/LiteBus.Events · high confidence
Introduce in-memory outbox storage implementation
Adds a new in-memory implementation of the outbox storage layer, providing a thread-safe, process-local store for unit tests and local development. The change introduces the \InMemoryOutboxStore\ class, which implements the full suite of outbox storage interfaces (e.g., \IOutboxStore\, \IOutboxProcessingStore\, \IOutboxOperationsStore\) and registers them via the \InMemoryOutboxStorageModule\. This allows developers to configure and use an in-memory outbox store through the \UseInMemoryStorage\ extension method, supporting options for capacity limits, lease durations, and time providers.
src/LiteBus.Outbox.Storage.InMemory, src/LiteBus.Transport.InMemory · high confidence
Introduce inbox ingress modules for Azure Service Bus and In-Memory transports
Added new modules that enable inbox ingress for Azure Service Bus and in-memory transports. Each module registers the necessary background services, handlers, and configuration options (such as destination, prefetch count, and safety settings) to process incoming messages into the inbox. The Azure Service Bus module includes specific options for subscription names, concurrent calls, and requeue behavior, while the in-memory module provides a simpler configuration for local queue processing.
src/LiteBus.Inbox.Ingress.AzureServiceBus, src/LiteBus.Inbox.Ingress.InMemory · high confidence
Introduce inbox processing abstractions and control interfaces
Added new abstractions for inbox message processing, including the IInboxDispatcher interface for executing leased envelopes, the IInboxProcessor interface for leasing and dispatching, and the IInboxProcessorControl interface for pausing, resuming, and draining the processor loop. Also added the ProcessorState enum to track background loop states (Running, Paused, Draining) and configuration options (InboxProcessorOptions, InboxProcessorHostOptions) to tune batch sizes and lease durations.
src/LiteBus.Inbox.Abstractions/Processing · high confidence
Introduce message contract registry and serialization abstractions
Added new abstractions for message contract management and serialization. The \IMessageContractRegistry\ interface, along with \IContractReader\ and \IContractWriter\, provides a unified way to register and resolve message types to stable contract names and versions. This allows the system to map CLR types to explicit, versioned contracts stored in envelopes, decoupling storage from CLR type names. Additionally, the \IMessageSerializer\ interface and \MessageSerializationException\ class were introduced to handle message serialization and associated errors.
src/LiteBus.Messaging.Abstractions/Contracts · high confidence
Introduce module configuration and registry for dependency and lifecycle management
Added new internal classes ModuleConfiguration and ModuleRegistry to the LiteBus.Runtime.Modules namespace. ModuleConfiguration now manages the registration and ordering of startup tasks, background services, and diagnostic checks, while also handling shared context storage between modules. ModuleRegistry handles the registration of modules and computes their initialization order using topological sorting to ensure dependencies are respected. This change provides a structured way to configure and manage module lifecycles and dependencies within the runtime.
src/LiteBus.Runtime/Modules · high confidence
Introduce query mediation support in LiteBus
Adds a new query handling module to the LiteBus messaging framework, enabling in-process query mediation. The change introduces a \QueryMediator\ that routes queries through the core message mediator, supporting both single-result and streaming query execution. Registration is handled via \ModuleRegistryExtensions.AddQueries\ and \QueryModule\, which configure the \QueryModuleBuilder\ to discover and register query handlers and related contracts. This provides a structured way to manage query execution within the LiteBus composition pipeline.
src/LiteBus.Queries · high confidence
Introduce test infrastructure for deterministic time and shared disposal
The LiteBus.Testing project now includes a new base class, LiteBusTestBase, which implements IAsyncDisposable to manage shared test infrastructure cleanup. Additionally, a ManualTimeProvider class has been added to allow tests to control the UTC clock for deterministic inbox, outbox, and storage tests. The project also includes a packages.lock.json file that records the resolved versions of dependencies such as Microsoft.SourceLink.GitHub and StyleCop.Analyzers.
src/LiteBus.Testing · high confidence
Introduce transport inbox ingress consumer and acknowledgement policy
Added new files in the LiteBus.Inbox.Ingress project to implement the transport inbox ingress pipeline. This includes the TransportInboxIngressConsumer which manages the background service loop for consuming transport messages, and the TransportInboxIngressHandler which maps deliveries to inbox acceptance. The change also introduces the IngressAckPolicy to determine message requeue behavior on failure, along with supporting configuration options (TransportInboxIngressOptions, TransportInboxIngressHostOptions), telemetry definitions, and logging messages for ingress restarts and batch flush failures.
src/LiteBus.Inbox.Ingress · high confidence
Introduce transport-based inbox and outbox dispatchers
Added new \TransportInboxDispatcher\ and \TransportOutboxDispatcher\ implementations that publish leased envelope payloads through a transport-agnostic message transport. These components map envelope metadata to transport headers, support optional payload protection and validation, and allow custom route resolution strategies. The change also introduces corresponding DI modules (\TransportInboxDispatchModule\, \TransportOutboxDispatchModule\) and configuration options (\TransportInboxDispatcherOptions\, \TransportOutboxDispatcherOptions\) to configure default destinations, content types, persistence, and mandatory routing behavior.
src/LiteBus.Inbox.Dispatch, src/LiteBus.Outbox.Dispatch · high confidence
Introduce typed async error handling interfaces and context
Added new interfaces (IMessageErrorHandler, IAsyncMessageErrorHandler) and supporting types (MessageErrorContext, MessageErrorOutcome) to provide a strongly-typed, asynchronous error handling mechanism for message processing. This allows developers to implement custom error handlers that can inspect the original exception, the message, and the optional result, and control whether the pipeline suppresses or rethrows the exception.
src/LiteBus.Messaging.Abstractions/Handler/Error · high confidence
Introduce typed post-handler interfaces for message processing
The \LiteBus.Messaging.Abstractions\ library now exposes new interfaces (\IMessagePostHandler\, \IMessagePostHandler\<TMessage, TMessageResult\>\, and their async counterparts) that allow developers to implement post-handling logic with strong typing. These interfaces enable post-processing steps to receive the original message and its initial result, supporting both synchronous and asynchronous execution contexts for more flexible message pipeline extensions.
src/LiteBus.Messaging.Abstractions/Handler/Post · high confidence
Introduces a dedicated table reference type for PostgreSQL schema and table identification
A new \PostgreSqlTableReference\ record is added to encapsulate the schema and table name pair used by LiteBus durable messaging. This value object replaces separate schema and table name parameters in logging, metadata lookups, and inspection calls, providing both a dot-qualified name and a quoted identifier for safer SQL generation and consistent error reporting.
LiteBus.Storage.PostgreSql · high confidence
Introduces a framework-neutral runtime abstraction layer for background services, dependency injection, and diagnostics
The \LiteBus.Runtime.Abstractions\ package now provides a unified, framework-agnostic foundation for runtime behavior. It introduces \IBackgroundService\ for long-running host tasks, \ILiteBusBuilder\ for composition, and \IDependencyRegistry\ with \DependencyDescriptor\ to abstract dependency injection container interactions. Additionally, it adds a comprehensive diagnostics system including \IDiagnosticCheck\ for probes, \DiagnosticCheckRunner\ for execution, and \LiteBusHostManifest\ to aggregate startup tasks, background services, and diagnostic probes. This change isolates the runtime composition from specific messaging or transport implementations, allowing the core to remain independent of host adapters.
src/LiteBus.Runtime.Abstractions · high confidence
Introduces a new host orchestrator and background service wrapper for LiteBus runtime
The \LiteBus.Runtime.Extensions.Hosting\ package now includes three new internal classes: \LiteBusHostOrchestrator\, which runs startup tasks sequentially before starting background service loops and stops the application if a background service faults; \BackgroundServiceHostWrapper\, which adapts \IBackgroundService\ to \IHostedService\ for manual test execution; and \HostingRegistrationHelpers\, which provides a utility to deduplicate types while preserving order. These changes are accompanied by a new \packages.lock.json\ file that pins the \Microsoft.Extensions.Hosting.Abstractions\ dependency to version 10.0.0 and its transitive dependencies.
src/LiteBus.Runtime.Extensions.Hosting · high confidence
Introduces durable inbox and outbox abstractions and implementations
Adds new abstractions and implementations for durable messaging, including \IInbox\ and \ITransactionalInbox\ interfaces for message acceptance, along with \InboxAcceptanceService\ and \Inbox\ classes that handle serialization, metadata mapping, and store persistence. The update also introduces \IInboxManager\ for querying, replaying, and purging inbox messages, as well as \InboxCleanupBackgroundService\ for automated retention cleanup. These changes provide a structured, transactional, and observable inbox mechanism within the LiteBus v6 platform.
src/LiteBus.Inbox · high confidence
Introduces durable messaging abstractions for encryption, diagnostics, and processor results
The \LiteBus.DurableMessaging.Abstractions\ project now includes new interfaces and types that define the durable messaging contract. \IContextualPayloadEncryptor\ and \IPayloadEncryptor\ specify how payloads are encrypted and decrypted, with the former binding encryption to immutable durable metadata (message ID, contract name/version, tenant, and axis) to ensure ciphertext cannot be moved between rows or tenants. \PayloadProtectionContext\ holds this metadata. \MessageProcessorDiagnostics\ provides shared helpers for processing, including trace metadata propagation, error formatting, and validation of retry options. \MessageTraceContextKeys\ defines the keys for correlation, causation, tenant, and trace context. \ProcessorPassResult\ captures the outcome of a processor pass, including counts of succeeded, failed, and dead-lettered messages. \IMessageStoreRetentionOptions\ defines retention settings for inbox and outbox stores. These changes establish the core abstractions for durable messaging, encryption, and processing diagnostics.
src/LiteBus.DurableMessaging.Abstractions · high confidence
Introduces new abstractions for message mediation, handler pipelines, and contract discovery
The \LiteBus.Messaging.Abstractions\ project now exposes a comprehensive set of interfaces and types that define the messaging pipeline. This includes \IMessageMediator\ and \IMessageMediationStrategy\ for routing and processing messages, along with \IMessageDependencies\ to access collections of pre, main, and post handlers. The change also introduces \IHandleContextData\ for sharing data during handling, \MessageMediationRequest\ for configuring mediation behavior, and \MessageContractAttribute\ for marking message types. Additionally, new interfaces for handler descriptors (\IHandlerDescriptor\, \IPreHandlerDescriptor\, \IPostHandlerDescriptor\, \IErrorHandlerDescriptor\) and message descriptors (\IMessageDescriptor\) are provided to support the registry and resolution strategies (\IMessageResolveStrategy\).
src/LiteBus.Messaging.Abstractions · high confidence
Introduces new execution, mediation, and contract resolution components
Adds new internal and public classes to support the v6 messaging architecture, including \ExecutionContext\ for managing execution state and cancellation, \HandleContextData\ for storing context data, and \MessageContractRegistry\ for registering and resolving message contracts. The update also introduces \SingleAsyncHandlerMediationStrategy\ and \SingleStreamHandlerMediationStrategy\ to handle message processing, along with \MediationResourceScope\ for managing resource disposal. Additionally, \DeclaredTypeMessageContractResolver\ is added to resolve contracts based on declared types, and \DurableEnvelopeMetadataMapper\ is introduced to map durable metadata to envelope columns.
src/LiteBus.Messaging · high confidence
Introduces new transport abstractions for message publishing and consumption
The \LiteBus.Transport.Abstractions\ package now defines the core interfaces and types for the v6 transport layer. This includes \ITransportPublisher\ and \IMessageConsumer\ for sending and receiving messages, along with supporting types such as \TransportMessage\, \TransportPublishRequest\, \TransportConsumerOptions\, and \TransportConsumerAckHandlers\. The update also adds \TransportHeaders\ for standard header names, \TransportHeaderValues\ for header parsing, and \TransportHeaderMappingException\ for header validation errors. A \packages.lock.json\ file is added to pin the \Microsoft.SourceLink.GitHub\ and \StyleCop.Analyzers\ dependencies.
src/LiteBus.Transport.Abstractions · high confidence
Introduces query mediation abstractions and extension methods
The library now exposes a complete set of interfaces for the query pipeline, including IQueryMediator for executing and streaming queries, along with pre-handlers, post-handlers, and error handlers for both standard and stream queries. A new IQueryValidator interface allows developers to implement validation logic that runs before query processing. To simplify usage, extension methods on IQueryMediator provide convenient overloads for executing queries and streams, including support for tag-based routing via QueryMediationSettings. These changes establish the foundational API for the query side of the CQRS pattern within LiteBus.
src/LiteBus.Queries.Abstractions · high confidence
Kafka transport adapter for LiteBus v6
Adds a new Kafka transport implementation for LiteBus v6, enabling message publishing and consumption via Apache Kafka. The adapter registers a \KafkaTransportModule\ that wires up the \IProducer\, \IConsumer\, and \IAdminClient\ using \Confluent.Kafka\ (v2.8.0). It introduces a \KafkaConnectivityDiagnosticCheck\ for cluster health monitoring, a \KafkaConsumer\ with manual offset management and exponential backoff for seek failures, and a \KafkaPublisher\ with destination-scoped circuit breaking. Configuration is handled via \KafkaTransportOptions\, supporting settings for bootstrap servers, consumer groups, message timeouts, and seek failure backoff parameters.
src/LiteBus.Transport.Kafka · high confidence
Launches the LiteBus documentation site with a redesigned landing page and privacy policy
The site/app directory now contains the full structure for the public LiteBus documentation site, including a redesigned landing page (page.tsx) with syntax highlighting and feature highlights, alongside global styles (globals.css) and layout (layout.tsx) that integrate Fumadocs UI and Tailwind CSS. A privacy policy page (privacy/page.tsx) is added, specifying that the site is hosted by Vercel and governed by GDPR, with no tracking cookies. Supporting files include site metadata (site.ts), a sitemap (sitemap.ts) that indexes static and dynamic documentation pages, a robots.txt generator (robots.ts) allowing all crawlers except /api/, and a content source loader (source.ts) for Markdown docs. This change prepares the documentation site for public production launch.
site/app · high confidence
New abstractions for schema versioning and module dependency tracking
The LiteBus.Runtime.Abstractions library introduces two new types to support v6 durable messaging and module composition. StoreSchemaInfo describes the expected and recorded schema versions for inbox/outbox stores, enabling diagnostics and version validation. ModuleDescriptor captures a module and its dependencies for initialization ordering, providing a Create factory that analyzes IRequires\<T\> interfaces to build a frozen set of dependencies. These additions align the runtime abstractions with the broader v6 solution changes.
LiteBus.Runtime.Abstractions · medium confidence
New durable messaging processing abstractions and configuration
Added a new set of interfaces and configuration types for the durable messaging processor, including ILeaseRenewable, IMessageProcessor, IProcessorBackgroundControl, IProcessorPassRecorder, IProcessorWorkSignal, and ProcessorOptions. These changes introduce the core abstractions for managing message processing passes, lease renewal, background control, and performance tuning (batch size, concurrency, heartbeat intervals). Users will now have access to these new interfaces to implement custom processing logic and configure processor behavior.
src/LiteBus.DurableMessaging.Abstractions/Processing · high confidence
New event mediation and execution configuration settings
The library introduces a new settings hierarchy for controlling event handler execution. \EventMediationSettings\ now exposes \Execution\ (an \EventExecutionSettings\ object) that allows users to configure concurrency modes (sequential vs. parallel) for both priority groups and individual handlers. Additionally, \EventRoutingSettings\ provides a \HandlerPredicate\ (an \EventHandlerFilter\) for advanced, code-based filtering of handlers based on their metadata, alongside existing tag-based filtering. These changes enable more granular control over how and when event handlers are executed.
src/LiteBus.Events.Abstractions/Settings · high confidence
New exception types for message resolution and handler registration
Added new exception classes in the LiteBus.Messaging.Abstractions library to provide more specific error handling for messaging scenarios. These include AmbiguousMessageResolveException for when multiple message descriptors match a type, NoHandlerFoundException when no handler is registered for a message, MultipleHandlerFoundException for unexpected multiple handlers, MessageContractMismatchException for contract registration conflicts, MessageContractNotRegisteredException for unregistered contracts, MessageDescriptorNotFoundException for missing descriptors, NoExecutionContextException for missing ambient context, UnsupportedOpenGenericHandlerException for invalid generic handlers, LiteBusExecutionAbortedException for aborted executions, and MessageContractAlreadyRegisteredException for duplicate registrations. These exceptions improve diagnostic clarity for developers configuring message mediation and contract registration.
src/LiteBus.Messaging.Abstractions/Exceptions · high confidence
New exception types for storage providers
Added new exception classes to handle specific error conditions for Entity Framework Core and PostgreSQL storage implementations. Specifically, EfCoreStorageNotSupportedException is introduced to signal unsupported database providers, while PostgreSqlStorageConfigurationException and PostgreSqlStorageTimeoutException are added to handle configuration errors and timeout scenarios respectively.
src/LiteBus.Storage.EntityFrameworkCore/Exceptions, src/LiteBus.Storage.PostgreSql/Exceptions · high confidence
New inbox envelope and acceptance item abstractions
The inbox abstraction layer now introduces a unified \InboxEnvelope\ record to represent a persisted inbox row, carrying fields for message identity, contract metadata, payload, status, and lease information. Alongside this, \InboxAcceptItem\ and its generic \InboxAcceptItem\<TMessage\>\ are introduced to describe message acceptance units for batch writers, supporting both typed and untyped batch operations with metadata for visibility, idempotency, and tracing.
LiteBus.Inbox.Abstractions · high confidence
New inbox store interfaces and types for durable messaging
The \src/LiteBus.Inbox.Abstractions/Store\ directory now contains a comprehensive set of new interfaces and supporting types that define the contract for a durable inbox store. This includes \IInboxStore\ for message acceptance, \IInboxProcessingStore\ for lease and state transitions, \IInboxOperationsStore\ for administrative operations, and specific interfaces for dead-lettering (\IInboxDeadLetterStore\), diagnostics (\IInboxDiagnosticsStore\), leasing (\IInboxLeaseStore\), querying (\IInboxMessageQuery\), purging (\IInboxPurgeStore\), retention (\IInboxRetentionStore\), and state writing (\IInboxStateWriter\). The change also introduces the \InboxStatus\ enum to represent message states (Pending, Processing, Completed, Failed, DeadLettered) and supporting request/response types like \InboxLeaseRequest\, \InboxMessageFilter\, and \InboxMessagePage\ to enable keyset pagination and filtering.
src/LiteBus.Inbox.Abstractions/Store · high confidence
New management and health-check endpoints for LiteBus
The \LiteBus.Extensions.AspNetCore\ package now exposes a full set of HTTP management endpoints for inbox and outbox message stores, including query, requeue, purge, and processor state operations, all configurable via \LiteBusManagementOptions\ (route prefix, authorization, drain timeouts, and page size limits). Additionally, the \LiteBus.Extensions.Diagnostics.HealthChecks\ package introduces a \LiteBusHealthCheck\ that runs registered diagnostic probes and maps their results to ASP.NET Core health check statuses, with options to fail health checks when no probes are registered. These changes add new capabilities rather than modifying existing behavior.
src/LiteBus.Extensions.AspNetCore · high confidence
New message handler and pre-handler interfaces for async, streaming, and pre-processing workflows
The library introduces a set of new interfaces in the \LiteBus.Messaging.Abstractions\ namespace to support more granular message processing. \IAsyncMessageHandler\ and \IMessageHandler\ now support asynchronous handling with optional results, enabling developers to process messages and return typed outcomes. \IStreamMessageHandler\ is added to support streaming multiple results from a single message via \IAsyncEnumerable\. Additionally, \IMessagePreHandler\ and its generic/async variants (\IAsyncMessagePreHandler\) allow pre-processing steps (like validation or transformation) to be executed before the main handler logic. These changes provide a unified, type-safe API for defining message handling pipelines.
src/LiteBus.Messaging.Abstractions/Handler/Main · high confidence
New orchestration hooks for durable message dispatch
Added new abstractions for durable messaging orchestration: IProcessorEnvelope provides an axis-neutral view of leased processor envelopes (exposing MessageId, ContractName, ContractVersion, CorrelationId, CausationId, and TenantId), and IProcessorEnvelopeHook defines a lifecycle for pre- and post-dispatch processing. Host processors invoke BeforeDispatchAsync, PrepareDispatchScope, ShouldDispatch, AbandonDispatchScope, and AfterDispatchAsync around the axis dispatcher, enabling features like duplicate dispatch suppression and ambient state management during durable message processing.
src/LiteBus.DurableMessaging.Abstractions/Orchestration · medium confidence
New outbox abstraction layer with transactional enqueue, processor control, and operational management
The \LiteBus.Outbox.Abstractions\ package now provides a complete set of interfaces and types for durable messaging, including \IOutbox\ for standard enqueue, \ITransactionalOutbox\ for transactional enqueue, and \IOutboxManager\ for querying, replaying, and purging messages. The update introduces processor control via \IOutboxProcessorControl\ to pause, resume, or drain the background processing loop, and adds \OutboxStatus\ and \OutboxEnqueueOutcome\ enums to track message states. Additionally, it includes \IOutboxDispatcher\ for publishing leased messages, \IOutboxEnvelopeFactory\ for creating envelopes, and \IOutboxPayloadProtector\ for encryption, alongside supporting types like \OutboxReceipt\ and \OutboxEnqueueMetadata\.
src/LiteBus.Outbox.Abstractions · high confidence
New outbox envelope and enqueue item abstractions
The outbox abstraction layer now introduces a unified \OutboxEnvelope\ record to represent a persisted message row, carrying fields for status, lease, and idempotency. Enqueue commands are exposed via \OutboxEnqueueItem\ (non-generic) and \OutboxEnqueueItem\<TEvent\>\ (generic), which allow callers to attach durable metadata such as scheduled visibility, idempotency keys, and explicit message identities. These types provide the core data structures for the outbox system.
LiteBus.Outbox.Abstractions · high confidence
New retry and persistence result abstractions for durable messaging
Added RetryOptions to configure retry behavior (max attempts, delays, backoff, jitter) for inbox and outbox processors, and introduced PersistResult to report applied and skipped envelope counts after terminal state writes, enabling processors to detect lease-lost conditions without inferring success from silent zero-row updates.
LiteBus.DurableMessaging.Abstractions · medium confidence
New saga state and completion data transfer objects
The LiteBus.Saga.Abstractions library introduces two new record types, SagaSaveItem and SagaCompleteItem, which serve as data transfer objects for saga persistence operations. SagaSaveItem carries the state snapshot and expected version for saving saga data, while SagaCompleteItem describes a saga completion with optimistic concurrency expectations. Both records support an optional appliedMessageId for tracking durable inbox messages, enabling more precise control over saga state management and completion handling.
LiteBus.Saga.Abstractions · high confidence
New static analysis helpers for LiteBus v6 messaging contracts and handlers
Added new static analysis classes in the LiteBus.Analyzers project to support the v6 messaging architecture. ContractRegistrationAnalysis discovers message types registered via Contracts.Register and assembly scanning. HandlerAnalysis identifies handler registrations and maps them to pipeline stages. MessageAnalysis collects command, query, and stream query message types and checks for handler coverage. ModuleConfigurationAnalysis validates inbox and outbox module builder configurations. TagReferenceAnalysis extracts tag references from mediator extension methods. These components provide the static analysis infrastructure for the new durable messaging and transport platform.
src/LiteBus.Analyzers/Analysis · high confidence
New static analysis rules enforce handler registration, inbox/outbox configuration, and query purity
The LiteBus.Analyzers package introduces a suite of new Roslyn-based static analysis rules that enforce correct usage of the v6 messaging platform. The analyzer now detects duplicate or missing command and query handlers, ensuring each message type has exactly one main handler. It flags query handlers that depend on side-effecting mediators or durable writers, and warns about orphaned handler tags. For durable messaging, it enforces that transactional inbox and outbox storage are paired with a DbContext, and that background processors are enabled alongside a dispatcher. Additionally, it ensures commands with result types are not scheduled to the inbox, and that message types with \[MessageContract\] attributes are explicitly registered. These changes help developers catch configuration errors and architectural violations at compile time.
src/LiteBus.Analyzers · high confidence
New test doubles for message bus operations
Added test utilities to simulate and verify message bus behavior. The \LiteBus.Testing.Hosting\ package provides \LiteBusHostedServiceExtensions\ to start, stop, and assert background services. The \LiteBus.Testing.Mediation\ package introduces \TestCommandMediator\, \TestEventMediator\, and \TestQueryMediator\ to record and inspect commands, events, and queries. The \LiteBus.Testing.Transport\ package adds \TestMessageTransport\ to simulate message publishing and track published requests.
src/LiteBus.Testing.Hosting, src/LiteBus.Testing.Mediation, src/LiteBus.Testing.Transport · high confidence
New test infrastructure for inbox and outbox integration
The \LiteBus.Testing.DurableMessaging\ package now provides a complete testing harness for durable messaging. It introduces \InboxOutboxTestHost\ to spin up an isolated service provider with in-memory inbox and outbox storage, \InboxOutboxStoreServiceCollectionExtensions\ to register all inbox and outbox roles against a shared store, and \ProcessorPassHelpers\ to execute single processing passes. Additionally, \TestInboxStore\ and \TestOutboxStore\ offer in-memory store doubles for unit and integration tests, while \ChaosLeaseExpiryFixture\ enables simulating lease expiry during dispatch.
src/LiteBus.Testing.DurableMessaging · high confidence
Repository initialization and governance documentation
The repository was initialized with a comprehensive set of governance and configuration files. This includes an \.editorconfig\ for C\# and ReSharper code styles, \AGENTS.md\ for AI agent instructions, \AI\_POLICY.md\ for AI use policy, and standard open-source files like \CODE\_OF\_CONDUCT.md\, \CONTRIBUTING.md\, \Changelog.md\, \SECURITY.md\, and \SUPPORT.md\. The project structure is defined by \LiteBus.slnx\, \global.json\ specifying .NET 10 SDK, \dotnet-tools.json\ for report generation, \coverlet.runsettings\ for code coverage, and \stylecop.json\ for documentation rules. The \LICENSE\ file was updated to reflect the Litenova copyright, and \README.md\ was updated with branding, badges, and a quick start guide.
(repo-wide) · high confidence
Simplified event publishing via new extension methods
The \EventMediatorExtensions\ class was added to \src/LiteBus.Events.Abstractions/Extensions\, providing \PublishAsync\ overloads that accept a tag for routing context. This allows users to publish events with optional tags and cancellation tokens, simplifying the API for event mediation.
src/LiteBus.Events.Abstractions/Extensions · high confidence
Behavioural changes
AMQP transport circuit breaker configuration
The AMQP transport now exposes a dedicated AmqpCircuitBreakerOptions record to configure per-exchange publisher circuit breakers. Users can set the failure threshold and break duration, which are then mapped to the shared transport circuit breaker options.
LiteBus.Transport.Amqp · high confidence
Add ambient execution context for cross-handler data sharing
A new \AmbientExecutionContext\ static class has been introduced to provide a thread-local, async-flow-aware storage mechanism for the current execution context. This allows data to be passed between message handlers and other components without explicit parameter passing, using an \AsyncLocal\-backed \Current\ property and a \CreateScope\ method for scoped context management.
src/LiteBus.Messaging.Abstractions/Contexts · medium confidence
Add handler priority and tag attributes for execution control and filtering
New attributes are introduced to the messaging abstraction layer: HandlerPriorityAttribute allows developers to specify an integer priority for event handlers, where lower numbers execute before higher ones and handlers with the same priority execute together; HandlerTagAttribute and HandlerTagsAttribute enable tagging handlers with string-based contexts or scenarios, supporting single or multiple tags for conditional filtering.
src/LiteBus.Messaging.Abstractions/Handler · high confidence
Centralized message handling pipeline with explicit error handling and post-processing
The \MessageContextExtensions\ class is introduced to orchestrate the message handling lifecycle, providing dedicated extension methods to run pre-handlers, error handlers, and post-handlers. This change consolidates the execution of these handler pipelines, ensuring that error handling is explicitly managed and that post-handlers are invoked after message processing, with the original exception being rethrown if no error handlers are present.
src/LiteBus.Messaging.Abstractions/Extensions · high confidence
Enforce XML documentation on all C\# members in src/
A new Cursor rule now requires XML documentation comments on every type, member, and field in the src/ directory, including private and internal members. The rule enforces specific formatting and the use of \<inheritdoc /\> for explicit interface implementations, and mandates running dotnet build to resolve StyleCop documentation warnings before completion.
.cursor · high confidence
Introduce parallel execution and rename order to priority
The \AsyncBroadcastMediationStrategy\ now supports parallel execution of handlers, allowing multiple handlers to run concurrently based on configured concurrency modes. The strategy also groups handlers by priority (renamed from 'order') and executes them in parallel or sequential groups depending on settings, improving performance for broadcast scenarios.
src/LiteBus.Events/MediationStrategies · high confidence
Introduces configurable safety limits for inbox ingress
A new \TransportInboxIngressSafetyOptions\ record has been added to define transport-independent safety bounds for inbox acceptance. This includes configurable limits for maximum message size, concurrent handler execution, and batch processing, along with validation to ensure these values remain within supported ranges. This change allows administrators to tune ingress behavior and enforce stricter security boundaries on incoming messages.
LiteBus.Inbox.Ingress · medium confidence
Introduces new dependency registration and scope management infrastructure
The runtime layer now includes a dedicated dependency management system. A new \DependencyRegistry\ and \DependencyRegistrationTracker\ enforce single-registration rules, preventing conflicting service bindings at configuration time. Additionally, a \LiteBusBuilder\ and \RootMessageDispatchScopeFactory\ are introduced to handle module composition and message dispatch scoping, providing a structured way to register dependencies and manage service lifetimes within the bus.
src/LiteBus.Runtime/Dependencies · high confidence
PostgreSQL storage layer refactored for improved idempotency and notification handling
The PostgreSQL storage implementation was refactored to improve idempotency resolution and work signal management. A new \PostgreSqlBatchIdempotencyLookup\ class enables efficient batch lookups for skipped inserts, while \PostgreSqlIdempotencyResolution\ centralizes SQL generation for idempotency checks. Additionally, \PostgreSqlWorkSignal\ was introduced to manage PostgreSQL \NOTIFY\/\LISTEN\ channels with isolated reconnection logic, and \PostgreSqlParameterExtensions\ provides shared helpers for Npgsql parameter binding.
src/LiteBus.Storage.PostgreSql/Stores · medium confidence
Split message registry into distinct reader and writer interfaces
The message registry has been refactored to separate concerns: a new \IMessageReader\ interface provides read-only access to message and handler descriptors for runtime resolution, while \IMessageWriter\ exposes the write surface for module configuration-time registration. The existing \IMessageRegistry\ now inherits from both, combining the two surfaces into a single singleton service for dependency injection.
src/LiteBus.Messaging.Abstractions/Registry · high confidence
Test coverage
Add unit tests for LiteBus C\# analyzers; Added AMQP transport integration tests for LavinMQ and RabbitMQ; Added Azure Service Bus test infrastructure for integration tests; Added Entity Framework Core integration tests for the inbox storage layer; Added PostgreSQL integration tests for inbox storage and processing; Added contract tests for inbox and outbox storage implementations; Added integration tests for AMQP and AWS SQS inbox ingress; Added integration tests for broker dispatch and ingress registration; Added integration tests for inbox dispatch across multiple transports; Added integration tests for management endpoints, health checks, and OpenTelemetry telemetry; Added test infrastructure and dependencies for LiteBus storage tests; Added unit tests for AMQP inbox ingress handler and module registration; Added unit tests for AMQP transport components; Added unit tests for ASP.NET Core management endpoints and Autofac integration; Added unit tests for AWS SQS transport diagnostics, module registration, message mapping, and backoff logic; Added unit tests for Entity Framework Core inbox and outbox storage modules; Added unit tests for W3C trace context parsing; Added unit tests for command and event module behavior; Added unit tests for durable adapter module registration guards; Added unit tests for durable messaging value objects and composition smoke tests; Added unit tests for error handling in commands, events, and queries; Added unit tests for in-memory transport implementation; Added unit tests for inbox and outbox durability, encryption, and management operations; Added unit tests for inbox dispatch mechanisms; Added unit tests for inbox ingress handling and mapping; Added unit tests for inbox, mediator, and integration fixtures; Added unit tests for messaging and mediation behavior; Added unit tests for outbox dispatching and envelope mapping; Added unit tests for payload protection and JSON serialization; Added unit tests for query mediator validation and module prerequisites; Added unit tests for saga persistence, schema validation, and processor hooks; Added unit tests for the LiteBus mediator and extension methods; Added unit tests for transport connectivity diagnostics and module registration; Added unit tests for transport diagnostics, circuit breakers, and tracing; New test infrastructure for durable transport integration tests; Refactored Kafka integration test infrastructure.
Dependencies
Centralized package versioning and new project structure for LiteBus v6
The repository introduces centralized package version management via new \Directory.Packages.props\ files in the \benchmarks\ and \src\ directories, which define specific versions for dependencies like \Autofac\, \Microsoft.EntityFrameworkCore\, \xunit\, and \OpenTelemetry\. This is accompanied by the addition of numerous new \.csproj\ files that structure the LiteBus v6 codebase into distinct modules, including \LiteBus.Commands\, \LiteBus.Events\, \LiteBus.Inbox\, \LiteBus.Outbox\, and their respective extensions for Autofac and Microsoft DI. Additionally, a new \site\ directory is added with \package.json\ and \package-lock.json\ files to support the Fumadocs documentation site.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 60 → 60 (-0.3)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 88 → 71 (-16.7)
- Architecture 87 → 87 (+0.3)
- Maturity 71 → 80 (+9.4)
- Readiness 62 → 65 (+3.2)
- Security 50 → 48 (-1.9)
- Event-Driven 100 → 100 (+0.0)
- Accessibility 78 → 78 (+0.0)
- Performance 70 → 68 (-1.3)
Resolved (88)
- Bounded contexts not declared
- Deprecated: Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit
- Deprecated: xunit
- Duplicated block (12 lines × 2) (src/LiteBus.Analyzers/Analysis/ModuleConfigurationAnalysis.cs)
- Duplicated block (14 lines × 3) (src/LiteBus.Inbox.Abstractions/InboxReceiptMapper.cs)
- Duplicated block (15 lines × 2) (src/LiteBus.Inbox.Storage.PostgreSql/PostgreSqlInboxStore.cs)
- Duplicated block (15 lines × 4) (src/LiteBus.Commands/CommandModule.cs)
- Duplicated block (15 lines × 5) (src/LiteBus.Inbox.Ingress.Amqp/AmqpInboxIngressModule.cs)
- Duplicated block (16 lines × 2) (src/LiteBus.Analyzers/Analysis/ModuleConfigurationAnalysis.cs)
- Duplicated block (16 lines × 2) (src/LiteBus.Inbox/InboxModule.cs)
- Duplicated block (16 lines × 2) (src/LiteBus.Messaging.Abstractions/Contracts/MessageContractBuilder.cs)
- Duplicated block (16 lines × 2) (src/LiteBus.Outbox.Storage.InMemory/InMemoryOutboxStorageModule.cs)
- Duplicated block (16 lines × 3) (src/LiteBus.Inbox.Storage.EntityFrameworkCore/EfCoreInboxStore.cs)
- Duplicated block (17 lines × 2) (src/LiteBus.Analyzers/TransactionalInboxWithoutDbContextAnalyzer.cs)
- Duplicated block (17 lines × 2) (src/LiteBus.Inbox.Storage.EntityFrameworkCore/EfCoreInboxStore.cs)
- Duplicated block (17 lines × 2) (src/LiteBus.Transport.InMemory/InMemoryConsumer.cs)
- Duplicated block (17 lines × 3) (src/LiteBus.Outbox.Storage.EntityFrameworkCore/EfCoreOutboxStore.cs)
- Duplicated block (18 lines × 2) (src/LiteBus.Inbox/InboxProcessorControl.cs)
- Duplicated block (18 lines × 3) (src/LiteBus.Inbox.Ingress.AwsSqs/AwsSqsInboxIngressModule.cs)
- Duplicated block (20 lines × 2) (src/LiteBus.Inbox/InboxProcessorControl.cs)
- …and 68 more
New (401)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (src/.editorconfig)
- AnalyzerSeverityNone (tests/.editorconfig)
- AnalyzerSeverityNone (tests/.editorconfig)
- …and 381 more
API surface
- Unchanged — 2 HTTP endpoints
Architecture
- Unchanged — 2 containers · 8 contexts · 9 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
litenova/LiteBus was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 4ed3287517b9bf3a93f7af9bc8fd33be335d6bb1 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.