Skip to content

P6.2-A: probe dynamic NamedVariableList before RCB mutation - #88

Draft
masarray wants to merge 6 commits into
fix/p6-1-baseline-safe-dynamicfrom
fix/p6-2-dynamic-nvl-probe
Draft

P6.2-A: probe dynamic NamedVariableList before RCB mutation#88
masarray wants to merge 6 commits into
fix/p6-1-baseline-safe-dynamicfrom
fix/p6-2-dynamic-nvl-probe

Conversation

@masarray

@masarray masarray commented Aug 18, 2026

Copy link
Copy Markdown
Owner

P6.2-A — Dynamic RCB root-cause evidence

Stacked on P6.1 PR #87. Final engine candidate: d4612fb7fd5d499a70df17110f6191c452340e0c. This patch does not change static RCB planning or activation.

Field evidence driving this patch

On the current SIPROTEC field case, association capability advertises Write + DefineNamedVariableList + DeleteNamedVariableList and exposes many free URCB slots, but the first full dynamic DataSet create aborts the MMS association. P6.1 successfully preserves static reporting after reconnect; P6.2 now isolates the exact dynamic service failure.

Change

  • before a ready dynamic report plan mutates any RCB, issue one single-member probation using the exact planned DataSet reference;
  • sequence is DefineNamedVariableList -> GetNamedVariableListAttributes -> DeleteNamedVariableList;
  • only one already-resolved dynamic member is used;
  • capture exact invokeID, request HEX, response HEX (or <none>), receive-routing summary, DataSet/member identity, and MMS association state before/after;
  • if probation fails, stop before DatSet/TrgOps/Resv/RptEna writes and return exact failure-stage evidence;
  • if Define succeeded but verification loses the association before Delete can run, cleanup now fails closed rather than reporting a false rollback success;
  • if probation succeeds and cleanup succeeds, continue the existing full dynamic activation unchanged;
  • successful probation is not emitted as warning noise unless the subsequent full activation fails.

Safety

Static plans never enter this probe. A failed dynamic probe cannot mutate an RCB. Existing P6.1 static-preservation semantics and P6 dynamic circuit breaker remain unchanged.

Tests

  • static/blocked/missing-DataSet plans cannot enter the probe;
  • ready dynamic plan with a resolved point does enter the probe;
  • deterministic one-member DefineNamedVariableList request carries exact DataSet/member names;
  • exact probe-stage failure classification;
  • failed Define requires no cleanup;
  • successful Define followed by association loss before Delete is reported as cleanup failure and association loss.

CI

ARIEC .NET CI run 32114322970 (#355): success — public-source verification, restore, build, and complete test suite.

No merge is intended until ARSAS is pinned to this exact commit and the same physical relay is retested.

@masarray
masarray changed the base branch from fix/p6-1-baseline-safe-dynamic to main August 18, 2026 07:55
@masarray
masarray changed the base branch from main to fix/p6-1-baseline-safe-dynamic August 18, 2026 07:59
@masarray
masarray changed the base branch from fix/p6-1-baseline-safe-dynamic to main August 18, 2026 08:01
@masarray
masarray changed the base branch from main to fix/p6-1-baseline-safe-dynamic August 18, 2026 08:04
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