Fix live ctlModel command gating and SBO feedback flicker - #1
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 17a4d14479
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| public bool IsRaiseOnlyControl => ContainsControlToken("TapOpR") || ContainsControlToken("Raise"); | ||
| public bool IsLowerOnlyControl => ContainsControlToken("TapOpL") || ContainsControlToken("Lower"); | ||
| public bool IsPositionControl => CanExposeControlActions && IsPositionSemanticControl; |
There was a problem hiding this comment.
Refresh unresolved control models before exposing actions
When a command row is discovered with the existing Auto-detect on command or Validate ctlModel on command labels and report/poll feedback has already filled ControlCurrentValue, this unresolved-state fallback still exposes the semantic Open/Close actions. I checked RefreshControlValuesAsync in MainWindow.xaml.cs: the automatic expand refresh only selects rows with ControlCurrentValue == "-" or ControlModelText == "Auto-detect", so those rows are skipped before live ctlModel is inspected. In that context a live ctlModel=StatusOnly object continues to show command buttons until the user forces refresh or clicks a command, bypassing the status-only gating added here.
Useful? React with 👍 / 👎.
Audit result
The native engine already reads the IED's live
ctlModel. The application bug was in how that evidence reached the row UI:ctlModel=StatusOnlyis a valid read-only model, but the Smart Control service rejects opening an executable session for it. ArIED treated that as a generic inspection error and left Open/Close visible because row actions were derived only from the CDC/object name.ControlCurrentValue, allowing an older sample to overwrite the newer command observation.Changes
ctlModel; StatusOnly/Unknown become read-only.SBO Select → OperateorSBOw → Operatein the row result.Safety
Validation
GitHub Actions will restore, build Release, and publish the Windows portable package. Live relay validation is documented in
CONTROL_MODEL_COMMAND_UX_AUDIT.md, including all ctlModel values 0–4 and the reported SBO case.