Skip to content

P9: canonical process values and shared badges across all IEC workspaces - #511

Closed
masarray wants to merge 2 commits into
fix/510-goose-raw-dataset-inspector-no-qualityfrom
fix/511-canonical-process-values-all-workspaces
Closed

masarray wants to merge 2 commits into
fix/510-goose-raw-dataset-inspector-no-qualityfrom
fix/511-canonical-process-values-all-workspaces

Conversation

@masarray

Copy link
Copy Markdown
Owner

Root cause and minimal change

The operator validated PR #510 and identified a remaining inconsistent Dbpos value vocabulary. GOOSE decoded IEC bitstring states into "Off" / "On", whereas MMS static reporting uses "Open [01]" / "Close [10]"; GOOSE additionally had a standalone TextColumn without process-state badges, and Command Dock used an independent feedback badge.

Exact base: #510 HEAD c0f4445f0d1c28eb2a76d6b5a01aa2b8a115438b. ARIEC61850 engine pin, read-only capture, 4 raw GOOSE FCDA entries, event coalescing, static RCB reporting, SNTP, and control operations stay unchanged.

Canonical presentation authority

  • Expose/reuse Iec61850ValueFormatter.FormatOperatorDbpos(code) for all four wire states: Intermediate [00], Open [01], Close [10], Bad state [11]. Eliminate the generic formatter's separate "Closed [10]" vocabulary.
  • GOOSE typed interpreter now uses canonical codes for current and historical DPC/Dbpos, plus explicit typed SPS/Boolean bitstring when declared. Unknown/untyped data remains untouched, and quality .q remains a distinct raw DataSet entry. Existing event summary uses the normalized current/previous values automatically; protocol fingerprint and independent stream/event ring use their original raw source values.
  • Move one ProcessValueBadgeTemplate from Window.Resources to App.Resources. Explorer, Global Live Monitor, Event Log continue referencing the same template. GOOSE Lite Inspector now uses it directly via DataGridTemplateColumn without restoring the unwanted Quality column; original four raw FCDA entries are preserved in order.
  • Fast Command Dock now hosts that same template with a cached immutable presentation-only control feedback adapter. Internal ControlCurrentValue, deferred feedback coalescing, status checks, SBO/write request parameters remain exactly as before. No new polling, worker, timer, scheduler, or capture changes.
  • GOOSE row's badge properties are cached and invalidated only on snapshot Apply, through the existing bounded UI dispatcher queue, avoiding repeated per-layout formatting. Reuse the current semantic classifier for type badge and state colors.
  • Demo Dbpos copy uses the same operator vocabulary.

Tests and acceptance

New cross-workspace regression covers IEC [00/01/10/11] value and visual families; GOOSE typed MMS BitString and historical values, Boolean bits, unmapped and quality protection, immutable command feedback vs displayed value, and active XAML for a single resource + five operator views. Updated original template-location assertions and GOOSE typed DPC expected labels.

CI budget: One atomic commit and one automatically triggered CI round; no manual workflow dispatch. Qualify exact-head Windows build, regression, single-file portable publish and smoke before handing over the artifact. Stay DRAFT pending real BCUGE screenshot acceptance; do not merge mainline/release or weaken R10 physical guard.

Copy link
Copy Markdown
Owner Author

Exact-head acceptance / candidate handoff

Commit: 924a00a48c2b55b9f4b030e57b8b5c56e951a50c, two scoped commits over #510 c0f4445f. The second commit updated an obsolete DataGridTextColumn-only regression assertion: Value is now intentionally the shared DataGridTemplateColumn; no runtime rollback.

Build ARSAS #38090542695 — SUCCESS:

  • Source/license boundary validation and source-clean rejection fixtures SUCCESS
  • Windows Release solution build SUCCESS
  • Full application regression tests, including new IEC Dbpos [00/01/10/11], previous/event, Boolean, unknown/quality, Command Dock and active XAML resource tests SUCCESS
  • Portable Windows x64 single-file publish SUCCESS
  • Real portable EXE smoke test SUCCESS
  • Exact-head portable EXE artifact #11683719812 available for BCUGE GUI validation.

Ancillary exact-head workflows: Production Promotion Guard #38090542740, Field Capture Build #38090542723, Golden Provenance, Golden Budget, Repeat-Run Stability, Merge Execution and SV evidence all SUCCESS. Mainline Readiness #38090542679 remains expected blocked pending separate R10 physical evidence; do not weaken the gate.

Field acceptance still necessary

Verify GOOSE1/GOOSE2 Current and History show Intermediate [00], Open [01], Close [10], Bad state [11] as applicable, with exactly the same DP badge colors as Explorer, Global Live Monitor and Event Log. Command Dock position feedback uses same label and badge without changing its internal command authority. GOOSE .q stays an independent Signal/Value entry and no Quality column is introduced. Confirm all four FCDA entries, selected IED filtering, capture counters, timeline dedup and static dataset reporting unchanged. No GUI field acceptance has yet been claimed.

Keep PR DRAFT. No engine pin changes, main merge, or public 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 924a00a48c2b55b9f4b030e57b8b5c56e951a50c is an exact Git ancestor of #543 head: GitHub compare old-head...canonical-head = ahead, ahead=221, behind=0.

Unique delta: canonical process-value and state badges shared across IEC workspaces; 14 changed files, including CanonicalProcessValueAcrossWorkspacesTests.cs and ProcessValueStatePresentationTests.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 multi-workspace typed process-value parity in canonical candidate and do not interpret code ancestry as physical/IEC qualification. 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