refactor(formatting): avoid second legacy scalar extraction - #417
Conversation
|
Focused consumer/impact audit for the two-file formatter refactor (against current #416 base):
The PR remains stacked on #416 and CI is in progress; no merge/signoff claimed. |
c37bec2 to
f7d1f65
Compare
4fefd6b to
b85ce12
Compare
|
Pernyataan pribadi kontributor, diposting melalui ChatGPT berdasarkan izin eksplisit yang diberikan dalam percakapan:
|
b85ce12 to
c7edc91
Compare
|
#417 contributor handoff — CLA complete; only DCO sign-off for this new commit remains after final exact-head CI. This draft now targets the real #416 merged For the contributor to sign with their own Git identity in their Windows clone: git fetch origin
git switch --track origin/maintenance/value-formatter-single-normalization-20260926
git rev-parse HEAD
# Continue ONLY if the SHA equals c7edc91d1af814366af579e680acc5d37418923d
git config user.name
git config user.email
git commit --amend --no-edit --signoff
git log -1 --format=%B
git push --force-with-lease origin HEAD:maintenance/value-formatter-single-normalization-20260926If the local branch already exists, switch to it and fast-forward to the current remote before amending; do not overwrite other local work. The Signed-off-by trailer is the contributor's own certification; ChatGPT has not inserted a substitute sign-off. After the SHA changes, verify one signed-off commit based on the merged main parent and run the 9 exact-head workflows again before merging. No release promotion or physical-device claim. |
Signed-off-by: masarray <ari.sulistiono@gmail.com>
c7edc91 to
ef18bef
Compare
Scope: one pure formatting subsystem — now based on merged #416 in
main#416 was merged as
e7b43508fb3b2bf5fbda7be8ed8425da74bb9766. This PR's tree was reconstructed on that exact merged parent without changing any source blob. The diff againstmainis exactly two files:Services/Iec61850ValueFormatter.csandtests/ARSAS.Tests/Iec61850ValueFormatterTests.cs.Root cause and implementation
FormatReportProcessValueextracts a legacyStructure(...){stVal=...}or numeric metadata-qualified indexed scalar, then delegated toFormat, which tried the same structure extraction again. A privateFormatNormalizedValuenow holds the original switch/Dbpos presentation, so both public entry points extract exactly once. This is display-only, with no protocol, report acquisition, static DataSet, RCB/GI, dynamic write/polling, public API, or persisted model change.Regression coverage and consumers
Four added test cases cover Boolean and DPC structured report values, numeric indexed BCR-style presentation, and refusal to collapse a nonnumeric indexed structure. Existing generic/report operator vocabulary and timestamp tests remain. Report-driven monitor and FAT preview call
FormatReportProcessValue; direct read/polling presentation uses genericFormat; model/controlTryNormalizeDbposremains untouched. No performance gain or physical IED operation is claimed.Integration provenance
maine7b43508fb3b2bf5fbda7be8ed8425da74bb9766, a signed-off, 9/9 CI-green chore(maintenance): consolidate runtime boundary and deterministic CI #416 merge with eight exact source-blob matches.c7edc91d1af814366af579e680acc5d37418923d, byte-identical formatter tree to the previous candidate. 9/9 exact-head CI successful: Build ARSAS (1,319 passed, 0 failed, 0 skipped), Merge Execution Guard (1,319 passed), Field Capture Build, SV evidence, and the five remaining Smart Discovery guards.No release, tag or production engine lock changes. Tracks #380.
Integration result — verified on actual main
ef18befb760e0dae8be18894e57c60d8d6779823; CLA acceptance already recorded in its Conversation.40355bca78341f02ecdc2c10199a1df062570897. Verified exact formatter tree and only two changed files.