You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
P4 #144: targeted RCB hot path and association-scoped static DataSet evidence - #147
Stacked performance slice for #144. Base is fix/144-smart-interop-p0 (PR #145) so this work stays isolated from the active semantic/export and ARSAS packaging lanes.
Goal
Make runtime acquisition proportional to the selected signals/RCBs, not to the size of the IED.
Smart means less network work with stronger context, not more probing.
Changes
add exact TargetReportControlReferences to availability options;
broad diagnostic mode remains unchanged when no targets are supplied;
targeted mode never broadens a missing exact live RCB target to sibling/unrelated RCBs;
extract a pure target selector so family resolution/planning and network probing remain separate;
targeted availability uses a minimal structure-first probe:
one complete RCB structure read first;
exact RptEna leaf only if still unresolved;
DatSet leaf only if structure did not prove the binding;
Resv/ResvTms only if still unresolved;
Owner only when the live RCB exposes it;
broad availability retains the full diagnostic attribute probe;
successful non-deletable DataSet directories are cached for the current MMS association only;
dynamic/deletable or unknown-mutability DataSets are never cached;
no family-name guessing in the network probe layer;
no fixed sleeps;
no full-RCB inventory scan when exact live targets are supplied.
Regression
Pure selector tests prove:
empty target set preserves broad mode;
exact targets select only requested live RCBs;
missing target is not broadened to a sibling RCB;
hard MaxReportControls still applies.
Consumer plan
ARSAS #446 should eventually pass only concrete live RCB references produced by canonical static coverage + RCB family resolution. The ARSAS engine lock is intentionally untouched here because active PR #425 currently owns that integration surface.
Canonical-to-live target resolution
This slice now also keeps target selection inside ARIEC61850 rather than forcing ARSAS to reproduce IEC 61850 semantics:
CanonicalLiveModelAdapter.FromSclWorkspace(...) gives Open-SCL a source-correct canonical ingress instead of relabeling the SCL design model as live discovery;
MmsCanonicalStaticRcbTargetResolver resolves canonical covered DataSets to concrete live RCB references using only exact configured-reference identity or exact live DatSet binding + BRCB/URCB family;
indexed/sibling RCB names are never fabricated;
unresolved segments remain unresolved and may explicitly fall back to a broader diagnostic search;
tests lock exact DataSet targeting, BRCB/URCB family isolation, exact-reference fallback, and no name-family guessing.
Staging PR reconciliation (2026-10-22): functional scope superseded by newer staging implementation, not Git ancestry and NOT verbatim branch merge. Original SHA 0891949275b6d74d8958af04295708a17cbf0136 still has some different source commits, so do not equate this closure with byte-identical whole-branch incorporation.
Evidence: MmsRcbAvailabilityTargetSelector.cs and MmsRcbAvailabilityTargetSelectorTests.cs have byte-identical Git blobs in staging; staged exact-target read path and association-scoped configured static cache are present.
Staging SHA 44ac7554f43f2ba06763f3895242cb569b2e6a1c passed Windows synthetic-merge CI #39782663272, 1,262/1,262 tests, 0 warnings/errors. Closing outdated stacked PR to leave one release lane: staging→main #192, still DRAFT with FAT/consumer gates. Source branch remains available; reopen if later field evidence reveals a missing behavior. No ARSAS repin or mainline merge.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked performance slice for #144. Base is
fix/144-smart-interop-p0(PR #145) so this work stays isolated from the active semantic/export and ARSAS packaging lanes.Goal
Make runtime acquisition proportional to the selected signals/RCBs, not to the size of the IED.
Smart means less network work with stronger context, not more probing.
Changes
TargetReportControlReferencesto availability options;Anti-naive boundaries
Regression
Pure selector tests prove:
Consumer plan
ARSAS #446 should eventually pass only concrete live RCB references produced by canonical static coverage + RCB family resolution. The ARSAS engine lock is intentionally untouched here because active PR #425 currently owns that integration surface.
Canonical-to-live target resolution
This slice now also keeps target selection inside ARIEC61850 rather than forcing ARSAS to reproduce IEC 61850 semantics:
CanonicalLiveModelAdapter.FromSclWorkspace(...)gives Open-SCL a source-correct canonical ingress instead of relabeling the SCL design model as live discovery;MmsCanonicalStaticRcbTargetResolverresolves canonical covered DataSets to concrete live RCB references using only exact configured-reference identity or exact live DatSet binding + BRCB/URCB family;