LiteBus
Reference

LiteBus Capability Catalog

This document is the root index for LiteBus capabilities across all feature axes. It consolidates the per-axis catalogs under docs/catalog/ without duplicating their full content. Use it for expansion planning, gap analysis, test coverage review, and discovering which packages and docs apply to a use case.

Total capabilities indexed: 158 across 10 axes (15 analyzers, 16 dispatch, 20 durable core, 16 hosting, 14 ingress, 12 mediator, 18 runtime, 11 saga, 21 storage, 15 transport).


Purpose

LiteBus ships as granular NuGet packages along concern boundaries. The capability catalog names each shipped (or explicitly planned) behavior with a stable ID, maturity tier, package mapping, and link to a deep doc page.

Use this catalog when you need to:

  • Compare what LiteBus covers today versus what your application must build
  • Plan a new adapter, analyzer rule, or axis extension without re-reading every feature guide
  • Trace dependencies between axes (for example ingress requires transport and durable storage)
  • Prioritize roadmap work from documented coverage gaps

Each axis maintains its own folder with standalone capability files and a README index. Test coverage (covered, untested, and out-of-scope use cases) lives in each capability file. This root page synthesizes those folders; detail lives in the linked axis pages.


How to Read

Capability ID Schema

Every capability has an ID of the form axis.slug:

PartMeaningExample
axisFeature areamediator, storage, dispatch
slugKebab-case behavior nameinbox-acceptance, role.lease

Storage role capabilities use dotted slugs (storage.role.append). Broker adapters often suffix -adapter (transport.amqp-adapter). Dispatch inbox/outbox pairs share broker names (dispatch.inbox.amqp, dispatch.outbox.amqp).

Maturity Legend

TierMeaning
GAProduction-ready; stable public contract
BetaShipped; validate in non-critical paths before enterprise reliance
ExtensionOptional package on top of core axes (for example saga)
PlannedDocumented on Roadmap; not shipped
DeprecatedStill present but superseded; see migration guides

When a capability spans tiers (for example AMQP ingress GA, Kafka ingress Beta), the master table notes the split.

Deep Docs

Each capability links to a file under docs/catalog/<axis>/. Axis README pages list the same IDs with local context. Broader narrative guides remain in docs/ (Architecture, Inbox, Outbox, transport guides, and similar).


Capability Map

LiteBus capability axes
|
+-- Platform foundation
|     runtime (module graph, registry, mediator engine, contracts, serialization)
|     analyzers (compile-time LB1001-LB1017 rules)
|
+-- In-process mediation
|     mediator (commands, queries, events, pipeline, registration)
|
+-- Durable messaging
|     durable-core (accept/enqueue, processors, semantics, operations)
|     storage (store roles, PostgreSQL/EF/InMemory adapters)
|     dispatch (in-process and broker dispatchers)
|     ingress (broker intake into inbox)
|     saga (correlated inbox state; Extension tier)
|
+-- Integration and operations
      transport (broker-neutral publish/consume)
      hosting (AddLiteBus, manifest, health, management, OpenTelemetry)
flowchart TB
  subgraph foundation["Platform foundation"]
    RT[runtime]
    AN[analyzers]
  end
  subgraph mediation["In-process mediation"]
    ME[mediator]
  end
  subgraph durable["Durable messaging"]
    DC[durable-core]
    ST[storage]
    DI[dispatch]
    IN[ingress]
    SG[saga Extension]
  end
  subgraph integration["Integration and operations"]
    TR[transport]
    HO[hosting]
  end
  RT --> ME
  RT --> DC
  ME --> DC
  DC --> ST
  DC --> DI
  DC --> IN
  DC --> SG
  DI --> TR
  IN --> TR
  HO --> RT
  AN -.-> ME
  AN -.-> DC
  AN -.-> DI

Master Capability Table

One row per capability. Packages list primary install targets; transitive abstractions omitted unless they are the main surface.

Analyzers (15)

IDNameAxisMaturitySummaryPackagesDeep doc
analyzers.cross-assembly-handler-nameCross-assembly handler name collisionanalyzersGAWarns when handler simple names collide across assembliesLiteBus.Analyzerscross-assembly-handlers.md
analyzers.duplicate-command-handlerDuplicate command handler detectionanalyzersGAErrors when more than one main command handler existsLiteBus.Analyzershandler-duplicates.md
analyzers.duplicate-query-handlerDuplicate query handler detectionanalyzersGAErrors when more than one main query handler existsLiteBus.Analyzershandler-duplicates.md
analyzers.explicit-contract-registrationExplicit contract registration recommendationanalyzersGARecommends module Register for attributed durable typesLiteBus.Analyzerscontract-registration.md
analyzers.inbox-result-command-guardInbox accept rejects result commandsanalyzersGAErrors when result commands are scheduled to inboxLiteBus.Analyzersinbox-accept-rules.md
analyzers.missing-command-handlerMissing command handler detectionanalyzersGAErrors when a command type has no handlerLiteBus.Analyzershandler-coverage.md
analyzers.missing-contract-on-handled-typeMissing contract on handled durable typeanalyzersGAWarns when handled types lack contract registrationLiteBus.Analyzerscontract-registration.md
analyzers.missing-query-handlerMissing query handler detectionanalyzersGAErrors when a query type has no handlerLiteBus.Analyzershandler-coverage.md
analyzers.open-generic-handler-shapeOpen generic handler arity checkanalyzersGAErrors on unsupported open generic handler shapesLiteBus.Analyzersopen-generic-handlers.md
analyzers.orphan-handler-tagOrphan handler tag detectionanalyzersGAWarns when handler tags are never referencedLiteBus.Analyzershandler-tags.md
analyzers.processor-dispatcher-couplingProcessor requires dispatcher registrationanalyzersGAErrors when processor is enabled without dispatchLiteBus.Analyzersprocessor-dispatcher-coupling.md
analyzers.query-handler-purityQuery handler side-effect guardanalyzersGAWarns when query handlers take event mediator dependenciesLiteBus.Analyzersquery-handler-purity.md
analyzers.transactional-ef-interceptorTransactional EF requires save interceptoranalyzersGAWarns when EF transactional storage lacks interceptorLiteBus.Analyzerstransactional-ef-interceptor.md
analyzers.transactional-inbox-dbcontextTransactional inbox requires DbContextanalyzersGAWarns when transactional inbox store lacks DbContextLiteBus.Analyzerstransactional-inbox-wiring.md
analyzers.transactional-outbox-dbcontextTransactional outbox requires DbContextanalyzersGAWarns when transactional outbox store lacks DbContextLiteBus.Analyzerstransactional-outbox-wiring.md

