Skip to content

P3: wire trusted SCL-assisted connect into Workbench product path #88

Open

Description

@masarray

2026-10-23 cleanup: corrected historical #82 status

Original PR #82 is now CLOSED/MERGED into feat/complete-ariec61850-simulator-parity, not an OPEN Draft and not automatically main-integrated. Keep this P3 Workbench product issue OPEN: final accepted-head UI selection of trusted SCL vs live discovery, exact FC-root value/FC/type mapping, fail-closed reconnect/generation/source conflict, no duplicate polling, Qt/Windows CI and authorized real IED field evidence remain distinct. The phrase PR #82 stays OPEN + DRAFT below is obsolete. #85 owns underlying core MMS wire mapping; #88 owns user-visible Workbench behavior and must not be closed as #85 duplicate. Source/feature branch preserved.

Goal

Make the already-implemented trusted-SCL MMS path a real Workbench product behavior, not only a core API.

P3 starts after P2's MmsTcpLiveDiscoverySession::synchronize_scl(...) contract. The application must deterministically choose the online model source and surface failures without silently changing model identity.

Product contract

Trusted SCL loaded

  • A successfully loaded SCL/CID arms MmsClientController::trustedSclPath.
  • Connect parses that exact engineering source, associates to the requested endpoint, and invokes synchronize_scl(...).
  • Workbench tree topology/types come from the trusted SCL projection.
  • Initial successful FC-root values are applied to their exact SCL leaves.
  • Missing/failed FC roots do not delete SCL topology and do not shift values onto neighbouring leaves.
  • The same MMS association remains usable by normal Read/Write/report workflows after the initial snapshot.
  • Full NamedVariable/GVAA/DataSet discovery must not run silently on this path.

No trusted SCL loaded

  • Connect uses the existing full live-discovery path.
  • Clearing the trusted SCL source is the explicit user-controlled fallback from SCL-assisted mode to live discovery.

Invalid trusted SCL

  • Fail closed and expose the error.
  • Do not silently fall back to a different online model while an engineering source is explicitly armed.

Current implementation

Already present on PR #82 before this issue was opened:

  • MmsClientController has trustedSclPath / trustedSclAvailable.
  • trusted path invokes session->synchronize_scl(...).
  • MmsSclClientProjection.hpp builds the Workbench model from SCL and initial snapshot evidence.
  • Main.qml arms the path only after sclWorkspace.loaded succeeds.
  • model source is recorded as Trusted SCL + initial snapshot versus Live MMS discovery.

P3 hardening added in this work:

  • dedicated runtime QA ied_mms_scl_assisted_workbench_qa.cpp;
  • standalone exact-product build gate under apps/ied_simulator/tests/scl_assisted_workbench;
  • dedicated SCL-Assisted Workbench CI.

Acceptance gates

  • Dedicated P3 Workbench QA passes using tests/fixtures/scl/client-workbench.scd.
  • It proves initial SP value mapping, preservation of an unavailable SCL-declared ST root, persistent association, explicit clear-SCL fallback, and invalid-SCL fail-closed behavior.
  • Existing IED Simulator Qt, SCL-Assisted Connect CI, C++ CI and Release Hardening stay green.
  • Retained Embedded Profile regression must also be green before P3 is considered internally complete.
  • PR feat: lightweight IEC 61850 engineering simulator workspace #82 stays OPEN + DRAFT.
  • External vendor external IEC 61850 client claims remain separately gated by real-client evidence; this issue does not close that gate.

Consolidated acceptance inherited from #87 (issue cleanup 2026-10-23)

Issue #87 covered the same trusted SCL → existing MMS association → bounded initial FC-root snapshot → Workbench IED Connection product flow. #87 is closed as duplicate tracking only, not as completion of these checks. This canonical P3 issue retains all #87 requirements, including points not explicit above:

  • Online Domain inventory is validated against SCL; preserve missing/extra-domain diagnostics while keeping trusted SCL identity immutable.
  • Production IED Connection shows exact SCL LD/LN/DO/DA counts, FC/type metadata and correct FC-root-to-leaf value mapping; unavailable roots never shift sibling values.
  • Source provenance is explicitly visible in the UI/diagnostics as trusted SCL + snapshot versus full online discovery.
  • Existing no-SCL full-discovery path and MMS association for Read/Write/report are retained; invalid trusted SCL never silently falls back.
  • QA must verify strict-warning Qt build, no GVAA/full-dataset discovery on trusted mode, stale-session/reconnect generation fences, missing/extra domains and Windows Release Hardening from the same final code SHA.
  • External target-client interoperability remains a separate field gate. Neither closure of P3: integrate trusted-SCL initial snapshot into IED Connection workspace #87 nor synthetic QA certifies it.

Original scope: #87.

Activity

  1. masarray commented on Sep 14, 2026

    @masarray
    OwnerAuthor

    P3 implementation checkpoint

    Current implementation head: cec9ba9eea184482f6a7a8143868c53fa611d126.

    P3 product behavior now has an explicit regression gate:

    • ebca7a66... — adds ied_mms_scl_assisted_workbench_qa.cpp covering trusted-SCL selection, initial snapshot projection, unavailable FC preservation, persistent association, explicit clear-SCL fallback, and invalid-SCL fail-closed behavior.
    • 3a0ec060... — standalone product-graph build for the P3 QA.
    • 392fecd9... — dedicated SCL-Assisted Workbench CI.

    Retained Embedded Profile failure was traced independently of P3. The registered RCB-root smoke used BRCB OptFlds={0x5C,0x80} while the embedded BRCB runtime requires the EntryID option bit for retention/replay. cec9ba9e... corrects only that fixture to {0x5D,0x80}; no dispatcher/BRCB runtime behavior was changed.

    Exact-head CI is currently queued. Keep this issue OPEN until the P3 Workbench gate, Embedded Profile, IED Simulator Qt and Release Hardening complete successfully. External vendor external IEC 61850 client acceptance remains separate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions