Inceptus.DocumentEngine.Contracts 0.1.5

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

Inceptus Document Engine

A reusable BPMN modeler with immutable native documents and a standalone process presentation export. This README describes the coordinated 0.1.4 development line targeting net10.0. Development preparation does not mean the packages have been published to a public feed.

Product page · System/application

Public release source · Building and releasing

Choose an integration level

Package Intended entry point
Inceptus.DocumentEngine.Bpmn.Blazor Ordinary BPMN modeler integration through the component and public facade below.
Inceptus.DocumentEngine.Contracts Advanced, notation-neutral immutable models and extension contracts; the snapshot graph is also part of ordinary facade input/output.
Inceptus.DocumentEngine.Runtime Advanced headless document, command, processing and History infrastructure.
Inceptus.DocumentEngine.Bpmn Advanced BPMN semantics, commands, validation and plugin contributions.
Inceptus.DocumentEngine.Organizational Advanced Organizational profile composition, independent of the browser renderer.
Inceptus.DocumentEngine.Canvas2D Advanced browser/session integration, generic Canvas2D rendering and standalone Publish construction.

Use the six packages as an aligned version family. The top-level modeler package brings the lower packages transitively; ordinary hosts need only that explicit Inceptus reference. Independent mixed family versions are unsupported and unverified. Canvas2D requires its matching Runtime version because it consumes Runtime's internal History contract. Other dependency ranges retain their existing minimum-version policy. A direct dependency override can still produce an incompatible graph and a NuGet warning; the constraint is not a runtime compatibility guarantee.

Embed the modeler

The validated hosting model is a standalone Blazor WebAssembly application on .NET 10. Configure a feed containing the reviewed candidate before adding the package:

<PackageReference Include="Inceptus.DocumentEngine.Bpmn.Blazor" Version="0.1.4" />

Register the modeler in the application's Program.cs. The extension namespace is Microsoft.Extensions.DependencyInjection:

using Microsoft.Extensions.DependencyInjection;

builder.Services.AddInceptusBpmnModeler();

Render the public component in a container with usable dimensions:

@using Inceptus.DocumentEngine.Bpmn.Blazor
@using Inceptus.DocumentEngine.Bpmn.Blazor.Components
@using Inceptus.DocumentEngine.Contracts.Documents

<div style="height: 75vh; min-height: 24rem;">
    <InceptusBpmnModeler @ref="_modeler"
                        InitialDocument="InitialSnapshot"
                        Ready="OnReady"
                        DocumentChanged="OnDocumentChanged"
                        OperationFailed="OnOperationFailed"
                        aria-label="Process modeler" />
</div>
<p>@_lastSnapshot?.DocumentId @_operationStatus</p>

@code {
    [Parameter] public DocumentSnapshot? InitialSnapshot { get; set; }
    private InceptusBpmnModeler? _modeler;
    private DocumentSnapshot? _lastSnapshot;
    private string? _operationStatus;

    private void OnReady(BpmnModelerReadyEventArgs args)
        => _lastSnapshot = args.Snapshot;

    private void OnDocumentChanged(BpmnModelerDocumentChangedEventArgs args)
        => _lastSnapshot = args.Snapshot;

    private void OnOperationFailed(BpmnModelerOperationFailedEventArgs args)
        => _operationStatus = $"{args.Operation}: {args.Status}";
}

Keep the host's generated scoped-CSS bundle linked in wwwroot/index.html, using the application's assembly name:

<link href="YourApplication.styles.css" rel="stylesheet" />

Razor static-web-asset integration supplies the package's JavaScript, scoped CSS and font. Do not copy modeler assets or reference engine source projects in a package consumer. Keep ordinary Blazor framework bootstrapping and the host's application base configuration. Root and non-root deployment use the same package assets; there are no modeler-specific asset URL options.

Class, Style and AdditionalAttributes (IReadOnlyDictionary<string, object>?, captured unmatched attributes) apply to the component wrapper. Ensure ancestor layout allows it to receive width and height.

