diff --git a/stacks/voices-seat/compose.yaml b/stacks/voices-seat/compose.yaml index f3d1715..3173f70 100644 --- a/stacks/voices-seat/compose.yaml +++ b/stacks/voices-seat/compose.yaml @@ -48,6 +48,19 @@ # MEASURED RESIDENCY: 10,740 MiB, against a requested 0.11 x 94.97 GiB = 10,700 MiB — a 40 MiB # miss on a box where the util fraction has been wrong by 8-10 GB in BOTH directions. Pinning # --kv-cache-memory in bytes is what makes the fraction predictive; do not remove it. +# ⚠⚠ CALLERS MUST SEND `chat_template_kwargs: {"enable_thinking": false}` OR EVERY VOICE +# PREFIXES AN EMPTY `` BLOCK TO ITS OUTPUT. Measured live 2026-09-21 on +# lv-mccarthy, and it is a property of the Qwen3-4B-Instruct CHAT TEMPLATE rather than of any +# adapter -- so it applies to lv-yarros, lv-bronte and lv-hemingway too, and has done since +# this seat went up on 2026-09-16: +# +# default -> '\n\n\n\nThere were no horses in the road...' +# enable_thinking=false -> 'The sun was hot on the dry riverbed and the stones were red...' +# +# The r49 gate harness passes it (gen_beats_chat_yarros.py sets enable_thinking when the +# template supports it), which is why no gate number is affected -- but a caller that does NOT +# pass it gets 17 junk characters at the head of every passage, and a word-count or an +# in-band check run over that string is measuring the tags as prose. Check Skaldsong. name: voices-seat services: