Skip to content

P7.3 #446: prove Discovery/Open-SCL static acquisition parity - #471

Draft
masarray wants to merge 16 commits into
fix/446-p7-2-association-lifecyclefrom
feat/446-p7-3-static-ingress-parity-proof
Draft

masarray wants to merge 16 commits into
fix/446-p7-2-association-lifecyclefrom
feat/446-p7-3-static-ingress-parity-proof

Conversation

@masarray

@masarray masarray commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Stacked qualification milestone for #446, based on green P7.2 PR #466.

Goal

Turn the next physical retest into an explicit ingress-equivalence proof instead of relying on log interpretation.

Discovery and Open SCL are two bootstrap paths to the same IED. Once ARIEC has produced the configured-static acquisition plan, ARSAS now records a source-neutral semantic fingerprint and compares both ingress paths on the same logical IED.

Fingerprint authority

The semantic fingerprint includes:

  • requested/catalog-mapped/uncovered counts;
  • Static BRCB/URCB classification;
  • exact DataSet identity;
  • full ordered DataSet member identity + FC;
  • selected runtime signal identity + FC.

Concrete live RCB slot names such as Rpt_ind01 vs Rpt_ind02 are excluded from the parity fingerprint because association ownership can legitimately select another indexed instance. Concrete slots are retained separately as runtime diagnostics.

Runtime behavior

  • first Static DataSet run from either ingress records evidence and reports AWAITING PEER INGRESS;
  • running the other ingress on the same logical IED compares fingerprints:
    • MATCH = source-neutral static semantics converge;
    • MISMATCH = explicit Discovery-only/Open-SCL-only semantic lines are logged;
  • reconnecting the same ingress replaces that ingress evidence rather than creating false multi-session drift;
  • no reporting/RCB activation behavior is changed.

Diagnostics

Copy Diagnostic now includes:

  • Discovery semantic fingerprint;
  • Open-SCL semantic fingerprint;
  • parity status;
  • concrete live RCB targets for each run;
  • bounded semantic differences when mismatched.

Emergency diagnostics also preserve the parity summary.

Regression

Tests prove:

  • Rpt_ind01 -> Rpt_ind02 does not change semantic fingerprint;
  • ordered DataSet member drift does change the fingerprint and reports a mismatch;
  • one logical IED can retain both ingress evidences;
  • runtime/diagnostic integration does not use concrete RCB instance identity as the semantic parity key.

Physical 7SX85 retest remains required. Expected sequence: run Static DataSet from Discovery, then open the same SCD and run Static DataSet again; Diagnostics should report MATCH while allowing a different free indexed RCB slot.

masarray commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

P7.3 follow-up audit (exact head e95cbd68c0bc21bc1c85c29861a1cd3f656bce72): initial CI #3543/#569 failed on one overbroad source regression guard; 1,337 other tests passed. The guard was repaired to check the actual hash boundary rather than prohibiting legitimate concrete RCB names in diagnostic-only runtimeTargets. Additional fail-closed parity checks now require authoritative planning, selected points, nonempty static plans, complete ordered DataSet membership and selected bindings before an equal hash can produce MATCH. New INCOMPLETE EVIDENCE diagnostics cover empty plans, missing datasets and stale successes following a failed re-plan. Core ARIEC61850/RCB/GI/no-MMS-polling behavior is unchanged. Four commits applied on the same P7.3 branch. Fresh CI: Build #3546 and Field Capture #572 (pending at this comment). Physical 7SX85 Discovery→Open SCD proof still required; do not promote the CodeVerified engine trial or merge this stacked branch to main based on CI alone.

masarray commented Oct 8, 2026

Copy link
Copy Markdown
Owner Author

Additional exact-head audit: 389a6353756cb30f5f6550e4649a00391dc89242. The previously green-looking ordered-member-drift test was not a genuine SCL vs Discovery comparison because its Open-SCL fixture had no SclWorkspace model; corrected that fixture. Also repaired inherited .github/workflows/scl-interoperability-r7.yml: the branch had a cut-off PowerShell engine-provenance block plus ~269 duplicated malformed YAML lines, causing 0-job workflow failures. The workflow is now scheduled as real SCL Interoperability R7 Build #270 and retains explicit R7/R10 physical baseline + trial CodeVerified-only provenance checks. Exact-head Build #3549, Field Capture #575 and R7 #270 are still active as of this comment. No engine change, no mainline promotion; physical device parity test remains mandatory.

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