Skip to content

P7.6F: restore report-backed whole-FCD WYE/DEL current and voltage phases - #494

Closed
masarray wants to merge 1 commit into
integration/446-f650-ux-acceptancefrom
fix/493-f650-whole-fcd-phase-values
Closed

masarray wants to merge 1 commit into
integration/446-f650-ux-acceptancefrom
fix/493-f650-whole-fcd-phase-values

Conversation

@masarray

@masarray masarray commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Field issue #493

Private user BCU_GE.iid verified 13 typed magnitude phase paths under WYE MMXU1.A (6) / PhV (4) and DEL PPV (3), plus top-level CMV AuxV.cVal.mag.f. The original private IID, endpoint and device metadata are not committed. This patch uses synthetic IEC schema for tests.

Root cause: 124/124 static memberships were present but top-level structured WYE/DEL FCDs had no unique scalar PrimaryValueReference; selection dropped the phase measurements even though the six existing RCBs routed genuine reports.

Changes:

  • Iec61850StaticPhaseLeafProjection resolves only named FC=MX, typed WYE/DEL phase magnitude attributes through the existing schema-safe leaf resolver, with explicit per-phase q/t.
  • Preserve the original mandatory whole-FCD membership; add exactly proven descendant phase value rows as separate runtime candidates, idempotently.
  • Static report-only selection admits all exact typed leaf identities under the configured DataSet, without prefix guess or another RCB.
  • Allow scalar CMV/MV top-level FCD (e.g. AuxV) to use its existing unique canonical magnitude. WYE/DEL root remains rejected as a single scalar.
  • Synthetic schema regression covers six current channels, four phase voltage channels, three line-voltage channels, AuxV, repeated inventory merge and sparse/shuffled source schema.

Hard invariants: report-only, no cyclic MMS process polling, no dynamic DataSet write, no new commands, no control/reporting engine patch, engine pin unchanged 352c81e6a798635c6addcee0683235ca87ad416d.

Draft only until full Windows CI and field replay on GE F650 demonstrate report-origin values for all available phase leaves. Build/CI is not real RCB traffic evidence. Do not merge/release without physical acceptance.

masarray commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Exact-head 2026-10-09 qualification checkpoint

HEAD 3cf821428efd954e415e7455acbd2936ff0019cd: 9/9 GitHub workflows SUCCESS, including Smart Discovery mainline/merge/provenance/budget/repeat-run/production guards, SV evidence validator, Windows native Build ARSAS, and Field Capture Build.

Build ARSAS run #37934966712: compilation SUCCESS, app regression tests SUCCESS (including new synthetic WYE/DEL whole-FCD phase tests), publish SUCCESS, portable single EXE smoke SUCCESS, artifact upload SUCCESS.

Exact-head artifacts:

The original private BCU_GE.iid was used only for local verification of typed IEC 61850 phase names/CDC/scope; it was not uploaded to GitHub. Synthetic regression fixtures contain only generic IEC 61850 model shapes.

CodeCommitted/CIPassed/ArtifactAvailable: YES. Real F650 physical values/units/quality/ingress and static per-RCB continuity: PENDING. Keep #494 draft and do not merge or release before user validates phase currents, phase voltages, line voltages, AuxV, control/status, and report-only behavior.

Copy link
Copy Markdown
Owner Author

Reconciliation D1 — evidence-backed disposition (2026-10-26)

Disposition: B — historical P7.6F implementation superseded by the canonical integrated RC; closing this tracking PR, not promoting the RC or certifying physical F650 interoperability.

Canonical replacement: ARSAS RC 817c3910e8223fa2ac531a4426ada5d2d4bbbe50 (protected draft integration #727/#729), retaining this PR head 3cf821428efd954e415e7455acbd2936ff0019cd as an ancestor: GitHub compare original HEAD → RC reports ahead 1908, behind 0, merge base = original HEAD. The original branch and commits remain untouched.

Unique delta: All five PR-touched paths verified against the current RC. Exact blob preservation for four:

  • Services/Iec61850DataSetSignalInventoryService.cs = f3c956350577839c3d4adf4e83ef0c0ac97a88f3
  • Services/Iec61850StaticPhaseLeafProjection.cs = 2b83b096e3a9de44b17e94bc24585ccbd0abb918
  • Services/SchemaSafeAggregateProjectionService.cs = 65183fd23793b10230bdeb3b9c913a66c369e794
  • tests/ARSAS.Tests/StaticWholeFcdPhaseMeasurementTests.cs = e5089993faa30ddb9c17fc32eaa28ca9cafc8084

The fifth service Services/Iec61850StaticDataSetAuthoritySelection.cs evolved from eb94e455f4265b773084396ed37f845a7bf2fd36 to 8e9eaf4e5cdb333675584f4c3756c91080f62b14. Current implementation builds one ToLookup(NormalizeLiteral(DataSetReference), OrdinalIgnoreCase) instead of re-filtering a snapshotted device.Signals catalog for every member. The membership predicates and all original controls/phase leaf/scalar candidates, exact object/display reference equality, unique phase match requirement, candidate prioritization, authoritative RCB backing and SCL-vs-live model policy remain in the current function. This is a read-only performance/indexing refactor, not a fuzzy matching or fabricated measurement fallback. The byte-identical two-test suite continues to assert exactly 13 WYE/DEL phase magnitudes, correctly typed q/t, one scalar AuxV, idempotence, missing-phase fail-closed, FC=CO rejection, and root DO scope.

Safety: No code, tag, binary, checksum, engine pin, branch or CI workflow mutated by this administrative closure. No claim of live-wire F650 FAT or R7/R10 success; existing #493/#495 field issues and #688 performance lane remain open. Reproducible regression test is preserved exactly in protected RC. Current-tree selection uses a one-pass lookup; if signal collection mutates concurrently during Build, that separately requires a concurrency audit rather than assuming field qualification.

Follow-up: Preserve #727/#729 release/physical gates; verify this canonical selection in multi-IED F650 FAT and runtime/performance qualification via #493/#495/#688. Reopen this PR if a specific uncovered regression is demonstrated. No Windows CI rerun warranted for the PR bookkeeping operation.

@masarray masarray closed this Oct 26, 2026
masarray added a commit that referenced this pull request Oct 26, 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