Repository navigation
P0: exact RCB-bound InformationReport authority and fail-closed DataSet mapping - #203
Conversation
… and stale DataSet order
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…ative Browser inspector
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44abf02a36
ℹ️ 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".
…utcomes truthfully
… directory identity
…/live DataSet rebind refusal
…y RptID-only inspector routing
Physical IED acceptance gate (strictly not CI proof)For vendor/firmware under test, record selected IED endpoint, device/SCD/CID identity, selected concrete RCB reference, fresh MMS association, and DataSet directory/ConfRev readback. Use the native Browser → Reports inspector; do not switch to a different RCB and treat previous frames as new evidence.
Gate is OPEN until hardware traces are checked; current scripted CI does not certify multi-vendor physical interoperability. |
User-facing milestone: authoritative Reporting/RCB on native Workbench
Basing on
main 953f492541b3828c30bc46218a1b86649e0e2428. The previous source mapped every received InformationReport with the currently selected RCB's ordered DataSet, even when an unrelated report arrived on the same association; Browser also matched only by RptID, not the actual selected RCB identity. This is unsafe for multi-RCB IEDs.Implementation
MmsReportFrameBindingValidatorin existing native C++ reporting engine; no secondary decoder/subscription/receive loop. Requires verified live RCBRptIDand DataSet; when optional Report DatSet/ConfRev are present, verifies against RCB readback. Verifies directory nonempty; inclusion indexes are bounded, strictly increasing, unique, and each decoded value retains its exact DataSet member identity.MmsReportSubscriptionRuntime::ingest_reportboundary, prechecks decoded ReportID before assigning any process-value member names, then uses the validator before publishing to offline monitor. Foreign/stale frames are counted/reported as rejected; do not inflatereceived_reportsor poison continuity.Reference behavior and safety
Matches ARIEC61850
MmsReportDataSetOrderValidatorand ARSASStaticDataSetReportProjectionAccumulatorsecond-boundary exact membership principles; ported directly into ARStack's existing native C++/Qt ownership, without copying WPF/.NET or introducing hidden MMS writes. Standard OptFlds may omit DataSet/ConfRev, so their presence is conditional; do not claim a physical relay acceptance or ability to distinguish two publishers with identical wire RptID within one association without further evidence.Required gate: exact-head C++ CI (GCC/Clang/MSVC), Reporting/interop, native IED Simulator Qt + SCL-assist, review threads all resolved, then merge with exact expected HEAD. Physical IED, Windows installed-package UI and multi-vendor behavior remain unverified.
Follow-up hardening validated by exact-head gates