> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ionworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026 06 01

<Update label="June 1, 2026" description="Faster default simulation solver, structured error details on failed pipelines and optimizations, Wasserstein weighted mode and MSMRFullCell dQ/dU output">
  ## Faster default simulation solver

  Simulations now default to a new solver that is a drop-in replacement
  for the previous PyBaMM-based solver, with substantially reduced
  per-step cost on supported model types and automatic fallback for
  models it doesn't yet cover. Piecewise interpolation now also accepts
  `smoothing=0` so a hard step function can be modelled directly.

  ## Structured error details on failed pipelines and optimizations

  Pipeline element and optimization failures now carry a structured
  `error_detail` with the exception type and a link to the captured
  diagnostic event. Two new job error codes — `CONFIGURATION_ERROR` and
  `SOLVER_ERROR` — separate user-fixable config mistakes from
  solver-side failures. In Studio, failed optimizations now show a
  **View diagnostic** button (superadmin only) that opens the captured
  event directly; the exception message itself is stripped before
  serialization so user-visible diagnostics stay safe to share.

  ## Wasserstein weighted-point-cloud mode and MSMRFullCell dQ/dU output

  `iws.costs.Wasserstein` gains optional `position_variable` and
  `weight_variable` fields. When both are set, the cost computes one
  Wasserstein-1 distance per objective comparing two weighted point
  clouds — useful for full-cell MSMR fits where peak-location error in
  `Voltage [V]` should be measured by the `|dQ/dV|` weights instead of
  sample-by-sample. `MSMRFullCell` also now emits
  `Differential capacity [Ah/V]` when listed in `objective variables`,
  derived from `Full voltage [V]` / `Full capacity [A.h]` and
  interpolated to the data voltage grid.

  ## Pipelines documentation moved to schema-first Docs section

  The runnable "how do I actually run this" pipelines content has moved
  out of the Guide into a new schema-first **Pipelines** section under
  the Documentation tab, with every code sample rewritten to use
  `ionworks-schema` + `ionworks-api`. The Guide retains the theory —
  equations, parameter tables, intuition — and its existing "Pipelines"
  group is renamed to **Parameterization**. The Japanese tab mirrors
  the new section.

  <AccordionGroup>
    <Accordion title="Studio">
      **Fixes**

      * Project-scoped ECM fitting from existing measurements no longer
        fails with a validation error: the frontend now sends the payload
        shape the backend expects for per-measurement initial SOC, and
        shows a per-measurement initial-SOC input next to each selected
        measurement.
    </Accordion>

    <Accordion title="Pipeline">
      **Improvements**

      * `client.simulation.protocol(...)` accepts `design_parameters` again
        as a flat dict — the single-simulation convenience that was
        accidentally removed when the protocol-template flow landed.
        Supplying both `design_parameters` and `design_parameters_doe`, or a
        DOE that expands to more than one simulation, now raises explicitly
        instead of silently billing for the extra runs.
      * BioLogic `.mps` protocols with large embedded drive-cycle tables
        (e.g. \~96k-row Urban Profile traces inlined as YAML block scalars)
        no longer time out when parsed via
        `/protocols/parse-to-template`.
      * `iws.direct_entries.DirectEntry` accepts a `pybamm.ParameterValues`
        directly. Callable values (concentration- / temperature-dependent
        interpolants) are serialized automatically and deserialized back
        into pybamm symbols so local and API consumption paths behave the
        same.

      **Fixes**

      * Logging configuration now correctly governs all pipeline submodule
        loggers, so log-level settings apply consistently across the
        package.
    </Accordion>

    <Accordion title="Python API">
      **Improvements**

      * `client.simple_pipeline.create(...)` accepts a `PipelineOptions`
        (e.g. `live_progress_updates=False`), wiring this option through end
        to end from the SDK client.

      **Fixes**

      * Outbound JSON payloads no longer raise `TypeError` when a request
        body contains a pandas DataFrame with datetime columns. `pd.Timestamp`
        is serialized via `isoformat()` and `pd.NaT` becomes `null`.
    </Accordion>

    <Accordion title="Protocol Simulator">
      **Fixes**

      * BioLogic `.mps` parser no longer hangs on protocols like
        `lfp_gr_cccv.mps` where an internal sub-cycle pointer could be
        misread as a forward jump. Only genuine forward jumps emit gotos;
        backward or equal values are treated as plain step-ends.
    </Accordion>

    <Accordion title="Skills">
      **Improvements**

      * Ionworks skills can now be installed as a Gemini CLI extension; the
        Coding agents docs page is updated to cover Gemini CLI, Cursor, and
        GitHub Copilot install paths alongside Codex and Claude Code.
      * New half-cell MSMR template and helper scripts in the parameterize
        skill. The reference page mandates the template and lays out a
        discover → inspect → scaffold → dry-run → submit → validate
        workflow so every half-cell OCP fit uses the same canonical priors,
        multistarts, and method.

      **Fixes**

      * The process-data skill now documents the platform's actual current
        sign convention (`positive = discharge`), matches the validator and
        corresponding transform, and calls out the double-flip trap.
    </Accordion>
  </AccordionGroup>
</Update>
