using Xunit; namespace ZB.MOM.WW.OtOpcUa.Runtime.Tests.Drivers; /// /// Phase C HistoryRead intent (isHistorized + optional historianTagname) byte-parity /// between the two equipment-tag producers. /// /// v3 DARK (Batch 1): equipment-tag variable plans do not materialize — /// AddressSpaceComposer.Compose and DeploymentArtifact.ParseComposition both emit an /// EMPTY EquipmentTags set until the Batch-4 dual-namespace UNS↔Raw fan-out. There is nothing /// to compare, so the parity assertion is parked. The underlying parse of isHistorized / /// historianTagname from a raw TagConfig blob is characterized today by /// TagConfigIntentTests (the parse unit) and round-tripped through the artifact by /// (RawTagEntry byte-preservation). Unskip + restore the /// composer↔artifact equipment-tag comparison when Batch 4 lights the equipment-tag plans. /// /// public sealed class DeploymentArtifactHistorizeParityTests { /// Batch-4 pending: composer and artifact agree on historized equipment-tag plans /// (IsHistorized + HistorianTagname). See class remarks — equipment-tag plans are dark this batch. [Fact(Skip = DarkAddressSpaceReasons.EquipmentTagsDarkBatch4)] public void Composer_and_artifact_agree_on_historized_equipment_tags() { // Restored when Batch 4 materializes equipment-tag variable plans: compose a draft with a // historized tag (no explicit tagname → HistorianTagname null), a historized tag WITH an explicit // historianTagname override, and a plain tag; assert decoded EquipmentTags == composed element-wise. } }