Fix IO FAT live binding and relay fascia - #137
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d99fb10dc9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| var lastSlash = normalized.LastIndexOf('/'); | ||
| if (lastSlash >= 0 && lastSlash < normalized.Length - 1) | ||
| return normalized[(lastSlash + 1)..].TrimStart('/'); |
There was a problem hiding this comment.
Preserve logical-device identity during normalization
When an import references ADD/GGIO1.LocOpnCMDsta.stVal but discovery contains only CTRL/GGIO1.LocOpnCMDsta.stVal, this strips both references to the same leaf. Since both binding services accept a single normalized candidate, they will select the CTRL signal instead of reporting the missing ADD signal, allowing FAT evidence to be captured from the wrong logical device. Preserve or explicitly map the logical-device components rather than dropping everything before the final slash.
Useful? React with 👍 / 👎.
| SourceIecReference = "ADD/GGIO1.LocOpnCMDsta", | ||
| EventLogSearchReference = "ADD/GGIO1.LocOpnCMDsta", |
There was a problem hiding this comment.
Avoid exact references in normalized-fallback fixtures
These fixture fields cause ImportedReferences to append .stVal and produce the exact reference ADD/GGIO1.LocOpnCMDsta.stVal. Consequently, the canonical-domain test returns BoundExact before reaching normalization, and the two-logical-device test likewise binds the single exact ADD candidate rather than reporting ambiguity, so both new assertions fail whenever this test class runs. Remove the exact synthesized reference or update the scenarios and expectations to reflect exact-match precedence.
Useful? React with 👍 / 👎.
|
Closing as superseded rather than merging an old FAT implementation into the current release line. The original goals are now covered by newer, validated work:
Current |
Problem
IO List FAT can complete MMS discovery/association but still abort before monitoring because imported references such as
AA1C1F13R4Application/ADD/GGIO1.LocOpnCMDsta.stValdo not match discovery variants that expose the same leaf through a different logical-device/display wrapper. The current FAT IED cards also still present the legacy relay visual rather than the current relay fascia image.Safety direction
This PR does not weaken the FAT acquisition guard. Exact IEC 61850 references remain first priority. Wrapper-normalized matching is accepted only when one unique non-control signal matches the same LN/DO/DA tail and required functional constraint. Duplicate tails across Logical Devices remain ambiguous and block automatic acquisition.
Implemented so far
Application/ADD/...and live discovery wrapper variants in the secondary FAT binding path.ADD/GGIO1.LocOpnCMDsta.stVal.Follow-up in this PR
Invariant
A FAT session may recover from harmless display/domain wrapper differences, but it must never guess between multiple IEC 61850 objects or cross a functional constraint.