Skip to content

Releases

v1.6.1

Choose a tag to compare

@github-actions github-actions released this 12 Nov 10:25
4fcb6c1

Date: 2026-11-12
Previous release: v1.6.0

Fixed

  • iec61850-interop-libiec61850 resolves --remote once at start-up and gives libiec61850's RSession the IPv4 address. libiec61850's UdpSocket_sendTo runs getaddrinfo on the address for every SPDU, so with a container name the R-SV publisher made one DNS query per sample. On the arm64 runner that held it at 12,163 and 13,054 of the expected 16,000 samples in 4 s, against an 80 % floor (sv.msvcb01.udp, libiec61850 → dscsystems). The subscriber received every sample; only the publisher's rate was short. The contract and the checks are unchanged.

Changed

  • scripts/lib.sh run_client_pair: a client that writes nothing has its exit code, its stderr and the server's last log lines written to the log. A client run that Docker itself cannot start (exit 125) is retried like a failed association. A main CI run of this release's fix failed once with libiec61850-ied-reporter -> iec61850-rust-ied-server: no JSON Lines output, 0.7 s after the previous check finished, with stderr discarded; it did not reproduce in 40 local runs. The next occurrence shows its cause.

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.6.1 sha256:dbace896592c139991ec07c9975830e170499ccabb5fc172ec2f92f992f73714
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.6.1 sha256:2b7c328c77155027447253fc04e9b854ae21349793185084fa6cf3824964db90
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.6.1 (GPL-3.0) sha256:be96477983b4105e6709af8a731a274f05e74e5d465dee1e5f3aec753688f73e
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.6.1 sha256:19a0cc7099e6c044b2823e4747bd4c7f75fbe1a5f0e91779cb418517df9c99c5
ghcr.io/otfabric/iec61850-interop-cbsigma:v1.6.1 sha256:99f7dad5ea19bf6c69d9c5931bcc017bbe5b98ec8b18147083d06f964af2cd4a

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:dbace896592c139991ec07c9975830e170499ccabb5fc172ec2f92f992f73714
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:2b7c328c77155027447253fc04e9b854ae21349793185084fa6cf3824964db90
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:be96477983b4105e6709af8a731a274f05e74e5d465dee1e5f3aec753688f73e
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:19a0cc7099e6c044b2823e4747bd4c7f75fbe1a5f0e91779cb418517df9c99c5
CBSIGMA_IMAGE=ghcr.io/otfabric/iec61850-interop-cbsigma@sha256:99f7dad5ea19bf6c69d9c5931bcc017bbe5b98ec8b18147083d06f964af2cd4a

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, cB-Sigma iec61850 and iec61850-sim tags, fixture revisions).

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 12 Nov 06:57
50e1bbd

Date: 2026-11-12
Previous release: v1.5.0

Added

  • iec61850-interop-libiec61850 implements contract 1.4 --transport udp (R-GOOSE and R-SV) with libiec61850's own RSession: the image builds the pinned libiec61850 with Mbed TLS v3.6.0 (2ca6c28, Apache-2.0 OR GPL-2.0-or-later) in third_party/mbedtls, which compiles R-GOOSE, R-SV and the HMAC. --capabilities carries "transports":["ethernet","udp"]; udpTransport.libiec61850 is true. The transport is adapters/libiec61850/src/rudp.c; docs/routable.md lists what libiec61850 does and does not do.
  • scripts/interop.sh runs the udp checks between libiec61850 and dscsystems in both directions (GOOSE and SV pass). libiec61850 → libiec61850 is a known failure, asserted: its RSession writes each APDU length two octets too long and refuses its own SPDUs as malformed (waiver libiec61850-rsession-apdu-length).
  • fixtures/capabilities.json: five known limitations of libiec61850's RSession (APDU length, no version 1 sender, no HMAC-SHA256-80, the HMAC-SHA256-256 length octet, no replay window).

Changed

  • The libiec61850 image links Mbed TLS, which also makes TLS available to its MMS code; no adapter configures it. versions.yaml records the Mbed TLS pin under libiec61850.

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.6.0 sha256:62962e108b853c973722edd30da95b6e8beea685f117d0e7411423cff8bdc635
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.6.0 sha256:b1c1880637f53086707bfd59dc087d7ab40a7c2288da7a3210291d6d1066d8d3
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.6.0 (GPL-3.0) sha256:3459f512165931544fa0139cb1519aade645e1636d4cf62ce0b28f5c44d3801a
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.6.0 sha256:a55f3f2ee8107519f0d3b1976869b5ffe74f3c9382f14459b2d0895a5c3cb8c7
ghcr.io/otfabric/iec61850-interop-cbsigma:v1.6.0 sha256:5cdbd552eb729fd79d6ffcddb986498061e7b769ccab4a9e46233dfaba24cde2

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:62962e108b853c973722edd30da95b6e8beea685f117d0e7411423cff8bdc635
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:b1c1880637f53086707bfd59dc087d7ab40a7c2288da7a3210291d6d1066d8d3
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:3459f512165931544fa0139cb1519aade645e1636d4cf62ce0b28f5c44d3801a
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:a55f3f2ee8107519f0d3b1976869b5ffe74f3c9382f14459b2d0895a5c3cb8c7
CBSIGMA_IMAGE=ghcr.io/otfabric/iec61850-interop-cbsigma@sha256:5cdbd552eb729fd79d6ffcddb986498061e7b769ccab4a9e46233dfaba24cde2

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, cB-Sigma iec61850 and iec61850-sim tags, fixture revisions).

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 11 Nov 22:11
0b1c07b

Date: 2026-11-11
Previous release: v1.4.0

Added

  • Contract 1.4 (minor): --transport udp on the GOOSE and SV publishers and subscribers, R-GOOSE and R-SV: the APDUs in the session protocol of IEC TR 61850-90-5 over UDP, signed with HMAC-SHA256-80, -128 or -256 under the key of --key-id and --key (--mac, --session-version 1|2). Publishers send to --remote; subscribers receive on --listen (:102) or a multicast --group, refuse unsecured SPDUs unless --allow-unsecured, and report each refused SPDU as a new reject event with a reason (unknown-key, authentication, unsecured, replay, malformed). A goose event received over UDP carries from, the sender's address. --capabilities of an image that has it carries "transports":["ethernet","udp"]. Default --transport ethernet: nothing changes for a harness that does not ask for it. docs/routable.md.
  • iec61850-interop-dscsystems implements it with dscsystems/go-iec61850's rsession (v0.6.6, already pinned): adapters/dscsystems/internal/rudp, unit-tested on the loopback. The other images do not (fixtures/capabilities.json udpTransport, a new column in the capability matrix).
  • scripts/goose-crosscheck.sh and scripts/sv-crosscheck.sh with TRANSPORT=udp: signed SPDUs to the subscriber's container, after a rogue publisher with the same key ID and other key material whose SPDUs must all be refused. scripts/interop.sh runs both between every pair of adapters with the udp transport (today dscsystems with itself; independent pairs come with a second stack).

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.5.0 sha256:601374067bd387a654d2e483f4dcba7511e20393d3a82b4e53670520e2cfca42
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.5.0 sha256:4008c73b3edf68ac025607c8041d02317887d4c4e5260445f3ee23f24b6c5279
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.5.0 (GPL-3.0) sha256:eea55bc78ab59490f555f63786a2cb44f93d2d337d7b3537843ba6d74fa6e811
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.5.0 sha256:6a276e126b96f9782d5073c6d44c43cb1e2713c80468eeb1ad6054802fb15c1a
ghcr.io/otfabric/iec61850-interop-cbsigma:v1.5.0 sha256:7baf32ba5fed96840f925f3d75cfbda2380133c01a803502fa5bfddccd8a5201

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:601374067bd387a654d2e483f4dcba7511e20393d3a82b4e53670520e2cfca42
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:4008c73b3edf68ac025607c8041d02317887d4c4e5260445f3ee23f24b6c5279
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:eea55bc78ab59490f555f63786a2cb44f93d2d337d7b3537843ba6d74fa6e811
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:6a276e126b96f9782d5073c6d44c43cb1e2713c80468eeb1ad6054802fb15c1a
CBSIGMA_IMAGE=ghcr.io/otfabric/iec61850-interop-cbsigma@sha256:7baf32ba5fed96840f925f3d75cfbda2380133c01a803502fa5bfddccd8a5201

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, cB-Sigma iec61850 and iec61850-sim tags, fixture revisions).

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 23:03
4309b39

Date: 2026-11-06
Previous release: v1.3.0

