Skip to content

Integrate Publisher and ArSubsv with sibling ARIEC61850 engine#51

Draft
masarray wants to merge 61 commits into
mainfrom
agent/ariec-sibling-integration
Draft

Integrate Publisher and ArSubsv with sibling ARIEC61850 engine#51
masarray wants to merge 61 commits into
mainfrom
agent/ariec-sibling-integration

Conversation

@masarray

@masarray masarray commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Purpose

Remove the embedded IEC 61850 engine from the active ARSVIN application graph so ARSVIN Publisher and ArSubsv Subscriber develop against one managed source of truth: masarray/ARIEC61850.

This draft supersedes the standalone engine placement in draft PR #50 and is paired with ARIEC61850 draft PR #45. Neither PR is merged.

Architecture change

Publisher, Subscriber, and ARSVIN.Tests now reference the sibling projects:

  • ARIEC61850/src/AR.Iec61850/AR.Iec61850.csproj
  • ARIEC61850/src/AR.Iec61850.Transports.Npcap/AR.Iec61850.Transports.Npcap.csproj

The embedded src/ARSVIN.Engine project is removed from the active solution and active ProjectReferences. Remaining source in that directory is inactive migration material only.

Reproducible paired-engine pin

The exact engine revision is stored in:

engines/ARIEC61850.lock.json

Current pin:

repository: masarray/ARIEC61850
ref: agent/sv-core-unification
commit: fcc05de1f4b11560195e2589aa032e1d4c4b95f7
paired PR: #45

CI, CodeQL, local paired validation, build automation, packaging, release provenance, and SBOM processing resolve and verify this 40-character SHA. A moving branch name is no longer the build identity.

Governance

  • engine-ownership validation blocks active references to ARSVIN.Engine
  • reusable AR.Iec61850.* namespaces cannot be reintroduced in Publisher or Subscriber folders
  • build.ps1 fails on a sibling-engine commit mismatch
  • scripts/test-paired-engine.ps1 runs engine tests, paired application build/tests, and integration coverage gates
  • build evidence records expected and actual engine commits
  • release packages and CycloneDX SBOM record both application and engine provenance

Generic SV direction

  • generic raw seqOfData inspection without invented channel semantics
  • optional SCL-driven ordered mapping
  • no engineering scaling without evidence
  • UNKNOWN configuration or measurement context is not automatically BAD
  • no ABB, Siemens, SEL, MAC OUI, APPID, svID, or amplitude-based decoder selection

Compatibility issues found and fixed during pairing

  • MacAddress now compares address octets by value rather than backing-array reference
  • stale ARSVIN quality test corrected to IEC validity encoding 01b=Invalid
  • Publisher evidence report heading and explicit TX-side safety boundary preserved
  • whole-engine integration coverage is no longer diluted merely because ARIEC61850 grows; ARSVIN now gates exercised production lines plus the application-consumed protocol-core percentage

Validation at head 85e2c02f29a20447b23c297dbbc70a917cdee49e

Paired CI run 291 — passed

  • licensing, provenance, public wording, and ownership validation
  • exact pinned-engine checkout verification
  • public site build and validation
  • solution restore
  • Publisher warnings-as-errors build
  • Subscriber warnings-as-errors build
  • 133/133 ARSVIN tests passed
  • integration coverage passed:
    • 3,061 engine production lines exercised by ARSVIN
    • 2,316 of 3,057 selected protocol-core lines covered
    • protocol-core line coverage approximately 75.76%, above the 72.5% floor
  • Publisher and Subscriber vulnerability reports passed

CodeQL run 296 — passed

The pinned paired solution restored, built with warnings as errors, and completed CodeQL analysis successfully.

Windows release validation run 207 — passed

  • paired build and tests
  • Publisher single-file EXE
  • ArSubsv single-file EXE
  • Windows installer
  • CycloneDX SBOM
  • release artifact validation
  • silent install/uninstall smoke test
  • SHA-256 checksum generation

The GitHub Release publication job was skipped because this is an unmerged PR, not a release tag.

Public site run 107 — passed

Documentation and product website validation passed; deployment was skipped for the PR.

Local test procedure

Expected layout:

C:\Git\
├── ARIEC61850\
└── arsvin\
git -C C:\Git\ARIEC61850 fetch origin fcc05de1f4b11560195e2589aa032e1d4c4b95f7
git -C C:\Git\ARIEC61850 checkout --detach fcc05de1f4b11560195e2589aa032e1d4c4b95f7

git -C C:\Git\arsvin switch agent/ariec-sibling-integration
cd C:\Git\arsvin
.\scripts\test-paired-engine.ps1

Remaining before merge

  • local Publisher → PCAP → ArSubsv end-to-end test
  • no-SCL generic raw fallback review
  • matching-SCL ordered mapping review
  • nofASDU=1 and multi-ASDU replay
  • known-injection scaling/RMS/phasor comparison
  • authorized isolated live capture/transmit test
  • regenerate and lock the final NuGet dependency graph after both reviewed revisions are frozen
  • delete the remaining inactive embedded-engine files in controlled migration tranches

This PR intentionally remains draft and unmerged for local validation.

masarray added 30 commits July 22, 2026 16:19
masarray added 30 commits July 23, 2026 09:30
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