UI localization

The modeler UI supports English (en / en-GB), Polish (pl / pl-PL), French (fr / fr-FR), German (de / de-DE) and Spanish (es / es-ES). English is the neutral resource and final fallback. Standard .NET resource resolution also supports parent fallback: fr-CA, de-AT and es-MX use French, German and Spanish; en-US and unsupported cultures such as it-IT use English.

CultureInfo.CurrentUICulture is the sole culture authority. AddInceptusBpmnModeler() includes standard localization registration; consumers do not need internal resource types. The RCL carries its resources and satellite assemblies. There is no public Language or Culture parameter and no built-in language selector.

For runtime switching, change the host UI culture in its normal Blazor rendering context and re-render. A host can cascade that culture to ensure even a parameterless modeler receives the render notification:

@using System.Globalization

<CascadingValue Value="CultureInfo.CurrentUICulture">
    <InceptusBpmnModeler />
</CascadingValue>

The cascade is a render notification, not an override: set the ambient CurrentUICulture as well as updating the host render. The host remains responsible for its normal culture lifetime and WebAssembly globalization/ICU configuration. Changing culture does not replace the Document or editing session, write History, reset selection/viewport, or invoke DocumentChanged. Open dialogs and feedback resolve presentation labels again on rendering.

Document names, property values, diagnostic identities and canonical diagnostic messages remain unchanged. Native import/export and PublishedProcess use their existing English-based, culture-invariant schemas; there is no public data-format change. Only UI wrappers around canonical diagnostics are localized. The standalone exported PublishedProcess viewer remains outside modeler localization scope. Host-owned labels and documentation remain the host's responsibility.

Document ownership and notifications

The component owns its live Document, editing session, History and browser resources. Hosts exchange immutable DocumentSnapshot graphs, immutable diagnostic/result objects and copied file bytes. Do not retain a mutable engine runtime through ordinary integration.

InitialDocument is consumed once, at initialization. A supplied snapshot takes precedence over the advanced startup provider. Null uses the provider if one is registered, otherwise canonical empty startup. Later parameter changes do not replace the document: call LoadDocumentAsync explicitly. Two components reconstruct independent live state even from the same initial snapshot.

  • Ready: EventCallback<BpmnModelerReadyEventArgs>, once after successful initial attachment; Snapshot is the initial persistent state. Attachment alone does not emit DocumentChanged.
  • DocumentChanged: EventCallback<BpmnModelerDocumentChangedEventArgs>; exposes Snapshot and Kind (PersistentMutation or DocumentReplacement). Accepted persistent edits, Undo/Redo and replacements notify; selection, pan/zoom, scope navigation, validation alone and transient visibility do not.
  • OperationFailed: EventCallback<BpmnModelerOperationFailedEventArgs>; exposes Operation, Status and ImmutableArray<Diagnostic> Diagnostics. These are bounded operation diagnostics, separate from model-validation Issues. Expected cancellation does not emit a failure callback. Context-edit rejections use the editor's interaction diagnostics, not an additional facade callback kind.

Callback invocation is ordered. Arbitrary asynchronous consumer callbacks may complete in a different order and may await subsequent modeler operations. Callback exceptions do not roll back committed changes. Track DocumentId together with revision: replacing a document can legitimately lower the revision number. Disposal and retired sessions suppress stale notifications.

Public lifecycle and file operations

The component namespace is Inceptus.DocumentEngine.Bpmn.Blazor.Components. Result/event types are in Inceptus.DocumentEngine.Bpmn.Blazor; DocumentSnapshot is in Inceptus.DocumentEngine.Contracts.Documents.

BpmnModelerDocumentResult CaptureDocumentSnapshot();
ValueTask<BpmnModelerDocumentResult> NewDocumentAsync(
    CancellationToken cancellationToken = default);
ValueTask<BpmnModelerDocumentResult> LoadDocumentAsync(
    DocumentSnapshot? document, CancellationToken cancellationToken = default);
