Repository navigation
Operator UX lift: real Ua zero-cross scope, actionable GOOSE empty state, concise SCL and diagnostics - #39
Conversation
…ithout synthetic points
…herence and flat-signal fallback
…ng score is not probability
…ndable full expected/observed evidence
…guessing publisher fault
… preserving full forensic findings
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3bb970e4c2
ℹ️ 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".
| previous.Value > 0 || current.Value < 0 || | ||
| (previous.Value == 0 && current.Value == 0)) |
There was a problem hiding this comment.
Count an exact zero as only one rising crossing
When Ua contains the common sequence negative, 0, positive, both the zero sample and the following positive sample satisfy this predicate. Because the scan selects the newest candidate, a snapshot taken as the zero becomes eligible starts at zero, while the next received frame moves the start forward one sample. A steady 80-sample/cycle waveform can therefore jump by 4.5° depending only on snapshot timing, reintroducing the scope flicker this alignment is intended to remove; require one side of the crossing to be strictly signed so an exact zero produces a single trigger.
Useful? React with 👍 / 👎.
| // Flat/noisy Ua is not a meaningful phase reference. | ||
| if (contiguous && peak > 1e-6) | ||
| return start; |
There was a problem hiding this comment.
Reject noisy Ua before using it as a phase trigger
For a missing or noise-only Ua channel with raw values such as ±1 count, peak > 1e-6 is always true, so every noise-induced negative-to-positive transition is accepted as a phase reference. The selected start then moves among arbitrary noise crossings on successive publications instead of using the documented slot-locked fallback. Validate that Ua has a meaningful periodic amplitude/crossing slope relative to its noise level rather than merely checking that one sample is nonzero.
Useful? React with 👍 / 👎.
…th bench limitations
Shipped implementation
Gates
Independent clock lock, publisher timing accuracy, IEC 61850 certification, field acceptability and IED receiver are not claimed by software CI. Refer to physical acceptance issue #30.