Static DataSet report-only: exact membership + schema-safe report projection - #255
Merged
Merged
Conversation
masarray
force-pushed
the
fix/static-dataset-report-projection-parity
branch
from
September 4, 2026 09:46
9d11b8e to
e82f21c
Compare
masarray
marked this pull request as ready for review
September 5, 2026 03:37
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.
Direction lock
This PR intentionally continues the Static DataSet contract established at
fa16fa98a3bd36e9c7a68910ad84e53bc9e8bbfcand carried into currentmain:PR #253 was closed after physical bench evidence showed that re-enabling bounded MMS fallback regressed this contract.
P0 — exact Static DataSet membership authority
The AA1E1F06R4 bench report showed 58 static DataSet members but 123 selected signal rows / 69 runtime points. The old selection rule accepted every runtime alias carrying a
DataSetReference, inflating the plan withcVal/instCValand structured aliases.This PR now:
(DataSetReference, DisplayReference)identity onlyP1 — schema-safe report projection without MMS fallback
Physical evidence also showed ARIEC already expanding
I_MHAI1.ThdAandV_MHAI1.ThdPPVinto exact semantic scalar descendants. ARSAS previously vetoed these families through the legacy exact-MMS rule.This PR adds
StaticDataSetReportProjectionAccumulatorand wires it into the strict report-only runtime:instCVal/ sibling values cannot replace the canonicalcValpath unless independently selectedStatic DataSet: StaticBrcb/StaticUrcb(or the corresponding engine acquisition kind)The legacy conservative MMS-authority rule remains intact for Manual/Hybrid mode.
P2 — preserve report-native quality + IED timestamp
The second AA1E1F06R4 physical test proved the report already carries
q=questionableand the IED timestamp, while semantic value rows could still showPending / q not suppliedand-.The accumulator now keeps report companion metadata session-locally and joins it to later semantic scalar value leaves by exact IEC object scope:
goodis inventedquestionablequality and IED timestamp when q/t precede the semantic value projectionARIEC engine PR #111, pinned by this branch, additionally orders schema-proven q/t companions before semantic scalar values so this report-only join is deterministic.
P3 — TotPF exact semantic schema authority
TotPFremainedUnknown / report pendingeven though IEDScout reads it. The root cause is in the engine projection order: the generic structured-value heuristic can classify a two-float structure asinstMag/magbefore exact SCL semantic projection is attempted.ARSAS is now pinned to ARIEC PR #111 / commit
52c19088e215f2dc482db6550367beb1dcb216bbon the exact previousb9ee5fcengine lineage. That engine change:TotPF.instMag.f/TotPF.mag.fPPRE_MMXU1.TotPFregressionThis does not add polling or dynamic DataSet mutation.
P4 — IP editing responsiveness
The editable IP ComboBox previously combined WPF text search with
UpdateSourceTrigger=PropertyChanged, causing binding/UI work on every character typed. The wizard now:LostFocusinstead of every keystrokeConnect & DiscoverA source regression prevents the per-keystroke IP binding from returning.
Regression / acceptance guards
Regression coverage verifies exact membership cardinality, THD semantic reconstruction, canonical
cValpreference, DmdWh projection, exact-child preservation, report q/t carry-forward, responsive IP editing, and the no-MMS-fallback runtime contract.docs/static-dataset-report-only-contract.mdrecords the physical acceptance boundary so later readability work cannot silently regress the acquisition architecture.Expected physical result
On the same CID/IED:
MMS pollingrows in Static DataSet mode.ThdA/ThdPPVvalue rows show report-nativequestionablequality and IED timestamp instead of Pending q/t.TotPFresolves through exact report semantic leaves rather than remaining Unknown.Keep this PR draft until physical relay validation passes.