Dispatch (16)

IDNameAxisMaturitySummaryPackagesDeep doc
dispatch.inbox.amqpInbox AMQP dispatchdispatchGAPublish leased inbox envelopes to RabbitMQLiteBus.Inbox.Dispatch.Amqpinbox-amqp.md
dispatch.inbox.aws-sqsInbox AWS SQS dispatchdispatchGAPublish leased inbox envelopes to SQSLiteBus.Inbox.Dispatch.AwsSqsinbox-aws-sqs.md
dispatch.inbox.azure-service-busInbox Azure Service Bus dispatchdispatchGAPublish leased inbox envelopes to Azure Service BusLiteBus.Inbox.Dispatch.AzureServiceBusinbox-azure-service-bus.md
dispatch.inbox.in-processInbox in-process command dispatchdispatchGARun leased inbox commands through local command mediatorLiteBus.Inbox.Dispatch.InProcessinbox-in-process.md
dispatch.inbox.inmemoryInbox InMemory transport dispatchdispatchGAPublish leased inbox envelopes to in-memory transportLiteBus.Inbox.Dispatch.InMemoryinbox-inmemory.md
dispatch.inbox.kafkaInbox Kafka dispatchdispatchGAPublish leased inbox envelopes to KafkaLiteBus.Inbox.Dispatch.Kafkainbox-kafka.md
dispatch.outbox.amqpOutbox AMQP dispatchdispatchGAPublish leased outbox events to RabbitMQLiteBus.Outbox.Dispatch.Amqpoutbox-amqp.md
dispatch.outbox.aws-sqsOutbox AWS SQS dispatchdispatchGAPublish leased outbox events to SQSLiteBus.Outbox.Dispatch.AwsSqsoutbox-aws-sqs.md
dispatch.outbox.azure-service-busOutbox Azure Service Bus dispatchdispatchGAPublish leased outbox events to Azure Service BusLiteBus.Outbox.Dispatch.AzureServiceBusoutbox-azure-service-bus.md
dispatch.outbox.in-processOutbox in-process event dispatchdispatchGAReplay leased outbox events to local event mediatorLiteBus.Outbox.Dispatch.InProcessoutbox-in-process.md
dispatch.outbox.inmemoryOutbox InMemory transport dispatchdispatchGAPublish leased outbox events to in-memory transportLiteBus.Outbox.Dispatch.InMemoryoutbox-inmemory.md
dispatch.outbox.kafkaOutbox Kafka dispatchdispatchGAPublish leased outbox events to KafkaLiteBus.Outbox.Dispatch.Kafkaoutbox-kafka.md
dispatch.processor-couplingProcessor pipeline couplingdispatchGAProcessor success/failure driven by dispatcher exceptionsLiteBus.Inbox, LiteBus.Outboxprocessor-coupling.md
dispatch.registrationDispatcher registrationdispatchGAExactly one dispatcher per inbox or outbox moduleLiteBus.Inbox.Dispatch, LiteBus.Outbox.Dispatchregistration.md
dispatch.transport-coreShared transport dispatchersdispatchGABroker-neutral inbox/outbox transport dispatch implementationsLiteBus.Inbox.Dispatch, LiteBus.Outbox.Dispatchtransport-core.md
dispatch.transport-envelope-mappingEnvelope-to-wire header mappingdispatchGACopy durable metadata to canonical transport headers on publishLiteBus.Inbox.Dispatch, LiteBus.Outbox.Dispatchtransport-envelope-mapping.md

Durable Core (20)

