Skip to content

P4 #144: targeted RCB hot path and association-scoped static DataSet evidence - #147

Draft
masarray wants to merge 16 commits into
fix/144-smart-interop-p0from
perf/144-targeted-rcb-hotpath
Draft

masarray wants to merge 16 commits into
fix/144-smart-interop-p0from
perf/144-targeted-rcb-hotpath

Conversation

@masarray

@masarray masarray commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

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;
  • cache clears on every accepted MMS association;
  • availability diagnostics expose inventory/probed target counts, RCB logical read budget, DataSet network reads and cache hits.

Anti-naive boundaries

  • no vendor-name branching;
  • no global reduction of availability safety;
  • no cache of RptEna/Owner/Resv/ResvTms;
  • no cache across association boundaries;
  • 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.

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