vlib-video: MRoPE rewind sync audit + test (ignore_frame pops correctly)
Audited the ignore_frame branch in vlib_video_session against
MLX_VLM_IMAGE_DIFFING_AUDIT.md Gap #2. Conclusion: no bug. llama.cpp's
llama_decode is stateless w.r.t. RoPE — rotations are computed per token
from explicit batch.pos[] supplied by the caller. There is no internal
_rope_deltas accumulator to resync (the MLX equivalent of which is the
language model's _rope_deltas attribute). On ignore_frame, popping
m_grid_thw + restoring m_n_past is sufficient; the next process_frame
re-derives pos_0_t = sum(grid_thw[i].t) over the popped vector.
Added the analysis as a 7-line comment near the ignore_frame branch and
extended test_mrope.cpp with the 3-frame rewind scenario (push x3, pop
the last entry, push a new "frame 3", assert cum_t == 3 not 4).