Added

  • Adapter cbsigma, image ghcr.io/otfabric/iec61850-interop-cbsigma: a fifth independent reference, in Go, on cB-Sigma/iec61850 v0.1.0 (MMS client, the IEC 61850 client services, GOOSE) and cB-Sigma/iec61850-sim v0.1.0 (the simulated IED), both Apache-2.0 and pinned by tag (cB-Sigma publishes no releases). Commands: cbsigma-ied-server (the fixture IED built by the simulator's own SCL loader from interop.icd: logical nodes, data sets, report control blocks and the three controls with their ctlModel, then values.json), cbsigma-ied-client, cbsigma-ied-controller (direct, SBO and SBOw through the library's Operate, which runs the whole sequence of the control model), cbsigma-ied-reporter, cbsigma-goose-publisher and cbsigma-goose-subscriber (frames encoded and decoded by the library). No MMS or SV commands: the simulator is an IED, not a generic MMS server, and SV is out of this adapter's scope; they answer unsupported. The ICCP / TASE.2 simulator is not used.

  • adapters/cbsigma/go.mod holds the pins (and golang.org/x/net raised to v0.62.0 past the advisories of v0.58.0); the Dockerfile fails when its IEC61850_VERSION/IEC61850_SIM_VERSION differ from go.mod, and scripts/check-versions.py when versions.yaml, the Dockerfile, go.mod and the NOTICE disagree. The image carries the licence and notice of every linked module under /licenses.

  • CI builds and smoke-tests the image, runs its MMS and IED commands against libiec61850 in both directions and GOOSE between it and every other publisher and subscriber, and vets, lints, tests (-race) and govulnchecks the adapter. The Release workflow builds and publishes it for linux/amd64 and linux/arm64; manifest.json gains cbsigma (iec61850, iec61850-sim, independent: true) and its image digest. The Upstream workflow compares both tags with the latest ones (scripts/latest-upstream.py cbsigma, scripts/build-candidate.sh cbsigma "iec61850@<tag> iec61850-sim@<tag>").

  • fixtures/capabilities.json: the cbsigma commands and upstreams, four known limitations found with it (below), iec61850-rust's report control blocks' DatSet without the logical device (LLN0$dsInterop), which dscsystems' new interop suite against this harness found, and its refusal of GetBRCBValues as one Read of the whole BRCB.

  • The cbsigma adapter module declares go 1.26.10, as the dscsystems one, so CI vets and scans it with a standard library that has the fixes govulncheck asks for.

  • Contract 1.3 (minor): *-ied-reporter --trigger dchg|gi. With gi the reporter writes the URCB's GI (operation trigger-gi) instead of GGIO1.SPS1.stVal[ST] and gets the general interrogation report of both members of dsInterop, from every server, including those that refuse ST writes as IEC 61850-7-2 says. --capabilities of an image whose reporter takes it carries "reporterTriggers":["dchg","gi"]; all five reference images do.

  • Report and control evidence: scripts/smoke.sh and scripts/interop.sh check the GI report of every reporter that takes --trigger gi (both members included, reasons gi, values [false, 1]) and that a controller's operate succeeds and stVal follows. Before, a reporter's or controller's output was only checked to be JSON, so a pair passed without a report or a control. Pairs that fail for a registered limitation have to fail that way (waivers iec61850-rust-urcb-implicit-reservation, iec61850bean-report-data-references) and fail the run once they pass.

