> ## 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 05 04

<Update label="May 4, 2026" description="Full optimization experiment editor, Arbin reader, Maccor coverage, UCP input schema">
  ## Full editor for optimization experiments

  Optimization experiments now use the same protocol editor as the rest of the
  app. The bare text field has been replaced with a rich editor featuring YAML
  syntax highlighting, dark-mode support, frontend pre-validation, and the full
  protocol-builder dialog for picking templates and tuning steps. New protocols
  pre-load a "Constant Current Charge" template so users have a working
  starting point.

  ## Iterative metrics for design optimization

  Design optimization now supports `CyclewiseMetric` and `StepwiseMetric`
  wrappers end-to-end. The optimization form lets you target a metric on a
  specific cycle or step with bounded input fields driven by the parsed
  experiment, mix pipeline variables alongside PyBaMM variables, and
  round-trips wrapped metrics through save/load. A long-standing bug where
  repeated protocol blocks were flat-expanded has also been fixed, which broke
  `solution.cycles` indexing for cycle-wise metrics. Two new templates ship: a
  simplified Charge optimization and composite system models.

  ## Arbin cycler support

  `ionworksdata` now reads native Arbin exports — CSV, XLSX, and the binary
  `.res` format. The `.res` reader extracts data directly from Arbin's export
  format (no separate Access database tool required), sorts rows chronologically
  to handle interleaved multi-session recordings, and reads the absolute start
  time from the file's session metadata. Auto-detection picks the right reader
  from file headers, and `arbin res` is also exposed as an explicit reader name.

  ## Maccor protocol coverage

  The Maccor parser and simulator now handle several real-world protocol
  features that previously failed at parse time or during simulation, including
  per-limit safety gotos, `Chg/Dis Func CCCV` step types, and robust variable
  setvar handling. The Maccor `ionworksdata` reader also gained support for the
  compact short-form column header set used by some firmware versions, which
  previously crashed and silently dropped capacity/energy columns.

  ## Machine-checkable UCP input schema

  The discovery endpoint `/discovery/schemas/protocol` now exposes a JSON
  Schema matching the actual YAML authoring format (single-key dicts like
  `{Charge: {...}}`) rather than the internal parsed shape. Parity tests
  round-trip good and bad fixtures through both the schema and the parser so
  they cannot drift. Submitting the legacy `kind:` shape to
  `POST /protocols/validate` now returns a helpful error pointing at the
  canonical YAML examples, and the `discover-api` and `run-simulations` skills
  show local pre-validation via `jsonschema.validate(...)`.

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

      * The Ionworks Agent tab has been replaced with a static instructions page
        pointing to the [Ionworks Agentic Toolkit](https://github.com/ionworks/ionworks-skills);
        the in-app chat agent has been removed in favour of the SKILL.md-based
        workflow.
      * New cell specifications no longer pre-fill a default capacity, so users
        enter the actual cell capacity from the start.

      **Fixes**

      * Storage permissions are now enforced at the organization level so members
        of the same org can read each other's measurement files as expected.
      * `created_by_email` is now consistently populated on cell-spec, cell-instance,
        and cell-measurement responses across both `get` and `list` endpoints.
      * Simulation usage is aggregated at the organization level (matching the
        org-level usage limit that the backend already enforces) and is fetched
        from a dedicated `GET /organizations/current/usage` endpoint.
    </Accordion>

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

      * Half-cell ECM now exposes anode and cathode potential variables
        (`Anode potential [V]`, `Cathode potential [V]`) for plotting and metrics.
      * `get_cycle_metrics` keeps the `Cycle count` column name on output instead
        of renaming it to `Cycle number`, matching the input convention used
        throughout the data pipeline.
    </Accordion>

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

      * `validate_measurement_data`, `CellMeasurement.create`, and
        `CellMeasurement.create_or_get` accept a `skip_checks` parameter so callers
        can relax a single strict validator (e.g. `time_gaps`) instead of disabling
        strict mode wholesale. Unknown check names raise `ValueError`, and the
        canonical set is exposed as `ionworks.validators.STRICT_CHECK_NAMES`.
        `validate_strict=True` is now the recommended default.
    </Accordion>

    <Accordion title="Data Processing">
      **Improvements**

      * New Arbin reader covering CSV, XLSX, and native `.res` exports (see the
        highlight above).
      * Maccor reader now accepts the compact short-form column header set used
        by some cycler firmware versions.
    </Accordion>

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

      * New electrolyte parameterization page with a worked Landesfeind fit
        example.
      * Optimization experiment editor, iterative metrics, simplified Charge
        template, and composite system models are documented.
      * Custom variables reference now documents anode/cathode potential
        exposure on the half-cell ECM (English and Japanese).
      * Maccor native `CCCV` step type is documented (English and Japanese).
      * Arbin is listed in the supported cyclers table.
      * SEO metadata (keywords, OG tags, tightened descriptions) added across
        the docs site, including expanded data-fitting guide descriptions.
    </Accordion>

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

      * Each mirrored package (`ionworksdata`, `ionworks-schema`, `ionworks-api`,
        `iwutil`, `ionworkspipeline`, `skills`) now ships a per-package
        `CHANGELOG.md` in Keep-a-Changelog format, written and validated as part
        of the release workflows.
      * `discover-api` and `run-simulations` skills updated to reference the new
        UCP input JSON Schema and demonstrate local pre-validation.
      * `upload-data` skill updated to recommend `validate_strict=True` and
        document the new `skip_checks` parameter.
    </Accordion>
  </AccordionGroup>
</Update>