IDNameAxisMaturitySummaryPackagesDeep doc
durable-core.command-inbox-patternsCommand-inbox patternsdurable-coreGAExplicit accept-at-edge patterns replacing v5 command inboxLiteBus.Inboxcommand-inbox-patterns.md
durable-core.domain-events-unit-of-workDomain events and unit of workdurable-coreGACollect domain events and enqueue outbox in one UoWLiteBus.Outboxdomain-events-unit-of-work.md
durable-core.durable-dispatchDurable dispatchdurable-coreGAProcessor-driven side effects through registered dispatchersLiteBus.Inbox, LiteBus.Outboxdurable-dispatch.md
durable-core.durable-storageDurable storagedurable-coreGAPersisted inbox and outbox envelope modelLiteBus.Inbox, LiteBus.Outboxdurable-storage.md
durable-core.envelope-lifecycleEnvelope lifecycledurable-coreGAPending, processing, completed, failed, dead-letter statesLiteBus.Inbox.Abstractions, LiteBus.Outbox.Abstractionsenvelope-lifecycle.md
durable-core.idempotencyAcceptance idempotencydurable-coreGADedup at accept/enqueue using idempotency keysLiteBus.Inbox, LiteBus.Outboxidempotency.md
durable-core.inbox-acceptanceInbox acceptancedurable-coreGAAccept commands into durable storage without handler resultsLiteBus.Inboxinbox-acceptance.md
durable-core.inbox-ingressInbox ingressdurable-coreGA / BetaBroker intake into inbox (AMQP GA; Kafka, SQS, Azure Beta)LiteBus.Inbox.Ingress.*inbox-ingress.md
durable-core.inbox-processorInbox processordurable-coreGABackground lease, dispatch, and terminal persistence for inboxLiteBus.Inboxinbox-processor.md
durable-core.lease-retry-dead-letterLease, retry, and dead letterdurable-coreGAVisibility delays, lease reclaim, operator requeueLiteBus.Inbox, LiteBus.Outboxlease-retry-dead-letter.md
durable-core.message-contractsDurable message contractsdurable-coreGAStable contract name and version on persisted payloadsLiteBus.Messaging.Abstractionsmessage-contracts.md
durable-core.operations-managementOperations and managementdurable-coreGAQuery, purge, requeue, processor control APIsLiteBus.Inbox, LiteBus.Outboxoperations-management.md
durable-core.outbox-enqueueOutbox enqueuedurable-coreGAEnqueue integration events for later publicationLiteBus.Outboxoutbox-enqueue.md
durable-core.outbox-processorOutbox processordurable-coreGABackground lease, dispatch, and terminal persistence for outboxLiteBus.Outboxoutbox-processor.md
durable-core.payload-encryptionPayload encryption at restdurable-coreGAOptional encryptor for stored message bodiesLiteBus.Inbox, LiteBus.Outboxpayload-encryption.md
durable-core.processor-hooksProcessor envelope hooksdurable-coreGA / ExtensionBefore/after dispatch hooks (saga uses Extension path)LiteBus.DurableMessaging.Abstractions, LiteBus.Sagaprocessor-hooks.md
durable-core.reliable-messaging-semanticsReliable messaging semanticsdurable-coreGAAt-least-once delivery guarantees and crash windowsLiteBus.Inbox, LiteBus.Outboxreliable-messaging-semantics.md
durable-core.scheduling-metadataScheduling and visibility metadatadurable-coreGADelayed visibility and scheduled execution on accept/enqueueLiteBus.Inbox.Abstractions, LiteBus.Outbox.Abstractionsscheduling-metadata.md
durable-core.tenant-scopingTenant scopingdurable-coreGATenant metadata on envelopes and processor isolationLiteBus.Inbox, LiteBus.Outboxtenant-scoping.md
durable-core.transactional-writesTransactional inbox/outbox writesdurable-coreGAAtomic domain and messaging rows in one transactionLiteBus.Inbox, LiteBus.Outboxtransactional-writes.md

Hosting (16)

IDNameAxisMaturitySummaryPackagesDeep doc
hosting.add-lite-bus-autofacAddLiteBus (Autofac)hostingGACompose LiteBus modules through Autofac container builderLiteBus.Runtime.Extensions.Autofacadd-lite-bus-autofac.md
hosting.add-lite-bus-microsoft-diAddLiteBus (Microsoft DI)hostingGACompose LiteBus modules through IServiceCollectionLiteBus.Runtime.Extensions.Microsoft.DependencyInjectionadd-lite-bus-microsoft-di.md
hosting.aspnet-health-checksASP.NET Core health checkshostingGAMap manifest diagnostic probes to health checksLiteBus.Extensions.Diagnostics.HealthChecksaspnet-health-checks.md
hosting.aspnet-management-endpointsASP.NET Core management endpointshostingGAOperator HTTP APIs for messages and processor controlLiteBus.Extensions.AspNetCoreaspnet-management-endpoints.md
hosting.autofac-hosting-bridgeAutofac hosting bridgehostingGARegister orchestrator and probes for Autofac hostsLiteBus.Runtime.Extensions.Autofac.Hostingautofac-hosting-bridge.md
hosting.background-servicesLong-running background serviceshostingGAManifest registration for processor and ingress loopsLiteBus.Runtime.Abstractionsbackground-services.md
hosting.diagnostic-probesFramework-neutral diagnostic probeshostingGAIDiagnosticCheck contract for readiness probesLiteBus.Runtime.Abstractionsdiagnostic-probes.md
hosting.generic-host-orchestratorGeneric host orchestratorhostingGASingle orchestrator runs startup tasks then background loopsLiteBus.Runtime.Extensions.Hostinggeneric-host-orchestrator.md
hosting.host-manifestHost manifest snapshothostingGAFrozen manifest of tasks, services, and probes after composeLiteBus.Runtime.Abstractionshost-manifest.md
hosting.manual-host-executionManual startup and loop executionhostingGARun startup tasks or background services without full hostLiteBus.Runtime.Extensions.Hostingmanual-host-execution.md
hosting.microsoft-hosting-bridgeMicrosoft DI hosting bridgehostingGARegister orchestrator and probes for generic hostLiteBus.Runtime.Extensions.Microsoft.Hostingmicrosoft-hosting-bridge.md
hosting.module-registryModule registry and build orderhostingGATopological module build and duplicate detectionLiteBus.Runtimemodule-registry.md
hosting.opentelemetry-inboxInbox OpenTelemetry registrationhostingGARegister inbox meters and trace sources for OTLP exportLiteBus.Inbox.Extensions.OpenTelemetryopentelemetry-inbox.md
hosting.opentelemetry-outboxOutbox OpenTelemetry registrationhostingGARegister outbox meters and trace sources for OTLP exportLiteBus.Outbox.Extensions.OpenTelemetryopentelemetry-outbox.md
hosting.opentelemetry-transportTransport OpenTelemetry registrationhostingGARegister transport meters and trace sourcesLiteBus.Transport.Extensions.OpenTelemetryopentelemetry-transport.md
hosting.startup-tasksOne-shot startup taskshostingGASequential tasks before background services startLiteBus.Runtime.Abstractionsstartup-tasks.md

