Skip to content

Compile Publisher, Subscriber, and tests against one shared engine#18

Merged
masarray merged 8 commits into
mainfrom
agent/shared-engine-assembly
Jul 12, 2026
Merged

Compile Publisher, Subscriber, and tests against one shared engine#18
masarray merged 8 commits into
mainfrom
agent/shared-engine-assembly

Conversation

@masarray

@masarray masarray commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Purpose

Remove the largest remaining architecture risk identified in the repository audit: Publisher, Subscriber, and Tests previously compiled separate copies of the IEC 61850 source.

Changes

  • Add src/ARSVIN.Engine/ARSVIN.Engine.csproj as the single shared protocol assembly.
  • Compile the existing IEC 61850 source exactly once through the new engine project.
  • Reference ARSVIN.Engine from Publisher and remove Publisher's implicit duplicate engine compilation.
  • Replace Subscriber's wildcard linked-source compilation with a project reference.
  • Replace the test project's individual linked production files with a project reference.
  • Preserve current internal API compatibility through explicit InternalsVisibleTo declarations for Publisher, Subscriber, and Tests.
  • Add the engine project to ARSVIN.sln.
  • Instrument the complete shared engine while retaining a 50% regression floor over the established protocol-core test surface.
  • Report whole-engine coverage separately so untested engine areas remain visible rather than excluded.
  • Update the changelog to record the shared-assembly transition.

Why

The old structure could compile the same protocol source into multiple assemblies with different compiler context, dependencies, and internal visibility. Tests also did not execute the exact production assembly shipped with the applications. The new structure creates one source of compiled protocol behavior and makes test coverage represent the shipped engine.

Validation completed

  • Public-site validation: success.
  • Publisher warning-free build against ARSVIN.Engine: success.
  • Subscriber warning-free build against ARSVIN.Engine: success.
  • 26 unit tests: success.
  • Whole shared engine measured: 15,726 production lines at the current 5.64% full-engine baseline.
  • Established protocol core: 1,534 lines, 888 covered, 57.89% line coverage; 50% regression floor passed.
  • Full-solution warning-free CodeQL build and analysis: success.
  • Portable Publisher and Subscriber publication: success.
  • Pinned Inno Setup installer compilation: success.
  • Application-only CycloneDX SBOM generation: success.
  • Silent installer and uninstaller smoke test: success.
  • SHA-256 generation and private artifact upload: success.
  • Public GitHub Release job: correctly skipped.

Validated release workflow artifact:

  • ARSVIN-0.0.0-pr.31-windows-x64
  • Size: 409,166,588 bytes
  • Digest: sha256:960e6a06dd48f67325a0e07c94df18a8818c1379a55c3fa047a2ce1518d0c2f3

Follow-up

After this transition proves stable, a later mechanical PR can move the physical engine source directory from src/ARSVIN/Engine into src/ARSVIN.Engine without changing runtime behavior. Broader protocol tests should then raise the full-engine baseline progressively.

@masarray
masarray marked this pull request as ready for review July 12, 2026 01:37
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@masarray
masarray merged commit 2599675 into main Jul 12, 2026
5 checks passed
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