Fixed

  • The reporters and controllers of libiec61850, iec61850bean, dscsystems and iec61850-rust addressed InteropLD/LLN0.RP.urcb01 and InteropLD/GGIO1.<DO> as given: they found the URCB and the controls only on a server that names its logical device by the bare instance (OT Fabric's own image), and failed with object-does-not-exist against every reference server, which names it InteropIEDInteropLD and the URCB instance urcb0101. They now take the logical device from the server directory and the URCB or its first instance from the logical node directory, as the IED clients already did (contract 1.3). The line targets carry the logical device found.
  • iec61850-rust's reporter named a member included for several reasons "unknown"; it now gives the first in the contract's order.
  • libiec61850-ied-controller and iec61850-rust-ied-controller read --ctlval with atoi, so the contract's --ctlval true operated false; it takes true|false|1|0 (anything else is an argument error, exit 1).

Changed

  • dscsystems/go-iec61850 moves from commit 6bf3f37 (v0.6.5-1) to its release v0.6.6 (4833767). It types Enum attributes as an 8-bit Integer, so the iec61850bean client now reads LLN0.Mod.ctlModel[CF] from the dscsystems IED server, and that known limitation is removed. It also refuses a control write to an object without a control structure, and names logical devices by ldName on request (not used here). The Dockerfile pins the version as DSCSYSTEMS_VERSION (the tag, or the pseudo-version of an untagged commit) next to DSCSYSTEMS_SHA, and checks that the module proxy resolves one to the other; scripts/build-candidate.sh dscsystems sets both.
  • The Own stack (go-iec61850) workflow takes the reference adapters from make print-published-adapters of the harness release it tests against, so OT Fabric's own image is tested against cbsigma once this release is the latest.

Known limitations

  • cbsigma-ied-server refuses writes of ST and MX (object-access-denied), as IEC 61850-7-2 makes them read-only, so a reporter cannot make the data change it waits for; reports from the simulator's own changes are tested in the adapter's unit tests.
  • The simulator describes Enum attributes as Integer(32), so the iec61850bean client cannot map LLN0.Mod.ctlModel[CF].
  • iec61850bean's server reads a data set only with specificationWithResult TRUE, which cB-Sigma's client leaves at its default (FALSE).
  • iec61850-rust accepts only an 11-bit parameterCBB in MMS Initiate; cB-Sigma sends the 18 bits of ISO 9506:2003, so the two cannot associate in either direction.
  • Found by the new report checks: iec61850-rust's server enables a URCB only after the client wrote Resv (no implicit reservation; registered since v1.0 for the libiec61850 client, now seen with every client but dscsystems'), and iec61850bean's server announces data references in OptFlds without sending them.

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.4.0 sha256:5f865e1917f246763e992701c688a58d157d641ca91674e51bbc342ef945adad
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.4.0 sha256:df9b48b5f903ec55f7bcb7baabe651ae204c685702d77979e89165fad00c6416
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.4.0 (GPL-3.0) sha256:bba8bc1653b4c5bb51c4b8766f0bd99d77dd3523574ed2630b09695212618f2e
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.4.0 sha256:c961c039384b0ea968e786a259e1f7a3a4781f2b544ff50d794bd965e991314c
ghcr.io/otfabric/iec61850-interop-cbsigma:v1.4.0 sha256:bf0597703e7d1495ab3aa144d481bc92a0a4aef87a2bfafcbd75f7c1fbb4aa16

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:5f865e1917f246763e992701c688a58d157d641ca91674e51bbc342ef945adad
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:df9b48b5f903ec55f7bcb7baabe651ae204c685702d77979e89165fad00c6416
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:bba8bc1653b4c5bb51c4b8766f0bd99d77dd3523574ed2630b09695212618f2e
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:c961c039384b0ea968e786a259e1f7a3a4781f2b544ff50d794bd965e991314c
CBSIGMA_IMAGE=ghcr.io/otfabric/iec61850-interop-cbsigma@sha256:bf0597703e7d1495ab3aa144d481bc92a0a4aef87a2bfafcbd75f7c1fbb4aa16

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, cB-Sigma iec61850 and iec61850-sim tags, fixture revisions).

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 11:02
0a0db34

Date: 2026-11-06
Previous release: v1.2.0

Added

  • own/go-iec61850/: OT Fabric's own stack (go-iec61850 and the go-mms it is built on) behind the same contract, as adapter otfabric with the commands otfabric-mms-server, otfabric-mms-client, otfabric-ied-*, otfabric-goose-* and otfabric-sv-*. The manual workflow Own stack (go-iec61850) builds it from the latest go-iec61850 and go-mms releases, tests it against the reference images of the latest harness release and publishes ghcr.io/otfabric/iec61850-interop-otfabric:<go-iec61850 version> and :latest. It is not an independent implementation, and it is not in this release or its manifest.json (ADR-0012); results against it are at most "Tested".
  • Contract 1.2 (minor): --version and --capabilities may carry upstream (name, version, revision, license, independentEngine). The reference images do not, and are recorded as independent; results.json takes independent from what an image says of itself.
  • scripts/smoke.sh <adapter> (the contract smoke test of one image, driven by its --capabilities) and scripts/interop.sh <adapters…> (MMS and IED clients and servers of every adapter against the first in both directions, GOOSE and Sampled Values between every publisher and subscriber), make smoke, make interop, make lint, make print-adapters, ADAPTERS. Any image can stand in for an adapter with ADAPTER_IMAGE_<adapter>.

