Skip to content

P8: actually wire native IEC natural sort and make GOOSE event/inspector engineer-readable - #508

Closed
masarray wants to merge 3 commits into
fix/507-bcuge-goose-quality-event-natural-sortfrom
fix/508-goose-operator-inspector-native-sort
Closed

masarray wants to merge 3 commits into
fix/507-bcuge-goose-quality-event-natural-sortfrom
fix/508-goose-operator-inspector-native-sort

Conversation

@masarray

Copy link
Copy Markdown
Owner

Root cause and scope

Actual BCUGE screenshots from #507 portable test show CSWI1, CSWI10, CSWI2 despite the "natural sort" claim. The previous comparer was only installed by a search overlay matching six DataGrid columns, but the real native Explorer grid has seven including Alarm and owns a separate native search. This PR attaches the comparator at the real XAML DataGrid Loaded event (with source-change refresh), not an unused search module. WPF ICollectionView only, no data/FCDA order mutation.

GOOSE right Inspector and Messages previously bound terse names and hidden IED/Event columns. Changes:

  • Time width 116, visible IED and GOOSE ID, Event, DataSet and Details. Source/destination MAC, relative time remain in immutable stream detail/raw evidence and are omitted from the compact event grid rather than squeezing critical identifiers.
  • Application ID displayed as actual APDU number in decimal (0x002C→44, 0x0021→33); no hardcoded 44.
  • VLAN ID and priority use typed parsed wire VLAN fields, not splitting an existing formatted label.
  • Separate status number and sequence number; expanded "Time allowed to live", "Configuration revision", "Simulation test" and actual allData "Number of DataSet entries". Keep exact raw source in snapshot and preserve UI scroll.
  • Additional constrained, source-bound adjacent quality pairing for the F650 screenshot: named stVal + next q both from active matching SCL stream, exact normalized IEC LN.DO display owner, valid decoded quality, non-conflicting full LD refs; no guessed Good or reordering of raw FCDA.
  • Synthetic regression validates original 7-column Live Grid hookup (not just comparer unit), active GOOSE XAML, numeric APPID 44 vs 33, VLAN/status/sq/Test/wire entry count, F650-shaped q pairing.

One commit atop #507, engine pin unchanged. CI auto-trigger only once; keep R10 mainline guard intact and DRAFT until Windows portable smoke and BCUGE field test verify real result. No merge to main/release. Sources: user screenshots and live field diagnostic.

Copy link
Copy Markdown
Owner Author

Exact-head qualification — BCUGE GOOSE operator UI (10 October 2026)

Latest HEAD: bccf18e33cf68289e26cdeddaae0daf203750f96 (3 scoped commits atop #507, 0 behind; 11 files). Source baseline ARSAS #507 57f92d98 + immutable engine #157 8b0c0f7e. No engine, static-reporting, NTP transport, or command code changed.

User field acceptance required

  1. Live Values CSWI1/2/3/10 natural order on real seven-column grid, not the old six-column search-overlay heuristic.
  2. GOOSE Time HH:mm:ss.fff untruncated. Visible IED + GOOSE ID; original MAC and relative-time evidence retained in historical event object and inspector, hidden from compact timeline.
  3. Inspector Application ID is APDU decimal (0x002C→44; 0x0021→33), VLAN ID and priority from frame independently, Time allowed to live, Status number, Sequence number, Configuration revision, Simulation test and exact allData entry count.
  4. GOOSE1/2 four actual wire members remain intact. Engineering stVal/q collapse only with exact/unique typed model evidence; no guessed Good. Test both actual frame/inspector and history.
  5. Event cross-stream correlation remains conservative; independent or unmapped publishers do not disappear. Preserve every packet in raw capture and explicit retransmission mode.
  6. BCUGE MMS Static DataSet stays report-only with previous 67/67 display, six exact RCB ingresses, and no cyclic polling.

PR stays DRAFT pending BCUGE screenshots confirming above. No main merge/release.

Copy link
Copy Markdown
Owner Author

Disposition: Superseded — administrative consolidation of a verified commit-ancestry milestone, not a merge into main or physical acceptance.

Canonical replacement: #543 (head 6285867780b8ea79c231d72a3819e9e5f99748d2; stays OPEN for staged integration). This PR head bccf18e33cf68289e26cdeddaae0daf203750f96 is an exact Git ancestor of #543 head: GitHub compare old-head...canonical-head = ahead, ahead=227, behind=0.

Unique delta: IEC natural sorting and GOOSE engineering/event-inspector readability; 11 changed files, including GooseCanonicalEngineeringTests.cs, GooseNoviceInspectorRegressionTests.cs and NativeExplorerNaturalSortRegressionTests.cs. No original commits from this PR are omitted from #543's commit ancestry; the original branch and historical patch/tests remain recoverable. The final tree's semantic equivalence and physical qualification are not claimed by ancestry alone: these are follow-up requirements at the canonical tip.

Safety: Close only the redundant intermediate PR conversation, do not delete any branch. No code edits, no engine repin, no change to main, stable v1.6.42, checksums or safety/CI gates. This particular PR is not the remaining integration gate.

Follow-up: Retain typed GOOSE semantics, true wire provenance and regression tests; reconcile with any newer GOOSE authority before a physical/mainline promotion. Track unfinished acceptance and missing behaviors via #543 or the later authoritative integration/qualification workstream; do not merge #543 to main without required gates.

@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