Skip to content

M2.17-M P0: reconcile #618/#620; canonical Data Model focused hydration + Explorer read SSOT - #621

Draft
masarray wants to merge 185 commits into
fix/m217k-consumer-typed-st-report-engine-trial-20261017from
fix/m217m-ssot-datamodel-focused-admission-20261017
Draft

masarray wants to merge 185 commits into
fix/m217k-consumer-typed-st-report-engine-trial-20261017from
fix/m217m-ssot-datamodel-focused-admission-20261017

Conversation

@masarray

@masarray masarray commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

P0 SSOT Live Data Model — executable reconciliation of #618 and #620

Current tested HEAD: 1bf016057115955a83ece30d97a1729519409848 (2026-10-17). This is a draft stacked on #618; do not merge to main or promote without physical acceptance.

Reconciliation

Two-parent commit 0236502121c2d90df6c2e9479d40726085c51dde has exactly:

  1. latest M2.17-K: isolated ARIEC PR173 typed C264 report integration trial #618 d3a7021376b3c2860922c24f4643135015f78774;
  2. previously divergent M2.17-L: bounded on-selection SGCB / Data Model value hydration #620 53c3d7ecce49cf94850291aa27b2e9fecaa300a9.

The combined tree is based on latest #618 and preserves its latest typed report/schema corrections. No destructive force-push, change to engine engines/ARIEC61850.lock.json (still 51c2eefd61d6bcbe1116fda6b781b74bb9cf06da PR173), native lock, or Operate paths.

Implemented product behavior

  • Retires pre-Dispatcher visited-key poisoning with metadata-only IedBrowserFocusedAdmission: device+association fence, bounded 128-page history and finite successful-start attempts. Queued-but-skipped/busy/changed-page callbacks are not counted as read attempts.
  • Bounded focused Data Model LN/DO/DA current-verifiably-discovered MMS Read on page opening, DO row focus and chevron disclosure. All values go to the existing canonical device.LiveValues ledger; no new value authority, synthetic q/t, polling loop, write, or automatic Read All.
  • Setting Groups auto-read scope from exact SGCB status (NumOfSG, ActSG, LActTm) and SG leaves with priority finite batches, no EditSG/CnfEdit or FC=SE writes.
  • Strict DataSet FCDA member projection: removes unrelated units.SIUnit / units.multiplier CF rows and implicit CF reads from selected MX DataSet; leaves CF units/multiplier in Data Model; engineering display can only use authentic model+observed CF pair.
  • Cross-application improvement: MMS Read accepted into the canonical ledger can update Device Explorer SignalDefinition even while monitoring if and only if no authoritative same-key Report is observed. Monitoring runtime point/SOE state is NOT mutated by a background read, and later Report always takes precedence; reconnect fences old observations.
  • Behavior regressions: exact FC isolation, Report over Read, stale association rejection, Data Model vs DataSet unit ownership, skipped queued callback, DO/DA focused read, 1000 LN navigation bounded history, no point event from background MMS Read.

Windows exact-SHA evidence — SUCCESS

Build ARSAS run #39032889419 on 1bf016057115955a83ece30d97a1729519409848

  • Solution build: success
  • Pinned engine canonical SCL/identity: 19/19 passed
  • ARSAS regression suite: 2236/2236 passed
  • Packaged native-bridge tests: 6/6 passed
  • Native ArdIrec build/CTest, portable single EXE build, EXE smoke test, package sealing/upload: success
  • Artifacts: ARSAS-win-x64-portable-single-exe ID 12101705008 (73,517,426-byte ZIP); ARSAS-test-evidence ID 12101555559; Windows package-input ID 12100468883. Exact SHA pin and artifact identity provided by run.

Still NOT a full physical SSOT acceptance

  • Siemens GR_X_7SX85/BCUGE Setting Groups page-open 24/24 values, MMXU Data Model exact CF unit/multiplier, XCBR Beh/Mod/Health and discovery-dependent leaves need on-wire validation against reference screenshots/pcap; negative read reasons must remain explicit.
  • C264 previous 130/207 observed and 3/29 RCB routed coverage need fresh physical validation; never claim fixed by local tests.
  • Remaining P0: reduce mutable SignalDefinition discovery/probe authority duplication, unify all Live Signal Values/Device Explorer projections with q/t/source for read-only snapshots, improve actionable per-target status and verify no stale cross-association state. Current patch is a meaningful part of SSOT contract, not completion.

No mainline merge; retain draft until field results.

@masarray masarray changed the title M2.17-M P0: reconcile #618/#620; canonical Data Model focus hydration and SGCB admission M2.17-M P0: reconcile #618/#620; canonical Data Model focused hydration + Explorer read SSOT Oct 17, 2026

Copy link
Copy Markdown
Owner Author

