Skip to content

M2.14 SGCB: preserve LActTm wire quality and distinguish unset time - #587

Closed
masarray wants to merge 6 commits into
fix/m214-filedirectory-inventory-20261015from
fix/m214-sgcb-last-changed-zero-time-20261015
Closed

masarray wants to merge 6 commits into
fix/m214-filedirectory-inventory-20261015from
fix/m214-sgcb-last-changed-zero-time-20261015

Conversation

@masarray

Copy link
Copy Markdown
Owner

Physical symptom

BCUGE Browser SGCB Last changed displays 1970-01-01... (q=0x3F). A zero UTC-Time with actual eight-byte raw provenance is an unset relay timestamp, not evidence of a settings-group change at epoch.

Narrow consumer-only remediation

  • Preserve pinned engine raw UTC-Time evidence on exact LActTm leaf in addition to standard .t leaves.
  • Keep proof in the existing association-fenced canonical live-values ledger (no parallel cache or second decoder).
  • Display Not initialized only for exact typed wire SecondsSinceEpoch=0 and FractionOfSecond24=0. Arbitrary 1970 text, nonzero time, and other pages are untouched.
  • Preserve the wire hex and IEC time-quality in the SGCB field tooltip. No new reads, GI, writes or settings operations.

Regression and safety

Typed raw-evidence fixture proves canonical storage, zero time vs true/non-proven timestamp presentation. Field acceptance on BCUGE required. No engine pin/main/release changes. CI must pass on the exact PR HEAD before integration.

Copy link
Copy Markdown
Owner Author

Reconciliation D4 — historic SGCB LActTm raw UTC wire semantics retained

Disposition: A — superseded by pinned protected RC, safely close unmerged. Old head 5ef905ecefbe1a3bccbec28dfc89f71f9f374a15 is exact ancestor of RC 817c3910e8223fa2ac531a4426ada5d2d4bbbe50; compare ahead 1345 / behind 0, merge-base old head. This is NOT ancestry-only: five paths reviewed for original semantics.

Canonical: protected RC #727 / #729 at 817c3910e8223fa2ac531a4426ada5d2d4bbbe50.

Unique delta proved, path-by-path:

  • Models/IedBrowserControlStateEvidence.cs historic blob c50073eeae8a90123accc96bc9a4d9e8295ba614 → RC cbaae22d81b27fbff4e14ce20a864b8f3c19a850: exact FormatObservedField guard preserved, only SGCB LActTm with actually decoded, wire-proven UTC epoch seconds 0 and fraction 0 displays Not initialized; unverified text and real timestamps remain untouched.
  • Models/IedBrowserLiveValues.cs historic 6bc971fe37df6cc24f4870b491d33bf91bc3f2d1 → RC 2980e831dbc0cbf8d5b9b0a4c836f94f32133653: canonical IsTimeReference covers both .t and .LActTm; no timestamp fabricated.
  • Services/NativeIec61850Client.cs historic 727c9324fc5aedbac9155e2b3a45489234343adb → RC b74398faf4d206286ab1dcac8b6e5ab414783393: raw .LActTm / $LActTm recognized only for actual MmsDataKind.UtcTime, decoded with Iec61850UtcTimeEvidence.Decode(raw); time evidence attached only when actually decoded and wire-proven.
  • MainWindow.IedBrowser.cs historic 511bfcb5480cca086b2deb32371314246ff0a246 → RC 21a0551413a5437a562c463f011204868aab7b3e: live SGCB state uses FormatObservedField(pageKind,field,observed), then local-time presentation, retaining stale/actual MMS Read provenance. UI never treats a textual “1970” string as wire proof.
  • tests/ARSAS.Tests/M214SgLastChangedWireEvidenceTests.cs exact identical old+RC blob 7d0fafd60c54e0be6c11c6cefd33d5c4c420d7b7, both zero-time and unverified/real-time regressions retained.

Safety: Pure historical closure; no MMS write/SG edit group/change command, no source edits, no engine repin, no main/stable release promotion. Automated pinned RC Windows regression previously passed on exact #753 head, not physical SGCB FAT.

Follow-up: Actual relay SGCB active-group read/association and field acceptance remain separate; no fake “1970 last change” for raw-zero wire evidence, no fabricated time if q/t absent; original branch and source retained.

@masarray masarray closed this 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