namespace ZB.MOM.WW.OtOpcUa.Core.Abstractions; /// /// Opts a tag-definition record into auto-retry on failures. /// Absence of this attribute means writes are not retried — a timed-out write may have /// already succeeded at the device, and replaying pulses, alarm acks, counter increments, or /// recipe-step advances can duplicate irreversible field actions. /// /// /// Applied to tag-definition POCOs /// (e.g. ModbusTagDefinition, S7TagDefinition, OPC UA client tag rows) at the /// property or record level. Reserved for the per-tag opt-in; NOT yet consulted (R2-02/S-8) — /// the dispatch site (DriverInstanceActor.HandleWriteAsync) currently treats every write as /// non-idempotent, so no tag retries a write today. Threading tag-definition metadata to the dispatch /// seam is the documented forward path; when it ships, the CapabilityInvoker non-idempotent arm /// and the parser's Write/AlarmAcknowledge no-retry clamp are the two sites that relax. /// [AttributeUsage(AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = false, Inherited = true)] public sealed class WriteIdempotentAttribute : Attribute { }