ValueTask<BpmnModelerDocumentResult> ImportNativeDocumentAsync(
    ReadOnlyMemory<byte> utf8Json, CancellationToken cancellationToken = default);
ValueTask<BpmnModelerFileResult> ExportNativeDocumentAsync(
    CancellationToken cancellationToken = default);
ValueTask<BpmnModelerFileResult> PublishAsync(
    CancellationToken cancellationToken = default);

Invoke operations after Ready and inspect Succeeded, Status and Diagnostics. Status is one of Succeeded, Rejected, Unavailable, Failed, Cancelled. Successful document results have a Snapshot; successful file results have an Artifact. On other outcomes these payloads are null. BpmnModelerFileArtifact exposes FileName, ContentType and immutable byte Content.

Capture and Export do not change persistent state, History, selection or viewport. Programmatic New creates a fresh empty identity without displaying the toolbar confirmation dialog. Load and Import reconstruct the supplied persistent identity, revision and content into a fresh session with fresh History, without mutating caller input. Replacement is not an undoable document-edit command. Failed or cancelled candidate replacement leaves the previous document authoritative and usable.

Native import/export uses Inceptus.Document JSON, formatVersion 1. Public byte APIs do not open a file picker or initiate a download; the consumer chooses storage/delivery. The toolbar retains its own file and confirmation UI. Export, Import and Load are not persistence or autosave services.

Publish a standalone presentation

PublishAsync captures the current active Process scope into a self-contained ZIP. It does not change Publication metadata, DocumentId, revision, persistent content or History, and does not initiate a download. Inspect the result before delivering its bytes. The toolbar's separate Publication dialog can save changed valid metadata through one persistent command before generating the artifact; a later Publish rejection does not undo that save.

The artifact remains Inceptus.PublishedProcess, formatVersion 1, with these entries:

index.html
process.json
process.data.js
inceptus.publish.js
styles.css

process.data.js contains the same PublishedProcess object as process.json. Classic scripts and static bootstrap data allow static HTTP hosting and direct-file startup without fetching JSON at runtime. Keep the generated files together with their matching viewer. The standalone output needs no authoring host, source checkout, Blazor, .NET or WASM runtime. Browser/security policy may restrict local file:// access.

Publication metadata and element descriptions are captured as data. Descriptions are not displayed by the viewer. Node geometry and connector routes are frozen. Pools are treated as expanded for publication, and Pool/Unassigned graphics are omitted. Diagram editing is unavailable; pointer drag and wheel/touchpad pan, and +/- controls zoom the model.

Publication supports one or more Start-role nodes in the active scope. Reachable paths from every Start are included without cloning shared identities. Each clicked Start activates exactly one token at that node; repeated clicks create independent activations. With multiple Starts the global convenience button is disabled and guides the user to click a Start in the diagram. Zero Starts or an invalid supported path produces blocking diagnostics. Supporting several Starts does not relax individual node/connector validation or introduce process-instance correlation.

The marketing/demo viewer retains lightweight token behavior: Activity waits 2000 ms per token; SplitInvariant chooses one outgoing branch; MergeInvariant consumes tokens from two distinct inputs and emits one; ParallelSynchronize waits for every input, consumes one from each and emits on every output; End consumes tokens. This is not a production process execution or Simulation Engine.

Editor Publish failures remain visible outside the closed Publication dialog, with returned reasons and affected identities when available. Successful retry or session replacement clears obsolete feedback. Feedback is transient and does not enter Document History or persistent Issues.

Advanced and implementation-facing surfaces

Lower-layer APIs support deliberate headless or browser/session composition, with their own ownership and extension contracts. The modeler's RCL remains the ordinary composition authority. Historical BpmnPluginRegistration milestone selectors are advanced historical compositions, not interchangeable support levels; the ordinary RCL currently uses N100 and adds Organizational independently.