Ingress (14)

IDNameAxisMaturitySummaryPackagesDeep doc
ingress.ack-policyRequeue and discard policyingressGAMap store failures to broker requeue or discardLiteBus.Inbox.Ingressack-policy.md
ingress.amqpAMQP inbox ingressingressGAConsume RabbitMQ deliveries into inbox acceptLiteBus.Inbox.Ingress.Amqpamqp.md
ingress.aws-sqsAWS SQS inbox ingressingressBetaConsume SQS messages into inbox acceptLiteBus.Inbox.Ingress.AwsSqsaws-sqs.md
ingress.azure-service-busAzure Service Bus inbox ingressingressBetaConsume Service Bus messages into inbox acceptLiteBus.Inbox.Ingress.AzureServiceBusazure-service-bus.md
ingress.batch-acceptBatch inbox accept bufferingingressGABuffer deliveries and flush through AcceptBatchAsyncLiteBus.Inbox.Ingressbatch-accept.md
ingress.header-mappingWire header to accept metadataingressGAMap broker headers to idempotency, tenant, traceLiteBus.Inbox.Ingressheader-mapping.md
ingress.host-loopHost loop and consumer enablementingressGAEnable or disable background consume loopLiteBus.Inbox.Ingresshost-loop.md
ingress.inmemoryIn-memory inbox ingressingressGATest ingress without external brokerLiteBus.Inbox.Ingress.InMemoryinmemory.md
ingress.kafkaKafka inbox ingressingressBetaConsume Kafka records into inbox acceptLiteBus.Inbox.Ingress.Kafkakafka.md
ingress.registrationInbox ingress registrationingressGARegister ingress as inbox composite child moduleLiteBus.Inbox.Ingressregistration.md
ingress.safety-optionsIngress safety and authorization optionsingressGATrusted headers and pre-accept authorization hookLiteBus.Inbox.Ingresssafety-options.md
ingress.telemetryIngress OpenTelemetry metricsingressGAIngress-specific meters including ack-after-accept failuresLiteBus.Inbox.Ingresstelemetry.md
ingress.transport-consumerIngress background consumer loopingressGALong-running broker subscription into accept handlerLiteBus.Inbox.Ingresstransport-consumer.md
ingress.transport-handlerTransport-to-inbox accept handleringressGADeserialize delivery and call IInbox.AcceptAsyncLiteBus.Inbox.Ingresstransport-handler.md

Mediator (12)

IDNameAxisMaturitySummaryPackagesDeep doc
mediator.commandsCommandsmediatorGAState-changing messages with exactly one main handlerLiteBus.Commandscommands.md
mediator.eventsEventsmediatorGAPublish facts to zero or many handlersLiteBus.Eventsevents.md
mediator.execution-contextExecution contextmediatorGAShare state, abort, and override results within one callLiteBus.Messaging.Abstractionsexecution-context.md
mediator.generic-messagesGeneric messagesmediatorGAParameterized messages and handlers by entity typeLiteBus.Commands, LiteBus.Queriesgeneric-messages-and-handlers.md
mediator.handler-filteringHandler filteringmediatorGASelect handlers per call with tags and predicatesLiteBus.Messaginghandler-filtering.md
mediator.handler-pipelineHandler pipelinemediatorGAPre, main, post, and error stages shared by all kindsLiteBus.Messaginghandler-pipeline.md
mediator.handler-priorityHandler prioritymediatorGAOrder handlers within a pipeline stageLiteBus.Messaginghandler-priority.md
mediator.mediation-settingsMediation settingsmediatorGAPer-invocation routing, execution, and context itemsLiteBus.Commands.Abstractions, LiteBus.Queries.Abstractions, LiteBus.Events.Abstractionsmediation-settings.md
mediator.module-registrationModule registrationmediatorGARegister messages and handlers through module buildersLiteBus.Messaging, semantic modulesmodule-registration.md
mediator.open-generic-handlersOpen generic handlersmediatorGAOne handler class closed for every matching messageLiteBus.Messagingopen-generic-handlers.md
mediator.polymorphic-dispatchPolymorphic dispatchmediatorGATarget base types or interfaces for pipeline handlersLiteBus.Messagingpolymorphic-dispatch.md
mediator.queriesQueriesmediatorGARead state with one handler; stream large setsLiteBus.Queriesqueries.md

