Assay.Net 0.4.0

dotnet add package Assay.Net --version 0.4.0
                    
NuGet\Install-Package Assay.Net -Version 0.4.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="Assay.Net" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Assay.Net" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="Assay.Net" />
                    
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 Assay.Net --version 0.4.0
                    
#r "nuget: Assay.Net, 0.4.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 Assay.Net@0.4.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=Assay.Net&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=Assay.Net&version=0.4.0
                    
Install as a Cake Tool

Assay.Net

The .NET reference implementation of AVP — the Acceptance Verification Protocol. The runtime sibling of the static doctor: it manufactures the verifier an LLM lacks, turning "is this feature done?" into "did the criteria pass?". Standalone, like xUnit.

AVP is the protocol — the language-neutral concepts (subject, criterion, oracle, condition, verdict). Assay.Net is this package: AVP for .NET backends, a thin layer over the neutral catalog that runs catalog-driven acceptance archetypes over a real subject (an HTTP backend) and emits an actionable Verdict with an Outcome plus a nullable AcceptanceScore. Empty or unresolved proof is Inconclusive, never green.

It is standalone: it knows nothing of any framework. AeroFortress.Framework depends on AVP, never the reverse — the static doctor recognizes the [AVP(typeof(Subject), "id")] attribute by name to enforce that every declared production subject has its own matching proof.

Install

dotnet add package Assay.Net

Use

using Assay.Net;
using Assay.Net.Archetypes;

// The neutral catalog ships inside the package — no path needed.
var catalog = Catalog.LoadDefault();

var subject = new MoneyIntegritySubject(baseUrl, "/split", platformBps: 1500);
var verdict = await Runner.Run(catalog, new MoneyIntegrity(), "booking-split", subject);

// A criterion's proof is calibrated: it must PASS the correct backend AND FAIL the vulnerable one.
foreach (var r in verdict.Results)
    Console.WriteLine($"{r.CriterionId}: {r.Status} — {r.Reason}");
Console.WriteLine($"acceptanceScore = {verdict.AcceptanceScore}");
verdict.RequireAccepted(); // fail closed on fail, unresolved, or empty evidence

Mark a verification method as the proof of a catalog criterion with [AVP(typeof(Subject), "id")] — the [Fact] of AVP, and the AVP half of the cross-layer bridge. The subject is mandatory for coverage: sharing a criterion never lets one feature borrow another's proof.

[AVP(typeof(CreateSplit), "split-invariant")]
[Fact]
public async Task split_is_exact_to_the_cent() { /* PASS good ∧ FAIL the escape */ }

The catalog

Catalog.LoadDefault() reads the neutral catalog.json embedded in this package (the behaviour catalog). To verify against a specific or newer catalog, Catalog.Load(path) reads any protocol/catalog.json from disk. The catalog is the shared source of truth both the JS (@aerofortress/assay) and .NET implementations conform to — this adapter reads it, it never owns it.

License

MIT.

Product Compatible and additional computed target framework versions.
.NET 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.
  • net10.0

    • No dependencies.

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
0.4.0 752 7/22/2026
0.3.1 192 7/20/2026
0.3.0 101 7/20/2026
0.2.0 224 7/1/2026
0.1.9 109 7/1/2026
0.1.8 181 6/25/2026
0.1.7 121 6/22/2026
0.1.6 123 6/22/2026
0.1.5 118 6/22/2026
0.1.3 119 6/22/2026
0.1.2 117 6/22/2026
0.1.1 126 6/22/2026