ProtoTest.Feedback 1.1.6

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

ProtoTest.Feedback

Preview: the surface can change before 1.2.

Posts a failing run's digest where a pull request reads it: a comment with the trace link, check annotations and a webhook for a machine consumer. The digest is the ProtoTest.Diagnosis document, so the comment, the CLI and the MCP tools cannot tell different stories.

dotnet add package ProtoTest.Feedback
var digest = ProtoFeedback.ReadDigest("TestResults/Shop.prototrace");
var report = await ProtoFeedback.PostAsync(
    digest,
    new ProtoFeedbackTarget
    {
        Token = token,
        Repository = "owner/repo",
        PullRequestNumber = 7,
        TraceLink = "https://github.com/owner/repo/actions/runs/1/artifacts/2"
    },
    httpClient,
    Console.Out);

foreach (var channel in report.Channels)
{
    Console.WriteLine($"{channel.Channel}: {channel.Status} {channel.Reason}");
}

The channels are pure functions of the digest and report one outcome each:

Channel Posts Skips when
github-annotations one ::error per failing test, with its source location, and one per failed run gate the run has no failures
github-pr-comment the evidence comment: what failed, what the change broke and fixed, the coverage that moved, and the trace link, to POST /repos/{repo}/issues/{number}/comments no token, no repository, no pull request number, or a run with nothing to report
webhook the digest JSON to the configured address, with an optional shared-secret header no webhook URL

prototest feedback <file.prototrace> runs the same post, reading the targets from the environment; see ProtoTest.Cli.

Limits

  • Post-run by design: the digest is read from the written .prototrace archive. A run-time sink cannot be the mechanism, because the archive is written after sinks and a failed assertion is not a report item.
  • One digest: ProtoDiagnosis.Read builds it from the archive and its embedded report. The channels render it and never recompute coverage or the failure selection.
  • Nothing leaves the machine by default: no target means no post, and the annotations are written to the writer the caller gives. A refused target fails its channel, named, instead of being swallowed.
  • The comment posts only when the digest carries a failure or a failed gate; a green run's status check is the report. The webhook posts every digest, because a machine consumer decides.
  • The summary card is an image URL that carries counts and coverage category names only. The library leaves it out unless SummaryCardUrl is set; the CLI sets it unless told not to.
  • The comment shows at most 20 failing tests and 20 coverage rows; the trace has the rest.
  • The shared-secret header carries the secret value; it is not an HMAC signature.
  • A skipped test is not annotated: it did not fail.

Learn more

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.1.6 35 10/4/2026
1.1.5 52 10/3/2026
1.1.4 42 10/3/2026
1.1.3 47 10/3/2026
1.1.2 36 10/3/2026
1.1.1 34 10/2/2026
1.1.0 62 10/2/2026