Skip to content

P10: evidence-driven IED/LD identity and lossless SCL normalization - #160

Draft
masarray wants to merge 1 commit into
mainfrom
feat/p10-trusted-scl-ied-ld-identity
Draft

masarray wants to merge 1 commit into
mainfrom
feat/p10-trusted-scl-ied-ld-identity

Conversation

@masarray

Copy link
Copy Markdown
Owner

Problem

An Edition 1 single MMS domain BCUGEF650 cannot prove by itself where IED name ends and logical-device instance begins. Current heuristic properly falls back to host, but consumer SCL export can accidentally encode that provisional host ID as an authoritative IED identity.

Engine implementation

  • Add read-only TrustedSclIedIdentityMatcher.TryMatch: compare all observed MMS domains with actual SCL IED/AccessPoint/Server/LDevice effective domains (ldName where explicit; otherwise IED.name + inst). Require one unambiguous AP/IED topology and compatible configured IP if present; no vendor suffixes or hidden guesses.
  • Return verified confidence/evidence and exact mmsDomain → LDevice.inst mapping only after a full unique match. No network operations, SCL parsing is in-memory, no retries, polling, worker, or discovery overhead.
  • Extend authoritative export with optional VerifiedIdentity: fail closed on incomplete aliases, conflicts, or ambiguous identity; normalize IED.name, ConnectedAP.iedName, LDevice.inst/ldName, and dependent FCDA.ldInst together, then validate that every original MMS domain survives. Legacy export path unchanged unless verified evidence is explicitly provided.
  • Regression covers GE BCUGE/F650 Edition1, an explicit communication ldName, wrong IP/IED/domain, duplicate AP, unverified identity, and existing multi-domain OLSF501/OCR7SJ8 heuristics.

Boundaries

This is a separately qualified engine candidate; consumer pin remains immutable until validated. No native MMS receive/control/RCB changes, no automatic host-as-authoritative promotion, no vendor naming switch. Physical BCUGE Open SCL/Discovery round-trip must be verified before public release.

Copy link
Copy Markdown
Owner Author

Integration safety note (2026-10-11): this #160 is a separately tested MAIN-based P10 patch, not the ancestry used by ARSAS. P10 has now been integrated using the exact pinned Discovery line via PR #161 -> PR #157 at SHA 00ad281, preserving ~97 pre-existing engine commits. Do NOT replace ARSAS's immutable engine pin with this main-based #160 branch or merge this duplicate into that integration without a deliberate ancestry/content audit. Keep this PR as historical/reference candidate; real BCUGE physical round-trip and R10 mainline promotion remain pending.

This branch has not been deployed

No deployments
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