Runtime (18)

IDNameAxisMaturitySummaryPackagesDeep doc
runtime.composite-modulesComposite parent/child modulesruntimeGAExpand child modules during parent Register()LiteBus.Runtimecomposite-modules.md
runtime.contract-registryMessage contract registryruntimeGAStable contract name and version for persisted payloadsLiteBus.Messagingcontract-registry.md
runtime.dependency-registryContainer-neutral dependency registryruntimeGARegister services without host framework referencesLiteBus.Runtimedependency-registry.md
runtime.dispatch-scopesPer-mediation DI scopesruntimeGAIsolated scoped services per mediation callLiteBus.Messagingdispatch-scopes.md
runtime.handler-descriptorsHandler descriptor modelruntimeGAMetadata for handler type, stage, priority, and tagsLiteBus.Messaginghandler-descriptors.md
runtime.litebus-builderComposition builder surfaceruntimeGAPackage-neutral ILiteBusBuilder.Modules plus package-owned feature extensionsLiteBus.Runtime.Abstractions, LiteBus.Runtimelitebus-builder.md
runtime.mediation-strategiesPluggable mediation strategiesruntimeGASingle-handler vs broadcast execution strategiesLiteBus.Messagingmediation-strategies.md
runtime.message-mediatorCore message mediatorruntimeGAEngine behind semantic command/query/event mediatorsLiteBus.Messagingmessage-mediator.md
runtime.message-moduleFoundational messaging moduleruntimeGACreates shared message registry at compose timeLiteBus.Messagingmessage-module.md
runtime.message-registryMessage and handler type registryruntimeGARegister and resolve message and handler typesLiteBus.Messagingmessage-registry.md
runtime.message-resolutionMessage resolve strategiesruntimeGAPolymorphic and assignable-type handler lookupLiteBus.Messagingmessage-resolution.md
runtime.message-serializationMessage serializationruntimeGAJSON serialization for envelopes and wire payloadsLiteBus.Messagingmessage-serialization.md
runtime.module-configurationModule configuration and shared contextruntimeGAPer-build context bag and manifest registration hooksLiteBus.Runtimemodule-configuration.md
runtime.module-dependenciesModule dependency orderingruntimeGAIRequires<T> topological orderingLiteBus.Runtimemodule-dependencies.md
runtime.module-registryModule registry and build orderruntimeGARegister modules and compute build orderLiteBus.Runtimemodule-registry.md
runtime.modulesModule contractruntimeGAIModule lifecycle for compose-time registrationLiteBus.Runtime.Abstractionsmodules.md
runtime.payload-protectionPayload encryption at restruntimeGAIPayloadEncryptor hook for stored message bodiesLiteBus.Messagingpayload-protection.md
runtime.trace-metadataTrace metadata and propagationruntimeGAW3C trace context and correlation on envelopesLiteBus.Messaging.Abstractionstrace-metadata.md

Saga (11)

IDNameAxisMaturitySummaryPackagesDeep doc
saga.correlation-and-tenancyCorrelation and tenancysagaExtensionScope saga state by correlation id and tenantLiteBus.Saga.Abstractionscorrelation-and-tenancy.md
saga.handler-contextHandler saga contextsagaExtensionISagaContext for load, mutate, and complete stateLiteBus.Sagahandler-context.md
saga.in-memory-storeIn-memory saga storesagaExtensionProcess-lifetime saga persistence for dev and testsLiteBus.Sagain-memory-store.md
saga.inbox-command-scopeInbox command scope re-attachsagaExtensionRe-attach saga scope in nested DI during inbox dispatchLiteBus.Saga.InboxIntegrationinbox-command-scope.md
saga.inbox-integrationInbox saga integrationsagaExtensionEnableSaga() on inbox module builderLiteBus.Saga.InboxIntegrationinbox-integration.md
saga.optimistic-concurrencyOptimistic concurrencysagaExtensionVersion checks on concurrent saga savesLiteBus.Sagaoptimistic-concurrency.md
saga.postgresql-storagePostgreSQL saga storagesagaExtensionDurable ISagaStore on PostgreSQLLiteBus.Saga.Storage.PostgreSqlpostgresql-storage.md
saga.processor-envelope-hooksProcessor envelope hookssagaGAHook contract for before/after dispatch (platform)LiteBus.DurableMessaging.Abstractionsprocessor-envelope-hooks.md
saga.processor-hookSaga processor hooksagaExtensionLoad/save saga state around inbox dispatchLiteBus.Sagaprocessor-hook.md
saga.state-registrationSaga state type registrationsagaExtensionMap command contracts to saga state typesLiteBus.Saga.InboxIntegrationstate-registration.md
saga.storeSaga store contractsagaExtensionISagaStore persistence abstractionLiteBus.Saga.Abstractionsstore.md

Storage (21)

