We use an extra bit per symbol to force only legal state transitions. The receiver decodes the symbols as it normally would, assuming only a single constellation at any given moment. If an invalid state transition occurs, the receiver back-tracks and examines the error vectors for symbols recently received. It computes the distance between the symbol point actually received and valid symbol points. The closest valid symbol point that creates a legal sequence of state transitions is selected.
Nothing is free, however.
An extra bit per symbol is required. This means that we can achieve double the bit rate compared to that possible without the Trellis code at this level of noise.