M2.17-N field screenshot regression repair — exact-SHA Windows green

HEAD: 4ec55377ef3708ed8daeb3dc1bffa7c271388046.

Cause 1 — Device Explorer height collapse: Legacy ExplorerCommandDockRow remained inside the Explorer tab after the Command Dock expander was reparented into the shared persistent workbench. The old >5-command resize method still set the now-empty row to 1*, stealing a large portion of the Live Signal Values viewport. Fixed both at transfer time and on subsequent resize/refresh using a pure, tested detached-dock policy. No command execution/Operate logic altered.

Cause 2 — NamPlt shows Not read with observed DC children: The LN DO row had no ST/MX process scalar and never projected exact FC=DC child evidence. New IedBrowserNameplatePresentation chooses unique verified vendor, then d/swRev/configRev leaf from the same canonical association-bound value ledger, without manufacturing a parent MMS scalar, trusting SCL-only declarations or caching values. Offline labels stale evidence; reconnect clears previous association.

Regression: 4 new behavioral/source tests cover NamPlt vendor = GE Multilin, exact FC/ref isolation, stale/offline/reconnect, >5 and up to 150 Command Dock signal geometry plus transfer invariant. Updated obsolete legacy screenshot-source guard rather than restoring the broken star-row behavior.

CI: Windows #39034902824 SUCCESS; .NET build, 19/19 pinned ARIEC identity/SCL tests, 2240/2240 ARSAS regression tests, 6/6 packaged native tests, native CTest, portable EXE smoke, Windows package sealing/upload. 12/12 commit workflows successful.

Portable: GitHub Actions artifact ARSAS-win-x64-portable-single-exe 12101174316 (ZIP 73,518,817 bytes); exact SHA and verified provenance in run. Package-input 12101209076, test-evidence 12101638854.

Acceptance still required: physical IED screenshot comparison for NamPlt parent and dock proportions after installing this SHA; CI cannot prove monitor-side WPF pixels or MMS peer compatibility. Keep #621 draft until field pass.

Copy link
Copy Markdown
Owner Author

M2.17-P: GE BCU Setting Groups Read — capture-guided root STRUCTURE acquisition

Captured evidence (user-supplied IEDScout_Connect_BCU_GE(1).pcapng): 723 enhanced packet blocks; TCP/102 loopback capture contains 22 distinct LN$SG root variable names (e.g. SGphHiPIOC1$SG, SGndPIOC1$SG, SGgndPIOC1$SG). The Read requests are MMS Confirmed-Read [4] with domain-specific FC-root ObjectName, not individually enumerated $SG$...$setVal leaf requests. No full pcap committed (field capture remains with operator).

Root cause: Browser SGCB scope was reading 24–32 SG leaves individually. GE 650-style MMS structure Read behavior evident in capture was not part of Browser's acquisition plan; 15s finite auto-read budget filled with failed leaf attempts. The existing pinned ARIEC typed MmsDataValue.Structure, GetVariableAccessAttributes, and ReadSingleVariableAsync APIs were unused here.

Implemented: IedBrowserSgRootProjection, NativeIec61850Client.ReadVerifiedSgRootAsync, IedBrowserSgRootReadFlight. At most eight verified FC=SG roots per focused page, two serial read-only requests (GVA TypeSpecification + MMS root Read), exact ordered type name/value mapping, strict schema node counts and case-preserved child identity, exact target reference/FC allowlist, primitive wire kind verification. Source only publishes IedBrowserReadResult via existing association-bound canonical SSOT inbox; per-leaf Read remains bounded fallback if root unavailable. No edit group, writing, polling, SCL-derived values, second persistent cache, Operate changes or ARIEC engine repin. Works via both runtime and isolated read-only association during monitor.

Tests: Wire-typed synthetic regression checks 22-root shape/SG leaf mapping (InMagTyp/PIOCEna/StrVal), exact FC and IED fence, structure count mismatch, duplicate/ambiguous paths, mismatched primitive MMS kind, cross-association write rejection. No IED physical parity asserted yet.

CI exact SHA: Build #39037104143, commit 7116fa49f39a8f7c1c1d9cc44ca804d938ef2ef5:

  • Windows solution build PASS, pinned engine 19/19
  • ARSAS regression 2244/2244 PASS
  • Packaged native 6/6 PASS; native CTest and portable single EXE smoke PASS
  • Real portable artifact ARSAS-win-x64-portable-single-exe ID 12103100384, uploaded ZIP 73,525,328 bytes
  • Canonical test evidence ID 12102531808, Windows installer input ID 12101859539
  • Full physical acceptance still pending for root type GVA support, GE 650 value readback and IEDScout comparison (including symbolic enum labels), read duration, and untouched RCB/Operate behavior. Keep draft, do not merge to main.

This branch has not been deployed

No deployments
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