All checks were successful
CI / Format (push) Successful in 8s
CI / Clippy (push) Successful in 2m27s
CI / Test (push) Successful in 5m41s
CI / CUDA type-check (push) Successful in 12m3s
CI / Build cortex SRPM (push) Has been skipped
CI / Build neuron SRPM (push) Has been skipped
CI / Publish cortex to COPR (push) Has been skipped
CI / Publish neuron to COPR (push) Has been skipped
CI / Bump version in source (push) Has been skipped
Slice 3a: extract_row slices one row of a batched cache state back into a contiguous single-sequence snapshot — attention KV keeps the prefix [0, prefix_len) plus the lockstep decode columns [padded_len, padded_len + steps) and drops the padding gap; GDN rows are sliced whole and deep-copied. A join/leave rebatches by extracting every surviving row and re-running assemble_batch, preserving the one-gap-per-row invariant without any scatter kernels. Worker side: Job::ExtractKvRows captures the live state once and stores each extracted row in the snapshot slab; composes with AssembleKvBatch / DropKvSnapshot for the full rebatch. Tests: arch-level round-trip (batched decode → extract → solo B=1 continuation matches pure-sequential) and a worker end-to-end leave path (3-row batch → extract 2 survivors → re-assemble → continued lockstep decode matches the sequential reference). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TczcGF7JSjJs8r15RSSGpx