Zeckendorf (dart 347) hands you a code for free. Write an integer in its non-consecutive Fibonacci form as bits — a 1 where a Fibonacci is used — and two consecutive 1s can never appear inside (that is exactly what “non-consecutive” means). So append a single extra 1, and every codeword ends in 11 — a pattern that occurs nowhere else. That 11 is an unambiguous terminator: a decoder just splits the stream at every 11. The code is self-synchronizing (a bit-flip corrupts one number, not the whole stream) and robust — and its terminator is the second 11 in David's puzzle.
The demo encodes a number via its Zeckendorf bits and appends the terminator — the 11 that appears nowhere inside: live demo
“A universal code needs a length field.” — Fibonacci coding needs only the pattern 11, which Zeckendorf guarantees is impossible inside a word, so it marks the end for free. cited
The one bit-pair Zeckendorf outlaws becomes the mark that ends every word. A terminator made of a prohibition. Apostolico–Fraenkel 1987
On the canonical compiler, the terminator is binary 11 = 3, and it is forbidden inside any Zeckendorf word — so it marks the end unambiguously: