fa96989e2a
v2-ci / build (push) Failing after 38s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
The per-driver editor models expose Validate() (required-field checks) but the TagModal never called them, so a blank required field (e.g. S7 address, AbCip tag path) saved silently and only failed at deploy/connect. Add a TagConfigValidator registry (DriverType -> model.FromJson(json).Validate(), parallel to TagConfigEditorMap) and call it in SaveAsync before the service call — a non-null result sets the modal error and blocks save. Unmapped drivers (no typed editor) and Modbus (no required field) return null. Editors untouched. AdminUI.Tests 307/307 (12 new validator tests); build clean.