Skip to content

M2.14B/C: inventory-proven read-only SGCB and GoCB status inspector - #568

Closed
masarray wants to merge 2 commits into
feat/ied-browser-m214-ab-vector-parity-20261015from
feat/ied-browser-m214-control-state-evidence-20261015
Closed

masarray wants to merge 2 commits into
feat/ied-browser-m214-ab-vector-parity-20261015from
feat/ied-browser-m214-control-state-evidence-20261015

Conversation

@masarray

Copy link
Copy Markdown
Owner

M2.14B/C — verified, explicit read-only control state

Stack: #560 (M2.14) → #563 (M2.13 Thread A SSOT/CF) → #567 (A/B parity; Windows CI green) → this PR.

Actual changes

  • An inventory-authorized MMS Read, limited to discovered exact SGCB.NumOfSG, SGCB.ActSG, SGCB.LActTm, GoCB.GoEna, and GoCB.NdsCom fields. FC and domain/LN/control identity must match the pinned engine's AttributeInventoryOnly model. Never probe speculative SCL-only fields.
  • SGCB Read retains model-proven SG/SE leaves and appends up to 3 read-only control-state leaves. GoCB Read no longer merely reports that passive GOOSE is required: it reads only exact known control-state leaf references, if present in live inventory. Passive frame capture remains a separate explicit operation.
  • The existing, association-fenced canonical Read ledger drives the inspector's live properties and provenance; disconnect shows stale data, reconnect fences prior observations. No extra observation cache, no new subscriber, no cyclic MMS acquisition.
  • Six test methods including negative variants for SCL-only, cross-FC, spoofed reference/name/LN, read-all isolation, stale/reconnect behavior, and write-sensitive EditSG/CnfEdit exclusion.

Explicit non-goals / constraints

  • No MMS Write, EditSG, CnfEdit, setting-group selection, GI, GoEna activation, RCB lifecycle change, poller, engine pin change or static reporting modification. Not every IED exposes these attributes in the discovery inventory; unsupported/unproven remains visibly Not read.
  • Preserve Thread A ownership over canonical ledger, lifecycle, units, CF/DC and runtime. This changes only Browser adapter, its read-plan, its read-only property projection and focused tests.
  • No public main, stable, installer workflow or PR ancestor mutation.
  • Physical relay acceptance BCUGE/ZIV AVR remains pending; exact-SHA Windows build and regression gates required before claiming done.

Copy link
Copy Markdown
Owner Author

D10 historical reconciliation — disposition: CLOSE UNMERGED; canonical semantics already in RC

Original #568 head 1d094cfd8ea87f042e9256107fbcbae1b07b039d; target canonical integrated RC 817c3910e8223fa2ac531a4426ada5d2d4bbbe50, ancestry ahead1398/behind0. PR remains an historical carrier; this is NOT a new merge, promotion, or physical device acceptance.

All original 5 changed paths checked against exact RC source:

  1. MainWindow.IedBrowser.cs blob 8158c82dc7e5f24e0aa7b2fcea18e3e4731de79e → 21a0551413a5437a562c463f011204868aab7b3e: GoCB read-click break still routes explicitly verified MMS target only, not a passive frame inference. RefreshIedBrowserVisibleValues still calls UpdateIedBrowserControlStateDetails and that path reads from device.LiveValues using IedBrowserControlStateEvidence.TryRead, handles stale evidence; RC additionally distinguishes failed/interrupted/deferred and formats wire-proven zero LActTm.
  2. Models/IedBrowserControlStateEvidence.cs aa4c07b76b285d0fd7ed37a87372eeda3dc409fd → cbaae22d81b27fbff4e14ce20a864b8f3c19a850: entire original ReadTargets/IsVerifiedInventory/TryRead code bodies retained byte-for-byte, exact LLN0/FC/name inventory, read-only NumOfSG/ActSG/LActTm and GoEna/NdsCom, MMS Read only, same-association ledger. RC extends with truthful failure and zero-wire-time handling, not authorization for EditSG/CnfEdit/GoEna Write.
  3. Models/IedBrowserPresentation.cs 80505d88f12261024ec790a01d7e78b4b651b2bf → 1b40ab6d53f7056944be507cefebc156054c2207: read-only MMS-state-inventory labels and SGCB/GoCB page sections remain; RC evolves SCL/SG presentation and read status (not a new observed value).
  4. Models/IedBrowserReadPlan.cs 5da450781ff0fd3aa03be5b7de7fe72fce507d09 → 69bb7157e41b325f2de55a2d5e0eea75ef683bfb: explicit ReadTargets remains attached to the selected SGCB/GoCB page, not cyclic/Read All or Write; RC adds initial bounded exact-live-domain admission, and unrelated SG-versus-SE read selection is separately tracked on M2.14 SG: show model-verified active setting values in parameter rows #569.
  5. tests/ARSAS.Tests/IedBrowserControlStateEvidenceTests.cs 8e0bafd45e061626ac709e5ad0436a285a78d7a0 → 81873c29be0ee076d0cefc302623c2ee5404cef0: all five original test methods and all 26 Assert statement lines retained; further coverage added for current-tree foreign domain/budget on #753 (still DRAFT, not integrated).

Unique Delta proof: no remaining #568-only code path/test behavior lost from canonical RC for the original verified read-only SGCB/GoCB contract. Newer SCL fallback and #753 safety correction are explicitly NOT accepted/merged via this closure.

Safety: No SGCB edit, no CnfEdit, no GoCB enable, no fabricated frame, no Write, no Operate, no engine repin. R7/R10 field qualification and #606/#615/#753 remain OPEN. Exact source/test successor is RC; #753 new head 0652f66bed0c72dded20ff547e23e2ef1989341c full Windows/native/portable and SCL CI green, but this does not mean #753 is merged.

Follow-up: retain historic branch/source and this comment, continue #569 SG/SE semantic review, #606 GOOSE/SGCB field acceptance and #753 integration review. Closing #568 unmerged as redundant historical tracking only.

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