Skip to content

GOOSE workstation UX: real card CTA, NIC auto-start, quiet messages, 3s changes - #498

Closed
masarray wants to merge 6 commits into
integration/495-smart-dataset-closurefrom
fix/498-goose-cta-navigation-adapter
Closed

masarray wants to merge 6 commits into
integration/495-smart-dataset-closurefrom
fix/498-goose-cta-navigation-adapter

Conversation

@masarray

@masarray masarray commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Operator field finding (GE F650) and corrected implementation

Underlying root cause: the visible GOOSE capability pill is created by FaultRecordUxBehavior.cs, not the extra icon from MainWindow.IedGooseQuickStart.cs. Its old OpenGooseWorkspace() hard-coded tab 3 (Alarm). Prior PR #498 change fixed only the extra icon and therefore did not resolve the operator's reported CTA. The real pill now calls the shared OpenIedGooseSubscriber, selecting tab 4.

Required UX path: IED Explorer GOOSE pill → GOOSE Subscriber tab → operator explicitly chooses Npcap NIC (e.g. KM_Test when appropriate) → capture starts automatically, without an extra Start click. Binding and adapter refreshes cannot trigger the start: a one-shot routed AdapterConfirmed event from the actual ComboBox is required. Capture persists untouched if already running; leaving the GOOSE tab cancels unconsumed intent. Manual GOOSE tab navigation retains manual Start mode. An IED with no mapped GoCB may still use raw, read-only network capture; no guessed SCL is required.

IEC 61850 GOOSE behavior: preserves all EtherType 0x88B8/VLAN physical capture, counters, publisher per-stream state, decoder, binding and diagnostics. Presentation only: default Messages list suppresses identical sqNum retransmissions even if a persistent Test flag is set; shows first publisher, new warning, actual payload change, stNum change or newly observed sequence anomaly. An opt-in “Show retransmissions” displays all. Payload differences while stNum is unchanged are explicitly flagged rather than hidden. Matching signal leaves highlight for 3 seconds. Memory remains bounded by existing UI queue/event caps.

Layout: IEDScout-style two-pane Messages left / Inspector right (publisher identity available per row), removing the narrow publisher sidebar. Command Dock removes redundant “Fast IEC 61850 Control” introduction, redundant prose and its Refresh Values/Edit Signals header controls, retaining real command grid and validation/interlock workflow.

Evidence: IEDScout capture compared to ARSAS: two GOOSE streams APPID 33/44 (0x0021/0x002C), 4 DataSet members in GOOSE2 matching CSWI6, CSWI7, eveGGIO Ind11/Ind13. The decoder is already correct; do not rewrite it. The field acceptance is usability and no-loss wire recording, not forced parity of captured packet counters in different capture windows.

Risk separation: stacked draft atop ARSAS #497 + #494; ARIEC61850 engine #157 and P7.6G pins unchanged. No MMS polling, dynamic DataSet writes, or control command regression. Synthetic tests cover unchanged test-flag retransmission and changed value with same stNum. Must pass exact-HEAD Windows compile, regression, publish + smoke and operator GUI validation before merging. Mainline physical gate stays closed.

@masarray masarray changed the title Fix IED GOOSE CTA: correct tab, deliberate adapter selection, safe capture lifecycle GOOSE workstation UX: real card CTA, NIC auto-start, quiet messages, 3s changes Oct 9, 2026

masarray commented Oct 9, 2026

Copy link
Copy Markdown
Owner Author

Exact-head 2026-10-10 field UX candidate — build validated

HEAD 67266f2017339159e0af4812e4c40339fadd5c70 (stacked draft above #497), unchanged ARIEC engine pin.

Build ARSAS #38003596158 SUCCESS: native WPF compilation, regression 1,446 passed / 0 failed / 0 skipped, portable win-x64 single EXE publication, executable smoke test, artifact upload. Exact artifact #11650885130.

SCL Interoperability R7, Field Capture, provenance, golden budget, repeat-run, SV bundle, merge execution, production promotion and reference guards: SUCCESS. Mainline Readiness deliberately FAILS for the still-unqualified P7.6G engine/physical branch; no bypass, merge or public release.

Root fix: actual card GOOSE pill from FaultRecordUxBehavior.OpenGooseWorkspace no longer selects Alarm tab 3. Now shares GOOSE tab 4 route. Card CTA arms a one-shot adapter picker; user-selected ComboBox NIC raises explicit AdapterConfirmedEvent and automatically starts read-only GOOSE. Refresh, binding update or switching tabs does not accidentally trigger capture. Existing capture never overwritten. Raw unbound GOOSE listening supported even with no GoCB in SCL.

Presentation: two-column Messages + Inspector, no narrow publisher sidebar, actual publisher selection through message row. The default filters identical retransmissions and recurring static Test status by state+payload+diagnostic signature, but does not drop any wire frames. Changed payload on same stNum remains a warning and 3s highlight. Toggle allows full retransmissions. Command Dock redundant subheader/copy/header buttons deleted, compact padding; command grid/interlocks left intact.

Pending operator GUI acceptance (not claimed by CI): visible pill navigates to GOOSE, selecting KM_Test (only if correct LAN) auto-starts, counters count all frames while Messages shows changes/warnings rather than constant retransmission, inspector shows two APPIDs (0x0021/0x002C) / correct four dataset leaves, changed retransmitted payload highlights for 3s, command panel layout is compact. Keep PR #498 draft until user validates actual GUI/capture and #497 physical gate is satisfied.

Copy link
Copy Markdown
Owner Author

Disposition: Superseded — evidence-backed consolidation of an intermediate stacked milestone; no code merge to main.

Canonical replacement: #543, still OPEN, head 6285867780b8ea79c231d72a3819e9e5f99748d2. GitHub compare from this PR head 67266f2017339159e0af4812e4c40339fadd5c70 to #543 head returned ahead with ahead=258 and behind=0; every original commit remains reachable.

Unique delta: GOOSE card/navigation, NIC auto-start and event inspector first UX milestone. Patch audit: 13-file patch including GooseTimelineEventPolicyTests.cs and FastWorkflowRegressionTests.cs. Original code, unit/regression test patches and commit history remain recoverable from both this branch and the canonical descendant. The descendant's current runtime semantics must still be qualified; ancestry is not a substitute for that test.

Safety: This closes an intermediate tracking PR, not its source branch, CI gates or evidence. Accepted v1.6.42 binaries/tag, main, ARIEC engine lock and live device safety are untouched. No implicit operator/physical qualification.

Follow-up: The event model and UI were subsequently extended by #499 and descendants. Re-check GOOSE capture/source truth and physical behavior on the eventual integration branch. Any remaining work is retained under #543 and the newer release-gated integration chain.

@masarray masarray closed this Oct 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant