Skip to content

Fix FAT shared-workspace duplicate runtime rows - #241

Merged
masarray merged 3 commits into
feat/fat-v2-workspace-uifrom
fix/fat-shared-workspace-runtime-dedupe
Sep 3, 2026
Merged

masarray merged 3 commits into
feat/fat-v2-workspace-uifrom
fix/fat-shared-workspace-runtime-dedupe

Conversation

@masarray

@masarray masarray commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Root cause

A generic Engineering SCL scalar could be selected even when an authoritative static DataSet FAT membership already resolved to the same runtime ObjectReference. The shared selection bridge matched by SignalDefinition instance first; when the generic scalar was a different catalog instance it materialized a new scl-manual-* FAT row. FAT preflight then correctly blocked the session because one live IEC 61850 reference fed both the static row and the manual row.

Physical example: static TimeSynchrnz plus manual GGIO2.TimeSynchrnz.stVal both resolved to the same ...TimeSynchrnz.stVal live point.

Fix

  • static DataSet runtime coverage is checked before any manual row is created;
  • an exact static membership checkbox remains one-to-one, so distinct static memberships sharing one proven runtime leaf are still preserved independently;
  • a generic scalar already covered by static authority projects selection onto the static FAT row(s) instead of creating scl-manual-*;
  • stale persisted manual overlays with the same runtime/FC are retired from WorkspaceSelected during shared-workspace initialization;
  • retiring a stale overlay does not delete it and does not change its FAT TEST, Remove/Restore disposition, or captured evidence;
  • the existing duplicate-reference FAT preflight guard is unchanged and remains fail-closed.

Regression

  • reproduces static A + static B + stale manual row sharing one runtime leaf: preflight blocks before cleanup and passes after redundant manual retirement;
  • proves two distinct static DataSet memberships sharing one runtime leaf remain valid fan-out;
  • proves a manual-only SCL signal remains selected and is not retired;
  • source-contract test locks the static-runtime guard ahead of TryCreateManualWorkspacePoint.

Base is the merged P5.4 workspace line at f971d2cd6078f36a43658ed2ac6be19ce1f0251f. No ARIEC pin, protocol decoder, acquisition planner, or duplicate-safety guard is changed.

@masarray
masarray marked this pull request as ready for review September 3, 2026 06:49
@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 f9c2558 into feat/fat-v2-workspace-ui Sep 3, 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