How to know that ADS-B position messages are not spaced more then the 1/2 zone limit?
Usually you use a time limit between ADS-B position messages depending on the type of encoding used (surface or airborne)  and related assumed maximum speed to ensure that the aircraft cannot have travelled more than half a zone. If you don't receive a new position message within the time limit you will have to use global encoding (for which you need an odd/even pair of position messages within 10 seconds). 

If I remember correctly, for airborne decoding an assumed maximum ground speed of 1000 knots is normally used. For surface decoding it is probably 200 knots. The latter gives problems when airborne aircraft send messages in surface format (e.g. due to a system fault).

In addition you can perform a number of tests that show that the newly decoded position is reasonably close to where it was to be expected.

For details see RTCA DO260B or EUROCAE ED102A (they are equivalent). They describe the encoding and decoding of (1090ES) ADS-B messages for airborne applications. In addition you can use EUROCAE ED129B. It is dedicated to ADS-B receiver systems for ATC (for gound based and space based receivers) and it includes a description of the decoding logic and related tests.