Winglet.Process 0.1.0

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

Winglet.Process

Winglet.Process is a generic, tenancy-neutral runtime for durable linear application processes.

Definitions are code-defined and immutable after use. A definition is identified by processKey and a positive definitionVersion, and every run remains bound to that exact version. Steps are explicitly User or System; the engine alone owns lifecycle transitions.

var definitions = new ProcessDefinitionRegistry();
definitions.Register(new ProcessDefinition(
    "customer.onboarding",
    1,
    [
        new UserProcessStepDefinition("submitted"),
        new SystemProcessStepDefinition("validate", new ValidateCustomerStep())
    ]));

var engine = new ProcessEngine(definitions, processStore, timeProvider);
var run = await engine.StartAsync("customer.onboarding", 1);

The host implements IProcessStore. It owns the database schema, atomic revision transitions, JSON persistence, due-work queries, claim/lease concurrency and recovery. Winglet.Process does not depend on EF Core, ASP.NET Core, authentication, tenancy or a background-job framework.

System steps receive a ProcessSystemStepContext containing the run, current step, exact definition, stable step operationId, TimeProvider and typed JSON read helpers. The operation ID is generated once when a step becomes executable and is reused across retries, resume and crash recovery. Downstream idempotency remains the responsibility of the step/integration.

Retry is explicit and finite through IProcessRetryPolicy. A retry enters retry_wait; workers discover it only after nextAttemptAt. Newly current system steps are durable due work as soon as the state transition is committed. The host owns worker hosting, polling, DI scopes and deployment scaling.

User mutations supply an expected process revision and use the engine guard. Status projection is intentionally narrow and side-effect free. Process data is JSON at the persistence boundary, but application code should use typed DTOs through ProcessJson and the context helpers.

The package is tenancy-neutral. A tenant-aware SharedDatabase host must apply ADR-019 isolation to independently persisted tenant-owned process rows. Process JSON is not a secret store: do not persist passwords, bearer tokens, private keys, credentials or raw authentication material.

V1 deliberately excludes branching, loops, parallel execution, compensation, dynamic or database-defined definitions, generic JSON migration, implicit events/webhooks/email, distributed ACID, a generic scheduler and provider-specific persistence adapters.

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.1.0 91 9/1/2026