Reject impossible IEC 61850 report values before Event Log mutation - #191
Merged
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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.
Field evidence
ARSAS 1.6.31+a7e2f91 with engine e23b295 was retested against AA1C1F13R4. StaticUrcb Event Log rows still briefly showed report metadata/process misalignment (
bits(0000, ...), long all-ones inclusion bitmaps, and DPC bit strings under unrelated Boolean.stValreferences) while MMS verification moments later produced the correct scalar values.Engine root cause
ARIEC61850 PR #81 identified and fixed the upstream cause: a valid zero-OptFlds report was rejected and could fall through to raw AccessResult-by-index projection. PR #81 is merged to engine main as
becda399b4a3ae34831215fc915798b4f846c1be; ARSAS is immutably pinned to that revision in this PR.ARSAS defense in depth
Public SOE/Event Log must not depend on one parser assumption alone. This PR adds a consumer-side type safety boundary immediately before report values can mutate runtime state or raise SOE events:
unused=6); report inclusion/OptFlds bitmaps are rejected.Structure{stVal=false,...}->False, numeric BCR/actVal -> scalar).REPORT_VALUE_REJECTEDonce per affected point, and leave MMS verification/fallback authoritative.Regression coverage
CILO1.EnaOpn.stValrejectsbits(...)metadata.CSWI1.Pos.stValacceptsbits(40, unused=6)and formatsOpen [01].ApplyValueUpdateand therefore before state/SOE mutation.Temporary patch tooling was removed before this PR; final diff contains only production source, engine lock, and tests.