afe6850f3d
The libplctag adapters assigned Tag.Path straight from the device's parsed CipPath. A device address with no route (ab://host:44818/ - the normal Micro800 form, and a MicroLogix with no route) parses to "", and libplctag rejects an empty path attribute with ErrorBadData; omitting the attribute (null) is what it accepts. So Micro800 could not connect on the default libplctag transport. This predates the native transport work and exists on master. Add an internal LibplctagPath.Normalize helper per driver project (blank -> null) and route all four Tag constructions through it (AbCip tag runtime, symbol-list enumerator, template reader; AbLegacy tag runtime). The runtime tag construction is extracted to an internal BuildTag so tests can inspect Tag.Path without connecting. Tests fail with Normalize reverted to identity. Update the Micro800 smoke-test comment: both transports are expected to pass.