Release v0.0.57
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:
| Method | Return | Description |
|---|---|---|
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()setsAllowAutoChain = true.AutoandScheduleare 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. :::
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:
JsonCanonicalizerthrew on duplicate keys viadict.Add(...). It now uses indexer assignment (dict[name] = …), applying a deterministic last-wins rule instead of throwing.ExpandoObjectJsonConverter.Writecould emit duplicate JSON keys whenDictionaryKeyPolicymapped two differently-cased ExpandoObject keys (e.g.IsSuccessandisSuccess) to the same output key. Keys are now pre-normalized withDictionaryKeyPolicy.ConvertNameinto 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
PreviousUserandPreviousBehalfOfUserrole 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 supportrawResponse: truefor raw pass-through.
vNext Runtime Platform Team
Released May 21, 2026
