When n>=2, all_previous_token_ids entries pointed to the SAME list,
so appending tokens for choice 0 corrupted choice 1's history.
Same for tool_parsers: all choices shared one stateful parser instance.
Changed to list comprehensions that create independent objects.
Found via CCCL result_policy.cuh read: distributed result delivery
requires isolated per-rank state — same principle applies to
per-choice token tracking in vLLM streaming.