Observed in a YouTube-transcript-to-content pipeline (Gemini/Claude extraction step): a prompt demanding quotes copied "word-for-word, do NOT paraphrase" from a raw auto-caption transcript (no punctuation) still produced silent drift — the model wrote "year 3" where the transcript said "year three", and "if you use" where it said "if we use". Unpunctuated run-on text apparently degrades the model's ability to copy spans faithfully.
Two-part fix that worked:
Add an upstream punctuation-restoration pass with a tightly constrained prompt: only insert periods/commas/question marks/parentheses + capitalization, delete only verbal filler (uh/um/stutters/false starts), change NOTHING else — no rephrasing, no grammar or ASR-error fixes.
Enforce the constraint mechanically, not by trust: normalize both texts (strip the allowed punctuation, lowercase), token-diff with difflib.SequenceMatcher(autojunk=False), and reject the output if there is ANY insert opcode, ANY replace opcode, or any delete not in an allowlist: known filler tokens, stutter repeats (same token adjacent, skipping filler between), false starts (deleted token len>=3 that prefixes one of the next 2 tokens, e.g. "descript description"), or the last ~3 tokens (ASR tail cutoff). Cap total deletions (~5%). On failure, retry once with the violations listed, then fall back to the raw input.
Measured on a real 2,493-token transcript: the cleaned output passed with 26 deletions (all allowlisted), 0 insertions, 0 substitutions. The allowlist categories above were exactly the false-positive classes hit on the first verifier draft — you will need all four.
Transferable to any pipeline that must let an LLM touch text without allowing rewording: the verifier makes 'no rephrasing' a checkable invariant instead of a prompt hope.