Changed

  • The layout follows the other harnesses: docs/contract.md is docs/CONTAINER_CONTRACT.md, COVERAGE.md is docs/CAPABILITIES.md, docker-compose.yml is compose.yaml; scripts/smoke-test.sh is split into scripts/lib.sh, scripts/smoke.sh and scripts/interop.sh. Each stack's clients now also run against its own server, and the hub's reporter and controller against every other stack's server. The root go.mod (no packages) is gone. The image names, commands and contract are unchanged.
  • CI runs shellcheck and the REQUIREMENTS.md R1 check (no reference to a library under test outside own/).

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.3.0 sha256:36256bf2fff44d46bf9df3f77bd3f41527f7c40bbc776b4f103db27086f8e1d8
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.3.0 sha256:7c9d84d098b4e985d5213335493092e419dd1fe221fa56fda28e778aeb16241c
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.3.0 (GPL-3.0) sha256:e98845163756609d789711e03a85f06f27518ff5022ec3bfa89669f9af5f2dbe
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.3.0 sha256:b3aacbdf75734729c0b8ca37cb704f97b6359d97368113d15488a0fef7ad8b39

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:36256bf2fff44d46bf9df3f77bd3f41527f7c40bbc776b4f103db27086f8e1d8
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:7c9d84d098b4e985d5213335493092e419dd1fe221fa56fda28e778aeb16241c
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:e98845163756609d789711e03a85f06f27518ff5022ec3bfa89669f9af5f2dbe
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:b3aacbdf75734729c0b8ca37cb704f97b6359d97368113d15488a0fef7ad8b39

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, fixture revisions).

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 18:05
4e045e2

Date: 2026-11-04
Previous release: v1.1.1

Added

  • *-ied-client --local-tsel HEX --remote-tsel HEX: the calling and called COTP T-selectors (1 to 4 octets in hex) for libiec61850, iec61850bean and iec61850-rust. Without them each stack sends its own defaults, now documented in docs/contract.md (libiec61850 and iec61850-rust 0001/0001, iec61850bean 0000/0001). Consumers use this to run independent clients with the selectors IEDs and engineering tools use (01, 0001, 00000001) against a server that accepts any selector or requires one. Motivated by otfabric/go-iec61850#28, where an IED refused a client that sent none. Contract 1.1 (a minor addition: new flags, old behaviour by default).
  • dscsystems: dscsystems/go-iec61850 cannot set the selectors, so its clients answer the flags with unsupported (exit 4), recorded as a known limitation.

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.2.0 sha256:0cf188313b2d7dc6c1a6233909c7ac147c3c27f212d1b233a158ec33f938e28e
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.2.0 sha256:33a4c4ab362ea5cdae5c26da7b5662e975164c6d030e3f1898c08a69017d8f14
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.2.0 (GPL-3.0) sha256:9de6f6005c988a0e22955af6e4a20216df4c65febab224c15eea9ea08c985102
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.2.0 sha256:a5e9a178127a7a6fb9ceda1095c74a4cfad91ecff181f15018e1dc024e3a8c59

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:0cf188313b2d7dc6c1a6233909c7ac147c3c27f212d1b233a158ec33f938e28e
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:33a4c4ab362ea5cdae5c26da7b5662e975164c6d030e3f1898c08a69017d8f14
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:9de6f6005c988a0e22955af6e4a20216df4c65febab224c15eea9ea08c985102
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:a5e9a178127a7a6fb9ceda1095c74a4cfad91ecff181f15018e1dc024e3a8c59

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, fixture revisions).

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 01 Nov 01:02

Date: 2026-11-01
Previous release: v1.1.0

