G2.5-A2.1: command-bound high-speed stimulus witness - #229
Draft
masarray wants to merge 19 commits into
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Status
G2.5-A2.1 V3 is CODE/CI READY and PHYSICAL RETEST PENDING. It remains stacked on exact physical A2 candidate
6be89d0ead77d8b6cc97665d47e0eb3abe1f6876.Physical history / why V3 exists
V1 — superseded
Exact candidate
f3100b3588cc9da78569ce1a9479b14e4437165bwas field-tested. The isolated MMS witness was healthy: pre-command baseline16/16,0read failures, association remainedMmsInitiated. HoweverCommand captured=Falseand the 45 s wait timed out.Root cause: V1 listened to
SignalDefinition.ControlCommandBusy, which is used by the fast Command Panel but not by the dedicatedControlCommandWindow.SendCommand_Clickpath used in the field. This was an observer failure only; it did not indicate an MMS, SBOw, Operate, CommandTermination, feedback, or report failure.V2 — superseded
Exact candidate
0219b9aa2e2f9ca276018193c17fe7fb3b9b0495added an observer-only routedButton.Clickfallback for the dedicated Control Command dialog while retaining fast-panelControlCommandBusyobservation. Physical retest again produced a healthy MMS baseline16/16,0read failures, association healthy, but neither UI observer captured the command. Therefore UI/WPF event observation is not accepted as command-capture authority for this physical workflow.V3 corrected exact field candidate
ARSAS:
e386f48a70cf111717e6c29027f6e62b1f22529fARIEC61850 remains pinned to physical-proven:
26c85400a4da230c4429e6302847f230385b6687V3 command-capture authority
V3 stops relying on WPF events as authority. It subscribes to the already-existing
Iec61850MonitorRuntime.Diagnosticevent and parses the existing runtime diagnostic:Control execution requested: <exact signal> value=<requested value>; ...That diagnostic is already emitted synchronously by the unchanged runtime immediately before the existing native control call. Therefore every normal caller of
Iec61850MonitorRuntime.ExecuteControlAsyncpasses the same observer point regardless of which ARSAS control UI initiated it.V3 only observes that existing event and republishes immutable intent into the A2.1 observer bus. It does not add code inside the control transaction.
Legacy V2 UI observers remain only as non-authoritative fallbacks.
New V3 pieces
MainWindow.A21Witness.cs— read-only exposure of the already-existing runtime instance for commissioning observation only.Services/DynamicReportCommandBoundStimulusWitnessServiceV3.cs— subscribes/unsubscribes the existing runtimeDiagnosticevent, parses exact IED/object/value, and delegates the isolated MMS sampling to the existing V2 witness.tests/ARSAS.Tests/DynamicReportCommandRuntimeDiagnosticWitnessTests.cs— exact runtime-diagnostic parsing, IED filtering, non-control rejection, source-boundary and read-only/production-off regressions.Control source boundaries remain untouched
Services/Iec61850MonitorRuntime.cscontrol implementation is unchanged; V3 only subscribes its pre-existing publicDiagnosticevent.ControlCommandWindow.xaml.csunchanged.MainWindow.xaml.cscontrol executor unchanged.Models/SignalDefinition.csunchanged.The runtime diagnostic call itself is synchronous (
Diagnostic?.Invoke(...)) and occurs beforesession.Client.ExecuteControlAsync(...), so a normal runtime control request while V3 is armed provides a deterministic command-capture boundary without WPF timing assumptions.Operator flow for physical V3
e386f48a70cf111717e6c29027f6e62b1f22529fand exact engine26c85400a4da230c4429e6302847f230385b6687.Ctrl+Shift+Farms A2.1 V3.G2.5-A2.1 READY — ISSUE ONE ARSAS COMMAND.G2.5-A2.1 COMMAND CAPTURED.G2.5-A2.1 TRANSITION OBSERVEDand capture the full evidence window.Safety
The witness itself performs zero control/report mutation:
ProductionEligiblechange;CI — exact V3 head
e386f48a70cf111717e6c29027f6e62b1f22529f32685069309— PASS32685069319— PASSArtifacts
9505449370, SHA-25605f1cc910b1a186c82cd18ecc692c20f3d542d726ff5b18ce908e1867b117d309505434874, SHA-25651cff987cb50df31562a14401b702416ce2aed3048e52ebbbded5474c0dd0de99505408620, SHA-256eaf9fe84824733ba5c2adc8667f2f2b140f61ea157cebaad3d89a4e3bcfefb79Merge gate
Do not merge yet. Physical A2.1 V3 must first capture the actual runtime command and then prove at least one command-bound MMS status transition with the witness association healthy. If command capture succeeds but no transition occurs, command binding is proven and the next investigation is feedback/status selection or pulse timing—not the command observer. If a valid transition is proven, freeze this exact physical SHA and proceed to G2.5-A3 narrow spontaneous-dchg qualification. G2.5-B physical remains blocked. Production automatic dynamic reporting remains OFF.