IDNameAxisMaturitySummaryPackagesDeep doc
storage.composite.operations-storeOperations composite storestorageGADead-letter, retention, diagnostics, query, purge rolesLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.composite.operations-store.md
storage.composite.processing-storeProcessing composite storestorageGALease and state-writer roles for processorsLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.composite.processing-store.md
storage.efcore.schema-ownershipEF Core schema ownershipstorageGAApp-owned migrations; LiteBus mapping helpers onlyLiteBus.Storage.EntityFrameworkCorestorage.efcore.schema-ownership.md
storage.efcore.shared-infraEF Core shared infrastructurestorageGAProvider-specific lease SQL and bulk updatesLiteBus.Storage.EntityFrameworkCorestorage.efcore.shared-infra.md
storage.inbox.adapter.efcoreInbox EF Core adapterstorageGADbContext-backed inbox store with all rolesLiteBus.Inbox.Storage.EntityFrameworkCorestorage.inbox.adapter.efcore.md
storage.inbox.adapter.inmemoryInbox InMemory adapterstorageGAThread-safe in-process inbox store for testsLiteBus.Inbox.Storage.InMemorystorage.inbox.adapter.inmemory.md
storage.inbox.adapter.postgresqlInbox PostgreSQL adapterstorageGANpgsql inbox store with all roles on one singletonLiteBus.Inbox.Storage.PostgreSqlstorage.inbox.adapter.postgresql.md
storage.outbox.adapter.efcoreOutbox EF Core adapterstorageGADbContext-backed outbox store with all rolesLiteBus.Outbox.Storage.EntityFrameworkCorestorage.outbox.adapter.efcore.md
storage.outbox.adapter.inmemoryOutbox InMemory adapterstorageGAThread-safe in-process outbox store for testsLiteBus.Outbox.Storage.InMemorystorage.outbox.adapter.inmemory.md
storage.outbox.adapter.postgresqlOutbox PostgreSQL adapterstorageGANpgsql outbox store with all roles on one singletonLiteBus.Outbox.Storage.PostgreSqlstorage.outbox.adapter.postgresql.md
storage.postgresql.schema-managementPostgreSQL schema managementstorageGADDL templates, ensure/validate, drift detectionLiteBus.Storage.PostgreSqlstorage.postgresql.schema-management.md
storage.postgresql.shared-infraPostgreSQL shared infrastructurestorageGAQuoting, advisory locks, idempotency helpersLiteBus.Storage.PostgreSqlstorage.postgresql.shared-infra.md
storage.postgresql.work-signalPostgreSQL work signalstorageGANOTIFY-driven processor wake with poll fallbackLiteBus.Storage.PostgreSqlstorage.postgresql.work-signal.md
storage.role.appendAppend store rolestorageGAAccept inbox commands and enqueue outbox eventsLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.role.append.md
storage.role.dead-letterDead-letter store rolestorageGAManual replay of dead-lettered rowsLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.role.dead-letter.md
storage.role.diagnosticsDiagnostics store rolestorageGAStatus counts and schema version for operatorsLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.role.diagnostics.md
storage.role.leaseLease store rolestorageGAAtomic claim of due rows for processor passesLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.role.lease.md
storage.role.query-purgeQuery and purge store rolesstorageGAFiltered message queries and destructive purgeLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.role.query-purge.md
storage.role.retentionRetention store rolestorageGADelete aged terminal rows by completion timeLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.role.retention.md
storage.role.state-writerState writer store rolestorageGAPersist completed, retry, and dead-letter outcomesLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.role.state-writer.md
storage.transactional.writesTransactional store bindingsstorageGADomain and messaging rows in one database transactionLiteBus.Inbox.Storage.*, LiteBus.Outbox.Storage.*storage.transactional.writes.md

Transport (15)

IDNameAxisMaturitySummaryPackagesDeep doc
transport.amqp-adapterAMQP (RabbitMQ) adaptertransportGARabbitMQ publish and consume with manual ackLiteBus.Transport.Amqpamqp.md
transport.aws-sqs-adapterAWS SQS adaptertransportBetaSQS publish and long-poll consumeLiteBus.Transport.AwsSqsaws-sqs.md
transport.azure-service-bus-adapterAzure Service Bus adaptertransportBetaService Bus publish and peek-lock consumeLiteBus.Transport.AzureServiceBusazure-service-bus.md
transport.canonical-headersCanonical wire headerstransportGAStable header names for contract, idempotency, traceLiteBus.Transport.Abstractionscanonical-headers.md
transport.circuit-breakerTransport circuit breakertransportGAFail-fast publish when broker is unhealthyLiteBus.Transportcircuit-breaker.md
transport.consumer-handler-invokerConsumer handler invokertransportGADeserialize and invoke handlers without inbox ingressLiteBus.Transportconsumer-handler-invoker.md
transport.envelope-header-mappingEnvelope-to-header mappingtransportGAMap durable metadata to wire headers on publishLiteBus.Transportenvelope-header-mapping.md
transport.inmemory-adapterIn-memory adaptertransportGAChannel-based in-process broker for testsLiteBus.Transport.InMemoryinmemory.md
transport.kafka-adapterKafka adaptertransportGAKafka produce and consume via Confluent clientLiteBus.Transport.Kafkakafka.md
transport.manual-acknowledgementManual acknowledgement modeltransportGAExplicit accept, requeue, and discard on consumeLiteBus.Transport.Abstractionsmanual-acknowledgement.md
transport.metricsCircuit breaker metricstransportGAOpenTelemetry gauges for breaker stateLiteBus.Transportmetrics.md
transport.publish-consume-contractsPublish and consume contractstransportGAITransportPublisher and IMessageConsumer surfaceLiteBus.Transport.Abstractionspublish-consume-contracts.md
transport.single-broker-registrationSingle broker per processtransportGAOne transport module allowed per hostLiteBus.Transportsingle-broker-registration.md
transport.tenant-routingTenant routing strategytransportGARoute publish/consume by tenant metadataLiteBus.Transporttenant-routing.md
transport.tracingPublish and consume tracingtransportGADistributed trace propagation on wireLiteBus.Transporttracing.md

