From 7df8b876b91208a86a6d792e1140b3deec14535b Mon Sep 17 00:00:00 2001 From: 7konigsberg <77811205+7konigsberg@users.noreply.github.com> Date: Thu, 29 Oct 2026 05:28:03 -0400 Subject: [PATCH] server : restore the spec checkpoint for drafts longer than n_rs_seq (#31350) Assisted-by: Claude Co-authored-by: Zeshawn Zahid --- tools/server/server-context.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/server/server-context.cpp b/tools/server/server-context.cpp index 2bd1ab9ec..9377e3c17 100644 --- a/tools/server/server-context.cpp +++ b/tools/server/server-context.cpp @@ -4958,9 +4958,10 @@ private: const uint32_t n_rollback = slot.spec_draft.size() + 1 - accepted.size(); + // the recurrent snapshots are only guaranteed for batches of up to n_rs_seq + 1 tokens, so a longer draft uses its checkpoint const bool use_ckpt_tgt = ctx_tgt_seq_rm_type == COMMON_CONTEXT_SEQ_RM_TYPE_FULL || - (ctx_tgt_seq_rm_type == COMMON_CONTEXT_SEQ_RM_TYPE_RS && n_rollback > llama_n_rs_seq(ctx_tgt)); + (ctx_tgt_seq_rm_type == COMMON_CONTEXT_SEQ_RM_TYPE_RS && n_draft > llama_n_rs_seq(ctx_tgt)); // check for partial draft acceptance if (n_rollback > 0) {