IBpmnModelerStartupDocumentProvider.GetInitialDocumentAsync(CancellationToken cancellationToken = default) returns ValueTask<Inceptus.DocumentEngine.Runtime.Documents.Document>. This advanced startup-only seam transfers ownership of a fresh Document per component; it is not a live model handle, replacement callback or persistence service. Prefer InitialDocument for ordinary startup.

The publicly generated DocumentCanvas and ToolboxPanel components are implementation-facing. Their visibility does not make them supported alternatives to InceptusBpmnModeler. The standalone PublishedTokenRuntime.activateStart(startId, atMs) method and frozen startNodeIds observation are advanced runtime integration surfaces; use the artifact's matching runtime. Viewer gesture helpers, startAt and control wiring are implementation-facing, not ordinary modeler APIs or a separate stable JavaScript SDK.

Support limits and release identity

Acceptance covers the tested standalone Blazor WebAssembly host and recorded browser conditions. It does not establish Interactive Server support, every browser/device, BPMN XML interoperability, arbitrary cross-version API compatibility or production workflow execution. Native Inceptus.Document and standalone PublishedProcess are distinct formats.

An ID/version identifies immutable distributed package bytes. Recover an existing release only from retained hash-matching artifacts. Rebuilding the same source version does not recreate release identity; unrecoverable bytes require a deliberate new candidate/version. Candidate promotion and external publication are separate decisions.

The public source repository contains deliberate release snapshots. Public packages must be built from the corresponding public commit, which supplies repository commit metadata and SDK-native Source Link mappings. Version 0.1.3 prepares portable .snupkg symbols alongside each package. Source stepping requires the matching published symbols and publicly retrievable source; preparation alone does not establish nuget.org availability. Local application breakpoints remain distinct from stepping into packaged implementation.

First-party code is licensed under MIT, Copyright (c) 2026 Inceptus Robert Prokopczuk. Redistributed third-party material retains its own terms; see third-party notices, including the separately bundled DejaVu font license. See release notes. These documents are also included in each primary package.

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 (5)

Showing the top 5 NuGet packages that depend on Inceptus.DocumentEngine.Contracts:

Package Downloads
Inceptus.DocumentEngine.Runtime

Headless document, command, history, projection, layout, routing, validation, and native persistence runtime for the Inceptus Document Engine.

Inceptus.DocumentEngine.Canvas2D

Canvas2D browser editing session, interaction, scene, and renderer integration for the Inceptus Document Engine.

Inceptus.DocumentEngine.Bpmn

BPMN notation semantics, commands, validation, and plugin contributions for the Inceptus Document Engine.

Inceptus.DocumentEngine.Organizational

Organizational Profile semantics and plugin contributions for the Inceptus Document Engine.

Inceptus.DocumentEngine.Bpmn.Blazor

BPMN modeler components and browser presentation integration for the Inceptus Document Engine.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.5 106 9/15/2026
0.1.4 115 9/14/2026
0.1.3 111 9/13/2026

# Release notes

## 0.1.5 development

- Defaults the source Blazor host UI to neutral English while keeping data culture invariant; reusable modeler languages remain host-selected.
- Simplifies element Properties to Data and Parameters, with readonly Type. Technical identities and visual geometry remain in the model and are no longer shown in this form.
- Hides ordinary Properties for BPMN Events and elements without Data fields. Long-form fields such as Description use a wider, responsive dialog and a taller editor, while short fields stay compact.
- Closes Properties after successful Apply and retains failed drafts for review. Existing commands, History, document events and data formats remain authoritative.
- Starts the coordinated six-package 0.1.5 development line, including the P1.14 deterministic integration-event synchronization correction. Existing dependency rules and the public v0.1.4 release remain unchanged.

## 0.1.4 development

