Skip to content

Integrate Publisher and ArSubsv with sibling ARIEC61850 engine - #51

Merged
masarray merged 62 commits into
mainfrom
agent/ariec-sibling-integration
Jul 27, 2026
Merged

Integrate Publisher and ArSubsv with sibling ARIEC61850 engine#51
masarray merged 62 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 Publisher and ArSubsv Subscriber use one managed source of truth: masarray/ARIEC61850.

Architecture

Publisher, Subscriber, and ARSVIN.Tests reference the sibling engine projects. Active solution and ProjectReferences no longer use the embedded ARSVIN.Engine implementation.

Reproducible engine pin

engines/ARIEC61850.lock.json points to the merged engine revision:

repository: masarray/ARIEC61850
ref: main
commit: 0f8453182957900bc6d91287fb8177c8d9762188
source PR: masarray/ARIEC61850#45 (merged)

CI, CodeQL, paired validation, packaging, release provenance, and SBOM processing verify the exact 40-character commit.

Governance

  • active references to ARSVIN.Engine are blocked
  • reusable AR.Iec61850.* namespaces cannot be reintroduced in application folders
  • local and CI builds reject engine-pin mismatches
  • release evidence and SBOM record application and engine provenance

Generic SV boundary

  • raw seqOfData remains generic until ordered SCL or reviewed context resolves semantics
  • no engineering scaling without evidence
  • unknown configuration is not automatically classified as bad
  • manufacturer identity, MAC OUI, APPID, svID, or amplitude never selects decoding behavior

Final validation

Final head a74a62a3b266c0ded15f963d5dd780e7976dd491 passed against the merged-main engine pin:

  • CI run 292 — success
  • CodeQL run 298 — success
  • Windows release run 208 — success
  • public-site run 108 — success
  • paired restore/build/tests and coverage gates
  • Publisher and Subscriber vulnerability checks
  • portable EXEs, installer, SBOM, release validation, silent installer smoke test, and SHA-256 generation

No unresolved review thread remains.

Post-merge acceptance boundary

Live/PCAP and known-injection tests remain required before calibrated, formal-conformance, or universal-interoperability claims are made:

  • Publisher → PCAP → Subscriber replay
  • no-SCL raw fallback review
  • matching-SCL ordered mapping
  • nofASDU=1 and multi-ASDU replay
  • known-injection scaling/RMS/phasor comparison
  • authorized isolated live capture/transmit test

These tests remain an explicit field acceptance gate, not an automated claim.

masarray added 30 commits July 22, 2026 16:19
masarray added 25 commits July 23, 2026 09:40
@masarray
masarray marked this pull request as ready for review July 27, 2026 07:33
@masarray
masarray merged commit 02ae82f into main Jul 27, 2026
8 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a74a62a3b2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +73 to +76
GenericWaveformState = _values.Count == 0
? "Waiting for seqOfData"
: "Raw words available · import SCL before semantic waveform and phasor analysis";
_genericValues.ReplaceAll(BuildGenericRows(_values));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Feed raw payloads into the generic explorer

When an unbound ASDU has a payload that is not one of the fixed pair counts accepted by TryDecodeAutoPayload (or is merely 4-byte-aligned rather than 8-byte-aligned), that method leaves snapshot.Values empty, so this code passes an empty _values collection to BuildGenericRows and displays “Waiting for seqOfData” even though payload bytes were received. Consequently, the new generic explorer cannot perform its core no-SCL fallback for arbitrary SV datasets or preserve trailing bytes; carry the engine's raw payload inspection result through the runtime snapshot instead of deriving it from the legacy semantic rows.

AGENTS.md reference: AGENTS.md:L14-L16

Useful? React with 👍 / 👎.

Comment thread Directory.Build.props
can refresh dependency assets. Lock files will be regenerated after the paired branches
are accepted and pinned to reviewed commits.
-->
<RestoreLockedMode>false</RestoreLockedMode>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep CI and release restores locked

With RestoreLockedMode unconditionally disabled, a missing or stale committed package lock no longer fails CI or the release workflow: the initial restore can rewrite the lock, and the later coverage command's locked restore only validates that newly refreshed file. The dependency artifact uploaded by CI may therefore be generated rather than the reviewed lock state, and a tagged build can package a dependency graph different from the repository evidence; retain unlocked restore only for an explicit maintenance operation and enforce locked mode for CI/release builds.

AGENTS.md reference: AGENTS.md:L10-L10

Useful? React with 👍 / 👎.

Comment on lines +16 to +18
ARIEC61850 ref: agent/sv-core-unification
ARIEC61850 commit: 143e6ca69986cd553405eec883a9928cdfda9367
ARIEC61850 PR: #45

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Point integration instructions at the committed engine pin

The newly added integration guide identifies agent/sv-core-unification at 143e6ca... as the current pairing, while the committed lock file pins main at 0f845318...; the clone commands below repeat the stale SHA and an obsolete ARSVIN branch. Following these packaged public instructions produces an engine checkout that build.ps1 immediately rejects as a pin mismatch, so the examples and pairing table should be generated from or updated to the lock file.

AGENTS.md reference: AGENTS.md:L11-L11

Useful? React with 👍 / 👎.

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