Domain-first syntax
`CanShip.And.HighPriority` says what the rule means without ceremony or overloaded Boolean operators.
Specification pattern · C# 14
Compose named rules with terse, discoverable syntax—then evaluate them in memory or hand them to infrastructure without leaking a query API.
public static Spec<Order> ReadyToShip() =>
CanShip.And.HighPriority.AndNot.Suspended;A deliberately small idea
`CanShip.And.HighPriority` says what the rule means without ceremony or overloaded Boolean operators.
The same immutable specification supports fast matching, structured diagnostics, rendering, and translation.
Repositories accept `Spec<T>`. EF Core stays in infrastructure and materializes results before returning.
The useful boundary
A specification does not carry sorting, paging, projections, includes, or tracking flags. Those are repository decisions—not Boolean rules.
Understand the EF Core boundary