From aa855c597960530e9a987796300253eb7c0ee523 Mon Sep 17 00:00:00 2001 From: Ari Sulistiono Date: Fri, 16 Oct 2026 18:51:11 +0700 Subject: [PATCH] docs(workbench): record merged ARSAS-style GOOSE Subscribe and field acceptance boundaries --- docs/WORKBENCH_CURRENT_HANDOFF.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/WORKBENCH_CURRENT_HANDOFF.md b/docs/WORKBENCH_CURRENT_HANDOFF.md index e69521883..e99ab3ecb 100644 --- a/docs/WORKBENCH_CURRENT_HANDOFF.md +++ b/docs/WORKBENCH_CURRENT_HANDOFF.md @@ -4,6 +4,23 @@ > **Primary strategy and ownership contract:** [WORKBENCH_ARSAS_GUI_SSOT_STRATEGY.md](WORKBENCH_ARSAS_GUI_SSOT_STRATEGY.md). > **Scope:** installed native ARStack Workbench in apps/ied_simulator. Not a web app, WPF clone, or the separate ESP32-P4/SMV Studio track. +## M2N native Browser GOOSE Subscribe + ARSAS/ARIEC parity — 2026-10-16 (WIB) + +- **Integrated `main` at this checkpoint:** `71580659f28c49207db94efd7f7d302d5fd12901`, [PR #200](https://github.com/masarray/arstack61850/pull/200) MERGED after exact-head `4df620874bdab9c0bf280d31a342c12dfa6ab38a` **3/3 relevant workflows SUCCESS**: 55/55 native IED Simulator Qt job steps, SCL-Assisted Workbench CI and Product Naming Guard. Three P1 review findings fixed/answered/resolved. Exact post-merge main jobs (IED Simulator Qt, SCL-assisted, Release Hardening) were still running; verify separately. +- **Reference-backed root cause:** `BrowserGoosePane.qml` previously presented only canonical configured SCL/control-block data, while `GooseWorkspace` already received real Ethernet GOOSE via `GooseMonitorController`, bounded AF_PACKET/Npcap, native `GooseFrameCodec`, sequence/TAL supervision and PCAP export. Cross-checked ARSAS `docs/GOOSE_SUBSCRIBER.md`, `GooseSubscriberRuntime.cs`, `GooseSubscriberLiteView.xaml` and ARIEC `GooseFrameParser.cs`. This ports missing capability into the existing native owner; **not** a duplicate parser, second NIC socket, .NET app, timer, poller or cache. +- **User-visible capability:** Browser → GOOSE has explicit interface picker, Refresh NICs and GOOSE Subscribe/Stop for the *shared passive* monitor; never silently auto-select first NIC. The selected configured stream displays actual matching wire stNum/sqNum, packet/timeout state and decoded ordered `allData`. After capture stops, retained values are clearly historical, not live. The full Sniffer remains available. +- **Identity and safe engineering naming:** exact case-preserved `goCBRef` and available DataSet, APPID (SCL hexadecimal), destination MAC, goID and VLAN/PCP; typed live MMS `LD/LN.GO.gcb`/ `LD/LN.DataSet` → canonical `$GO# Native Qt IEC 61850 Workbench — current cross-thread handoff + +> **Updated:** 2026-10-16 (WIB), snapshot only; always refresh GitHub refs and PR state before editing. +> **Primary strategy and ownership contract:** [WORKBENCH_ARSAS_GUI_SSOT_STRATEGY.md](WORKBENCH_ARSAS_GUI_SSOT_STRATEGY.md). +> **Scope:** installed native ARStack Workbench in apps/ied_simulator. Not a web app, WPF clone, or the separate ESP32-P4/SMV Studio track. + +/`$DataSet` wire conversion only (no global dot replacement). No APPID-only guesses; malformed/ambiguous/wrong-publisher evidence rejected. A model member is labeled with an observed value **only when the configured ConfRev AND DataSet member count agree**. Otherwise raw allData remains visible, explicitly unbound, with mismatch warning, no invented FCDA mapping. +- **Bounded performance:** one `GooseMonitorController` for the application, 256 streams/256 members/256 events/4096 retained packets/64 packets per poll; NIC enumeration cached behind its own `interfacesChanged`, refreshed only on command and never per incoming frame. Multiple IED tabs reuse the one monitor with strict stream binding, not multiple receivers. +- **Regression:** `ied_goose_workspace_qa` replays generated native GOOSE publisher PCAP; checks exact matching, allData order, canonical MMS references, wrong APPID/DataSet/MAC/goID/VLAN, malformed identity, case sensitivity, competing publishers with same ref/APPID, plus existing TTL/sequence/PCAP capacity. Qt QML smoke and rendered Browser routing passed on exact PR SHA. This is test evidence, **not** field IED capture or manufacturer interoperability certification. +- **Outstanding product gates:** test on physical publisher/relay and selected Windows Npcap NIC (including VLAN/offload/network path and physical frame receipt), validate ConfRev/FCDA values with real SCD, time-to-first-observation, Windows installed Workbench package, and independent reporting/RCB controls. No guessed GOOSE subscription acknowledgements or device state changes. Separate ESP32-P4/PTP/SMV Studio track remains independent. +- **Next milestone candidates:** Reporting static/URCB/BRCB real-frame mapping, GOOSE SCL-enriched per-member quality/metadata, and measurable repeatable discovery latency benchmark on same IED; require source-owner and CI checks to avoid duplicate architectures. + ## P0 negotiated NameList wire pipeline — 2026-10-16 (WIB) - **Actual main at integration:** `47f9966edc07d5ef391d149b0ac60bc259b5bd11` after [PR #197](https://github.com/masarray/arstack61850/pull/197), source head `88ba0419af3866938be7a69c57cdc6cea6c56457`. **13/13 exact-head workflows SUCCESS** including C++ GCC/Clang/MSVC, native IED Simulator Qt, Security and Evidence, SCL-assisted, MMS/RCB, interoperability, and Product Naming Guard. Automated review issue about strict GCC aggregate initialization was corrected and marked resolved. Post-merge `main` workflows were still active at the checkpoint; independently verify results on their actual SHA.