fix: clarify closed-loop timing and frozen capture semantics - #131
Merged
Conversation
masarray
marked this pull request as ready for review
August 9, 2026 11:15
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ececea6346
ℹ️ 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".
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.
Summary
Tightens operator/evidence semantics on top of the metrology-grade timing engine and fixes the closed-loop RESET/re-arm lifecycle found during manual desktop validation.
Timing / operator clarity
RELAY ANY PU [source]fromTESTSET BI2 ACCEPT;OUTPUT OFF · FROZEN CAPTURE,PICKUP LIVE, andTRIP LATCHsemantics explicit;P0 one-click relay RESET / re-arm correctness
Manual testing exposed a second issue: after BI1 auto-stop, the simulation can be frozen while the causal relay acquisition/DFT still contains fault-window samples. The old reset path advanced only a fixed
FeedbackSettleTime, which could be shorter than the acquisition dropout time and made repeated RESET clicks appear necessary.This PR now:
ClosedLoopRelayResetTransactionas the single deterministic reset transaction;ExecuteRelayResetCommand()instead of legacyReset_Click, removing the former dual reset authority.Regression coverage
OneResetTransactionFullyReleasesFrozenDesktopFeedbackAndRearmsreproduces the desktop path with:VirtualRelayFrontEndProfile.NumericalRelayDefaultVirtualRelayContactProfile.RealisticNumericalRelayMetrologyTimingProfile.CmcStyleIt performs trip → BI1 auto-stop → one RESET command only and requires:
TripLatched == falseTryStartInjectionsucceeds and creates a new run.The regression also proves the required reset settling is longer than the old fixed
FeedbackSettleTime, directly covering the former multi-click symptom.Invariants
TESTSET.BI1only;Manual timing examples
51N-operated case:
T0 → RELAY ANY PU [51N] 2.500 → TESTSET BI2 ACCEPT 5.050 → 51N TRIP 402.000 → TESTSET BI1 ACCEPT 406.550 msCase where 51N picks up first but 50P-1 operates later:
T0 → RELAY ANY PU [51N] … → TESTSET BI2 ACCEPT 4.550 → 50P-1 PU 11.250 → 50P-1 TRIP 71.250 → TESTSET BI1 ACCEPT 75.750 msValidation — final head
3f37c97f8e.NET CIrun31316875569:CodeQL run
31316875589:Desktop release run
31316875594:All existing inline review threads are resolved; no current requested-changes review is present.