Axis Index

Analyzers (15 capabilities)

Compile-time Roslyn rules (LB1001 through LB1017) that guard handler registration, durable contracts, inbox accept semantics, EF transactional wiring, and processor/dispatcher coupling. No runtime dependency on LiteBus libraries.

Key requires: application projects reference LiteBus.Analyzers; protected axes (mediator, durable core, dispatch, storage) must be composed for rules to apply meaningfully.

Dispatch (16 capabilities)

Turns leased durable envelopes into side effects through in-process mediators or broker transports. Exactly one dispatcher per inbox or outbox module.

Key requires: durable-core.inbox-processor or durable-core.outbox-processor, matching storage adapter, and for broker paths transport.* plus ingress on consuming services.

Durable Core (20 capabilities)

Accept/enqueue, processors, lease/retry/dead-letter, idempotency, transactional writes, operations, and semantic guarantees for reliable messaging.

Key requires: runtime.contract-registry, runtime.message-serialization, storage adapter (via storage.*), dispatch adapter (via dispatch.*), optional ingress.* for broker intake.

Hosting (16 capabilities)

AddLiteBus, module registry, manifest model, generic host orchestration, ASP.NET health and management, OpenTelemetry registration bridges.

Key requires: runtime.modules, runtime.litebus-builder; consumes manifest entries registered by durable, ingress, and storage modules.

Ingress (14 capabilities)

Broker intake into inbox accept. Commands only; pairs with transport consume and inbox storage.

Key requires: LiteBus.Inbox.Ingress, matching LiteBus.Transport.*, inbox storage, durable-core.inbox-acceptance.

Mediator (12 capabilities)

In-process commands, queries, and events with shared pipeline, priority, filtering, and registration.

Key requires: runtime.message-module, runtime.message-mediator; semantic packages (LiteBus.Commands, LiteBus.Queries, LiteBus.Events).

Runtime (18 capabilities)

Module graph, message registry, contract registry, core mediator engine, serialization, and trace metadata. Foundation for all other axes.

Key requires: none beyond platform contracts; hosting bridges consume its output.

Saga (11 capabilities)

Extension-tier correlated state around inbox command dispatch. Not a full workflow engine.

Key requires: durable-core.inbox-processor, durable-core.processor-hooks, inbox in-process or remote dispatch with shared store for multi-step workflows.

Storage (21 capabilities)

Store roles, PostgreSQL/EF/InMemory adapters, schema management, transactional bindings, work signals.

Key requires: durable-core.durable-storage; registered inside AddInbox / AddOutbox builders.

Transport (15 capabilities)

Broker-neutral publish and consume platform. One broker adapter per process.

Key requires: runtime.message-serialization, runtime.contract-registry for wire contract headers; consumed by dispatch.* and ingress.*.


Capability Page Template

Each standalone file under docs/catalog/<axis>/ follows this layout. Axis folders contain only capability pages and README.md (no axis-level test or scenario files).

SectionPurpose
HeaderID, name, maturity, summary
What it doesBehavior and boundaries in prose
Public surfaceHow consumers use the capability (replaces a single vague Entry APIs table)
PackagesInstallable NuGet IDs
RequiresOther capability IDs
InvariantsMust-always-hold rules
Non-goalsTechnical limits of the implementation
ObservabilityTelemetry, logs, health signals (see below)
Deep docsLinks to narrative guides
Test coverageProof and gaps (see below)

Public Surface Subsections

Use only subsections that apply:

SubsectionDocuments
Consumer contractsInterfaces and types the application implements or registers
InvocationRuntime entry points (SendAsync, AcceptAsync, store methods): parameters, returns, typical call site
RegistrationModule builders, Use* extensions, DI wiring at compose time
ConfigurationOptions and settings: compose-time vs per-call
Extension pointsHooks, pipeline stages, open generics, strategies

Observability

When instruments exist, document each with: name (public constant when shipped), kind (counter, gauge, histogram, Activity, log EventId), when emitted, tags, how to enable (package or AddOpenTelemetry extension), and operational note (what to alert on). When none exist, state that explicitly and name practical alternatives (application logging, cross-axis meters, analyzers).

Test Coverage Model

Each capability file ends with Test coverage:

SubsectionPurpose
Covered use casesOne #### \ClassName.MethodName`` block per test method
Untested use casesSupported behavior without automated proof (table with priority)
Out-of-scope use casesDeliberate product limits; not confused with missing tests

Covered use case block (one per test method):

#### `ClassName.MethodName`

- **Use case**: plain-English situation (DDD term)
- **Test kind**: Unit | Integration | Component | Analyzer | Manual/CI-only
- **Description**: fixture and setup
- **Behavior**: action under test
- **Expected outcome**: assertion target
- **Remarks**: project path, inherited contract suite, CI fixture notes

Test Kind Vocabulary

KindTypical LiteBus usage
UnitInMemory stores, single-class mediator or registry tests
IntegrationPostgreSQL fixtures, broker emulators, end-to-end processor paths
ComponentMulti-module hosts (*ComponentHost, composition smoke tests)
AnalyzerRoslyn driver tests in LiteBus.Analyzers.Tests
Manual/CI-onlyDocumented runs outside default CI (live cloud soak)

