82a0c298ce
In T21 press pass 1, two REAL tags diverged only because their live values moved between the sequential libplctag and native phases (WW_M4ActualTemp 384.887 -> 385.138). The libplctag phase now reads every selected tag a second time, paced, before native starts (TransportObservations.ProbeReads). A tag whose two libplctag reads both succeed and differ is classed live. For a live tag, parity still requires: - the same status (and the native-TypeMismatch rule); - no decode error; - the same raw length; - the same CIP type code when both sides expose one (native records it now; libplctag.NET 1.5.2 does not); - the same decoded shape. Value equality is not required. Live tags get their own list and a "libplctag probe" table column, and are counted as neither expected nor unexpected divergences. A tag that reads stable on libplctag but differs on native is still an unexpected divergence, and a missing or failed probe never makes a tag live. The offline pin A_live_value_is_compared_structurally_and_a_stable_one_by_value goes red with the live branch disabled. Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe