Re-vendors the froggeric Qwen3.6 chat template from the latest upstream
snapshot for maintainer re-evaluation only.
Provenance:
- Previous upstream revision: unrecoverable. The existing local snapshot was
introduced by local commit 84498d47aa with
SHA256 94e944287ffaf8c3ed8b5840a0c92fd4ca3caefa721f4f5e31e92605e63f1ad4,
but no exact upstream commit/release match was found in available froggeric
qwen3.5/qwen3.6 archive v8-v19 or main history.
- New upstream revision: c31fd393e531dbacd92b6deb99a2037cc949f950,
timestamp 2026-05-16T13:44:07Z, release label v19,
SHA256 4649b3fa3db3fda4d51173ed4ff0175fde7ece8bbceb9d595d04d862020c9746.
Structured diff summary:
- System/tools setup: system/developer content is now extracted once and
reused for tool and non-tool paths; tool definitions render function payloads
rather than raw tool wrappers when present.
- enable_thinking gate: ns_flags now tracks has_tools, last_tool_failed, and
consecutive_failures in addition to enable_thinking. The template still
honors enable_thinking plus think_on/think_off markers, but preserve_thinking
now defaults toward preserving non-empty reasoning unless explicitly false.
- Tool-call and streaming-sensitive formatting: tool instructions now require
reasoning inside a think block before a tool call, final answers immediately
after closing think when no tool is needed, and one fully closed tool_call per
function. Tool-call emission is normalized to newline-started XML blocks.
No explicit streaming branch was added, but these boundary/whitespace changes
should be covered by the #145 streaming/tool-call smoke.
- Reasoning delimiters: the template now handles </think>, </thinking>,
malformed </ think>, and </think > endings, removes embedded tool_call
content from assistant text when structured tool calls are present, and avoids
emitting empty historical think blocks.
- Qwen 4: no Qwen 4-specific branch was found in the upstream template.
- Whitespace/Jinja control: multiple spacing and newline changes affect
system/tool prompts, think/content boundaries, tool_call boundaries, and the
thinking-disabled generation prompt. Treat tokenization and prefix-cache
behavior as validation targets.
Validation:
- bash scripts/tests/test-patch-attribution.sh
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
club-3090 docs index
Two tracks. Pick the one that matches what you're doing.
- User track — "I have GPUs and a model; how do I serve it?"
- Contributor / maintainer track — "I'm working on the v0.8.0 pull pipeline, patches, or the calibration loop."
Every link below resolves to a file in this repo.
User track
Start here if you want to run a model.
| Doc | What it is |
|---|---|
PULL.md |
Start here for any model not in the curated list. The v0.8.0 universal flow: evaluate any safetensors HF repo against this stack's KV math, honest about confidence. |
SINGLE_CARD.md |
1× RTX 3090 — workload → curated config → quick start. |
DUAL_CARD.md |
2× RTX 3090 (PCIe / no NVLink) — workload → config → quick start. |
MULTI_CARD.md |
3+ GPUs — TP scaling math, derivation from dual.yml, valid TP values. |
HARDWARE.md |
Card-class questions — 4090/5090, power caps, NVLink, laptop EC power. |
GLOSSARY.md |
TPS / KV / MTP / TP and the rest of the vocabulary. |
FAQ.md |
Common setup and operational questions. |
COMPARISONS.md |
Self-host vs cloud APIs — cost crossover and when each wins. |
EXAMPLES.md |
Worked end-to-end usage examples. |
Contributor / maintainer track
The v0.8.0 pull pipeline (in pipeline order)
A model slug flows through these stages. Read them in order to understand the whole.
| Stage | Doc | What it owns |
|---|---|---|
[D] |
COMPOSE_GENERATOR.md |
The #141 compose generator — the substrate that owns the arch→patches matrix. |
| Gate | PULL_GATE.md |
scripts/pull.sh — the locked 6-stratum abort taxonomy, [C0]/[C2a]/[B]/[C1] gates, §4.1 confidence×verdict table. |
[E] |
PULL_EMIT_DERIVED.md |
Download → boot → smoke for a download-eligible derived model; writes the §6 capture artifacts. |
[F] |
LOOP.md |
The calibration loop — reads the capture bundle, classifies, runs the inbound-trust pipeline, dedups failures into the tracker. |
Patch & model contribution
| Doc | What it is |
|---|---|
PATCH_POLICY.md |
When/how a patch ships, the local-overlay vs upstream rules. |
PATCH_ATTRIBUTION.md |
The Phase-A patch-attribution matrix — arch → engine-pin → required patches. |
ADDING_MODELS.md |
How a new model gets added to the curated catalog. |
KV_MATH.md |
The KV-cache math the [B] fit verdict is computed from. |
Stack reference & ops
| Doc | What it is |
|---|---|
ARCHITECTURE.md |
Repo/stack architecture overview. |
UPSTREAM.md |
Upstream PR / issue tracker for this stack. |
NIGHTLY_BUMP_RUNBOOK.md |
Procedure for bumping the vLLM nightly pin. |
CI_RUNNER_SETUP.md |
CI runner provisioning. |
CONTAINER_RUNTIMES.md |
Docker / container runtime notes. |
Reference matrices & deep dives
These are cross-cutting references both tracks reach for.
| Doc | What it is |
|---|---|
engines/ |
Per-engine deep dives — vLLM, llama.cpp, SGLang. |
INFERENCE_ENGINES.md |
Engine picker — which engine for which workload, and structural gaps. |
CLIFFS.md |
The accumulated-context / prefill failure modes (Cliff 2, Cliff 2b) and how to detect them. |
DTYPE_MATRIX.md |
Supported dtype × model × engine matrix. |
KERNEL_MATRIX.md |
Quant-kernel availability and alignment constraints. |
QUALITY_TEST.md |
The quality-test harness and what it measures. |
STRUCTURED_COT.md |
The bounded-thinking / structured-CoT compose path. |
TQ3_MTP_GENESIS.md |
TQ3 KV × MTP × Genesis-patch results and config. |