Axis Test Coverage Pointers

AxisREADMENotable test projects
Mediatorcatalog/mediator/README.mdCommandModule, QueryModule, EventModule, MessageModule unit tests
Durable corecatalog/durable-core/README.mdLiteBus.Inbox*, LiteBus.Outbox* unit and integration tests
Storagecatalog/storage/README.mdLiteBus.Storage.*, *.Storage.* unit and PostgreSQL integration tests
Dispatchcatalog/dispatch/README.mdLiteBus.Durable.IntegrationTests, LiteBus.Runtime.UnitTests
Ingresscatalog/ingress/README.mdLiteBus.Durable.IntegrationTests (Ingress/)
Transportcatalog/transport/README.mdLiteBus.Transport.*, LiteBus.Transport.Testing, LiteBus.Transport.IntegrationTesting
Hostingcatalog/hosting/README.mdRuntime, Extensions, OpenTelemetry integration tests
Sagacatalog/saga/README.mdLiteBus.Saga.UnitTests, LiteBus.Saga.Storage.PostgreSql.UnitTests, LiteBus.Storage.IntegrationTests, LiteBus.Runtime.UnitTests
Runtimecatalog/runtime/README.mdLiteBus.Runtime*, Messaging unit tests
Analyzerscatalog/analyzers/README.mdLiteBus.Analyzers.UnitTests (LB1001-LB1017)

Cross-Axis Gaps

Synthesis from per-capability Untested use cases and Out-of-scope use cases sections. "Expansion candidate" indicates whether a first-class LiteBus capability is a natural fit (Yes), partial or roadmap (Partial), or intentional non-goal (No).

PriorityGapAffected axesWorkaround todayExpansion candidate?
1HTTP/webhook ingress and outbox dispatchingress, durable-core, dispatch, transportController calls IInbox.AcceptAsync; custom IOutboxDispatcher for HTTP callbacksYes (Roadmap)
2Exactly-once end-to-end deliverydurable-core, dispatch, transport, ingress, mediatorAt-least-once with accept dedup; handler-side idempotency tablesPartial (handler dedup store on roadmap)
3Dedicated SQL Server / non-relational durable storagestorage, durable-coreEF Core adapter with SQL Server provider; custom store implementationYes (SQL Server adapter on roadmap)
4Beta broker production maturity (Kafka, SQS, Azure)transport, ingress, dispatch, durable-coreEmulator/LocalStack CI; soak testing before critical loadsPartial (tier promotion)
5No in-process mediation OpenTelemetrymediator, hostingApplication logging; durable and transport metrics onlyYes
6Inbox in-process event replaydispatch, durable-core, mediatorRoute through command handlers or outbox event pathYes (roadmap extension)
7Transactional inbox + saga single commitsaga, durable-core, storageSeparate connections; design idempotent handlersYes (future store seam)
8Multi-broker fan-out in one hosttransport, dispatchMultiple hosts or custom dispatcherNo (granular opt-in by design)
9Distributed / network mediatormediator, transportAPI edge invokes local mediator; durable axes for cross-serviceNo (by design)
10Compile-time guards for storage/ingress pairinganalyzers, dispatch, ingressManual review; runtime compose exceptionsYes (LB-style rules)
11Contract version migration and schema registrydurable-core, runtime, analyzersDual registration; drain old versionPartial (CLI on roadmap)
12Built-in Grafana/dashboard bundleshosting, transport, ingressDocumented metric names; app-owned dashboardsPartial (docs/recipes)
13Saga outbox integration and remote scope propagationsaga, dispatchInbox-only hooks; consumer host enables saga with shared storePartial
14Deep storage dedup (RelationalMessageStore)storageDuplicated inbox/outbox SQL todayYes (Roadmap-Deep-Storage-Dedup)
15Flat convenience registration (UsePostgreSqlInbox)hosting, durable-core, dispatchNested AddInbox buildersPartial (deferred ergonomics)

Expansion Guide

To add a new LiteBus capability:

  1. Choose the axis. Match dependency role rules in Dependency graph. New broker glue belongs in transport plus dispatch and/or ingress, not in durable core.

  2. Add catalog files under docs/catalog/<axis>/.

    • One standalone capability markdown file using the capability page template (axis.slug, maturity, summary, Public surface, packages, requires, invariants, non-goals, Observability, Test coverage with one block per covered test method).
    • Update the axis README.md capability table only.
    • Add or extend tests; add one covered use case block per new test method.
  3. Update this root catalog. Add a row to the master capability table, adjust axis counts, and revisit cross-axis gaps if the new capability closes a documented gap.

  4. Update sibling docs when shipping code:

    • Architecture.md for invariants and feature sections
    • Dependency-Graph.md for new packages and dependency-role placement
    • Roadmap.md when moving from Planned to GA or closing deferred items
    • Feature guides (Inbox.md, transport guides, and similar) for narrative registration recipes
    • Analyzers.md and LiteBus.Analyzers tests if compile-time rules apply
    • v6-Feature-Index.md when the capability is v6-shipped (optional cross-link)
  5. Preserve granular packaging. Do not merge orthogonal adapters into kitchen-sink packages unless an explicit breaking packaging change is approved.


On this page