Skip to content

Add event-latched Alarm Annunciator workspace - #199

Merged
masarray merged 13 commits into
mainfrom
feature/alarm-annunciator
Aug 16, 2026
Merged

Add event-latched Alarm Annunciator workspace#199
masarray merged 13 commits into
mainfrom
feature/alarm-annunciator

Conversation

@masarray

Copy link
Copy Markdown
Owner

Field UX cleanup

The three top-right runtime count chips duplicated the bottom status bar (connected/discovered, monitoring/values, events). They consumed scarce header width and added visual noise without providing unique operational information.

This PR removes those header chips and keeps the bottom status bar as the single runtime-summary surface.

Alarm Annunciator

Adds a dedicated substation-style Alarm Annunciator workflow between Event Log and GOOSE Subscriber.

Operator configuration

  • IEC 61850 Explorer live values gain a narrow Alarm checkbox column.
  • Selection is deliberately restricted to FC=ST status points; analog/command points are not accidentally treated as alarm contacts.
  • Annunciator selection is persisted separately in ARSAS project profiles and restored on project load.

Event/SOE authority

The annunciator does not create a second IEC 61850 acquisition path. It subscribes to the same authoritative runtime EventRaised stream that feeds Event Log/SOE and only latches explicitly configured points.

HMI alarm sequence

  • Active edge / short relay pulse -> ALARM · UNACK, flashing red lamp/window.
  • If the pulse returns before acknowledgement -> RTN · UNACK, still flashing/latched so the operator cannot miss a momentary protection indication.
  • ACK while condition is still active -> ALARM · ACK, flashing stops but the window remains steadily active.
  • Active acknowledged condition returning normal -> clears automatically.
  • Returned-unacknowledged pulse -> ACK clears it to normal.
  • Per-window ACK and global ACK ALL are provided.
  • Tiles stay in stable configuration order instead of re-sorting during alarm changes, preserving operator muscle memory.

The red/orange/amber palette is scoped only to alarm semantics; generic IEC process True/False value badges remain the non-severity blue/slate scheme introduced earlier.

Navigation / visual design

  • Workflow navigation expands from 5 to 6 cells and gains Alarm Annunciator.
  • Responsive pill geometry now derives from six real cells.
  • Freed header space is reused for the wider workflow navigation instead of more status decoration.
  • Alarm workspace uses compact premium tiles with state lamp, IED/signal identity, last SOE timestamp, current value, occurrence count and explicit acknowledgement controls.

Regression coverage

  • Momentary pulse latches through return-to-normal until ACK.
  • ACK stops flash but does not hide an active condition.
  • Inactive events do not invent alarms.
  • Explicitly selected abnormal DPC states latch as operator alarms.
  • Explorer annunciator selection is FC=ST only.
  • Project persistence keeps annunciator references separate from normal live selection.
  • Source integration guard proves annunciator consumes EventRaised and does not call value reads/start monitoring.
  • Six-tab navigation, header chip removal, Alarm checkbox, ACK controls and bottom status-bar authority are locked by regression tests.

Final diff contains only production source/XAML and regression tests; temporary patch tooling was removed before PR creation.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@masarray
masarray merged commit ab34eed into main Aug 16, 2026
3 checks passed
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