diff --git a/docs/WORKBENCH_CURRENT_HANDOFF.md b/docs/WORKBENCH_CURRENT_HANDOFF.md index aba62d60c..e69521883 100644 --- a/docs/WORKBENCH_CURRENT_HANDOFF.md +++ b/docs/WORKBENCH_CURRENT_HANDOFF.md @@ -4,6 +4,17 @@ > **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. +## 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. +- **Implementation:** portable native C++ `MmsAssociationRuntime::exchange_confirmed_batch` sends whole confirmed P-DATA frames on one association owner, then receives through the existing authoritative receive primitive; exact invoke-ID correlation handles out-of-order responses, duplicates/unregistered IDs fail closed, and asynchronous InformationReport remains on the original bounded queue. Each complete send has a per-batch receipt even when later timeout/fault occurs. No concurrent `exchange_confirmed` threads, second decoder, worker pool, timers, or hidden MMS Write. +- **Safety contract:** strict positive decoded peer MMS Initiate-Response `maxOutstandingCalling` is a prerequisite for any batch window above 1. If unknown/tolerant, **fallback is serial** despite compatibility defaults. Effective GetNameList window = min(explicit request, verified peer calling window, internal hard cap 8). The batch call is synchronous and single-owner: it is not safe to invoke other receive/poll methods concurrently. Pagination on each chain stays sequential, bounded and fail-closed. +- **Discovery behavior:** independent per-domain NamedVariable and NamedVariableList chains are opt-in; existing Workbench/controller default remains serial to preserve field compatibility. Read-only bench CLI: `ariec61850_live_discover --name-list-window 4` (range 1..8, default 1). Model/raw FC identity stays canonical; completed evidence only is published. Summary exposes completed confirmed-request wire budget and `nameListPeakOutstanding` without extra network traffic. +- **Regression evidence:** 48/48 CTest PASS on GCC and Clang. Focused tests verify VMD+two-domain model parity and equal six NameList sends between serial and four-chain operation; page continuation after the prior response; out-of-order invoke routing; interleaved InformationReport; bad continuation, rogue/duplicate IDs, over-window refusal, loss/timeout and reconnect/send-receipt semantics. No real IED timing speedup claimed from scripted transport. +- **Other observed CI issue (independent):** Workbench Release Hardening on `main bcbebc32` failed *before build* because Chocolatey/NSIS dependency download returned HTTP 503; Linux release-soak succeeded. Treat as packaging environment incident, not evidence of MMS/Qt regression. Re-verify installer separately. +- **Next highest-value work:** same-relay repeated serial/window=2/window=4 captures with SCL and model fingerprint, completeness, wire budget, `maxOutstandingCalling`, elapsed discovery latency, time-to-first-usable model, CPU/memory, reconnect and report/RCB behavior. Only after physical interoperability evidence consider exposing the opt-in to native Workbench. Long-term association-wide concurrent requester APIs still require an explicit shared lifecycle/receive-pump contract; the current batch API is intentionally single-owner. +- **Acceptance remaining:** exact post-merge `main` gates; physical IED and installed Windows Workbench bench runs; measurement of speedup; ESP32-P4 PTP/SV qualification is unrelated. Do not merge the separate Studio scope into the native Workbench. + ## Latest accepted P0 checkpoint — 2026-10-16 (WIB) - **Main HEAD after integration:** `aae37327d8e9c40314f4a86b6127a12d38248420` (merge of #187). This supersedes the older baseline in the historical section below; always re-query GitHub before further writes.