Skip to content

scl: patch CB counter only in saved SCL from proven 0d0b baseline - #344

Closed
masarray wants to merge 3 commits into
baseline/p0.7-finishing-0d0bfrom
fix/scl-export-parity-from-0d0b-p0
Closed

masarray wants to merge 3 commits into
baseline/p0.7-finishing-0d0bfrom
fix/scl-export-parity-from-0d0b-p0

Conversation

@masarray

Copy link
Copy Markdown
Owner

Proven base — do not move

This PR is based directly on the physically accepted ARSAS finishing commit:

0d0b9204d6637e3d62e2eee94000386ae43cd0e9

The engine lock remains exactly:

648124097621046f5f127ceb1cf853fea54db730 (PR #135)

This is the same ARSAS/engine pair used by SCL Interoperability R7 Build #176, artifact 10599133416.

Scope

Correct one known SCL semantic mismatch after canonical serialization and before canonical reload validation:

MPLS_GGIO1.CBClsCounter

Saved SCL target:

  • CDC = INS
  • stVal bType = INT32

The live discovery/runtime model is not changed.

Runtime freeze

Diff from 0d0b9204... is exactly:

  • MainWindow.xaml.cs: one Save-SCL hook (+12 lines)
  • Services/SclExportSemanticParityPatch.cs: output-only XML patch
  • tests/ARSAS.Tests/SclExportSemanticParityPatchTests.cs: regressions

No changes to:

  • engines/ARIEC61850.lock.json
  • discovery
  • MMS/ACSE/OSI
  • Static DataSet inventory/projection
  • RCB planning/activation
  • report decode/projection
  • monitor runtime
  • Event Log/live formatting
  • FAT evidence/report formatting

Safety

The patch is applied only when the live model contains the exact physical-reference object .../MPLS_GGIO1.CBClsCounter.

If the generated SCL cannot resolve that exact LN/DO/DOType/stVal shape, Save SCL fails closed instead of silently producing a guessed SCL.

If a future exporter shares the DOType with another object, the patch clones the DOType and repoints only CBClsCounter.

A non-integer saved instance Val is removed rather than converted/guessed.

Canonical reload validation runs after the patch.

Acceptance

First physical gate is unchanged runtime:

  • accepted discovery performance/path
  • 58/58
  • Analog 22 / Digital 36
  • report-backed 58
  • actual InformationReport
  • cyclic MMS polling 0
  • existing DP/B presentation and FAT vocabulary unchanged

Only after runtime passes:

  • Save SCL while monitoring
  • CBClsCounter exported as INS/INT32
  • reopen SCL
  • 58-row report-backed workflow remains intact.

Copy link
Copy Markdown
Owner Author

Exact-good-base candidate built

This PR is now validated with the same R7 workflow recipe that produced the previously accepted artifact.

Proven base:

  • ARSAS base: 0d0b9204d6637e3d62e2eee94000386ae43cd0e9
  • ARIEC61850: 648124097621046f5f127ceb1cf853fea54db730
  • original good R7 run Fix live reporting pipeline and release 1.6.30 #176 artifact: 10599133416
  • original good EXE SHA256: c1163767b0f9c3c5b69739318560930de33dfbf36d5768ba6ee751f0a43e1282

New candidate:

Diff from the exact good ARSAS base is still only:

  1. MainWindow.xaml.cs: +12 lines in the Save-SCL path;
  2. Services/SclExportSemanticParityPatch.cs;
  3. tests/ARSAS.Tests/SclExportSemanticParityPatchTests.cs.

No engine-lock change and no discovery/report/runtime source change.

Physical test order: prove runtime parity first. Do not evaluate Save SCL until discovery/reporting is back at the accepted 58/58 + 58 report-backed baseline.

Copy link
Copy Markdown
Owner Author

Superseded by main promotion PR #345. The exact candidate tree was merged to main as 4305f11 and post-merge production/build verification passed. Keeping #344 open is no longer useful.

@masarray masarray closed this Sep 20, 2026
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