using ZB.MOM.WW.OtOpcUa.Configuration.Validation; namespace ZB.MOM.WW.OtOpcUa.Configuration.Apply; /// /// Applies a to whatever backing runtime the node owns: the OPC UA /// address space, driver subscriptions, the local cache, etc. The Core project wires concrete /// callbacks into this via so the Configuration project stays free /// of a Core/Server dependency (interface independence per decision #59). /// public interface IGenerationApplier { Task ApplyAsync(DraftSnapshot? from, DraftSnapshot to, CancellationToken ct); } public sealed record ApplyResult( bool Succeeded, GenerationDiff Diff, IReadOnlyList Errors) { public static ApplyResult Ok(GenerationDiff diff) => new(true, diff, []); public static ApplyResult Fail(GenerationDiff diff, IReadOnlyList errors) => new(false, diff, errors); }