Blocked until #411 and #415 are both merged. Small, but it closes a claim that is currently unverified in-repo.
The gap
Three PRs together make the real Qwen3.8-27B chat template usable:
| PR |
Adds |
| #410 |
qwen35 / qwen2 pre-tokenizer entries |
| #411 |
loop.previtem / loop.nextitem, is undefined |
| #415 |
parenthesized tuple literals |
#415's author verified — via a local, uncommitted patch that no longer exists — that once #411 lands, the full unmodified template renders end-to-end with a tool-call/tool-response conversation and no further errors. Its independent reviewer flagged, correctly, that this rests entirely on the author's word and is reproducible by nothing in the repo.
Concretely: the committed FullTemplate_Render_KnownRemainingGapIsTracked test uses a single plain user message, so even once #411 lands and it starts succeeding, it never exercises the template's message.role == "tool" branches (fixture lines 148-154) — which are exactly the branches that consume loop.previtem / loop.nextitem, i.e. the whole reason #399/#411 existed.
So the headline claim "Qwen3.8-27B chat templating works" would be true and untested.
Ask
Why it is worth a ticket
The three PRs each verified their own piece honestly. Nothing verifies the composition, and composition is what the user actually gets. This is also the first concrete deliverable of the Qwen3.8-27B support work, so it should be provably true rather than inferred from three green PRs.
Related: #399, #409, #410, #411, #415, #416, #417. Context: .docs/model-target-qwen3.8-27b.md.
Blocked until #411 and #415 are both merged. Small, but it closes a claim that is currently unverified in-repo.
The gap
Three PRs together make the real Qwen3.8-27B chat template usable:
qwen35/qwen2pre-tokenizer entriesloop.previtem/loop.nextitem,is undefined#415's author verified — via a local, uncommitted patch that no longer exists — that once #411 lands, the full unmodified template renders end-to-end with a tool-call/tool-response conversation and no further errors. Its independent reviewer flagged, correctly, that this rests entirely on the author's word and is reproducible by nothing in the repo.
Concretely: the committed
FullTemplate_Render_KnownRemainingGapIsTrackedtest uses a single plain user message, so even once #411 lands and it starts succeeding, it never exercises the template'smessage.role == "tool"branches (fixture lines 148-154) — which are exactly the branches that consumeloop.previtem/loop.nextitem, i.e. the whole reason #399/#411 existed.So the headline claim "Qwen3.8-27B chat templating works" would be true and untested.
Ask
Qwen/Qwen3.8-27Bchat_template.jinjaover a conversation containing: a system turn, a user turn, an assistant turn with tool calls, and consecutive tool-response messages (consecutive matters — that is what makesprevitem/nextitemnon-trivial).UndefinedreturnsUndefinedinstead of raising, so a broken template renders as an empty string.reasoning_effort/enable_thinkingpaths if feat(tokenizers/server): surface reasoning_effort / enable_thinking chat-template knobs #400 has landed by then; otherwise note it as uncovered rather than implying coverage.Why it is worth a ticket
The three PRs each verified their own piece honestly. Nothing verifies the composition, and composition is what the user actually gets. This is also the first concrete deliverable of the Qwen3.8-27B support work, so it should be provably true rather than inferred from three green PRs.
Related: #399, #409, #410, #411, #415, #416, #417. Context:
.docs/model-target-qwen3.8-27b.md.