Skip to content

FAT v2 P4: import static DataSet FAT scope from SCL - #235

Closed
masarray wants to merge 4 commits into
feat/fat-v2-source-bundlefrom
feat/fat-v2-scl-import
Closed

masarray wants to merge 4 commits into
feat/fat-v2-source-bundlefrom
feat/fat-v2-scl-import

Conversation

@masarray

@masarray masarray commented Sep 1, 2026 •

Copy link
Copy Markdown
Owner

Stacked on proven FAT v2 P3

Base branch: feat/fat-v2-source-bundle
Base SHA: cb785bb06d95f838e8bafad5e1978699bc56e117
P4 proven head: 76058fe20f69210fb033e306c2f54be497ba352b

P4 is intentionally limited to SCL -> FAT projection/import orchestration. It does not add another XML parser, does not change the ARIEC61850 pin, and does not implement the later generic FAT UX/report phase.

P4 contract

  • production importer calls pinned ARIEC SclWorkspaceService.OpenAsync
  • P3 source SHA-256 is cross-checked against the ARIEC workspace source SHA
  • existing ARIEC static DataSet authority / FatDataSetSignalProjectionService remains the only membership source
  • exactly one persisted FAT test point is created per static DataSet membership
  • no ST/MX inclusion filter: digital, analog, and other types remain required rows
  • classification is conservative: FC MX alone no longer implies analog; non-proven types use operator snapshot capture
  • every imported row starts TestEnabled=true and ImportReady=true
  • SCL without Communication/IP remains valid offline FAT scope; endpoint binding is a separate live-acquisition finding
  • duplicate membership of one runtime object in multiple DataSets remains multiple distinct rows
  • competing different SCL authorities for the same IED/AccessPoint are rejected instead of silently merged
  • exact-content duplicate SCL files are not imported twice
  • P3 source-bundle identity is attached to the generated IoTestProject; row provenance carries deterministic point ID, source ID, source filename, member index, DataSet and binding evidence
  • no static DataSet means zero fabricated rows plus an explicit finding
  • no UI launcher/dialog wiring or generic Value1/Value2 report work is included in P4

Regression coverage

  • real-file production ARIEC loader with Siemens-like 58 static members: 58/58 persisted, 36 discrete + 22 analog, no Communication/IP and still FAT-ready
  • duplicate DataSet membership produces two distinct persisted points
  • MX INT32 remains Other / OperatorSnapshot rather than being misclassified analog
  • multi-SCL input order does not change project/source identity
  • multi-SCL project restores operator selection through P3 persistence and round-trips through .arsas with provenance intact
  • SCL with no static DataSet yields zero rows and explicit finding

Focused-gate hardening

The IO List Testing workflow previously filtered only IoTest*|IoList*. P4 expands the focused test selection and path triggers to include IoFat*, FatDataSet*, and FatScl*, so source-bundle and SCL-import regressions are now guaranteed to run in the focused gate rather than relying only on the full application suite.

Scope audit

Compared with proven P3 head, this branch is 4 commits ahead and 0 behind. Exactly 4 files changed:

  • .github/workflows/validate-io-testing.yml
  • Services/IoTesting/FatDataSetSignalProjectionService.cs
  • Services/IoTesting/IoFatSclProjectImportService.cs
  • tests/ARSAS.Tests/IoFatSclProjectImportTests.cs

No ARIEC engine pin, SCL parser/engine authority, IEC 61850 protocol/control path, P2 rolling-capture implementation, P3 source persistence/package implementation, or FAT UI/report layout was changed.

ARIEC61850 remains pinned to 26c85400a4da230c4429e6302847f230385b6687.

Exact-head evidence

Exact P4 head 76058fe20f69210fb033e306c2f54be497ba352b:

  • Validate IO List Testing #456 — SUCCESS
    • immutable ARIEC pin checkout — SUCCESS
    • focused compiler — SUCCESS, 0 errors
    • widened FAT filter (IoTest|IoList|IoFat|FatDataSet|FatScl) — active
    • 151 passed, 0 failed, 0 skipped
  • Validate SV evidence bundles #625 — SUCCESS
    • focused compiler — SUCCESS
    • SV evidence regression suite — SUCCESS
  • Build ARSAS #1513 — SUCCESS
    • source/license boundaries — SUCCESS
    • premium UX / GOOSE / SMV / SAS invariants — SUCCESS
    • immutable ARIEC API verification — SUCCESS
    • solution restore/build — SUCCESS
    • full ARSAS application regression suite — SUCCESS
    • portable single-EXE publish — SUCCESS
    • portable single-EXE smoke test — SUCCESS

The branch is intentionally left unmerged and this PR remains draft for stacked-phase review.

@masarray
masarray force-pushed the feat/fat-v2-scl-import branch from 1387ce7 to 76058fe Compare September 1, 2026 02:57

masarray commented Sep 3, 2026

Copy link
Copy Markdown
Owner Author

Closing as superseded by consolidated FAT PR #236. The SCL import/static DataSet scope from this stacked P4 branch is already contained in the active FAT branch ancestry; retain this PR only as historical evidence, not as a separate merge target.

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