ThunderMLX v0.3.3 — antidoom loop containment, hardened
The decode repetition-loop guard now actually covers the streaming path: its long band (121-1,200 char units x5 copies) needed more history than the SSE loop retained, so paragraph-scale loops were undetectable exactly where agent traffic lives. The scan window is now 6,000 chars on both paths, the repeating unit must contain a letter in any script (CJK loops visible) with two distinct characters (base64 runs, zero hashes, numeric fillers, and markup walls no longer truncate legitimate output), containment stops record the identical sequence on both ranks (no post-containment divergence rebuild), and the EOS injection rides the validated synchronized-sampler helper. Live-validated: a streamed 306-char paragraph loop contained at exactly 5 copies with clean lockstep and a warm follow-up turn. Caught its first real production loop within hours of shipping.