Reference in New Issue
Block a user
Delete Branch "phase-7-fu-239-bootstrap"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Two complementary pieces that together close out the last Phase 7 exit-gate deferrals that could land without live engine composition.
#239 — Thread virtual + scripted-alarm IReadable through to DriverNodeManager
OtOpcUaServergainsvirtualReadable+scriptedAlarmReadablector params; shared across everyDriverNodeManagerit materializes so reads from a virtual-tag node in any driver's subtree route to the same engine instance. Nulls preserve pre-Phase-7 behaviour.OpcUaApplicationHostmirrors the params and forwards them toOtOpcUaServer.This is the minimum viable wiring — the actual
VirtualTagEngine+ScriptedAlarmEngineinstantiation (loading Script/VirtualTag/ScriptedAlarm rows from the sealed cache, building anITagUpstreamSourcebridge toDriverNodeManagerreads, compiling each script viaScriptEvaluator) lands in new task #243. Deployments composed with null sources behave exactly as they did before Phase 7 — address-space nodes withSource=VirtualreturnBadNotFoundper ADR-002, which is the designed "misconfiguration, not silent fallback" behaviour from PR #186.#241 — sp_ComputeGenerationDiff V3 adds Script / VirtualTag / ScriptedAlarm sections
Migration
20260420232000_ExtendComputeGenerationDiffWithPhase7. Same CHECKSUM-based Modified detection the existing sections use. Logical ids:ScriptId/VirtualTagId/ScriptedAlarmId.ScriptCHECKSUM =Name + SourceHash + Language— source edits surface as Modified via SourceHash delta; renames via Name; identical (hash + name + language) = Unchanged.VirtualTagCHECKSUM covers every operator-facing config column.ScriptedAlarmCHECKSUM covers type/severity/message/predicate/historize/retain/enabled.ScriptedAlarmStatedeliberately excluded — logical-id keyed outside the generation scope per plan decision #14; diffing ack state between generations is semantically meaningless.Down()restores V2 (the NodeAcl-extended proc from migration20260420000001).No new tests
Both pieces are proven by existing suites:
DriverNodeManagerSourceDispatchTests(PR #186) already covers the source-kind dispatch kernel the plumbing feedsWhat's left for Phase 7 production-ready
VirtualTagEngine+ScriptedAlarmEngine+SqliteStoreAndForwardSink. Required for the engines to actually run in production.