fix(opctreemanager): make the log a technical record - #146
Merged
Merged
Conversation
The log claimed outcomes it could not observe and hid the ones it could. A run that logged errors still ended with "Deferred execution completed successfully", and the operator had no way to see which nodes came back unwired; the 119 unresolved links of the 2026-09-22 run were only findable by scripting over tree.json. The deferred pass cannot raise the Failed pin, because the host replaces the FB instance between runtime cycles, so the log is the only channel and every line now states exactly what the code observed: - one rebuild summary with the verdict taken from the counters, and an action clause naming what the operator should do - a per-node tally at Error: links, resolved, unresolved - the snapshot line carries node count, link count and the file's write date - the plan is stated before it runs, not after - a construction with no links says so instead of passing silently - connects report issued and threw; "issued" is the strongest claim available, because connections cannot be read back in-process (known_issues/11) - errors cross the service as errors, with the CausedBy chain flattened into the message instead of the FluentResults wrapper text - SourceContext left the log template: it read PlanExecutor on 1231 of 1233 Debug lines
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
The log claimed outcomes it could not observe and hid the ones it could. A run that logged errors still ended with
Deferred execution completed successfully, and nothing said which nodes came back unwired: the 119 unresolved links of the 2026-09-22 run were only findable by scripting overtree.json. The deferred pass cannot raise theFailedpin, because the host replaces the FB instance between runtime cycles, so the log is the only channel and every line now states exactly what the code observed.Type of change
Changes
issuedis the strongest claim available: connections cannot be read back in-process, seeDocs/known_issues/11-opc-pinpout-sibling-and-iconnect-connect.mdCausedBychain flattened into the message instead of the FluentResults wrapper textSourceContextleft the log template: it readPlanExecutoron 1231 of 1233 Debug linesChanges touching FB code
const int *PinIdconstants in the FB class[NonSerialized][ComVisible(true)]+[Guid]untouched on existing FBsDocs/architecture/masterscada-fb-primer.mdandDocs/architecture/architecture.mdDocs/known_issues/— 07 (deferred pass cannot raise pins) and 11 (no read-back) both applyTree-modifying FBs only
UpdateDataand executed from aSystem.Windows.Forms.TimerpollingIProjectHlp.InRuntimeBeginInvokeself-repostingTesting
dotnet build NtoLib.sln— 0 errors, 0 warningsdotnet test NtoLib.sln— 373 passeddotnet format NtoLib.sln --verify-no-changes— exit 0connects issued=1208 + unresolved=119closes against the snapshot's 1327 linksAn unwritable
LogFilePathdoes not disable the FB:WriteTo.Filecatches the sink construction failure and installs a null sink.OpcLoggerFactoryTestspins that.