Repository navigation
P3: wire trusted SCL-assisted connect into Workbench product path #88
Description
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:
MmsClientControllerhastrustedSclPath/trustedSclAvailable.- trusted path invokes
session->synchronize_scl(...). MmsSclClientProjection.hppbuilds the Workbench model from SCL and initial snapshot evidence.Main.qmlarms the path only aftersclWorkspace.loadedsucceeds.- model source is recorded as
Trusted SCL + initial snapshotversusLive 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
masarray commentedon Sep 14, 2026
P3 implementation checkpoint
Current implementation head:
cec9ba9eea184482f6a7a8143868c53fa611d126.P3 product behavior now has an explicit regression gate:
ebca7a66...— addsied_mms_scl_assisted_workbench_qa.cppcovering 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...— dedicatedSCL-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.