diff --git a/stacks/gemma4-charrp/compose.yaml b/stacks/gemma4-charrp/compose.yaml index 10f7071..e335b89 100644 --- a/stacks/gemma4-charrp/compose.yaml +++ b/stacks/gemma4-charrp/compose.yaml @@ -75,12 +75,29 @@ services: # `char-rp-reasoning` alias exercises. - --default-chat-template-kwargs - '{"enable_thinking": false}' - # ⚠ NO --chat-template. MeroMero pointed at a hand-patched jinja under - # meromero-v2-nvfp4-work/; that patch was cut against THAT checkpoint and - # does not describe this one. This model ships its own chat_template.jinja - # and vLLM picks it up. If thinking mode ever misbehaves, diff this - # model's template against the MeroMero patch before reaching for a - # copy — do not assume the patch transfers. + # TEMPLATE PINNED EXPLICITLY, AND IT IS A NO-OP FOR THE DEFAULT MODEL. + # The A4 build ships this exact file — verified byte-identical to upstream + # google/gemma-4-26B-A4B-it once trailing newlines are normalised (390 vs + # 389 lines, same hash) — so pinning it changes nothing about what is + # served and permanently removes a real class of bug. + # + # ⚠ WHY IT IS PINNED AT ALL: the A16 control build at + # /tank/aimodels/gemma4-26b-a4b-it-nvfp4a16 ships a STALE 266-line + # template. Upstream and A4 open the thinking path with + # `{%- set enable_thinking = enable_thinking | default(false) -%}`; the + # A16 one has no such set, and its tokenizer_config response_schema lacks + # the `thinking` property. Serving it with its own template would render a + # DIFFERENT PROMPT, turning a one-axis activation-precision control into a + # two-axis comparison — a result that would look like a finding. + # Safe to force across both builds because the tokenizers are identical: + # vocab 262,144 entries, added_tokens identical. + # + # ⚠ IF GEMMA4_MODEL EVER POINTS AT A DIFFERENT CHECKPOINT, THIS DEFAULT + # MUST MOVE WITH IT. A pinned template is only correct for the checkpoint + # it came from. That is the inverse of the mistake the outgoing MeroMero + # seat warned about, where a hand-patched template was assumed to transfer. + - --chat-template + - ${GEMMA4_CHAT_TEMPLATE:-/tank/aimodels/gemma4-26b-a4b-it-nvfp4/chat_template.jinja} - --max-model-len - "${GEMMA4_MAX_MODEL_LEN:-262144}" - --max-num-seqs