Changed

  • The Release workflow can be run by hand from the Actions tab with a patch, minor or major bump. The adapters, the container contract and the fixtures do not change.

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.1.1 sha256:be48749244ff3a019e0a61062134ed0fa69225b93e86fe50dde085ac2ee9b356
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.1.1 sha256:e8d3327eb783d10ebe9e34773368470d4f0ddda3abe8492bf787874e6e08e898
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.1.1 (GPL-3.0) sha256:ea4b19da85ffcfb3fadd9ecd65cec3f5688763cdf950f0d16e5b239eb3b825f9
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.1.1 sha256:859fd8eced8cf57d97682b994994f85e125294341f302f307058575cf663e720

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:be48749244ff3a019e0a61062134ed0fa69225b93e86fe50dde085ac2ee9b356
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:e8d3327eb783d10ebe9e34773368470d4f0ddda3abe8492bf787874e6e08e898
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:ea4b19da85ffcfb3fadd9ecd65cec3f5688763cdf950f0d16e5b239eb3b825f9
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:859fd8eced8cf57d97682b994994f85e125294341f302f307058575cf663e720

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, fixture revisions).

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 11:41

Date: 2026-10-31
Previous release: v1.0.1

Fixed

  • dscsystems adapter: mmsjson.ToValue turned a non-string octet-string into an empty value; DataAccessError and ErrNotDeleted match when wrapped; Go floor 1.26.10.

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.1.0 sha256:0eea1e074fb72838987524f3c91c3be6bf9de5443fdde45086bccfaf81feef26
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.1.0 sha256:f757a79f2ec155b74b02951c8590e98671ffb46df2d2a966e1808337027603fa
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.1.0 (GPL-3.0) sha256:fdec082bf05cb6f98611a67d59786ca266790e3887bf4c51f5b3d61cc8e3af92
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.1.0 sha256:35290939925173a707788247809a5578e01ffca0536e2b9eeb51cd05fb4f81a3

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:0eea1e074fb72838987524f3c91c3be6bf9de5443fdde45086bccfaf81feef26
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:f757a79f2ec155b74b02951c8590e98671ffb46df2d2a966e1808337027603fa
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:fdec082bf05cb6f98611a67d59786ca266790e3887bf4c51f5b3d61cc8e3af92
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:35290939925173a707788247809a5578e01ffca0536e2b9eeb51cd05fb4f81a3

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, fixture revisions).

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 28 Oct 16:25
40dee2a

Date: 2026-10-28

Summary

Provenance fix. The release's manifest.json reported the adapter's own
Maven version (1.0.0) in its iec61850bean field; it now reports the
iec61850bean library version the image is built with (1.9.0). Images,
commands, events and fixtures are unchanged from v1.0.0.

Changes

Fixed

  • manifest.json iec61850bean is read from the com.beanit:iec61850bean dependency of adapters/iec61850bean/pom.xml, not from the first <version> in the file.
  • make ci prints the same version in its provenance block (it printed the POM modelVersion, 4.0.0).

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.0.1 sha256:c90b97fb41905983ad8e3db258aee03621348c53cbc50ac9d44dafb72df601e4
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.0.1 sha256:5545f059848ac19178fa934a5018c815978081af002ca7db6479d4bfd527e864
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.0.1 (GPL-3.0) sha256:9c9a48eb3608c75e45a359b7c4614eb1cd7c3da9197dfbc18710b87647d7cf67
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.0.1 sha256:77dc11a2580f784dcdb9f06f3420c0fe7cfa264e73bc881d6f2fe26bb79f6795

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:c90b97fb41905983ad8e3db258aee03621348c53cbc50ac9d44dafb72df601e4
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:5545f059848ac19178fa934a5018c815978081af002ca7db6479d4bfd527e864
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:9c9a48eb3608c75e45a359b7c4614eb1cd7c3da9197dfbc18710b87647d7cf67
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:77dc11a2580f784dcdb9f06f3420c0fe7cfa264e73bc881d6f2fe26bb79f6795

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, fixture revisions).

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 16:16
3565b1d

Date: 2026-10-28

Summary

The repository is renamed from mms-interop to iec61850-interop, since it
covers MMS, IEC 61850 IED services, GOOSE and Sampled Values, and the
adapter contract becomes stable. The adapters, commands, fixtures and event
shapes are those of v0.4.1; what changes is where they are published and the
promise that comes with them.

