BackWave.Conformance 1.7.0

dotnet add package BackWave.Conformance --version 1.7.0
                    
NuGet\Install-Package BackWave.Conformance -Version 1.7.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BackWave.Conformance" Version="1.7.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BackWave.Conformance" Version="1.7.0" />
                    
Directory.Packages.props
<PackageReference Include="BackWave.Conformance" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add BackWave.Conformance --version 1.7.0
                    
#r "nuget: BackWave.Conformance, 1.7.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package BackWave.Conformance@1.7.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=BackWave.Conformance&version=1.7.0
                    
Install as a Cake Addin
#tool nuget:?package=BackWave.Conformance&version=1.7.0
                    
Install as a Cake Tool

BackWave.Conformance

The Storage Contract Conformance Suite for BackWave. If you are writing a storage adapter, this package certifies it against the exact behavior the engine relies on: claims, leases, retries, ordering, Transactional Enqueue, and the concurrency edges. A passing adapter is a correct one.

using BackWave.Conformance;

// Subclass the suite, hand it a factory for your store, and declare the optional capabilities your
// subclass provides. The inherited xUnit facts run the full contract against it.
public sealed class MyAdapterConformanceTests(ITestOutputHelper output) : ConformanceSuite(output)
{
    protected override ConformanceCapabilities Capabilities
        => ConformanceCapabilities.NextDue | ConformanceCapabilities.LeaseRelinquish;

    protected override ValueTask<IJobStore> CreateStoreAsync(JobHistoryPolicy historyPolicy)
        => new(new MyJobStore(/* fresh, empty test database */, historyPolicy));
}

Run dotnet test and the whole contract executes against your store. This is the same suite the first-party Postgres, SQL Server, SQLite, and Oracle adapters are certified with.

Declaring capabilities

The contract has a mandatory spine and a set of optional capabilities: a real next-due hint, lease hand-back, named observer refusals, atomic batch outcomes, and the test-only hooks that let the suite inject a fault, force an interleaving, hold a row uncommitted, or write a job state out of band. Capabilities is abstract, so every subclass states which of those it provides, and the clauses that need one are gated on that declaration:

  • Declared, and the hook or store feature is there: the clause runs in full.
  • Declared, but the hook still returns its default: the clause fails, naming the hook. A lapsed override can never pass in silence.
  • Not declared: the clause returns early and writes skipped: <capability> not declared to the test output when the subclass passes xunit's ITestOutputHelper through to the base constructor.
  • Not declared, but the hook produces a value anyway: the clause fails too, so the declaration stays exact in both directions.

Each ConformanceCapabilities flag documents the hook it pairs with and what implementing it proves.

Notes

  • Brings xUnit with it, so reference it from a test project.
  • The suites are abstract, so dotnet test will not try to run them until a concrete subclass supplies a store factory and a capability declaration.

Full documentation and the adapter-author guide: https://backwave.app

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.7.0 77 9/21/2026
1.7.0-preview.3 60 9/16/2026
1.7.0-preview.2 67 8/26/2026
1.7.0-preview.1 66 8/19/2026
1.6.0 138 8/17/2026
1.5.0 114 8/16/2026
1.4.0 130 7/18/2026
1.3.0 129 7/15/2026
1.2.0 126 7/12/2026
1.1.1 115 7/10/2026
1.1.0 124 7/6/2026
1.0.0 118 7/6/2026

Release notes and upgrade guidance: https://backwave.app/