Repository navigation
M2.17-D Field convergence: GoCB passive evidence, SGCB initial status, RCB/Read correctness - #606
Conversation
|
Reconciliation finding (2026-10-26): KEEP OPEN — unproven unique regression delta. The original #606 source |
Reconciliation D1 — 7-test historical coverage map (2026-10-26)Disposition: D — KEEP OPEN until the two incomplete assertions are resolved. Old test blob
Safety: no code or test was ported without checking new APIs; raw allData is always labeled unbound and must never be promoted to FCDA or MMS ledger. Never merge the historical file as-is (obsolete Follow-up: ask canonical IED Browser/GOOSE owner to trace decoder invariants for wire count/order/missing sentinel and add minimal test-only cases for any true missing behavior. Likewise prove/fence wrong-domain SGCB (a syntactically valid block from another model domain must not silently become current association authority). Keep #606 open pending focused tests and required CI; no physical GOOSE/safety acceptance implied. |
Reconciliation D3 — focused rescue is now a separate current-RC draft PRDisposition: KEEP historical #606 OPEN (no blind cherry-pick / no ancestry-only closure). The two unique current-tree gaps identified in D1 7-method matrix now have a narrowly scoped corrective candidate: #753, branch
|
M2.17-D / BCUGE field-feedback correctness slice — stacked draft on #605
This patch follows the physical operator screenshots. It deliberately fixes documented seams, not an entire UI repaint or a fabricated "all data complete" claim.
Root causes and repairs
IedBrowserGooseInspection.Selectrejected every wire frame when the online GoCB discovery did not disclose its DataSet reference. Permit a single exact received GoCbRef (matching declared GoID/AppID/confRev when available) to supply its ACTUAL PDU DataSet reference. A conflicting known DataSet, different IED model, APPID, rev, or ambiguous duplicate still fails closed. Reuse the existing GOOSE Sniff subscriber via a visibleSubscribe GOOSEaction; never start a second reader/decoder/cache. For missing or conflicting FCDA directories, surface original allData positions as explicitlyWire entry #N (unbound), never name them as model FCDA or borrow sibling FC. Do not infer MMS GoEna from passive reception.Control Block attributesinstead of becoming separate Section siblings. The existing engine flag codec and shared section projection remain authoritative; no bit decoder added.IsMonitoringchanges. Rebuild existing glyphs only when the actual activated RCB identity set changes. Explicit read-only RCB checks are additionally fenced against association/schema swap. RCB use by another client still requires a real read-only status check, never inference from name or missing report frames.Tests and safety
Seven added focused regressions covering selected physical-style GoCB + subscriber allData, missing directory, duplicate/conflicting frame rejection, bounded exact SGCB read priorities and unauthorized FC rejection, report-control collapse hierarchy, existing subscriber use, RCB association fences and file indent. No engine re-pin, no native library change, no protocol replacement, no GOOSE emission, no MMS writes, no auto Read All.
What this does NOT claim
Keep draft; merge/promotion only after exact-SHA CI and physical interoperability review.