Skip to content

P7.6C #446: IEC 61850 report continuity evidence (SqNum/segmentation/EntryID) - #484

Draft
masarray wants to merge 6 commits into
fix/446-p7-6b-canonical-member-ordinal-parityfrom
feat/446-p7-6c-iec-report-continuity-evidence
Draft

masarray wants to merge 6 commits into
fix/446-p7-6b-canonical-member-ordinal-parityfrom
feat/446-p7-6c-iec-report-continuity-evidence

Conversation

@masarray

@masarray masarray commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Exact HEAD CI & artifact status — 2026-10-08

Baseline and ownership

Stacked on P7.6B PR #483 at exact 5a05ab2187e04aaf70106ef5c59a0c625503aaef, physically tested on separate Discovery IP/Open SCD sessions with matching semantic fingerprint and independent BRCB/URCB report traffic. ARIEC61850 remains immutably pinned at 352c81e6a798635c6addcee0683235ca87ad416d.

Scope: consumer-side report continuity evidence only. Files owned in this draft: Services/Iec61850MonitorRuntime.cs (diagnostic integration only), Services/Iec61850ReportContinuityInspector.cs (pure, per-stream state machine), new tests/ARSAS.Tests/ReportContinuityP76CTests.cs. No engine modifications, RCB configuration, GI writes, process updates, static DataSet selection, polling, command controls or reordering/replay heuristics.

Standard context / field motivation

IEC 61850-7-2 buffered reporting report SqNum is a 16-bit unsigned counter per BRCB with increment and maximum rollover; first report after enabling is sequence 0. Segmented reports share SqNum and start SubSqNum 0, then increment for continuation; BufOvfl indicates possible loss, while EntryID is opaque BRCB resync identity and ConfRev changes require schema revalidation. A later GI report or different EntryID cannot be treated as proof of harmless SqNum reset.

Operator field pair shows observed early Rpt_ind01: 4→1 (Open SCD) and Rpt_ind02: 3→1 (Discovery). Those remain explicit unverified discontinuity warnings. No claim of lost SOE entries or harmless reset is made absent RptEna lifecycle/EntryID/GI evidence.

Implementation

  • Fix old naive IsExpectedReportSequence which accepted any current==0 as rollover; now only 65535→0 is recognized as 16-bit wrap.
  • Separate association/exact RCB stream continuity state; first observed nonzero sequence does not imply packet loss; distinguish duplicate/replay, backward/reset/replay, forward gap without asserting actual event loss.
  • Segmented report integrity: first SubSqNum 0, continuation same SqNum and next sub number, missing completion/sequence and inconsistent optional field diagnostics.
  • BufOvfl, ConfRev drift and opaque EntryID presence/change are recorded as evidence, not value-plane changes. No timestamp/quality rewriting, no forced GI, no cyclic MMS polling fallback.
  • Existing report-stream state lifecycle remains cleared on monitoring restart, disconnect and reconnect. No stale-session continuity attribution.
  • Synthetic tests cover standard wrap, invalid 4→0, physical 4→1 / 3→1, out-of-range metadata, GI-unproven states, segmentation, BufOvfl+ConfRev and per-session isolation.

Gates

CodeCommitted; CI pending and physical continuity stress test still PhysicalPending. Maintain draft, do not merge/release until exact-head CI and field continuity scenarios are qualified. Parent #446. Other workstreams should coordinate file ownership before editing Services/Iec61850MonitorRuntime.cs.

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