Simulate token-by-token generation with max_tokens, stop sequences, and natural EOS — see how finish_reason is determined without calling any API.