Repository navigation
Conversation
P7.6E workstream ownership + CI-thrifty evidence correlationDraft PR #488, exact head Field evidence P7.6D real connect/disconnect/reconnect: 13/13 Static DataSet rows, BRCB+URCB 2/2 routed per ingress, zero process polling, both OptFlds decoded. BRCB SqNum requested and decoded (mask 7880), URCB SqNum omitted (mask 3880), EntryID omitted on both; BRCB new-association warning 4→0/5→0 remains unqualified as GI/reset/replay/loss. Engine-authoritative discovery (pinned ARIEC #488 maps exact engine static-activation outcomes into per-association per-plan evidence, then into existing per-RCB continuity snapshot; maps decoded GI/integrity reasons only when available, retaining UNKNOWN for missing. Warnings preserve 5→0/4→0, with truthful timestamp/correlation text not asserting harmless reset or no SOE loss. 6 new synthetic tests. Atomic one commit / one CI trigger batch, tests preflighted before branch publish. 7 files: CI pending and physical GI/SOE qualification pending. PR draft, no merge/release, no control commands or report/RCB/GI writes added; engine pin unchanged. |
Exact-head CI / field-test handoff (2026-10-09)
3f2bc75d9efb3bbe84c0808650b17f64bbda4808, stacked on P7.6C P7.6C #446: auditable bounded per-RCB continuity evidence in Copy Diagnostic #4858d764128ccf764b20d27d178dfec64ec71581b81. Separate sibling UX UX: legible, compact IED Actions and Add IEC 61850 IED dialogs #486 is not included in this branch; do not merge/release one branch as though it superseded the other.Field root cause — what actually went missing
The operator’s two real IED diagnostics (Open SCD AP J and Discovery IP, same build) both showed 2 BRCB InformationReport frames with SqNum=0→0 (one observed duplicate/replay finding), while the URCB reported one frame with SqNum unavailable and
EntryIDPresent=0. Static values 13/13, configured RCB actual routed 2/2 per ingress, zero uncovered, zero cyclic MMS polling, and equal source-neutral parity fingerprint all remain healthy.Proven root cause of diagnostic ambiguity: pinned ARIEC61850 engine
352c81e6...already parses the actual IEC 61850 InformationReport OptFlds BIT STRING intoMmsReportHeader.OptionalFields(RawHex,HasSequenceNumber,HasEntryId,HasBufferOverflow,HasConfRevision). However,NativeIec61850Clientdropped that authority when constructingNativeReportFrameMetadata; the consumer inspector could not distinguish omitted by IED from advertised but undecoded from unknown evidence.Scoped solution — single coherent consumer patch
OptFldsRawHexand nullable four-bit option flags in NativeReportFrameMetadata; nullablenullmeans genuinely unknown,falsemeans wire OptFlds was decoded and that bit was not set.OptFldsDecoded/Unknown,SqNum requested/omitted/requestedButUndecoded,EntryID requested/omitted/emptyOrUnprojected. Empty decoded EntryID is explicitly not asserted as a transport or decoder loss.0→0duplicate/replay warning; do not dismiss it as harmless GI.Anti-naive / concurrency / CI discipline
Changes limited to
Services/NativeIec61850Client.csadapter mapping,Models/NativeReportMonitorModels.csimmutable frame metadata, existingIec61850ReportContinuityInspector.csandDiagnosticReportBuilder.cs, plus one new test file. No changes to engine pin, MMS BER parsing, RCB write/enable/reservation/GI, poll scheduler, report value projection, controls, or WPF. No duplicate parser/state store.Stacked DRAFT on field-validated diagnostic PR #485 at exact base
8d764128ccf764b20d27d178dfec64ec71581b81; separate sibling native-dialog UX #486 remains untouched. This branch owns the adapter/continuity/diagnostic-only code and must be reconciled with #486 when integrating.CI thrift: prepared five-file patch and its synthetic tests in memory, created one Git tree/commit and branch once instead of one CI run per file. One immediate wording-compatibility fix followed after review. Final exact HEAD
3f2bc75d9efb3bbe84c0808650b17f64bbda4808is pending CI. Do not consume earlier intermediate CI results as acceptance. Field reconnection, GI/EntryID/long-term SOE proof remain PhysicalPending. Keep draft; no premature merge or production release.