Skip to content

P6: recover static reporting and stop dynamic reconnect loops - #216

Merged
masarray merged 8 commits into
mainfrom
fix/p6-field-stability-static-first
Aug 18, 2026
Merged

P6: recover static reporting and stop dynamic reconnect loops#216
masarray merged 8 commits into
mainfrom
fix/p6-field-stability-static-first

Conversation

@masarray

Copy link
Copy Markdown
Owner

P6 — field stability recovery

This PR responds to physical SIPROTEC evidence from P5 where the SCL/static DataSet inventory reported 6/6 represented members, but hybrid planning produced static=0, mapped only 109/115 points, attempted dynamic URCB coverage for 109 points, then a failed dynamic DataSet create pushed the association into repeated reconnect + 115-point MMS polling fallback.

P6-A — static DataSet inventory precedence

  • Maps selected points through Iec61850DataSetSignalInventoryProjection.GetMandatorySignals(...) before the broad signal catalog.
  • Only resolved primary-value mandatory members participate.
  • Keeps exact matching/fail-closed semantics; no fuzzy vendor aliasing.
  • Static inventory descriptors are passed directly to the existing ARIEC static → dynamic → polling planner.

P6-B — dynamic write circuit breaker

  • A real failed dynamic activation opens a per-device process-lifetime circuit breaker.
  • Further dynamic DataSet/RCB writes are withheld for that device during the application run.
  • Static BRCB/URCB remains fully eligible.
  • Residual points fall back to bounded MMS polling instead of repeating a write that destabilized the MMS association after reconnect.

P6-C — diagnostics workspace recovery

  • Removes the P5 1.5-second continuously refreshed acquisition DataGrid from the Diagnostics workspace.
  • Retains underlying per-signal acquisition telemetry for diagnostics/export/testing.
  • Restores the communication journal as the stable primary diagnostics view.

Regression coverage

  • exact mandatory-static primary leaf mapping
  • mandatory static projection precedes broad catalog mapping
  • failed dynamic attempt opens circuit breaker and disables further dynamic planning
  • diagnostics workspace has no telemetry refresh timer/injected DataGrid
  • existing P5 acquisition telemetry model remains covered

ARIEC protocol engine remains pinned unchanged to P4 PR #86; this P6 is consumer-side field stability recovery.

@masarray
masarray marked this pull request as ready for review August 18, 2026 04:01
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@masarray
masarray merged commit 58bd517 into main Aug 18, 2026
2 checks passed
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