PowerIO 0.11 consumer review
PowerIO v0.11.0 is the baseline for this integration. The release preparation
merged in powerio#482, with
dependency maintenance in
powerio#485.
The final documentation and release checks are in
powerio#491.
Tellegen pins merge revision ca8cfcec8bdc35d083dfc91b0bb9025ac8bb7507
until the component crates are published. The earlier 1.0 candidate in
powerio#454 is no longer the
release target.
Every pull request that changes the temporary pin runs the PowerIO Candidate
workflow at the checked-in revision. Once the workflow is on main, it can also
be dispatched with a proposed full PowerIO commit SHA before a PowerIO release.
The isolated runner resolves all six PowerIO components together, then exercises
the Rust, WebAssembly, WebMCP package, and browser integration. Normal CI also
rejects a manifest and lockfile that name different PowerIO revisions.
After publication, the same check accepts unpatched crates.io dependencies
only when all six components have one version and registry checksums. A manual
candidate run can add temporary Git patches to that published baseline.
Tellegen consumes PowerIO modules at its public entry points. DcNetwork and
AcNetwork are private solver workspaces built from a PowerIO problem
instance. The browser and CLI save PowerIO case and solution modules; Tellegen
uses PowerIO IR for portable networks and solutions. Its optional experiment
journal records browser tool activity and never replaces the electrical module. PowerIO IR
text is written and read through tellegen::ir, which calls
powerio::serialize and powerio::deserialize.
Release, IR, and ABI versions
The PowerIO release, stored IR generation, and C ABI are independent:
| Concern | Current value | Tellegen integration |
|---|---|---|
| Rust crate release | 0.11.0 | dependency requirement 0.11 |
| Stored IR | "schema": "pio-ir", "version": 2 | sole durable browser and CLI JSON boundary |
| Producer | powerio 0.11.0 | records which release wrote an IR document |
| C ABI | 7 | unchanged and not used as an IR or crate version |
The historical powerio.module version 1 document and bare balanced-network
model JSON are not current input formats. Regenerate those documents from
their original case data. Checked-in evidence produced with the old candidate
is historical and must be rerun before it is cited for this pin.
Current module API
Tellegen uses the v0.11 facade directly:
powerio::parse(input)for automatic routing andpowerio::parse_with_options(input, &ParseOptions)for an explicit format;powerio::serializeandpowerio::deserializefor.pio.jsondocuments;PioModule::value()anddiagnostics()for reads, withvalue_mut()for edits;PioModule::try_map_valuefor typed narrowing;PioValue::type_name()for canonical structural type names;powerio::emitfor grid exchange formats.
Calling value_mut() is material to correctness: PowerIO drops retained
source bytes and severs value source-map targets before an in-place edit.
Tellegen therefore applies geographic data and auxiliary substation locations
through the retained module, then serializes that updated module back to the
browser.
PowerIO JSON classification now has five families: module, transmission,
distribution, ambiguous, and unknown. The removed model-json family is
not recreated in Tellegen. A PowerWorld .pwd display also follows the
universal parse route and narrows to powerio.GeoLayer.
Browser boundary
Every solvable browser payload carries module_json. That generation-2 IR is
used for Study construction, geographic transforms, saved cases, and exact
solution modules. Counts, topology, and map views remain derived response data;
there is no separately serialized network_json integration point.
This keeps provenance and mutation behavior intact across the whole browser flow. It also prevents a stale generation-1 shape from being accepted by a display helper while the solver receives a different module.
Preparation and results
Tellegen continues to consume typed PowerIO problem instances and shared numerical preparation. Objective and constraint selections, persistent identities, analysis-to-source row mappings, three-winding lowering, and declared thermal limits come from PowerIO. DC and AC solution modules retain convention-neutral demand marginals and terminal multipliers.
When Tellegen commits edits, it retains valid module diagnostics, history,
extensions, and producer data; replaces the module value with the committed
network; and severs obsolete source targets. A saved exact solution contains
the amended OPF instance that was solved and is emitted as generation-2
pio-ir with value type powerio.DcOpfSolution.