Release labels describe evidence, not feature aspirations. Ported means the
original DWSIM source is present and executable. Validated requires a pinned
legacy differential result for the named behavior.
The macOS ARM64 beta candidate must pass all of these gates:
- every first-party engine assembly targets
net10.0, with no Mono, .NET Framework, Eto, WinForms, IronPython, Microsoft.Scripting, COM, or desktop rendering payload in the wheel; - every Mach-O payload is ARM64-only and has a macOS 11 deployment floor;
- all 43 checked-in upstream samples load, save, and reload without object-graph loss;
- all 24 in-assembly property-package implementations construct and roundtrip; Automation exposes the expected 25 public catalog names, including its Raoult naming alias, and all managed packages with available test data perform PT flashes;
- PR, SRK, NRTL, UNIQUAC, and UNIFAC pass PT, PH, and PS recovery through a real material stream; Steam Tables passes PT and PH; NRTL passes two-phase PV and TV recovery;
- all 36 currently constructible source unit-operation paths pass their declared solve/read/save/reload checks;
- the immutable 15-case legacy differential matrix passes 1261/1261 numeric comparisons;
- a clean wheel install performs at least 100 solves on the same live flowsheet
without replacing its
IFlowsheetor feed object, then saves and reloads it; - public Python errors are deterministic for missing files, closed flowsheets, unknown object/property types, invalid connector types, and solve failures;
- wheel content, licenses, native closure, ad-hoc signing, and clean-install audits pass on every supported macOS/Python runner.
Steam Tables PS recovery is not a beta claim. The pinned upstream implementation currently returns a saturation-state temperature for the tested superheated case. It remains a stable investigation item until legacy behavior is captured; the port does not silently replace an upstream engineering equation.
Stable requires every beta gate plus:
- pinned legacy differential fixtures for every engineering family declared
stable in
SUPPORT_MATRIX.md; constructor-only families remain explicitly experimental; - declared PT/PH/PS/PV/TV capability and negative-case tests for every shipped property-package family, including electrolyte, Black Oil, Seawater, Steam Tables, and CoolProp variants where physically applicable;
- broad real DWXML/DWXMZ solve/save/reload/recalculate coverage with no known data loss in supported schemas;
- fresh-load versus reused-state numerical evidence and a long-running process durability gate representative of optimization workloads;
- a frozen public Automation/Python compatibility contract, deprecation policy, support matrix, license inventory, SBOM, checksums, and reproducible release instructions;
- all release artifacts rebuilt from a clean checkout and revalidated after download.
The local 2.0.0 candidate satisfies the stable engineering gates:
scripts/qualification/property_package_capabilities.jsondeclares the measured PT/PH/PS/PV/TV behavior for all 25 Automation catalog names. A missing specification is an explicit unsupported or failed qualification, not an implied capability;- the enforced 16-case matrix passes 2596/2596 legacy comparisons and covers
all 20 families declared stable in
scripts/differential/coverage.json; - Natural Gas Processing contributes 1335 comparisons across three solves on one loaded flowsheet, while the Python.NET smoke performs 1000 mutations and solves without replacing the CLR flowsheet or feed object;
- 43/43 upstream DWXML/DWXMZ samples pass object-graph save/reload validation, and the Petroleum Distillation fixture passes fresh save/reload/recalculate comparison;
- API version
1.0, error behavior, deprecation policy, license inventory, deterministic CycloneDX SBOM, wheel checksums, signing, native closure, and clean-install audits are automated.
The final clean-checkout and downloaded-artifact clauses are publication gates; the tag workflow must pass before the GitHub release is considered complete.
Linux and Windows are separate platform gates. They do not block a macOS-only stable release, but no unsupported platform may be implied by a wheel tag or documentation.