Skip to main content

Release v0.0.57

· 4 min read
vNext Team
Burgan Tech Engineering

Overview

This release hardens two correctness paths and improves human-task query performance. JSON canonicalization is now safe against duplicate object keys regardless of casing or the active DictionaryKeyPolicy (#688). The ErrorBoundary pipeline profile changes behavior: it now allows auto-chaining, so recovery transitions can continue into automatic follow-ups after a boundary fires — a deliberate behavior change. Human-task instance listing is parallelized with bounded concurrency, and predefined PreviousUser / PreviousBehalfOfUser role checks are optimized (#689). The release also exposes ScriptBase XML helpers and the function-level rawResponse flag.


Features

ScriptBase XML helpers + rawResponse (PR #687)

Two new ScriptBase methods simplify XML handling in mapping scripts — primarily for processing SoapTask output:

MethodReturnDescription
ParseXml(string? xmlString)XmlDocument?Parses an XML string. Returns null on null/empty input or parse failure — never throws
XmlToString(XmlDocument? xmlDoc)string?Converts XmlDocument to an XML string. Returns null for null input
var doc = ParseXml(context.Body?.data?.ToString());
if (doc == null) { /* handle invalid XML */ }

var ns = new XmlNamespaceManager(doc.NameTable);
ns.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
var fault = doc.SelectSingleNode("//soap:Fault", ns);

Because ParseXml never throws, defensive XML processing inside OutputHandler is safe. The same PR exposes the function-level rawResponse flag: when rawResponse: true, the mapped rawData is returned directly as the HTTP response body instead of being wrapped in the platform's standard output model — useful for legacy API pass-through.

Reference: PR #687


Behavior Changes

ErrorBoundary profile now allows auto-chain (#688)

Previously the ErrorBoundary pipeline profile set AllowAutoChain = false and excluded the Auto and Schedule lifecycle steps, which prevented chained recovery transitions after a boundary fired. As of this release:

  • PipelineExecutionProfile.ForErrorBoundary() sets AllowAutoChain = true.
  • Auto and Schedule are no longer excluded from the ErrorBoundary profile.

The practical effect: after an ErrorBoundary transition runs, automatic follow-up transitions evaluate and execute exactly as they would for any other transition. Boundary handling no longer silently swallows downstream auto-chain steps.

:::warning Behavior change If you previously relied on the ErrorBoundary profile not running auto transitions after a boundary fired, review your error-boundary states — automatic follow-ups now chain by default. This change has downstream impact on recovery flows. :::

Reference: issue #688, PR #690


Fixes

JSON canonicalization is duplicate-key safe (#688)

The canonical JSON path could produce or reject inputs containing duplicate object keys once the dictionary-key policy was applied:

  • JsonCanonicalizer threw on duplicate keys via dict.Add(...). It now uses indexer assignment (dict[name] = …), applying a deterministic last-wins rule instead of throwing.
  • ExpandoObjectJsonConverter.Write could emit duplicate JSON keys when DictionaryKeyPolicy mapped two differently-cased ExpandoObject keys (e.g. IsSuccess and isSuccess) to the same output key. Keys are now pre-normalized with DictionaryKeyPolicy.ConvertName into an ordinal dictionary before serialization, so casing-variant collisions collapse to a single key.

Both behaviors previously broke RFC-compliant parsers and downstream canonicalization.

Human-task query performance (#689)

  • Human-task workflow schemas and instances are now fetched in parallel with bounded concurrency and thread-safe result aggregation, reducing task-list load times.
  • Predefined PreviousUser and PreviousBehalfOfUser role checks reuse the last completed manual transition instead of issuing redundant repository calls, and handle a missing transition early.

Reference: PR #689


Configuration Updates

Configuration for v0.0.57:

{
"runtimeVersion": "0.0.57",
"schemaVersion": "0.0.42"
}

Note: Schema version 0.0.42 is unchanged from v0.0.56.

Container images: published at tag 0.0.57 under ghcr.io/burgan-tech/vnext/*, Cosign-signed with SBOM + provenance.


Issues Referenced

  • vnext #688 — Harden JSON canonicalization (duplicate-key last-wins) and re-enable ErrorBoundary auto-chain.
  • vnext #689 — Parallelize human-task instance fetch; optimize predefined previous-user role checks.

Summary

  • ErrorBoundary profile now allows auto-chain — recovery transitions continue into automatic follow-ups (behavior change).
  • JSON canonicalization never throws on duplicate keys; last-wins applies, and casing-variant ExpandoObject keys collapse to one.
  • Human-task listing is parallelized; predefined previous-user role checks reuse the last manual transition.
  • ScriptBase gains ParseXml / XmlToString; functions support rawResponse: true for raw pass-through.

vNext Runtime Platform Team
Released May 21, 2026