Surgical deploys: announce surgically-added raw nodes + r3 item-6 residuals #599
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
AnnounceAddedNodesalways raisesNodeAddedin the Uns realm, so raw containers/tags added by a surgical deploy are materialised but never announced — model-aware clients can't discover them until they re-browse. The code comment calls it "a real follow-up, not an accepted limitation". Round-3 tranche 2 is unplanned.Sources: CLAUDE.md (surgical deploys "Known gap"); src/Server/ZB.MOM.WW.OtOpcUa.Runtime/OpcUa/OpcUaPublishActor.cs:595-604; AddressSpaceApplier.cs:572-579; archreview/00-OVERALL.md:117 (01/U-8, 03/P5/P6/S20/U11/U12).
RaiseNodesAddedModelChange(id, Raw)) + testNotSubsumedfilter on the UNS-reference remove loop; sever inverseOrganizes(03/P5/S20)Backing*field in parity with the raw tag's inherited fieldsFiled 2026-10-08 by the pending/deferred-work sweep after the #562–#591 issue sweep.
Resolved on master (
0bd3ec00, bd638106; mergeca0f1e77).AnnounceAddedNodesnow also raises NodeAdded in the Raw realm for the existing parents of added raw containers/tags (ComputeRawAddAnnouncements); tests in AddressSpaceApplierTests.NodeManagerSurgicalRemoveTests). Ruling on the NotSubsumed filter: not used, because in production a UNS reference NodeId (Area/Line/Equipment/Name) lies outside the subtree's id-prefix scope, so filtering would leak it. InsteadApplyPureRemoveremoves the UNS reference variables before the equipment subtree, so a reference inside the subtree's scope no longer ratchets to a full rebuild (03/P5).UnsReferenceBackingParityTests: reflection guard that finds the classifier's surgical raw-tag whitelist and requires a same-typed Backing* mirror field.Closed 2026-10-08 by the hardware-available issue sweep (master
d898262c).