Skip to content

Glossary

Definitions of the terms used throughout these docs. They describe the library as it works today.

A Pragmatic.{Name} package providing one capability (e.g. Pragmatic.Validation, Pragmatic.Persistence). Modules are composed by the host application; the source generator detects which modules are referenced and activates the matching features.

A logical grouping inside a module’s domain, marked with [Boundary]. Actions, entities, and endpoints are assigned to a boundary (via [BelongsTo<TBoundary>]), which the generator uses to compose per-boundary interfaces and registration.

A cross-cutting package that ships complete and is used as-is — include it, configure it, use it. Examples: Comments, Tags, Attachments, Notes. A Medium Block contributes its entity/actions/endpoints to the host through the generator.

A unit of business behavior marked with [DomainAction], implementing an IDomainAction<TResult> (or the mutation/side-effect variants). The generator emits an invoker that wires dependencies, runs filters (validation, authorization), and calls ExecuteAsync.

Generated glue around a DomainAction: it resolves the action’s dependencies from DI, applies the configured pipeline (e.g. permission checks, entity loading), and executes the action. Invokers are generated types — never hand-written.

The single PragmaticSourceGenerator that hosts most feature pipelines (Actions, Endpoints, Persistence, Validation, …). A few generators are standalone (Result, Internationalization, Logging). See Source Generator.

How the generator decides which pipelines to run: FeatureDetector probes the referenced assemblies for marker types and produces a DetectedFeatures snapshot. See Feature Detection.

The compile-time wiring the generator infers from your code (boundaries, action assignments, entity configuration) — the first of the three configuration tiers. See Architecture.

The infrastructural configuration surface (auth, storage, …) used in Program.cs to choose module strategies — the second configuration tier. The generator registers defaults; you override them with Use*() methods.

A business-wiring hook (services, filters, OpenAPI, HTTP pipeline) — the third configuration tier. Multiple steps run in Order.

Result<TValue, TError> and Maybe<T> from Pragmatic.Result: explicit success/failure and presence/absence values used instead of exceptions for expected outcomes. See Result.

A compile-time analyzer/generator message with a stable PRAG-prefixed id (e.g. PRAG0680). See the Diagnostics reference.