Repository navigation
Phase 4D-D2: add smart Dynamic RCB reporting - #32
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fdf0691f73
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (candidate != nullptr) { | ||
| try { require_write_success(association, *candidate, "RptEna", mms::MmsDataValue::boolean(false)); } | ||
| catch (const std::exception& exception) { std::cerr << "CLEANUP warning: RptEna=false failed: " << exception.what() << '\n'; } |
There was a problem hiding this comment.
Gate cleanup writes on mutations owned by this run
In the armed harness, if DataSet creation fails before subscription exists, or MmsReportSubscriptionRuntime::start() re-probes the RCB and rejects it because another session claimed it after discovery, this block still unconditionally writes RptEna=false, Resv=false, and an empty DatSet. The failure path can therefore disable and unbind an RCB owned by another client even though this run never modified it, contradicting the harness's safety contract; track which attributes this run successfully changed and clean up only those.
Useful? React with 👍 / 👎.
Scope
Add a guarded one-command laboratory harness for Smart Dynamic RCB reporting, now integrated directly on current
mainafter Phase 4C live discovery and Phase 4D-D1 Dynamic DataSet support.Smart dynamic reporting
ST/MXleaves from live Logical-Node type trees;LD/LN.DataSetreferences to the RCB wire valueLD/LN$DataSet;listOfVariable [0]andvariableListName [1]forms;Default execution is read-only. Armed execution requires the exact token
IEC61850-LAB-DYNAMIC-RCB, performs one bounded lifecycle, and never retries mutation automatically on another RCB.Root cause addressed
The original live trial selected only shallow type members, wrote the canonical directory reference into
DatSet, and decoded only the list-of-variable InformationReport form. Real external IEC 61850 client evidence required recursive member selection, the$RCB reference form, and variable-list-name report decoding.Validation
DatSetempty andRptEna=false;Hosted CI never connects to or mutates an IED. Physical success is interoperability evidence for the selected lab profile, not IEC 61850 conformance certification.