Breaking changes

  • Images move to new names. Pull ghcr.io/otfabric/iec61850-interop-<stack>
    instead of ghcr.io/otfabric/mms-interop-<stack>:
    • ghcr.io/otfabric/iec61850-interop-libiec61850
    • ghcr.io/otfabric/iec61850-interop-iec61850bean
    • ghcr.io/otfabric/iec61850-interop-dscsystems (GPL-3.0)
    • ghcr.io/otfabric/iec61850-interop-iec61850-rust
  • Local builds are tagged iec61850-interop-<stack>:local; the Compose
    project and the GOOSE/SV bridge network are iec61850-interop and
    iec61850-interop-goose.
  • The Go module paths are github.com/otfabric/iec61850-interop and
    github.com/otfabric/iec61850-interop/adapters/dscsystems; the Rust crate is
    iec61850-interop-iec61850-rust.
  • A fixture without identity.model now identifies as iec61850-interop
    (was mms-interop). fixtures/mms/interop.json sets the model, so the
    published images answer as before.

Unchanged, so consumers only swap the image references: the command names
(libiec61850-ied-server, ...), their flags and output, the consumer
environment variables (LIBIEC61850_IMAGE, IEC61850BEAN_IMAGE,
DSCSYSTEMS_IMAGE, IEC61850RUST_IMAGE), and the fixture revisions
mms-v2, iec61850-v3, goose-v1, sv-v1.

Compatibility promise

From v1.0.0 the repository follows semantic versioning. The image names,
command names and flags, event and operation shapes, exit codes, fixture
revisions, and the schemas of capabilities.json and manifest.json change
incompatibly only in a new major version. Minor versions add (commands,
optional fields, event types, fixture revisions next to the old ones); patch
versions fix adapters to match the contract and update known limitations.
Consumers ignore fields and events they do not know. The full statement is
in docs/contract.md.

Changes

Added

  • docs/contract.md: the shared adapter contract (ready, version and
    capabilities events, fixed-sequence client output, exit codes) and the
    stability promise; docs/goose.md and docs/sv.md refer to it.
  • A stack × capability matrix in README.md and COVERAGE.md, generated
    from fixtures/capabilities.json by scripts/gen-coverage.sh;
    --check mode runs in CI and in make validate-fixtures.
  • manifest.json gains repository and svFixture.
  • org.opencontainers.image.source and description labels on the
    libiec61850 and iec61850bean images (the other two had them), pointing at
    https://github.com/otfabric/iec61850-interop.

Changed

  • README rewritten around the four stacks and four profiles: capability
    matrix, image names and digest pinning, quick starts for MMS, IED, GOOSE
    and SV, L2 networking on Linux and macOS, licensing per image, consumer
    repositories.
  • capabilities.json adapterVersion is 1.0.0.

Adapter images

Image Digest
ghcr.io/otfabric/iec61850-interop-libiec61850:v1.0.0 sha256:b2a448fed4356f8e51ac1a535aa9e7dfd8b514ccbc255c035baef96d694e9066
ghcr.io/otfabric/iec61850-interop-iec61850bean:v1.0.0 sha256:d48c0684d65be03229d9fd65d20f7117cbc6b613ff73112a5402aee65f950ae8
ghcr.io/otfabric/iec61850-interop-dscsystems:v1.0.0 (GPL-3.0) sha256:851423aa967c19578b3fe82870546b93a3c0a3f7df38b287812b2a4d75334f37
ghcr.io/otfabric/iec61850-interop-iec61850-rust:v1.0.0 sha256:5c9cc78c8be9d955c3d6b50b0f464da9653dcf58ad3a2a1e9578d46f89d753fc

Pinning in consumer repositories

LIBIEC61850_IMAGE=ghcr.io/otfabric/iec61850-interop-libiec61850@sha256:b2a448fed4356f8e51ac1a535aa9e7dfd8b514ccbc255c035baef96d694e9066
IEC61850BEAN_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850bean@sha256:d48c0684d65be03229d9fd65d20f7117cbc6b613ff73112a5402aee65f950ae8
DSCSYSTEMS_IMAGE=ghcr.io/otfabric/iec61850-interop-dscsystems@sha256:851423aa967c19578b3fe82870546b93a3c0a3f7df38b287812b2a4d75334f37
IEC61850RUST_IMAGE=ghcr.io/otfabric/iec61850-interop-iec61850-rust@sha256:5c9cc78c8be9d955c3d6b50b0f464da9653dcf58ad3a2a1e9578d46f89d753fc

See manifest.json for full provenance (libiec61850 commit SHA, iec61850bean version, dscsystems/go-iec61850 and iec61850-rust commit SHAs, fixture revisions).