Skip to content

Latest commit

 

History

History
1019 lines (680 loc) · 96.9 KB

File metadata and controls

1019 lines (680 loc) · 96.9 KB

Changelog

Auto-generated from commit subjects by git-cliff on tag push. Click any commit SHA below to see the full message body (why / how / validation data) — those live in git log, not here. Don't hand-edit; the file is regenerated on every tag.

Versioning: SemVer in 0.x — treat any minor bump as potentially breaking until 1.0. Past CalVer tags (v2026.05.09, v2026.05.10) are preserved for history; SemVer takes over from v0.3.0 onward.

CalVer tag SemVer equivalent Date
v2026.05.09 (≈ v0.1.0) 2026-05-09 — first tagged release
v2026.05.10 (≈ v0.2.0) 2026-05-10 — stack reorg + Gemma 4 INT8 PTH unblock

v0.8.4 — 2026-05-23

✨ Features

  • feat(verify-stress): capture prefill throughput during NIAH rungs (#199) (07d478c)
  • feat(eval): expose request-level thinking toggles (#196) (#196 by @noonghunna)
  • feat(scripts): pass --sampling-from-server through quality-test.sh + rebench-full.sh (dd1f070)
  • feat(compose): expose sampling defaults via env (#194) (#194 by @noonghunna)
  • feat(setup): WEIGHTS=gguf to fetch the llama.cpp GGUF (not just the vLLM model) (#191) (#191 by @noonghunna)
  • feat(ik-llama): wire iq4ks-mtp + iq4ks-mtp-vision into launch.sh + switch.sh (#189) (#189 by @noonghunna)
  • feat(models): add ik_llama Qwen3.6-27B IQ4_KS composes — text 262K + vision 160K (#180) (#180 by @noonghunna)

🐛 Bug fixes

  • fix(rebench): basename model id for the aider/litellm step (ik_llama full-path id → 0/30) (3b20ce3)
  • fix(soak,preflight): recognize llama-cpp / ik-llama containers in autodetect (#403) (d9fdab2)
  • fix(compose): ik iq4ks-mtp header — record measured ceiling-ladder result (200K confirmed) (1d93343)
  • fix(compose): lower single-card MTP CTX_SIZE default 262144 → 200000 (llama.cpp + ik_llama) (2e45928)
  • fix(verify-stress): three live-caught bugs in ceiling ladder (#199) (b84249c)
  • fix(verify-stress): add CTX_SIZE-scaled ceiling ladder (#199) (5a825a4)
  • fix(report): PyYAML/idle-VRAM/P2P/redaction/kv-calc polish + review fixes (#178/#137) (#192 by @noonghunna)
  • fix(launch): point users at MODEL_DIR/.env when weights aren't found (#190) (#190 by @noonghunna)
  • fix(llamacpp): pin image to server-cuda-b9246 (rolling tag broke at b9282) (#188) (#188 by @noonghunna)
  • fix(launch): single-card default suggestion → llamacpp/default (#185) (#185 by @noonghunna)
  • fix(rebench): always capture sandboxed-pack logs to the per-tag results dir (#179) (#179 by @noonghunna)

📝 Documentation

  • docs: correct ik_llama verdict — ~18-20% FASTER than mainline, not a "tie" (#184) (b7353da)
  • docs: add @mgabor3141 X399/TR-1950X dual.yml row + pre-Zen2 CPU-IPC note (#178) (6e49960)
  • docs(CLIFFS): document llama.cpp "boots ≠ fills" false ceiling; 200K = max-safe single-card CTX_SIZE (9be237d)
  • docs: QUALITY_TEST.md — fix stale pack-status (sandboxed packs now implemented) (f6bdc06)
  • docs: document sampling/temperature eval options (#193/#194 + benchlocal #19/#21) (9fd634a)
  • docs(single-card): strike Genesis-pinned vLLM rows (blocked by purged pin #167) (a30bdfd)
  • docs(upstream): correct the #40875 row (open tool-call-corruption bug, not "closed coexistence") (25f130a)
  • docs: correct ik_llama claims to the matched-power tie (#184) (c470d9a)
  • docs: surface WEIGHTS=gguf + switch.sh ik-llama paths (match #189/#191) (412315d)
  • docs(HARDWARE/FAQ): AMD-Vi IOMMU Xid 154 under TP=2 → iommu=pt fix (#178) (fe86b72)
  • docs: add ik_llama engine page + QUANTIZATION primer; surface IQK quants (554b85b)
  • docs(BENCHMARKS): @duart dual NVLink Proxmox VFIO-passthrough, stock-upstream no-Genesis (disc #162) (bc6e20b)
  • docs(BENCHMARKS): @mgabor3141 dual.yml — Z77/i7-3770K, PCIe 2.0 x4 slowest cross-card link (#178) (626fa68)
  • docs(mtp-vision): surface the -ub 512 → 192K context recipe in the compose header (70bf7e7)
  • docs: cross-link the -ub vs ctx trade-off into SINGLE_CARD + CLIFFS + FAQ (035261b)
  • charts: compose names on x-axis + description legend block below (07c7cd0)
  • charts: tighten single-card label format (line 1 = variant + ctx, line 2 = modifier) (9aa8fa7)

🛠️ Scripts + tooling

  • scripts: endpoint-first --url/--model/--engine for non-Docker engines (#174) (#174 by @noonghunna)
  • report.sh: capture image digest + OCI labels (build tag, upstream commit) (78556f8)

🧹 Maintenance

  • chore(compose): drop accidentally-committed qwopus3.6-27b-v2 llama.cpp compose (b8aeb93)
  • refactor(llamacpp): collapse single-card composes 3→2 (default = mtp alias) (#181) (#181 by @noonghunna)

🧹 Other

  • Fix verify-full to accept reasoning_content (3a04ae5)
  • quality-test: respect explicit MODEL/--model, don't clobber from /v1/models (#177) (#177 by @noonghunna)
  • sglang: park EAGLE-3 path for Qwen3-Next (MTP wins everywhere) (#176) (#176 by @noonghunna)
  • quality-test: expose --timeout-per-case + bump aider-polyglot-30 to 3600s (#175) (#175 by @noonghunna)
  • sglang: experimental EAGLE-3 + Qwen3-Next dual-3090 path (Codex-led patch) (941fa06)
  • SINGLE_CARD: refresh Luce DFlash + PFlash watch-list (2026-05-20) (f9f9640)
  • AGENTS: pin engine images only when we vendor patches (6810768)
  • llama-cpp: document speed-vs-context trade-off + fix stale ub default (1b2a76c)
  • llama-cpp: switch to rolling :server-cuda tag (no patches → no pin needed) (4a53eda)
  • llama-cpp: replace orphan llama-cpp:local with upstream pinned image (#170) (c3e7c7e)
  • gpu-mode status: probe :8020 + detect engine on :8030 (db9c5e1)

[Pin: git checkout v0.8.4] · Full diff

v0.8.3 — 2026-05-20

📝 Documentation

  • docs: add LOCAL_AI_PRIMER.md — plain-English on-ramp for newcomers (b07b2f9)

🧹 Other

  • BENCHMARKS: add llamacpp/mtp + llamacpp/mtp-vision rows (37c739b)
  • llama.cpp single: thinking-off policy alignment + MTP profile family (ed15071)

[Pin: git checkout v0.8.3] · Full diff

v0.8.2 — 2026-05-19

✨ Features

  • feat(pull): v0.8.2 STEP V5 — recommend UX + report-a-failed-pull doc + §9-reconciliation (c5b5e9b)
  • feat(nvlink): auto-detect NVLink on N-GPU topologies; add detection to multi4 + gemma-4-26b dual (8f8ec1c)
  • feat(pull): v0.8.2 STEP V4 — optional whichllm hw-detect subprocess (CONTRACT-3, hw-detect-only) (3917728)
  • feat(switch): v0.8.2 STEP V3 — switch.sh ↔ compose_registry parity (CONTRACT-2b-ii) (e6503bc)
  • feat(pull): v0.8.2 STEP V3 — arch-registry expansion + chat-template attribution/drift_guard (999c93f)
  • feat(pull): v0.8.2 STEP V2 — surface pointer + --submit-last/--submit (gh + gh-less, consented, F5 reuse) (e1cdcb5)
  • feat(pull): v0.8.2 STEP V1 — capture-on-hard-block pt1-gate emitter + BaseCaptureBundle protocol lift (20f1557)
  • feat(report): lspci PCIe/P2P diagnostics subsection (LnkSta/ACS/topology) (#148) (af2e45a)

🐛 Bug fixes

  • fix(pull): v0.8.2 STEP V5 — recommend must not label a fits-clean model "DOES NOT FIT" (26949d7)
  • fix(pull): v0.8.2 STEP V3 — deliver CONTRACT-2's engine-supported broadening (TRC two-class) (d78b9a9)
  • fix(pull): v0.8.2 STEP V2 — gh-less issue body must not carry the absolute capture path (52451ca)
  • fix(launch): force LC_NUMERIC=C so the VRAM-budget printf survives comma-decimal locales (#159) (186dc93)
  • fix(deriver): correct stale "GGUF not supported until v0.8.1" message — now misleading post-v0.8.1-ship (344ab87)

📝 Documentation

  • docs(architecture): bring current-state docs up to v0.8.2 (recommend / submit on-ramp / arch-registry / hwdetect) (c5c8f46)
  • docs(generator): state plainly that generated-compose capacity is the reference profile's, NOT fit-adapted (247b1dc)
  • docs(pull): v0.8.2 STEP V6 — correct §9/headline to the true bundled release scope (b791271)
  • docs: fix duplicate MULTI_CARD.md entry in docs index (966a8d1)
  • docs: reorder docsindex (GSD first), add FAQ TOC + promote troubleshooting ladder, add tool-calling example (a891b39)
  • docs: add GETTING_STARTED.md, Gemma 4 model READMEs, restructure main README with quick start first (6368bae)
  • docs: fix stale NVLINK_MODE comment, INTERNALS.md cliff status, and dead companion repo link (28bd0e8)
  • docs(container-runtimes): Proxmox passthrough — NVLink is the fragile path, not Proxmox (#161) (3f066a0)
  • docs(benchmarks): add @hlo-world dual-3090 PCIe x4 dual-dflash-noviz row (#158) (135f2c4)
  • docs(upstream): froggeric v19 re-eval PASSED — ADOPTED (#150) (ec1fd65)

🧹 Maintenance

  • chore(chat-template): re-vendor latest froggeric Qwen3.6 template for re-eval (#150) (8a9ea6c)

[Pin: git checkout v0.8.2] · Full diff

v0.8.1 — 2026-05-17

🐛 Bug fixes

  • fix(patch-attribution): register vendored gemma-4-31b pr41800 overlay (follow-up to #153/#154) (b4b20ff)
  • fix(gemma-4-31b): vendor missing vllm-pr41800 overlay into the model tree (closes #153) (9c79192)
  • fix(pull): argparse usage errors exit 64, not 2 — distinguishable from honest hard-stop (#370) (820eb38)

📝 Documentation

  • docs(examples): correct "thinking on by default" — shipped composes set enable_thinking=false (#372) (46bb271)
  • docs(hardware): newer-driver 3090 caps long-text.yml at MAX_MODEL_LEN=105000 (#149) (b0774f9)
  • docs: fix v0.8.0 docs-fidelity gaps (trc-ack first-run heads-up, exit-code honesty, GGUF message claim) (78a7dee)
  • docs: cross-link the v0.8.0 universal pull flow from the existing user guides (afe56f7)

[Pin: git checkout v0.8.1] · Full diff

v0.8.0 — 2026-05-17

⚠️ Cliffs, gotchas, regressions

  • v0.8.0 Pull-Gate P4-fix: price Tier-1 curated via curated-exact kv-calc spec, not generic-dense (+ non-mocked regression test) (087a8ea)

🐛 Bug fixes

  • fix(verify-full): warm engine before scored checks (closes #352) (c595496)

📝 Documentation

  • docs(tq3-mtp): add missing 04-gemma-vs-qwen.png chart (da9ef5e)
  • docs: UPSTREAM Gemma4 TurboQuant row — exact config.py:101 mechanism + fix-PR set (fd8695f)
  • docs+hygiene: track Gemma4 native-TurboQuant upstream blocker; gitignore new MoE cache dirs (f812715)
  • docs(KERNEL_MATRIX): add Kernel Selection Philosophy section (287c766)

🧹 Other

  • Merge PR #147: v0.8.0 — Universal pull (evaluate & serve any safetensors HF model) (#147 by @noonghunna)
  • v0.8.0 [docs] PULL.md Quickstart (command-first, top-of-doc) + ARCHITECTURE one-liner: stage names are internal, users run one command (bef766d)
  • v0.8.0 [review] pre-tag fixes: scrub internal-path leaks from shipped source + make .pull-captures-corpus tests CI-safe (skip-when-absent) (49d9bb4)
  • v0.8.0 [docs] ARCHITECTURE.md: add the universal pull→gate→emit→loop pipeline to the mental model + scripts tree (current-state, was stale for v0.8.0) (1cdda19)
  • v0.8.0 [UX] §7 two doc tracks: docs/PULL.md (user front-door) + docs/README.md (track spine) + README migration nudge (a0b3b5c)
  • v0.8.0 [F] F8-fix: widen §6.1 Tier-1 OOM signature + pt3.actual regexes to real vLLM v0.21.0+ KV-cache-too-large phrasing — on-rig F8 caught classic-torch-only regexes miss the common KV-prediction failure (f92624d)
  • v0.8.0 [F] F7: docs/LOOP.md contributor doc (Loop phase, grounded in shipped F1–F6) + CONTRACT-5(i) risk note (a8b30d6)
  • v0.8.0 [F] F6: CONTRACT-5 mandatory content-hash kv_calc_version (G2) + G1 topo-verify + L2 fixture sync (1ac0481)
  • v0.8.0 [F] F5: §6.3 canonical-tuple-hash dedup + bounded label scheme + collision-safe submit path (CONTRACT-4) (5de7224)
  • v0.8.0 [F] F4: §6.2 inbound-trust pipeline raw→candidate→validated→Tier-1 + CONTRACT-3a derived-deferral (CONTRACT-3) (d758f08)
  • v0.8.0 [F] F3: G6-A 3-part additive [E] touch (pt1.predicted_b_breakdown, pt3.failure_log_excerpt+actual, container-log capture) + §6.1 Tier-1 (CONTRACT-2) (b100979)
  • v0.8.0 [F] F2: §6.1 Tier-2 semantic-fingerprint classifier + Appendix A seed DB (CONTRACT-2 Tier-2) (9f80d29)
  • v0.8.0 [F] F1: FInput capture-bundle reader + schema-1 validation + key-normalization (CONTRACT-1) (1491cbc)
  • v0.8.0 [E] E-outcome-fix: honest 3-state manifest outcome (partial-success != failed) — §6.2 partial is a capability-scoped success (71148d6)
  • v0.8.0 [E] E3/E4-fix: boot lifecycle as context manager (server stays up for smoke+capture, teardown on ctx-exit) — on-rig E5 caught teardown-in-finally-before-smoke (f7c405a)
  • v0.8.0 [E] E3-fix: smoke probes the real served-model-name (not literal "derived") + capture failure detail — on-rig E5 caught red-smoke-on-healthy-boot (16a1e4d)
  • v0.8.0 [E] E2-fix-2: verify *.safetensors against HF API lfs.sha256 (not Xet-redirect-fragile HEAD x-linked-etag) — on-rig E5 caught false no-etag (3ae74bf)
  • v0.8.0 [E] E2-fix: download via hf CLI subprocess (not huggingface_hub lib-import) — on-rig E5 caught ModuleNotFoundError (806a298)
  • v0.8.0 [E] E5(docs): docs/PULL_EMIT_DERIVED.md (+ private ledger/recon-checklist updates) (d134d5a)
  • v0.8.0 [E] E4: post-[C1] derived-[E] orchestration + trigger semantics + override force-capture (pt5) (2ed18aa)
  • v0.8.0 [E] E3: derived boot (HF_HOME mount) + 4 §6 capture emitters + manifest + derived smoke floor (f327887)
  • v0.8.0 [E] E2: HF download stage (download_set allowlist + x-linked-etag SHA, no-etag fail-closed, atomic staging) (7a2ec86)
  • v0.8.0 [E] E1: generate_from_profile + derived-vllm template + EInput + CONTRACT-5 gate (411c84f)
  • v0.8.0 Pull-Gate P5: docs/PULL_GATE.md (two-path model, 6-stratum taxonomy, §4.1 [C1], hardware-SM) (2582438)
  • v0.8.0 Pull-Gate P4: stratum-5 + [C1] §4.1 total fn + stratum-6 [D] dry-run + pull orchestrator + exhaustive test-pull.sh (adf7a3b)
  • v0.8.0 Pull-Gate P3: stratum-2 precondition + [C0] engine-support/runtime/hardware gate + [C2a] disk (4a1d385)
  • v0.8.0 Pull-Gate P2: transformers deriver + ModelProfile/confidence + variant-scoped hf_repos schema (818b79c)
  • v0.8.0 Pull-Gate P1: kv-calc generic-dense family + eligibility predicate + raw_verdict adapter (1bafcfe)
  • v0.8.0: doc generated composes are not relocatable (run with --project-directory) (a2fc05e)
  • v0.8.0 STEP 5: COMPOSE_GENERATOR.md + PATCH_POLICY.md (#141 contributor contract) (9546f99)
  • v0.8.0 STEP 3+4: compose generator + 5-triple golden-parity test (#141) (6d7a043)
  • v0.8.0 STEP 2: extract patch_attribution.py (sound body-only reaches(), test imports it) (60f3983)
  • v0.8.0 Phase A-prime: enrich patch/profile data for #141 generator (compose_service_template, genesis_equipped, delivery metadata, drift_guards, drafter/model_slug/trc fold-ins) (9f23736)
  • Add v0.8 Phase A patch attribution data (91a9622)

[Pin: git checkout v0.8.0] · Full diff

v0.7.4 — 2026-05-15

🐛 Bug fixes

  • fix(vllm-pr35936): make overlay tolerate bf610c2f upstream drift (closes #144) (421114b)

📝 Documentation

  • docs(BENCHMARKS): @OVDEN13 dual.yml — PCIe Gen 4 x4+x8 asymmetric (#142) (77802a3)

🧹 Maintenance

  • test(launch): re-align engine pin expectations after revert (e7bca8e)

🧹 Other

  • Reapply "fix(qwen3.6-27b): route non-TQ3 composes to vllm-nightly-clean" (d780410)
  • Revert "test(launch): re-align engine pin expectations after revert" (0c4260f)
  • Revert "fix(qwen3.6-27b): route non-TQ3 composes to vllm-nightly-clean" (d32e168)

[Pin: git checkout v0.7.4] · Full diff

v0.7.3 — 2026-05-15

✨ Features

  • feat(report): surface kv-calc calibration verdict (#143 by @noonghunna)
  • feat(kv-calc): model v0.7.3 MoE architectures (39e1873)
  • feat(gemma-4-26b-a4b): AWQ + MTP n=4 — +12% narr / +49% code over no-MTP baseline (6dc9a0d)
  • feat(qwen-35b-a3b): preview-MTP compose + bench row — MTP measured SLOWER on MoE (e1d44bd)
  • feat(vllm-pr41800): vendor truncate_prompt_tokens overlay across all pre-fix engines (closes #139) (1d7aad1)
  • feat(gemma-4-26b-a4b): AWQ path via vLLM PR #40886 overlay (0053444)
  • feat(estate): add parallel boot mode (99328b4)
  • feat(moe): add dual-card composes for Gemma 26B-A4B + Qwen 35B-A3B preview (2d1b1dc)
  • feat(moe): wire Gemma 4 26B-A4B + Qwen 3.6 35B-A3B composes through fits() (f7f6f44)
  • feat(profiles): split engine-pin policy by Genesis dependency (15eda8a)
  • feat(profiles): add Gemma 4 26B-A4B ModelProfile + num_global_kv_heads field (abf0e32)
  • feat(profiles): add Qwen 3.6 35B-A3B ModelProfile (MoE schema extensions) (9378714)

🐛 Bug fixes

  • fix(gpu-mode): mode_off tears down estate-managed instances (9cd854d)
  • fix(qwen3.6-27b): route non-TQ3 composes to vllm-nightly-clean (3b2d940)
  • fix(gemma-4-31b): route default/bf16 composes to vllm-nightly-clean (cf0451a)
  • fix(engines): vllm-nightly-mtp anchors to 01d4d1ad (Sander v7.72.2 PROD pin) (87f0a0c)

📝 Documentation

  • docs(soak-test): clarify PASS verdict semantics — closes #140 (9a039d8)
  • docs(UPSTREAM): add PR #41800 truncate_prompt_tokens row (273c017)
  • docs(README): add v0.7.3 MoE models to Supported Models table (e49c939)
  • docs(BENCHMARKS): Gemma 4 26B-A4B AWQ first row + AutoRound row demoted (92b69bd)
  • docs(BENCHMARKS): add v0.7.3 MoE preview section (bdfb939)
  • docs(HARDWARE): add note on PCIe Gen 3 + older CPU TP=2 headwind (8cf38b0)
  • docs(KERNEL_MATRIX): add KV Cache Impact subsection (1a233cd)
  • docs: add KERNEL_MATRIX.md (attention backend + engine support matrix) (97195fe)
  • docs(kv-math): extend k_v_tensors=N notation to sliding-KV formulas (b1c68b4)
  • docs(kv-math): tighten k_v_tensors notation across all 4 formulas (54d8bf0)
  • docs(kv-math): third-pass Grok polish (67de3ec)
  • docs(kv-math): second-pass Grok polish (78f94ca)
  • docs(kv-math): address Grok review feedback (3114399)
  • docs(kv-math): config-verify Qwen 35B-A3B + Gemma 26B-A4B MoE sections (6ec6a67)

🧹 Maintenance

  • test(launch): align engine pin expectations (127f4f6)

[Pin: git checkout v0.7.3] · Full diff

v0.7.2 — 2026-05-15

✨ Features

  • feat(launch): add hardware topology advisor (d116ba9)

[Pin: git checkout v0.7.2] · Full diff

v0.7.1 — 2026-05-15

✨ Features

  • feat(bench): surface prompt processing throughput (2a148d7)
  • feat(llamacpp): expose batch tuning knobs (02249ab)

🐛 Bug fixes

  • fix(ci): simplify vllm image workflow, drop smoke-gate (#135) (ce2617e)

📝 Documentation

  • docs(upstream): PR #42102 closed-as-slop; local overlay permanent (57eb269)

[Pin: git checkout v0.7.1] · Full diff

v0.7.0 — 2026-05-14

✨ Features

  • feat(scripts): add diagnose-profile triage (c2adb39)
  • feat(compose): use profile-sourced vllm image pins (e6e33ab)
  • feat(launch): export profile vllm pins (c306383)
  • feat(profiles): resolve vllm nightly pins (40f1ef7)
  • feat(launch): add estate planner orchestration (c9b153f)
  • feat(launch): validate single-model profiles (a142b1c)
  • feat(compat): add profile validator and estate self-test (6581ccc)
  • feat(compose): accept ESTATE_GPUS and ESTATE_PORT overrides (a57596e)
  • feat(profiles): ship v0.7.0 data layer (69825d7)

🐛 Bug fixes

  • fix(tools): resolve profile image pins in audit (98535dc)
  • fix(tools): bump engine nightly profiles (d1acde0)
  • fix(ci): keep vllm base arg in image metadata (1abe65f)
  • fix(launch): persist estate source of truth (52e4347)

📝 Documentation

  • docs: document profile-sourced vllm pins (86445be)
  • docs: document club vllm image pin (2ae8303)
  • docs: expand KV_MATH + add ADDING_MODELS workflow (1f8aaa2)
  • docs(hardware): clarify 3090 stock TDP varies by board SKU (0d59f94)

🧹 Maintenance

  • chore(vllm): use club3090 image in composes (aebc4f3)
  • chore(ci): build club vllm image (e88a2a8)
  • refactor(kv-calc): consume profile data (9ccde62)

🧹 Other

  • Revert "chore(vllm): use club3090 image in composes" (c7c40bd)

[Pin: git checkout v0.7.0] · Full diff

v0.6.3 — 2026-05-14

✨ Features

  • feat: unify dual-card composes with NVLink auto-detection (e00626a)

🐛 Bug fixes

  • fix(scripts): report.sh shows human-readable version via git describe (0f0a9c8)

📝 Documentation

  • docs: cross-rig data — eddie 3090/3090Ti power-cap + alanspires 6×3090 VFIO (e41323f)

🧹 Other

  • Merge PR #128: unify dual-card composes with NVLink auto-detection (#128 by @noonghunna)

[Pin: git checkout v0.6.3] · Full diff

v0.6.2 — 2026-05-14

🐛 Bug fixes

  • fix(launch): project TP greater than four (98f0406)

[Pin: git checkout v0.6.2] · Full diff

v0.6.1 — 2026-05-14

✨ Features

  • feat(launch): add hardware-aware launcher (5882bbe)
  • feat(tools): extend kv-calc.py to multi-model (Qwen 3.6 + Gemma 4 31B) (0d48dac)

📝 Documentation

  • docs: update launch.sh references for v0.6.1 wizard flow (e299e70)

🧹 Other

  • Merge codex/v0.6.1-launch into master (056dcb6)

[Pin: git checkout v0.6.1] · Full diff

v0.6.0 — 2026-05-13

✨ Features

  • feat(scripts): add hardware-aware setup picker (12a33fb)

🐛 Bug fixes

  • fix(launch): exit cleanly on stdin EOF in wizard prompts (e05f196)

[Pin: git checkout v0.6.0] · Full diff

v0.5.4 — 2026-05-13

🐛 Bug fixes

  • fix(scripts): make submit-bench issue-first (22bf2e9)

[Pin: git checkout v0.5.4] · Full diff

v0.5.3 — 2026-05-13

✨ Features

  • feat(scripts): add submit-bench flow (ef77032)

[Pin: git checkout v0.5.3] · Full diff

v0.5.2 — 2026-05-13

🎯 New models + serving paths

  • Add hardware-aware compose preflight (2698552)

[Pin: git checkout v0.5.2] · Full diff

v0.5.1 — 2026-05-13

🐛 Bug fixes

  • fix(qwen): PR #35936 overlay — sidecar pattern to resolve Genesis RO-mount conflict (6617e1e)

📝 Documentation

  • docs: clarify MODEL_DIR — second drive / HF cache / Windows-WSL (1678ca0)
  • docs(upstream): correct stale vllm#40807 row + add #40798/#42215 row (14ffe45)

[Pin: git checkout v0.5.1] · Full diff

v0.5.0 — 2026-05-12

✨ Features

  • feat(qwen): ship froggeric chat-template fixes as default-on (84498d4)
  • feat(vllm): add PR #35936 required-tool fallback overlay (28b16b5)
  • feat(qwen-tq3): add CLUB3090_TQ_K1_SKIP_MTP layer-filter for PR #40914 K+1 dispatch (6b2a7d5)

🎯 New models + serving paths

  • compose(tq3-mtp-genesis): pin to Genesis v7.72.2 known-good vLLM nightly (570fa71)

📊 Benchmarks + cross-rig data

  • bench(matrix): @ygafarov first heterogeneous Ampere + Blackwell eGPU dual (1770931)

📝 Documentation

  • docs(dtype-matrix): more polish — RDNA naming, FP8 maturity caveats, AMD detection (62b3b45)
  • docs(dtype-matrix): polish nuances + add Intel and AMD vendor sections (3d4548c)
  • docs(dtype-matrix): per-arch hardware accelerator matrix for compose optimization (9c6d3cf)
  • docs(faq): add 'INT8 PTH doesn't scale at concurrency — is that a bug?' (df53287)
  • docs(tq3-mtp): writeup + charts for the Genesis-backed TQ3+MTP path (c2b1c93)
  • docs(qwen-tq3): close round-4 — #40914 not shippable, route to nomtp + Genesis (9fba037)
  • docs(qwen-tq3): re-tombstone tq3-mtp.yml after round-3 MTP-skip validation (063d3e9)

🧹 Maintenance

  • refactor(qwen): rename int8-tq3 → tq3-* family + add no-MTP + Genesis variants (6182922)

[Pin: git checkout v0.5.0] · Full diff

v0.4.0 — 2026-05-11

✨ Features

  • feat(rebench-report): close 9 gaps — TL;DR + rig + timings + reproducer + delta + discuss variant (be7f9aa)
  • feat(rebench): add REPORT.md synthesizer + container/boot/GPU captures (18355f4)
  • feat(rebench): halve default soak to 10 sessions × 5 turns (~15-20 min) (3406894)
  • feat(rebench): one-shot canonical 5-step bench orchestrator (94a2522)

🐛 Bug fixes

  • fix(switch): GPU memory pre-flight + widen RUNNING_PATTERN (4866913)
  • fix(rebench-report): parse aider upstream_per_exercise as dict (not list) (7c4b310)

📊 Benchmarks + cross-rig data

  • bench(head-to-head): matched-config rebench + Qwen INT8 PTH KV compose (755e519)

📝 Documentation

  • docs(gemma-4-31b): document TQ3 Ampere FA2 head_dim wall + vendor #40108 overlay (f8c7066)
  • docs(benchmarks): Qwen 3.6 27B vs Gemma 4 31B head-to-head on dual 3090 (edda3b3)

🧹 Maintenance

  • chore(composes): bump Qwen pins → 1acd67a7, drop obsolete patch_tolist_cudagraph (16a1374)
  • chore(cliff): skip auto-regen bot commits in changelog parser (a258e49)

[Pin: git checkout v0.4.0] · Full diff

v0.3.3 — 2026-05-10

🧹 Maintenance

  • chore(changelog): subject-only rendering (drop commit body verbosity) (eeb946b)

[Pin: git checkout v0.3.3] · Full diff

v0.3.2 — 2026-05-10

✨ Features

  • feat(quality-test): auto-set BENCHLOCAL_HERMES_RESOLVE_LOCALHOST=1 for localhost URLs (83bf73d)

🧹 Maintenance

  • chore: trigger v0.3.2 release workflow (GitHub deduped previous tag push) (255c743)
  • chore(changelog): automate CHANGELOG + release notes from commits via cliff (Option A) (64b0474)

[Pin: git checkout v0.3.2] · Full diff

v0.3.1 — 2026-05-10

🐛 Bug fixes

  • fix(soak-helper): capture delta.reasoning alongside delta.reasoning_content (88eb67a)

📝 Documentation

  • docs(changelog): v0.3.1 entry for soak-helper delta.reasoning capture (9db8b26)

[Pin: git checkout v0.3.1] · Full diff

v0.3.0 — 2026-05-10

✨ Features

  • feat(power-cap-sweep): --include-commit flag stamps club-3090 git SHA in report header (closes #112) (7d91ac7)
  • feat(qwen3.6-27b): thinking OFF by default across all 21 composes (29d17ed)
  • feat(setup): interactive MODEL_DIR prompt for fresh TTY users (3909c2d)

🐛 Bug fixes

  • fix(qwen3.6-27b): use --default-chat-template-kwargs (not --chat-template-kwargs) (534d29f)
  • fix: 4 stale refs missed in 2026-05-10 reorg push (caught by RobH589 #116) (cf7f195)

📝 Documentation

  • docs(benchmarks): aider-polyglot-30 — Qwen 27B 20/30 (66.7%) > Gemma 4 31B 17/30 (56.7%) (e08988e)
  • docs(recipes): use $MODEL_DIR placeholder + sensible cross-rig default (cc3a717)
  • docs: use $MODEL_DIR placeholder, not the dev rig's /mnt/models/huggingface/ (fbf3431)

🧹 Other

  • release: SemVer adoption + v0.3.0 changelog entry (7080f1f)

[Pin: git checkout v0.3.0] · Full diff

v2026.05.10 — 2026-05-10

✨ Features

  • feat(gemma-4-31b): INT8 PTH KV unblocks 262K + AWQ + DFlash compose family (403b16f)

🎯 New models + serving paths

  • compose: parametrize VLLM_ENFORCE_EAGER, KV_CACHE_DTYPE, P40/P82/PN54 across all variants (#110) (#110 by @easel)
  • composes: refresh Quality lines with --full sandboxed (8-pack) results (9dea0eb)
  • composes: add --full Quality lines on Qwen3.6-27B + Gemma 4 31B duals (26ff0e5)

🐛 Bug fixes

  • fix: BIND_HOST opt-in + localhost script fixes (#109) (#109 by @easel)

📝 Documentation

  • docs: WSL2 budget formula + Cliff 3 (DeltaNet SSM-state non-cacheable) (6e12700)

🛠️ Scripts + tooling

  • quality-test.sh: --sandboxed-only passthrough (7020d96)
  • quality-test.sh: --help, --pack passthrough, align with benchlocal-cli v0.5 (1be02d2)
  • ci: replace Release Drafter with git-cliff for commit-based release notes (7002e6b)

🧹 Other

  • reorg: services/ consolidation + gpu-mode under git + ComfyUI + pin tracker + path updates (00366a5)
  • encourage-soak: template dropdown + script ergonomics + report reminder + Notes convention (c298b60)
  • BENCHMARKS: add @ygafarov Strix-Halo + oculink-eGPU x4-PCIe single-3090 row (#113) (a589058)

[Pin: git checkout v2026.05.10] · Full diff

v2026.05.09 — 2026-05-09

⚠️ Cliffs, gotchas, regressions

  • Merge v7.69-cliff2-test: ship Cliff 2 closure recipes (Balanced MTP + Max-context) (15b84df)
  • v7.69 + #35975 + Codex P103 gate fix — Cliff 2 closure recipes (f6613c8)
  • docs + charts: v7.66 + Cliff 1 mech B closed across all 4 TQ3 composes (ae4846f)
  • PN30 dst-shaped temp fix: close DS conv state regression class on long-text (9af1a52)
  • PN25 v3: close Cliff 1 mech B (club-3090#16) on long-text via setup-time Genesis backport (a62ad78)
  • walk back: Cliff 1 mech B reproduces on real IDE-agent prompts (club-3090#16) (b62b6b1)
  • Ship verified Cliff 1 closure on long-text 205K + long-vision 192K (287de1c)
  • Cliff 1 P104 + P101 anchor fix outcomes (built on cliff1-fa-clamp branch) (e6570a7)
  • Cliff 1 dual-mechanism: P101+P103 cross-rig test reveals FFN buffer cliff (573a377)
  • Cliff 1 root cause revised: FA2 softmax_lse sized by max_seqlen (2d6b69d)

✨ Features

  • feat(preflight): compose-dependency + HF_TOKEN + KV-format checks (#37, #47, #219) (b6c8708)
  • feat(tools): kv-calc.py — predict per-card VRAM budget for Qwen3.6-27B (#226) (4e89c6a)
  • feat(bounded-thinking): Phase 3 grammar A/B complete; DeepSeek scratchpad is the new recommended grammar (b956c85)
  • feat(report.sh): --stress + --soak flags, --full now the canonical "everything" pass (8a29b95)
  • feat(qwen3.6-27b/vllm): add dual4 + dual4-dflash composes (TP=4, 4×3090, #44) (#44 by @Whamp)
  • feat(grammar-eval): land harness for Holiday tagline grammar A/B (7be8ecc)
  • feat(soak-test): continuous-mode v2 fixtures + reproduces Cliff 2 at 25K accumulated context (8d5bfd8)
  • feat(scripts): add soak-test.sh — runtime VRAM accretion validation (closes gap from #41) (563a39e)
  • feat: detect repo drift in preflight + add scripts/update.sh (43fe2a4)
  • feat(launch/switch): register vllm/dual-nvlink as a known variant (75de7c9)
  • feat(preflight): warn when Genesis tree out of sync with setup.sh's declared pin (d552ed9)
  • feat(scripts/report.sh): capture per-GPU PCIe lane width + Gen + bus ID (535be29)
  • feat(scripts/report.sh): capture container-internal Python/CUDA versions (e491e07)
  • feat(scripts): add report.sh — paste-ready triage report (31982f0)
  • push long-text/bounded-thinking back to 185K + 0.975; long-vision stays 140K + 0.95 (df91d64)
  • feat(vllm): structured-CoT bounded-thinking compose (cross-rig port) (3d151b9)
  • Push verified ceilings: long-text 218K, long-vision 198K (f3e5b52)
  • Verify 256K single-prompt prefill on dual.yml (Sandermage cross-rig) (5270d94)

🎯 New models + serving paths

  • composes: formalize Status enum + Caveats field (100% coverage) (e1137d6)
  • composes: rename dual4 → multi4 to align topology prefix with MULTI_CARD.md framing (d33e6f8)
  • composes: complete profile-schema header rollout (8 more composes) (fca643d)
  • compose: extend VLLM_ENFORCE_EAGER hook to dual / dual-nvlink / dual4 + HARDWARE.md docs (5ec40c6)
  • compose: VLLM_ENFORCE_EAGER env hook + WSL2 .env docs (#99 by @easel)
  • Add dual-nvlink-dflash-noviz compose variant (NVLink + DFlash N=5, 200K ctx, no vision) (63ab224)
  • Add docker-compose.dual-nvlink-dflash.yml (#92) (#92 by @danbedford)
  • composes: PYTORCH_CUDA_ALLOC_CONF env-override knob + WSL2 boot-crash docs (#84) (#84 by @easel)
  • Add Gemma 4 + DFlash compose (vLLM PR #41703 Codex-rebased overlay) (#81) (#81 by @noonghunna)
  • composes: env-override knobs MAX_MODEL_LEN + GPU_MEMORY_UTILIZATION (#79) (#79 by @noonghunna)
  • add Gemma 4 31B + Google MTP drafter (first Ampere data) (#68) (#68 by @noonghunna)
  • Add dual NVLINK Docker Compose setup for Qwen3.6-27B (1350450)
  • Add llama.cpp compose + perf chart + Q3_K_XL bench data (39692c9)
  • Add long-vision + long-text composes (formalize R3' / R3''' bench rows) (b641719)

🐛 Bug fixes

  • fix: verify-full.sh broken pipe + llama-cpp DISABLE_THINKING env hook (8f103f3)
  • fix(preflight): catch missing llama.cpp GGUF before container boot (#63) (#63 by @noonghunna)
  • fix: remove thinking prompt from Carnice chat template + JSON tool format (3729144)
  • fix: missing pipe in DUAL_CARD table row (a28ba38)
  • fix(soak): flag silent-empty turns (HTTP 200 + 0 tokens) as warnings (f32d8a6)
  • fix: 3 issues from community feedback (2f8ed19)
  • fix(soak-test, switch): calibration + boot-progress UX from first cross-rig runs (8e9cf70)
  • fix(dual-nvlink): rename to avoid collision + vendored Marlin path (147f2e3)
  • fix(default compose): swap P65 (cudagraph workaround) → P67 (proper Triton kernel fix) (620d918)
  • fix(long-text-no-mtp): drop P65 + P85 — missed in a26e30b (22e6549)
  • fix(composes): drop GENESIS_ENABLE_P65 + P85 — out of sync with v7.69 dispatcher v2 (a26e30b)
  • fix(setup.sh): auto-clone vllm-src Marlin patched fork (was manual step) (2e934ad)
  • fix(docs): replace dead luce-spec/llama-cpp-dflash links with Luce-Org/lucebox-hub (e9c658c)
  • fix(scripts): register vllm/long-text-no-mtp in switch.sh + launch.sh (1f09a05)
  • fix(dflash): close the docs+setup gap that hit @lolren on club-3090#18 (eb54cf4)
  • fix(verify): drop tail buffer on Genesis check 2 anchor (refines 95b0905) (f2c1433)
  • fix(verify+docs): close two items from troymroberts cross-rig validation (#25) (95b0905)
  • fix(launch): pass per-variant URL + CONTAINER to verify-full.sh (#20) (77ca576)
  • fix(docs): bump curl smoke-test max_tokens 30 → 200 (#14) (2f8bade)
  • fix(vllm): fail fast when Genesis patches volume is empty (#13) (0df8f74)
  • fix: address open issues #1, #4, #7 (ebacba1)

📊 Benchmarks + cross-rig data

  • results: re-bench dual.yml + dual-dflash + dual-dflash-noviz on v0.20 (0bdcb69)
  • results: dual-turbo re-bench with corrected env vars (PN22 / PN26 naming fix) (077228e)

📝 Documentation

  • docs: add Discord invite to README + FAQ + issue template (c18257f)
  • docs: refresh 4090 cross-rig knee with @laurimyllari's richer 38-cap sweep (20ca297)
  • AGENTS.md: codify why patches/cache stay engine-level (not under a topology) (9fbce96)
  • AGENTS.md: capture compose naming + profile schema + experimental-compose conventions (62e636c)
  • docs+composes: align Gemma 4 compose names to Qwen's -.yml convention (fe86b48)
  • docs: surface Gemma 4 31B + add at-a-glance profile schemas to canonical composes (4d7356a)
  • docs: add Community projects section pointing at VykosX/club-3090-server (cd48764)
  • docs: laptop EC-managed power + TQ3 vs fp8 KV naming-trap; verify-stress: auto-bump curl timeout under VLLM_ENFORCE_EAGER (fe23eff)
  • docs + compose: ship Phase 2 INT8 PTH validation results — 262K Gemma 4 unblocked (1e1886a)
  • docs(hardware): add Qwen3.6-35B-A3B (MoE) 3090 power-cap charts + comparison (ec27d75)
  • docs(img): reposition freq-cap chart annotations to clear right margin (2f7eb44)
  • docs(hardware): add 5090 clock-lock chart + Blackwell freq-cap section (119a5fa)
  • docs(hardware): regen 3090 power-cap charts with SM clock + plateau evidence (9f77be7)
  • docs(hardware): reconcile 230W vs 290W vs 330W sweet-spot story (a7a1d59)
  • docs(hardware): @apnar prefill-heavy 5090 sweep — proves per-workload power ceiling (d5ef8c8)
  • docs(hardware): correct 3090 cooling class — air, not water (1f94478)
  • docs(hardware): embed 3090 + Qwen3.6 + llama.cpp power-cap chart (42afdbb)
  • docs(hardware): embed 4090 + Qwen3.6 + llama.cpp power-cap chart (e70258c)
  • docs(hardware): embed 5090 + Gemma 4 power-cap efficiency chart (8b1d51a)
  • docs(engines): more honest vLLM GGUF status (2d9aa14)
  • docs(engines): fix 12 corrupted table separators from ik_llama.cpp column add (8f5b924)
  • docs(engines): add ik_llama.cpp as 5th column to comparison matrix (0959206)
  • docs(hardware): add 5090 + Gemma 4 + MTP cross-rig anchor rows (apnar disc #86) (bef5701)
  • docs: add INFERENCE_ENGINES.md feature matrix (vLLM/llama.cpp/SGLang/ktransformers) (dfceccb)
  • docs: codify canonical power-cap-sweep command for cross-rig anchors (886b619)
  • docs: BENCHMARKS rows + CHANGELOG entry for danbedford NVLink+DFlash variants (b893d60)
  • docs(benchmarks): @apnar 5090 Gemma 4 MTP + DFlash rows (disc #67) (98b0601)
  • docs(benchmarks): three cross-rig rows from 2026-05-07 reports (76aacdc)
  • docs(benchmarks): add @aaronlockhartdev patched-P2P driver row (#91, disc #70) (4eea837)
  • docs(upstream): note we filed cross-rig validation on vLLM PR #40391 (e46f1e8)
  • docs(gemma-4): int8_per_token_head on Ampere — Codex investigation verdict (1c2c156)
  • docs: surface host-build contributor flow + power-cap-sweep in README + CONTRIBUTING (9aa6cb2)
  • docs(benchmarks): add @lamentofhighborne 1× 3090 llama.cpp MTP row (#85) (68dbfaf)
  • docs(hardware): add @apnar's 5090 power-cap anchor + compute-saturation note (60d4df6)
  • docs(upstream): correct Gemma 4 per-token-head KV row — upstream PR exists (eb9f955)
  • docs(gemma-4): document fp8 + int8 KV exploration on Ampere — both blocked (bb07eb5)
  • docs(gemma-4): empirical ctx ceilings + PR #41745 merge status (1038e5f)
  • docs(power): add cooling caveat — 388W stock requires liquid cooling (b15c5e1)
  • docs(power): revise default cap 230W → 330W per @syangsao cross-rig data (2fe017f)
  • docs(benchmarks): correct V100 row VRAM 14.6→15.6 GB/card per @efschu (d7bffec)
  • docs(benchmarks): add @efschu 2× Tesla V100 16GB row (first sm_70 Volta data) (9212c60)
  • docs(benchmarks): @danbedford 2× 3090 cross-rig matrix (6 benches, controlled PCIe vs NVLink) (6e57215)
  • docs(benchmarks): add @laurimyllari 4090 single-card vllm/long-text row (461c4d4)
  • docs(benchmarks): add @lolren 2× 3090 + Ryzen 5950X cross-rig rows (3 variants) (34a2348)
  • docs(benchmarks): add @apriori dual-dflash row (EPYC 7302P + Arch + 2× 3090) (344e595)
  • docs(upstream): track llama.cpp MTP PR #22673 + non-adoption rationale (#64) (#64 by @noonghunna)
  • docs(contributing): clarify issues-vs-discussions routing (#61) (#61 by @noonghunna)
  • docs: add Carnice BF16MTP to DUAL_CARD, vllm README, and CHANGELOG (fbd3531)
  • docs(runtimes): tighten Proxmox section — native venv works (#49) (a51202c)
  • docs(hardware): note SM86 structural ~70% TG drop at 131K (cross-rig) (eb5cd70)
  • docs: capture environmental footnotes — WSL2 TDR + Proxmox uvloop (#49, #50) (224ca71)
  • docs(cliffs): add rig-class caveat — "known good" is rig-specific (#49) (53d5c6b)
  • docs(multi-card): topology-aware pair selection on awkward GPU counts (#49) (8e60539)
  • docs(benchmarks): walk back PFlash "shippable" framing — TTFT + NIAH ≠ full validation (#230, #231) (ccac1ff)
  • docs(benchmarks): PFlash long-context bench — 131K source ceiling on 1× 3090 (#230) (ebca0c8)
  • docs(benchmarks): K8V4 result + P2P-CNS finding on lucebox-hub dual-GPU (#229) (e78eaa1)
  • docs(benchmarks): add lucebox-hub DFlash dual-GPU bench — no-op on 24 GB cards (#229) (cb089e1)
  • docs(benchmarks): add @JusefPol's 2× 3090 + NVLink dual-nvlink row (#29, #31) (017d0d2)
  • docs(lucebox): record PRs #78 + #80 — dual-GPU PFlash + DFlash split shipped (May 2026) (dec0f22)
  • docs(sglang): refresh per-engine + comparison pages — DFlash + MTP native upstream as of May 2026 (ecc2d74)
  • docs(structured-cot): soften Phase 3 framing per Codex v2-prompt validation (011d4cc)
  • docs(cliffs/hardware): ground Cliff 2 + TQ3 explanations in published literature (9b370f5)
  • docs: cross-reference TQ3→fp8 KV swap from CLIFFS, DUAL_CARD, dual-turbo.yml + CHANGELOG record (#47) (129a4f4)
  • docs(hardware): 20 GB Ampere TP=2 needs fp8_e5m2 KV, not TQ3 (#47) (124f08c)
  • docs(benchmarks): add @snoby's 2× 4090 dual-dflash-noviz row (#46) (fc4c061)
  • docs: align bug-report + FAQ + MULTI_CARD with report.sh --full / --soak (b859630)
  • docs(benchmarks): add Rig column for cross-rig contributions (d8e7f73)
  • docs: add BENCHMARKS.md + extend grammar harness for full-bench mode (9043678)
  • docs+gates: PR template, soak-continuous gate, Phase 2 grammar A/B (85a6ea8)
  • docs: UPSTREAM tracker + SINGLE_CARD polish — close the cliff-2b research thread (451b9f3)
  • docs: surface Cliff 2b multi-turn envelope + WHY TP=2 / llama.cpp escape (04764c5)
  • docs(UPSTREAM): sync 3 upstream changes + add next-week revisit queue (4327fd3)
  • docs: surface scripts/update.sh + repo-drift detection (bca5a06)
  • docs(vllm-marlin-pad/README): add sanity-check procedure before image-bump syncs (1bb85fa)
  • docs: add MULTI_CARD.md for 3+ GPU users (derived, untested locally) (75a64a6)
  • docs(FAQ): add WSL2 RAM-constraint failure mode to troubleshooting (3bf7da7)
  • docs: surface triage ladder at issue-filing time + add at-a-glance table (f55b0a7)
  • docs(FAQ): add 5-step triage ladder before symptom-matching (9560efd)
  • docs: add PFlash integration feasibility memo (Codex audit, 2026-05-02) (90a83a3)
  • docs: route bug + bench templates through scripts/report.sh (b9a1305)
  • docs(dual-card): substrate refs from v7.65/v7.66 → v7.69 (95b2c3b)
  • docs: full sync to v7.69 + Cliff 2 60K closure recipes (f8c9c36)
  • docs(UPSTREAM): track Pflash (Luce-Org prefill accelerator) — flagged by @troymroberts (#25) (e0e1752)
  • docs(CLIFFS): note v7.68 cross-rig test outcome — 3 regressions, master stays on v7.66 (ae1b92f)
  • docs: Genesis #14/#15 fixes shipped on Sandermage dev (P38B/P15B/PN25 pending v7.65) (60d7b02)
  • docs(upstream): refresh tracker for v0.20 blockers, P38/FA varlen filings, v7.64 closures (f633fdb)
  • docs+composes: refresh long-text/long-vision/bounded-thinking headers + max_tokens guidance (cc4f083)
  • docs + bounded-thinking: roll new context defaults across user-facing surfaces (d803278)
  • docs(compose): document Cliff 1 mech B real-workload gap + escape hatches (#16) (6bff99a)
  • charts: add tweet-asset variant (single-card vLLM only, 2 bars) (f754669)
  • charts: combined width 18 + 2-line group labels + dual VRAM title says vLLM (24c8a62)
  • charts: fix layout overlap with Luce DFlash 7th bar (1ce7dc4)
  • docs+charts: add Luce DFlash bench + watch entry; cautions in single-card chart (cf71feb)
  • docs: demote 48K/tools-text/minimal to fallback; lead with long-* + llama.cpp (48f93e5)
  • docs: fix stale chart ref in HARDWARE.md + delete obsolete vram-budget.svg (cc02699)
  • docs: catch remaining stale 192K/205K refs in long-text.yml header (f00f279)
  • docs: final cleanup pass on stale 192K/205K refs (a1fc225)
  • docs+scripts+charts: propagate new ceilings (long-vision 198K, long-text 218K) (427d2f8)
  • docs: record verified ceilings and bisection in CLIFFS + CHANGELOG (26e5f65)
  • docs: note revised Cliff 1 diagnosis posted on Sandermage issue #11 (8d8968b)
  • docs: link PN12 PR #13 + record independent validation pass (5e38365)
  • docs: revise Cliff 1 analysis (PN12 anchor drift was the real bug) (13d325b)
  • Document Cliff 1 205K closure (9f6182e)
  • changelog: link P101 PR #12 in 2026-04-30 entry (90a03ce)
  • docs: link P101 PR #12 in UPSTREAM and CLIFFS (d0d79b1)
  • CLIFFS.md: post-2026-04-30 architectural-wall conclusion (8580dc6)
  • CLIFFS.md: refine clamp formula + implementation shape (ChatGPT review) (da6393b)
  • Add docs/CLIFFS.md — comprehensive prefill-cliff synopsis (b0eed46)
  • LLAMA_CPP.md: add structural explanation of why prefill cliffs don't fire (17aff4c)
  • Add docs/UPSTREAM.md + AGENTS.md (consolidate upstream tracking) (53d811d)
  • Add docs/COMPARISONS.md — self-host vs cloud and other local options (297a982)
  • Add docs/FAQ.md — common questions answered for tweet click-throughs (1b9374b)
  • Add docs/EXAMPLES.md — client snippets + IDE / Open WebUI connection (91b817f)
  • README: lead with two-routes framing (matches launch tweet) (710def5)

🔧 Pin bumps + upstream

  • bump Genesis pin 753344b → fc89395 (v7.66 dev tip) (7a7efbe)
  • v0.20 migration + Genesis v7.65 dev tip + cold-start cache + env-var alignment (5aa97a2)
  • Genesis v7.62.x + PN8 on FP8 paths (closes Cliff 1 on tools-text) (51a4001)

🛠️ Scripts + tooling

  • ci: add Release Drafter for CalVer release notes (c49db50)
  • power-cap-sweep: also sum delta.reasoning (third field-path) (1528b59)
  • power-cap-sweep: sum delta.reasoning_content alongside delta.content (71e5954)
  • power-cap-sweep: clamp prefill calibration to model context window (32f924c)
  • power-cap-sweep: plateau auto-detection + multi-mode chain docs (fd11ae6)
  • power-cap-sweep: add SM/mem clock + throttle% + pstate sampling (ab2796d)
  • power-cap-sweep: time-bounded prefill-heavy + decode-concurrent (Codex round 2) (1ede998)
  • power-cap-sweep: time-bounded streaming bench (Codex Option A redesign) (7877c04)
  • power-cap-sweep: 4 cross-card portability fixes (652103f)
  • power-cap-sweep: env-overridable bench shape for decode-single mode (c638c30)
  • setup.sh: auto-create .env for WSL2 boot-crash workaround (#60) (4861ee7)
  • power-cap-sweep: --concurrency-stretch N flag for probing headroom past plateau pick (3991ecc)
  • power-cap-sweep: plateau-detection auto-calibration (saturate headroomy GPUs) (29e7de5)
  • report.sh: engine-aware Active container probes (vllm + llamacpp) (6fa66d2)
  • report.sh: capture recently-exited containers' boot logs (#60) (cd980f6)
  • setup.sh: add gemma-4-31b model support (#89) (dd3bccc)
  • power-cap-sweep: --concurrency auto for workload-calibrated sweeps (Codex) (f811457)
  • power-cap-sweep: --bench-runs N for variance mitigation (Codex) (f99fad3)
  • power-cap-sweep: document decode-concurrent n=1 variance caveat (18c74de)
  • power-cap-sweep: load-mode flag + concurrent/prefill modes (Codex iteration) (f387622)
  • verify-stress: engine-aware diagnostic hints (closes #87) (4f01abb)
  • power-cap-sweep: make CONTAINER optional for host engine builds (#85, #87) (2bb3cf7)
  • scripts(verify-full, soak-test): decouple from docker/vLLM assumptions (#85, #87) (a8606e3)
  • power-cap-sweep: fix stale summary footer + add compute-saturation note (8c26c4b)
  • power-cap-sweep: reduce per-cap bench to ~30s for faster sweeps (a413321)
  • power-cap-sweep: 10W default increment + under-load median power sampling (6d70b72)
  • power-cap-sweep: auto-derive cap range from card's min/max power limits (e5c7a34)
  • Add scripts/power-cap-sweep.sh — automated cross-rig power-cap A/B (#83) (#83 by @noonghunna)
  • scripts: auto-detect running container + port in verify / bench (closes #52 promise) (29718ca)
  • verify-stress: add 3 probes to cover the bug shapes we missed (5e745c5)
  • Add scripts/health.sh — operational health check for running server (e7780c5)
  • Split verify-full.sh → verify-full.sh (fast functional) + verify-stress.sh (boundary) (5060e22)

🧹 Maintenance

  • restructure: promote topology to a directory level (single/dual/multi4) (acd7ffb)
  • Drop vllm-gemma4-mtp overlay tree (merged upstream as #41745, validated) (aa99173)
  • chore(gitignore): allow results/lucebox-*/ — evidence for BENCHMARKS lucebox row (030f780)
  • chore(tools): commit residency-instrument as research tool with framing README (#41, #217) (ed05d1c)
  • chore(results): commit grammar bench evidence + gitignore investigation artifacts (#217) (d82e898)
  • refactor: vendor vllm#40361 Marlin patched files in-repo (drops /opt/ai/vllm-src/ host dep) (d8b341f)
  • chore: untrack docs/diagnostics/, gitignore the path (3f18053)
  • Remove no-genesis-mtp.yml (research artifact, not user-facing) (f4a28b1)
  • Remove fast-chat.yml; extend P68/P69 disable to default (37a4895)
  • Restructure docs around hardware axis: SINGLE_CARD.md + DUAL_CARD.md (26ac811)
  • Audit + reconcile dual-card compose headers, patches README, setup output (0f33561)

🧹 Other

  • benchmarks: add JDWarner #107 TB3 dual-eGPU + mixed-arch row (fa9df49)
  • Rename gemma-mtp-fp8.yml → gemma-mtp-int8.yml to match Ampere reality (160e8fc)
  • Two regressions caught + reframe Phase 2 around INT8 PTH (Ampere reality) (119f296)
  • gemma-mtp-fp8: vendor rebased PR #40391 + stacked tool-parser fixes (#42006 + #41991) (f93d312)
  • gemma-mtp: drop PR #41745 overlay + bump to post-merge nightly (595be8f)
  • llama.cpp: --reasoning-format none default (opencode unblock, #97) (af00ab7)
  • Set dual-nvlink-dflash-noviz --max-model-len default to 188000 (89c6862)
  • patches: qwen3coder tool-parser deferred-commit sidecar (#72) (2e00b6d)
  • TQ3 composes: propagate PN34 to remaining 4 (follow-up to #82 audit) (ab69f65)
  • vllm/default: also enable P98 (belt+suspenders with PN34, follow-up to #82) (2c7efe6)
  • vllm/default: add GENESIS_ENABLE_PN34_WORKSPACE_LOCK_RELAX=1 (#82) (3167497)
  • add dual-nvlink-turbo variant (rebased on v7.72.2 master, sibling-table edits dropped) (#65) (#65 by @noonghunna)
  • release(v7.72.2-uplift): Genesis pin + vLLM pin + sidecar consolidation (#59) (#59 by @noonghunna)
  • carnice-bf16mtp: restore original template + qwen3_xml parser (d57579c)
  • carnice-bf16mtp: JSON tool format + empty think block, no reasoning parser (a350df7)
  • carnice-bf16mtp: add HF model URL to header (5da50ec)
  • carnice-bf16mtp: formal narrative + code bench results (7fef94f)
  • carnice-bf16mtp: 2 streams at 262K confirmed + formal bench numbers (66d42c7)
  • carnice-bf16mtp: 65K context was config choice, not VRAM ceiling — bumped to 262K (1cf0cb2)
  • Carnice-V2-27B + BF16 MTP overlay — new compose variant (bc28542)
  • extend PN25 v3 + PN30 dst-shaped temp fix to all 4 TQ3 composes (b875624)
  • Genesis pin d89a089 → 753344b + cross-rig validation of Sander's PN30/PN31 (2b5ab4d)
  • cliffs: v0.20 unblock recipe + 50K-stress-PASSES finding (9506561)
  • cliffs: document P38 silently no-op'd on TurboQuant KV path (91355b8)
  • long-text/long-vision/bounded-thinking: middle-ground recovery 130K → 175K / 120K → 140K (383b5cc)
  • long-text/long-vision: enable P37 + back off context for activation headroom (1a931b4)
  • genesis: bump pin v7.62 → v7.64 + add compile-safe FFN sidecar (#16) (53d0663)
  • Add local FA max seqlen clamp sidecar (9f06a0f)
  • Fix local PN12 activation pool anchor (41eabac)
  • CLIFFS: document PN12-is-partial finding (full stack still hits wall) (537875a)
  • Add genesis #11 row to UPSTREAM.md (bb406f9)
  • Add Max ctx column to TL;DR + perf-summary tables on both pages (e94c2e7)
  • DUAL_CARD: promote perf chart to top, parallel to SINGLE_CARD (19fb8e7)
  • Disable P68/P69 on long-vision, long-text, dual-turbo too (f0cbcc6)
  • Disable Genesis P68/P69 in shipped composes (silent-stop bugfix) (aab8ff4)
  • Split charts per GPU-count page; chart sources land in tools/charts/ (3742244)
  • Move performance chart into docs/img/ alongside vram-budget-dual (2e3ae0c)
  • UX polish: pre-flight checks + cards-first wizard + PNG embeds (abc06c3)
  • FAQ: add VS Code Copilot LLM Gateway entry (f275bf5)
  • Add CONTRIBUTING.md — what kind of PRs land cleanly (0c261eb)
  • CHANGELOG: capture post-launch polish day in cross + per-model logs (1cc6ee6)
  • Add launch.sh wizard + switch.sh stateless variant switcher (4b77ed5)
  • Add per-card VRAM allocation diagram + reference from model README (88523b3)
  • Cite Kaitchup Qwen3.6-27B GGUF eval as quant-quality lens (b7ef91f)
  • Pin Genesis to exact tested commit + add .env.example + issue templates (ec704e4)
  • Dual-card re-bench on club-3090 substrate + fix dual-turbo mount path (c701474)
  • dual-turbo: switch kv-cache-dtype k8v4 → 3bit_nc to align with test findings (3e1f5f6)
  • Pin Genesis version + fix MODEL_DIR defaults + clean stale headers (7f00e52)
  • Fix .gitignore + add the entire models/ tree (initial commit was incomplete) (2511a98)
  • Initial commit — club-3090: model-agnostic LLM serving recipes for RTX 3090 (3fa3333)

[Pin: git checkout v2026.05.09]