You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Professional parity: readable URCB/BRCB root structures for external-client discovery #84
Close the next evidence-backed MMS model gap between ARStack IED Simulator and a successful external IEC 61850 client session.
Evidence
A known-good ARIEC61850 + external IEC 61850 client trace shows external IEC 61850 client issuing bulk Reads against report-control-block root variables, not only leaf attributes:
URCB roots such as LLN0$RP$A_URCB in a multi-variable Read;
BRCB roots under LLN0$BR... in a multi-variable Read;
each successful AccessResult is an MMS structure containing the current RCB state.
Current ARStack MmsStaticUrcbObjectBank / MmsStaticBrcbObjectBank expose attribute leaves ($RptID, $RptEna, etc.) but not the RCB root as a readable object. That can leave an engineering browser associated yet unable to obtain report-control inventory/state in the form it expects.
Required implementation
expose each URCB root as a readable MMS structure;
expose each BRCB root as a readable MMS structure;
root data must be generated from the live per-association runtime state (no stale manifest snapshot);
preserve existing leaf objects and guarded writes;
preserve bounded/allocation-conscious server behavior;
ensure root TypeSpecification/order matches the RCB attributes actually exposed by the server;
Read(listOfVariable) containing multiple RCB roots must preserve one AccessResult per requested root and request order;
add hard-profile tests for root Read, multi-root Read, state change after reserve/enable, and BRCB ownership-sensitive fields;
add an external IEC 61850 client-parity loopback case representing the observed bulk root-read sequence.
Professional acceptance gate
Do not close on unit tests alone. Close only after:
cross-platform CI is green;
Windows packaged RC contains the change;
real external IEC 61850 client progresses through DataSet discovery into RCB inventory/reads without association failure;
diagnostics show the exact RCB root request/result counts when troubleshooting.
This is part of the broader goal of making ARStack Workbench a professional IEC 61850 commissioning/troubleshooting tool rather than a demo simulator.
Current PR #82 head is 6ea0889c0656c847e6df3a95c59d92608a471564.
The latest real external IEC 61850 client retest still closes immediately after GetNameList invoke 1 -> Read invoke 2. Therefore issue #84 remains the next professional-parity milestone, but RCB-root work must not be used to mask or conflate the current P0 Read/discovery blocker.
P1 implementation checkpoint — typed live RCB root hierarchy
Current branch head: 2d74af8eb621dd0ad0a8fecd530a856843d209bc
This implements the core of #84 without closing the external acceptance gate.
Runtime behavior
2304b10bf33ba16f20af457ae6ed53bb738f786f updates the portable MMS dispatcher so missing intermediate hierarchy roots can be exposed as a bounded virtual MMS hierarchy with matching Read data and GetVariableAccessAttributes TypeSpecification.
For concrete report-control roots, child ordering is semantic rather than lexical:
This is important because MMS Structure Read values do not carry component names. The value order now matches the synthesized TypeSpecification order.
The hierarchy remains live: root Read invokes the existing descendant leaf callbacks at request time, including per-association BRCB state/Owner callbacks. Existing exact leaf Read/Write and guarded ownership semantics remain unchanged.
Regression
embedded/mms_interop_rcb_root_hard_profile_smoke.cpp is registered in Embedded Profile CI at head 2d74af8e.
It covers:
one bulk Read containing URCB then BRCB roots, preserving request/result order;
live URCB-style state change reflected in a second root Read;
real BRCB runtime/control/object-bank reservation, RptEna, and ownership-sensitive Owner reflected in root Read;
release/disable state reflected in a subsequent Read.
The URCB half of this embedded hard-profile uses mutable leaf callbacks intentionally because URCB host runtime sources are outside the current Embedded Core source boundary; P1 does not silently expand that portability boundary. BRCB uses the actual portable runtime/control/object-bank.
Gate status
Issue remains OPEN. Current GitHub Actions are running/queued for the P1 head. Real external IEC 61850 client interoperability is still not claimed. Closure still requires the #84 external gate: Windows RC + real external IEC 61850 client progressing through DataSet/RCB inventory/reads without association failure, with diagnostics sufficient to identify the root request/results.
This closes the P0/P1 internal code/build/package/lifecycle gate. No further speculative P0/P1 protocol changes should be made while P2 is being developed.
Issue #84 intentionally remains OPEN because its external acceptance gate is still real external IEC 61850 client against the packaged runtime. We still do not claim external external IEC 61850 client RCB parity until that client progresses through RCB inventory/reads without association failure and diagnostics confirm the root request/result counts.
Issue #84 remains OPEN exactly as required by its professional acceptance gate. Next evidence must come from real external IEC 61850 client / physical IED execution, not simulator CI: first read-only SCL-assisted association/domain/FC-root validation, then RCB/report acceptance after Stage A succeeds.
Activity
masarray commentedon Sep 14, 2026
Milestone gate update — 2026-09-14
Current PR #82 head is
6ea0889c0656c847e6df3a95c59d92608a471564.The latest real external IEC 61850 client retest still closes immediately after
GetNameList invoke 1 -> Read invoke 2. Therefore issue #84 remains the next professional-parity milestone, but RCB-root work must not be used to mask or conflate the current P0 Read/discovery blocker.P0 work now on PR #82:
543585240d4de5bf5050907e98c781079b3c8263— accept external IEC 61850 client-compatible Read access forms (listOfVariable,variableListName, compatibility unwrapped form) while retaining one AccessResult per requested object/member;f9f1499d385e372799f5d34f84a38dc5091cd9d7— regression coverage for DataSet/compatibility Read shapes;6ea0889c0656c847e6df3a95c59d92608a471564— diagnostics no longer report an application-rejected confirmed request as simply “answered”.Current validation on exact head
6ea0889c:Gate for starting/closing this issue remains evidence-based:
No external external IEC 61850 client interoperability claim is made yet.
masarray commentedon Sep 14, 2026
P1 implementation checkpoint — typed live RCB root hierarchy
Current branch head:
2d74af8eb621dd0ad0a8fecd530a856843d209bcThis implements the core of #84 without closing the external acceptance gate.
Runtime behavior
2304b10bf33ba16f20af457ae6ed53bb738f786fupdates the portable MMS dispatcher so missing intermediate hierarchy roots can be exposed as a bounded virtual MMS hierarchy with matching Read data andGetVariableAccessAttributesTypeSpecification.For concrete report-control roots, child ordering is semantic rather than lexical:
RptID, RptEna, Resv, DatSet, ConfRev, OptFlds, BufTm, TrgOps, IntgPd, GI, SqNumRptID, RptEna, DatSet, ConfRev, PurgeBuf, EntryID, ResvTms, OwnerThis is important because MMS Structure Read values do not carry component names. The value order now matches the synthesized TypeSpecification order.
The hierarchy remains live: root Read invokes the existing descendant leaf callbacks at request time, including per-association BRCB state/Owner callbacks. Existing exact leaf Read/Write and guarded ownership semantics remain unchanged.
Regression
embedded/mms_interop_rcb_root_hard_profile_smoke.cppis registered in Embedded Profile CI at head2d74af8e.It covers:
RptEna, and ownership-sensitiveOwnerreflected in root Read;The URCB half of this embedded hard-profile uses mutable leaf callbacks intentionally because URCB host runtime sources are outside the current Embedded Core source boundary; P1 does not silently expand that portability boundary. BRCB uses the actual portable runtime/control/object-bank.
Gate status
Issue remains OPEN. Current GitHub Actions are running/queued for the P1 head. Real external IEC 61850 client interoperability is still not claimed. Closure still requires the #84 external gate: Windows RC + real external IEC 61850 client progressing through DataSet/RCB inventory/reads without association failure, with diagnostics sufficient to identify the root request/results.
masarray commentedon Sep 14, 2026
P0/P1 internal engineering gate complete
P0/P1 implementation is now frozen at the proven P1 package head
2d74af8eb621dd0ad0a8fecd530a856843d209bcfor internal acceptance purposes.Concrete proof on that exact head:
34861518756):This closes the P0/P1 internal code/build/package/lifecycle gate. No further speculative P0/P1 protocol changes should be made while P2 is being developed.
Issue #84 intentionally remains OPEN because its external acceptance gate is still real external IEC 61850 client against the packaged runtime. We still do not claim external external IEC 61850 client RCB parity until that client progresses through RCB inventory/reads without association failure and diagnostics confirm the root request/result counts.
masarray commentedon Sep 15, 2026
Ready for external/manual acceptance — exact-head RC available
Internal implementation/CI requirements are now satisfied on exact PR head
c114d1977335f8427f9ab85e9b65d26fe4effcc4:Exact Windows RC artifact:
arstack-iec61850-workbench-windows-rc1037459784160,673,059bytessha256:2efc27cfb0d7ae64cd2784a15a7276fe97d288c104c89a0f26d265dc5afc13a4c114d1977335f8427f9ab85e9b65d26fe4effcc4Issue #84 remains OPEN exactly as required by its professional acceptance gate. Next evidence must come from real external IEC 61850 client / physical IED execution, not simulator CI: first read-only SCL-assisted association/domain/FC-root validation, then RCB/report acceptance after Stage A succeeds.
[-]Professional parity: readable URCB/BRCB root structures for IEDScout-class discovery[/-][+]Professional parity: readable URCB/BRCB root structures for external IEC 61850 client-class discovery[/+][-]Professional parity: readable URCB/BRCB root structures for external IEC 61850 client-class discovery[/-][+]Professional parity: readable URCB/BRCB root structures for external-client discovery[/+]