Skip to content

fix: show static DataSet GGIO members for Open SCL and discovery - #181

Merged
masarray merged 4 commits into
mainfrom
fix/dataset-ggio-signal-selection
Aug 15, 2026
Merged

fix: show static DataSet GGIO members for Open SCL and discovery#181
masarray merged 4 commits into
mainfrom
fix/dataset-ggio-signal-selection

Conversation

@masarray

Copy link
Copy Markdown
Owner

Problem

Signal Selection can omit static DataSet members, especially Siemens object-level FCD members such as GGIO status points. The live-discovery path already has engine-side mandatory DataSet inventory support, but the offline Open SCL mapper still filtered unresolved FCDs before they reached the selector.

The supplied Siemens CID pattern uses object-level FCDA entries (daName=""), so members like GGIO6.CBOpnd, GGIO6.CBClsd, GGIO2.TCS1Fail, GGIO2.ComFail, GGIO2.FWUpdated, and GGIO1.LocOpnCMDsta must remain visible even when a unique primary leaf is not yet resolved.

Fix

  • share the ARIEC-authoritative mandatory DataSet merge between device/live inventory and arbitrary signal collections;
  • in SclWorkspaceSignalMapper, apply normal operational filtering first, then merge the mandatory DataSet inventory so unresolved object-level FCD members cannot be filtered out;
  • preserve explicit SCL design provenance on recovered offline rows;
  • add regression coverage for realistic Siemens-style GGIO DataSet members in the Open SCL mapper.

Design constraint

This does not guess .stVal from FC=ST. If ARIEC cannot resolve a unique primary DataAttribute, ARSAS preserves the original DataSet member as an unresolved DataSet row. Engine type/VAA/SCL semantics remain authoritative.

Expected result

Signal Selection should contain every static DataSet member for both paths:

  1. Open SCL/CID: mandatory members are merged directly from workspace.DesignModel.
  2. IP discovery: the same service continues to merge mandatory members from device.LiveDiscoveryModel.

No user selection is auto-enabled by this change.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Copy link
Copy Markdown
Owner Author

Hardening added after the functional fix: SignalCatalogCompletenessContractTests now treats every static IEC 61850 DataSet member as non-droppable inventory evidence. The contract covers Open SCL and IP discovery, includes a Siemens-like 58/58 FCD inventory, and includes unknown vendor object names so future presentation-policy changes cannot silently remove them from Signal Selection. User selection remains independent; unresolved members remain visible rather than fabricating a leaf.

@masarray
masarray merged commit acd88ef into main Aug 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant