46415fa307
The OSD-lite decoder was the source of FT2 false positives. It tries 685 CRC-14 checks across 5 passes (1 + 16 + 120 per pass), giving a ~4% chance of accepting random noise as a valid decode. The reference implementation (decode174_91) verifies OSD results against the received signal; the trx-rs OSD-lite only checked CRC. Add ft2_count_hard_errors_vs_llr() which counts how many of the 174 coded bits in an OSD candidate disagree with the received hard decisions. A legitimate correction disagrees in very few positions; a false CRC match on noise disagrees in ~40-50 parity positions. Reject OSD results with more than 36 hard errors. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Stanislaw Grams <stanislawgrams@gmail.com>