ForgeTrust.AppSurface.Flow.DurableTask 0.2.0-preview.2

This is a prerelease version of ForgeTrust.AppSurface.Flow.DurableTask.
dotnet add package ForgeTrust.AppSurface.Flow.DurableTask --version 0.2.0-preview.2
                    
NuGet\Install-Package ForgeTrust.AppSurface.Flow.DurableTask -Version 0.2.0-preview.2
                    
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="ForgeTrust.AppSurface.Flow.DurableTask" Version="0.2.0-preview.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ForgeTrust.AppSurface.Flow.DurableTask" Version="0.2.0-preview.2" />
                    
Directory.Packages.props
<PackageReference Include="ForgeTrust.AppSurface.Flow.DurableTask" />
                    
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 ForgeTrust.AppSurface.Flow.DurableTask --version 0.2.0-preview.2
                    
#r "nuget: ForgeTrust.AppSurface.Flow.DurableTask, 0.2.0-preview.2"
                    
#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 ForgeTrust.AppSurface.Flow.DurableTask@0.2.0-preview.2
                    
#: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=ForgeTrust.AppSurface.Flow.DurableTask&version=0.2.0-preview.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ForgeTrust.AppSurface.Flow.DurableTask&version=0.2.0-preview.2&prerelease
                    
Install as a Cake Tool

ForgeTrust.AppSurface.Flow.DurableTask

ForgeTrust.AppSurface.Flow.DurableTask maps AppSurface Flow definitions into durable orchestration decisions.

Release Guidance

AppSurface ships as a coordinated package family. Before installing this package from a prerelease feed, check the package chooser and release hub for current release risk, migration guidance, and readiness.

What It Includes

  • Passive AppSurfaceFlowDurableTaskModule that depends on AppSurfaceFlowModule.
  • IDurableTaskFlowRunner<TContext> for evaluating one flow node and returning a durable decision.
  • IDurableTaskFlowClient<TContext> and IFlowResumeAuthorizer for authorizing external resume events before hosts raise Durable Task events.
  • DurableTaskFlowDecision<TContext> and DurableTaskFlowStep<TContext> for schedule, wait, completion, fault, timeout, and late-event behavior.
  • FlowContextSerializationValidator with a System.Text.Json serializer implementation.
  • FlowRetryPolicy carried on schedule decisions so hosts can translate retry intent into Durable Task retry options.

What It Does Not Include

  • Durable Task worker or client hosting setup.
  • Storage provider registration.
  • ASP.NET Core resume endpoints or authentication handlers.
  • Semantic Kernel.

Durable Boundary

Durable Task owns persistence, replay, timers, and external event delivery. This package owns the AppSurface mapping contract around those host responsibilities:

  1. Resolve the typed flow definition by flow id and version.
  2. Validate that the typed context can round-trip through the configured serializer.
  3. Execute the current node once.
  4. Map the node outcome to a durable decision.

FlowWait<TContext> becomes WaitForExternalEvent with optional timeout metadata. A host should race that external event against its durable timer. When an event arrives after the timer branch already won, ResumeAsync returns IgnoreLateEvent by default.

AppSurfaceFlowDurableTaskOptions.NodeRetryPolicy can attach one retry policy to scheduled node work. The adapter does not execute retries itself; the Durable Task host translates the policy into its worker/client retry options.

Authorization

The default DenyAllFlowResumeAuthorizer rejects every resume event. Hosts must register their own IFlowResumeAuthorizer before exposing HTTP endpoints, queues, webhooks, or browser actions that resume durable flows.

services.AddSingleton<IFlowResumeAuthorizer, MyResumeAuthorizer>();

Authorization should consider the flow id, version, durable instance id, waiting node id, event name, caller identity, and any app-specific metadata. Instance ids and event names are not authorization.

Pitfalls

  • Do not mutate Durable Task host state from AppSurfaceFlowDurableTaskModule; it is intentionally passive.
  • Do not treat late events as success. The default behavior ignores them because delayed external events are expected in timer races.
  • Do not register Semantic Kernel in this package. Agentic flow authoring belongs in samples or a future package, not the Durable Task adapter.
  • Validate context serialization before starting durable instances so replay failures happen during local tests or startup verification, not halfway through a production process.
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.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on ForgeTrust.AppSurface.Flow.DurableTask:

Package Downloads
ForgeTrust.AppSurface.Workers.DurableTask

ForgeTrust.AppSurface.Workers.DurableTask package for AppSurface application composition.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.0-preview.2 306 7/3/2026
0.2.0-preview.1 289 6/28/2026
0.1.0 95 7/2/2026
0.1.0-rc.4 261 6/16/2026
0.1.0-rc.3 130 6/8/2026
0.1.0-rc.2 58 6/3/2026