- Adds modeler UI localization for English, Polish, French, German and Spanish using standard .NET resources and `IStringLocalizer`. English is the neutral/default resource and final fallback; regional cultures use standard parent-culture fallback.
- Uses the host's `CurrentUICulture` and Blazor re-rendering without a public culture parameter or modeler language selector. Localization is presentation state; it does not change Document identity, revision, History, selection, viewport or editing-session ownership.
- Localizes toolbox labels, toolbar/status text, Properties labels, context actions, navigation fallbacks, New/Publication dialogs and presentation feedback. Canonical diagnostics and authored document values remain unchanged.
- Keeps serialization, native import/export and PublishedProcess contracts English-based and culture-invariant. There is no public data-format change; the standalone exported viewer is outside this localization phase.
- Advances all six development packages to 0.1.4, retaining Canvas2D's exact matching Runtime dependency and other existing dependency-range semantics. This phase does not publish packages or update package consumers.

## 0.1.3 candidate

- Prepares the first public-source release snapshot, with the approved GitHub RepositoryUrl and commit metadata derived from the public build checkout.
- Uses the pinned .NET SDK's built-in Source Link and portable `.snupkg` symbols for all six packages. Public source and symbol retrieval must be verified before release.
- Maps Release Razor-generated source directives before compilation, preserving generated EmbeddedSource and authored-source stepping without embedding checkout-specific paths. Debug retains the SDK's normal source generator and Hot Reload support.
- Aligns SDK Source Link roots with the existing compiler PathMap in ordinary local builds as well as CI builds.
- Adds public-source validation and a separate, manually dispatched, tag-gated NuGet Trusted Publishing workflow. Preparation does not publish packages or create a release tag.
- Corrects a session-shutdown lock-order inversion with in-flight document-change observation, preserving notification delivery and deterministic resource cleanup.
- Preserves the accepted 0.1.2 D1 diagnostic lifetime correction and existing multiple-Start Publishing behavior. No public API, native format or PublishedProcess format changes are introduced.
- Advances the aligned family to 0.1.3, including Canvas2D's exact Runtime [0.1.3] dependency. Other approved ranges remain unchanged; retained 0.1.0, 0.1.1 and 0.1.2 bytes remain immutable.

## 0.1.2 candidate

- Preserves rejected context-command feedback across presentation-only rebuilds of the same document, revision, scope and session, including the canvas resize caused by displaying the feedback itself.
- Keeps authoritative replacement, revision/scope changes, retirement/disposal and later interaction outcomes responsible for invalidating obsolete feedback.
- Adds permanent surface-rebuild and diagnostic-invalidation regressions. There is no public API, native document format or PublishedProcess format change; the existing multiple-Start Publishing extension remains intact.
- Advances the aligned six-package family to 0.1.2. Canvas2D retains its matching Runtime constraint; other dependency policies and approved release metadata are unchanged.

The retained 0.1.1 candidate was promoted locally but did not pass final browser D1 acceptance: its rejection message disappeared after an alert-induced canvas resize. Its archives and failure evidence remain unchanged. The 0.1.2 source correction requires a deliberate source commit before final packing, audit, local promotion and package-only browser acceptance; none is implied by these notes.

## 0.1.1 candidate

- Extends existing standalone Publishing to support multiple independent Start activation points, all start-rooted paths and shared downstream identities. PublishedProcess remains format version 1; artifacts include their matching viewer.
- Keeps Publish failure reasons visible after the Publication dialog closes, preserves returned diagnostics and affected identities, and clears obsolete feedback on retry or document replacement. Saving Publication metadata remains independent of later package-generation failure.
- Surfaces rejected context-command diagnostics through the editor's existing interaction feedback while preserving document atomicity, History and callback behavior.
- Adds consumer integration, lifecycle, hosting and API support documentation, packaged README content, first-party MIT licensing and the approved product URL.
- Defines support for the aligned six-package family. Canvas2D constrains Runtime to its matching version because of their internal History dependency; other dependency policies are unchanged.

The candidate targets net10.0. It does not add BPMN XML interoperability, a production process-execution engine or new hosting-model support. Source Link and package implementation source debugging remain deferred until a public source repository exists. Candidate preparation does not imply local-feed promotion or public NuGet publication. Retained 0.1.0 artifacts remain unchanged.