Skip to content

Latest commit

 

History

History
1648 lines (1180 loc) · 173 KB

File metadata and controls

1648 lines (1180 loc) · 173 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.10.1 — 2026-07-02

✨ Features

  • feat(gemma): v0.24.0 overlay-free 31b dual (cyankiwi, MTP-off) (2535bb9)

🐛 Bug fixes

  • fix(studio): derive + pin COMFYUI_OUTPUT_DIR from COMFYUI_ROOT (#510 render-mount) (#534) (#534 by @noonghunna)
  • fix(studio): pin COMFYUI_ROOT to .env so ComfyUI mounts the models tree (#510, #530) (#531) (#531 by @noonghunna)
  • fix(studio): pull HiDream + Chroma weights in the ai-studio roster (#510) (#529) (#529 by @noonghunna)
  • fix(quality-test): preflight sandbox images + document the build step (#492) (#494) (#494 by @noonghunna)
  • fix(ai-studio): derive ComfyUI paths from MODEL_DIR + make gpu-mode portable (#493) (#493 by @noonghunna)

📝 Documentation

  • docs(quant): add QUANTIZATION §4b tier trade-space (8d4a6ec)
  • docs(gemma-31b): reflect the v0.24.0 bf16 consolidation (f7214fb)
  • docs(ai-studio): add design rationale + 3 complements from the production-agent design (81181fc)
  • docs(ai-studio): explain storyboard continuity + add a troubleshooting section (f28dde4)
  • docs(ai-studio): rewrite director flow as behavioral + add Character Bible / continuity / research (01cb15b)
  • docs(ai-studio): flag Production Director as WIP / not production-ready (b494b50)
  • docs(ai-studio): add "Current challenges / known limitations" to agents doc (a517324)
  • docs(ai-studio): add agents-architecture.md (director decision flow) (38487e5)
  • docs: correct --no-thinking help — four packs default thinking-on (fa66758)
  • Document LMCache RAM gate formula (L1 + 28) in compose caveat (c4bd455)

🔧 Pin bumps + upstream

  • Bump vllm-stable v0.22.0 → v0.24.0 (overlay-free; marlin-pad native) (#533) (#533 by @noonghunna)

🛠️ Scripts + tooling

  • setup-ai-studio.sh: make the "sign up then install the pipe" step unmissable (#510) (#527) (#527 by @noonghunna)
  • report.sh: add --studio flag (AI Studio / ComfyUI container log tails) (#526) (#526 by @noonghunna)

🧹 Other

  • serve: neutral primary model name (qwen3.6-27b / gemma-4-31b), keep -autoround alias (7e9f5cb)
  • patches: de-register vllm-marlin-pad (merged upstream, native in v0.24.0) (ae4d1fc)
  • c3: hide deprecated slugs in catalog by default ([h] toggles) (8b43b48)
  • hygiene(qwen composes): align stale Engine-profile headers vllm-nightly-clean -> vllm-stable (126e5c5)
  • bump(diffusiongemma): :gemma branch digest -> stock vLLM v0.24.0 (68c6ea8)
  • consolidate(gemma-31b): single bf16 dual slug on v0.24.0, retire v0.22.0 composes (6cfcbc6)
  • fold(gemma-12b): dual-bf16 onto vllm-stable v0.24.0, MTP-off (dea4579)
  • fold(gemma-26b): MTP-off on v0.24.0 dual (Gemma-4 MTP×tools broken) (93b1642)
  • BENCHMARKS: W8A8 row is an experimental data point, not a shipped slug (852b561)
  • BENCHMARKS: add v0.24.0 dual-max FP8 + W8A8 rows (8-bit decode vs prefill corners) (1f4028e)
  • studio(tts): chmod 0644 the TTS + narrate outputs so the host can read them (#501) (#501 by @noonghunna)
  • Fix #512: portable LAN-IP detection + persist to .env (CachyOS / GNU inetutils) (#525) (#525 by @noonghunna)
  • Director: make the LLM the intent driver, demote keyword detection to a bare fallback (#524) (#524 by @noonghunna)
  • Director: web research for documentaries (SearXNG-grounded facts) + honesty fix (#523) (#523 by @noonghunna)
  • Director Batch 3: semantic plan critic before render (Codex F5/F6/F7) (#522) (#522 by @noonghunna)
  • Director Batch 2: structured LLM intent controller (natural multi-turn conversation) (#521) (#521 by @noonghunna)
  • Director Batch 1: creation-question gate, pinned-lane capabilities, sizing + valve fixes (#520) (#520 by @noonghunna)
  • Planner: detect documentary vs narrative format, suppress invented protagonist (#519) (#519 by @noonghunna)
  • Production assemble: fix sub-frame cut xfade collapsing multi-shot films (#514) (#514 by @noonghunna)
  • Production planner: scale director token budget by shot count (#513) (#513 by @noonghunna)
  • Production: wire LTX-2.3 / Sulphur / 10Eros video lanes into the executor (#511) (#511 by @noonghunna)
  • Production lane: conversational director + persona in AGENTS.md (#509) (#509 by @noonghunna)
  • Production lane: qualify (size + propose) → confirm → build (#508) (#508 by @noonghunna)
  • Fix: Production lane chit-chat gate — don't render a film from 'hello' (#507) (#507 by @noonghunna)
  • Studio setup: zero-config defaults — portable MODEL_DIR + fail-fast + shared LAN-IP (#506) (#506 by @noonghunna)
  • Studio setup: de-rig standalone scripts — fix #503 model path + #504 LAN IP (#505) (#505 by @noonghunna)
  • Studio Production: stack + OWUI lane + keyframe tiers + Character Bible (Tier A) (#502) (#502 by @noonghunna)
  • Studio Production Agent v0b-core + v0b-images (#497, #499) (6ee5e32)
  • Studio Production Agent v0a — executor spike (offline + live PASS) (#496) (#496 by @noonghunna)
  • BENCHMARKS: fold @guybrush01 dual-5090 8-pack quality onto cross-rig row (2886de4)
  • Add model-scope dropdown + group-by-model to c3 Catalog (#495) (#495 by @noonghunna)

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

v0.10.0 — 2026-06-26

⚠️ Cliffs, gotchas, regressions

  • c3 Phase R / R3b-1 fixups: temp unlink-on-decline + lane-native [v] regression test (4ec2b2b)

✨ Features

  • feat(lmcache): add NVLink auto-detection to dual-lmcache compose (ea833ad)
  • feat(vibethinker-3b): add llamacpp/vibethinker-3b-single (Q8, incubating) (d3cacfa)
  • feat(catalog): add 🐣 Incubating status tier + VibeThinker-3B (incubating) (35a6965)
  • feat(qwen3.6-27b): add beellama/carnice-v2-dual-q8-mtp dual compose (#403) (186ab9b)

🎯 New models + serving paths

  • Add gemma12b single-card gpu-mode scene + litellm route (#469) (#469 by @noonghunna)
  • Add guard test: conditional compose entrypoints must $$-escape runtime bash (1b87ebe)
  • Add llamacpp/qwen27b-pi-reasoning-single (Qwen3.6-27B Pi-style coding agent, mainline llama.cpp + MTP) (#425) (#425 by @noonghunna)
  • Add opt-in LMCache KV-offload compose (vllm/qwen-27b-dual-lmcache, incubating) (#421) (#421 by @noonghunna)

🐛 Bug fixes

  • fix(lmcache): forward env tuning knobs (c90e4f2)
  • fix(nvlink): strip only expandable_segments on custom-AR path (f5d5dca)

📝 Documentation

  • docs: add PCIE_P2P.md — PCIe topology & enabling P2P (no NVLink) (df419c9)
  • README: add a getting-started subsection for the c3 TUI (069ac27)
  • docs(lmcache): fold cross-rig findings — warm-L2 compute-bound + aborted-prefill caveat (7b0c4d4)
  • docs(c3): first-run Settings step (Model Dir + HF token) + S keybinding (50bed70)
  • docs(ai-studio): Krea 2 is a real image lane (was "dropped") (7daef3e)
  • docs: note the image-lane quality ceiling + optional HQ upgrade path (852820d)
  • docs: AI Studio requirements + Wan tuning + director placement (11984d1)
  • docs: Z-Image + Wan2.2 lanes (11 lanes); Krea2 dropped (cloud-only) (5c2ed40)
  • docs: ai-studio consolidation pass (one scene, lanes inside it) (813ddf9)
  • docs(upstream): add ParserEngine tracker rows (#45413, #45588) (0596283)
  • docs(upstream): clarify #40812 is merged-but-insufficient; point at #43923 (611587d)
  • docs: mark transformers>=5.8.0 / gemma4_assistant upstream row resolved (#453) (#453 by @steamEngineer)
  • docs: fix vLLM upstream table render (drop stray blank line) (#452) (#452 by @steamEngineer)
  • docs(vibethinker-3b): add measured one-shot-coding scores (HE+ 97%, LCB 83%) (8b3aa13)
  • docs: add ANNOUNCEMENT_TEMPLATE.md (Announcements-post skeleton) (a728832)

🛠️ Scripts + tooling

  • report.sh: surface P2P engagement as a labeled field (#491) (#491 by @noonghunna)
  • setup.sh: let WEIGHT_KEY bypass the friendly model-name dispatch (f9d8f8d)
  • weights.py: add list --json (download-state source for c3) (1730e04)

🧹 Other

  • BENCHMARKS: add @oven1231231234 dual-3090 NVLink-vs-PHB A/B (PCIe 3.0 x16) (4032645)
  • Standardize 27b served-model-name → qwen3.6-27b-autoround (#490) (#490 by @noonghunna)
  • gpu-mode: align power-cap default 230W -> 250W (completes #483) (#489) (#489 by @noonghunna)
  • Add nvidia-power-cap.service for boot-time GPU power cap (#483) (#485) (#485 by @alexpolo1)
  • BENCHMARKS: add Ornith-1.0 section (9B + 35B rows) (c9f651e)
  • Add Ornith-1.0-35B experimental slug (ik-llama/ornith35b-dual) (#479) (#479 by @noonghunna)
  • BENCHMARKS: add @Whamp 4× 3090 TP=4 multi4 rows (#446) (291fa74)
  • BENCHMARKS: add @guybrush01 dual-5090 cross-rig row (Qwen3.6-27B, first Blackwell) (2c686e9)
  • Add Ornith-1.0-9B experimental slug (ik-llama/ornith9b-single) (#477) (#477 by @noonghunna)
  • c3: adaptive estate poll — fast GPU, regime-gated docker (burst/steady/idle) (#476) (#476 by @noonghunna)
  • Director placement lever: CPU / GPU0 / GPU1 (c3 Settings) (#473) (#473 by @noonghunna)
  • Wire SearXNG web search + Qdrant vector DB into Open WebUI (#472) (#472 by @noonghunna)
  • Lazy-load step-voice + scene-wire it into ai-studio (#471) (#471 by @noonghunna)
  • Make the OWUI model picker scene-accurate (studio lanes + LLMs) (#470) (#470 by @noonghunna)
  • gpu-mode: rename model scenes to qwen27b / qwen35b-a3b / gemma-31b (33a1f71)
  • gpu-mode: add the 35b-a3b scene (parity with 27b/gemma/deckard) (9f1f3a9)
  • gpu-mode: fix gpu-mode gemma (undefined fn aborted before start) + litellm port (2b17aa5)
  • c3: distinguish "booting" from "API not reachable" in Doctor (all engines) (1ce5a5f)
  • owui: wire LiteLLM gateway (:4000) as a chat connection (f5ec5c3)
  • c3: scene-preview box auto-grows to fit all services (not a cap) (9459536)
  • c3: cap scene-preview services with "+N more" (ai-studio truncation) (9299e6f)
  • serve-cockpit: declare PyYAML dependency (fixes c3 diagnose-estate crash) (0cc9d9c)
  • ai-studio: wire the Krea 2 Turbo image lane (validated on v0.26.0) (978052a)
  • comfyui entrypoint: fix dubious-ownership blocking the pin checkout (e738c7c)
  • Bump ComfyUI pin to v0.26.0 + queue Krea 2 download (2693d93)
  • detect_nvlink: auto-enable PCIe P2P when nvidia-smi reports it OK (446c7d9)
  • studio: one-command setup-ai-studio.sh + auto-install the OWUI pipe (aad1e69)
  • c3: make fresh-clone install work + rewrite stale README + repo pointer (37c680d)
  • studio: Wan2.2 full parity — recipe fix, 720p valve, i2v, long-clip chaining (0ff83b8)
  • studio: download scripts + manifest rows for Z-Image + Wan2.2 (5fb8fa1)
  • studio: add Z-Image + Wan2.2 uncensored lanes; unify OWUI lane naming (9b16ef9)
  • cockpit: ai-studio missing-models modal + video⊕voice GPU guard (75dbc0a)
  • studio: add the 10Eros uncensored video lane (A/B vs Sulphur) (a4230b3)
  • studio: consolidate image/video into one ai-studio gpu-mode scene (3fc2685)
  • cockpit: give report/full-report/cap-sweep their own Doctor cards (ef8cba8)
  • studio: preflight the models before starting (gpu-mode + cockpit) (757c1da)
  • studio: fetch the director / Kokoro / Step-Audio models for a fresh install (cece4ec)
  • cockpit/gpu-mode: comfyui engine label, drop power-cap strip + solo scene, list studio sidecars (cae021d)
  • cockpit: show engine + port for comfyui/qdrant (port-range + non-engine ports) (ee954e1)
  • cockpit: guide studio setup when comfyui-local image is missing (016bf36)
  • comfyui: parameterize host paths for portability (${COMFYUI_ROOT} / ${MODEL_DIR}) (ac31c7e)
  • cockpit: fix per-service stop/start to target the real container + project (c52ab09)
  • stack: remove retired ollama service entirely (9b73a4c)
  • cockpit: Containers shows service status/engine/port + start; de-dup Orchestration (727d90b)
  • cockpit: live status bullets on Orchestration services (read-only) (1b4e2af)
  • cockpit: cluster Orchestration scenes by group (models → studio → ops) (0b58a48)
  • gpu-mode: collapse the gemma scenes to just 'gemma' (7bca67c)
  • gpu-mode scenes: regroup (serving→models), drop bigmodel + diffusiongemma (5fb2252)
  • c3 Orchestration scenes: footer-only confirm, clearer override, real 'off' (0896bd9)
  • c3 Orchestration: power-cap menu, remove prune, move cap-sweep to Doctor (38227ce)
  • c3: unify MODEL_DIR convention between the cockpit and setup.sh (f03b514)
  • c3 Download: ignore backup cruft (.bak/.old/~) in the progress byte-count (acacfda)
  • c3 Download: live progress moves + state survives a catalog refresh (32fadef)
  • c3 Download: registry-driven companion artifacts (DFlash draft / mmproj) (639525b)
  • c3 Settings: show [S] in the footer + honor MODEL_DIR / HF_TOKEN env vars (2aae1d0)
  • c3 Download UX: [S] Settings (model dir + HF token) + not-set banner (340896c)
  • c3 Download UX: Download-vs-Start pop-up, listing glyph, download worker (8947d59)
  • profiles: wire hf_repo for 5 verified weight variants (eb81c5f)
  • c3 Download UX (service): download plan + progress + disk-fit (a28d3d1)
  • c3 Download UX (data layer): per-slug weights-on-disk state (e8d99a5)
  • c3: fix slug-match prefix shadow, idle-service reconcile, hint overflow, copy, experimental Force-Start (53a570f)
  • c3: [Y] copy-to-clipboard + shift+arrow horizontal scroll (d256a05)
  • c3 Doctor: "is it serving correctly?" — verify / verify-full reads (d05f132)
  • c3 serve pop-up: state-aware Stop/Start/warned-Start; drop Fit column (8ad9a00)
  • c3 Catalog: topology column, multi-word filter; Modes/tab-bar arrow refinements (ba22ccd)
  • c3 cockpit: stopped-drill clear, arrow-navigable Modes, lane no-yank (303d9b6)
  • c3 cockpit: arrow-key focus descent (↓ into content, ↑ back to tab bar) (0232797)
  • c3 cockpit: fix keyboard focus/navigation (footer + tab bar) (6bca4e6)
  • c3 cockpit UX Tier-1: footer/binding hygiene (Codex review) (982e034)
  • c3 cockpit: merge Run+Operate; Bring & Validate visible by default (b3b842a)
  • c3 cockpit live-use fixes: table cursor preserve, curated profile dropdown, disk/RAM in the left rail (ba984ca)
  • c3 cockpit UX batch 5: estate telemetry — disk/RAM bars, studio-* services, GPU-VRAM attribution (24b672f)
  • c3 cockpit UX batch 4b: inline previews + registry-derived profile dropdown (171058c)
  • c3 cockpit UX batch 4a: navigation & discoverability + an unsafe-gate Enter safety fix (78facde)
  • c3 cockpit UX batch 3: honesty + serving actions (fit-vs-live-VRAM, real running config, targeted stop) (bb2c30e)
  • c3 cockpit UX batch 2: perception loop — live surfaces reflect writes + fail honestly (049ede8)
  • c3 cockpit UX batch 1: serving panel, full service list, calm Containers, power/cap on cards (dfe9004)
  • c3 Phase R / R4: in-app Contribute door (runtime surface toggle + persistence) (ca67481)
  • c3 Phase R / R3b-2: ④ measure-vs-curated-bar + producer full-validation report (a6df0c2)
  • c3 Phase R / R3b-1: producer "Bring & Validate" lane — ①–⑤ stages + ② Serve (2c3c93d)
  • c3 Phase R / R3a: surface-gate the producer lane (consumer = Run + Operate) (ddd70b6)
  • c3 Phase R / R2b: consumer share-back — rig report [R] / submit bench [B] / problem [!] (2a5397a)
  • c3 Phase R / R2a: rename Estate → Operate + move Doctor into Operate (250cd50)
  • c3 Phase R / R1: fold Discover + Serve + Benchmarks into one Run mode (8762442)
  • c3 Phase R / R0 fixups: surface gate before _ALWAYS_ON + de-flake gate tests (e706f64)
  • c3 Phase R / R0: surface scaffolding (consumer | producer) (b04093e)
  • Fix NVLink boot crash when compose pre-sets expandable_segments (a4b8bd1)
  • Fix estate GPU visibility overrides (#447) (#447 by @Whamp)
  • c3: auto-load container drill detail on select + consistent Esc (1252921)
  • c3 catalog: instant first-paint + batched fit via kv-calc --fit-all (24c1f19)
  • Add kv-calc --fit-all: batch fit for all registry slugs in one process (6653660)
  • Speed up c3 catalog load ~10x (parallelize per-slug enrichment) (65a7f36)
  • Fix LMCache compose entrypoint for Compose v5 interpolation (#429 by @steamEngineer)
  • Fix c3 cockpit keyboard hotkeys: context-gated footer + focus (e881738)
  • Phase 5 (v2): wire the c3t-Evaluate / promote-to-catalog / optimizer hooks (b7b4b7d)
  • Phase 4 (v1.5): wire the Validate mode + Estate write-extras (581da4f)
  • Phase 3: wire cockpit panes to real data + reconcile-gated actions (e5823bc)
  • Phase 2b: add --json/CLI contracts to 7 stack scripts (additive) (d09a063)
  • Phase 2a: extract club3090_tui_core, repoint c3t + cockpit (8bcbcd1)
  • Apply Codex Phase-1 review: harden registry shell call + mark bench mock (450ece0)
  • Mirror c3t shell: wider rail + persistent Estate status card (21c66a6)
  • Enrich Phase-1 cockpit with representative visual mockups (128c0ed)
  • Clarify c3 ⏎ action (per-mode) + fix mode-rail truncation (b966f00)
  • Add serve cockpit (c3) — Phase 1 walking skeleton (b520dfb)
  • Add NVLink auto-config to qwen3.6-35b-a3b dual (Production — rebench-gated) (491226f)
  • Add NVLink auto-config to gemma-4-26b-a4b + diffusiongemma duals (7481aa7)
  • Fix NVLink auto-detect dead on Docker Compose v5.1+ (9a188b8)
  • Add c3t — the club-3090 test-console TUI (built by Qwen Max from the spec) (#428) (#428 by @noonghunna)
  • Record measured pi-reasoning rebench-full results + BENCHMARKS row (79173b1)
  • quality-test / rebench-full: forward --max-tokens to benchlocal-cli (#426) (#426 by @noonghunna)
  • Correct pi-reasoning bench framing: 230W power-cap artifact, MTP head ≡ base (78c4038)
  • Pull gate: actionable messages for uncurated derives of curated models (#424) (#424 by @noonghunna)
  • LMCache: in-repo L2 default + LMCACHE_L2=1 toggle, preflight disk-check, corrected sizing (#422) (#422 by @noonghunna)
  • Correct LMCache L2 docs with measured numbers (fs adapter, ~125 KB/token, 4.8s rehydrate) (9901129)

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

v0.9.0 — 2026-06-15

✨ Features

  • feat(weights): optional revision: pin in weights-fetch schema (#319) (#408) (#408 by @deucebucket)
  • feat(bench-agentic): decouple context ramp from tool-call success (#255) (#396) (#396 by @noonghunna)
  • feat(rebench): make the 8-pack opt-in via --with-8pack-thinking (default-skip) (#338) (#395) (#395 by @noonghunna)
  • feat: add Qwen3.6-40B-Deckard to catalog (llamacpp/deckard40B-dual-mtp) (5dafaa6)
  • feat(vllm): opt-in offline/air-gap support across vLLM composes (#318) (edd77cf)

🎯 New models + serving paths

  • Add llamacpp/hauhaucs-35ba3b-dual uncensored MTP compose (🧪) (#410) (#410 by @noonghunna)
  • Add Carnice-V2-27B beellama single-card compose (beellama/carnice-v2-single-q5km-mtp) (#406) (#406 by @noonghunna)
  • Add experimental DiffusionGemma dual fp8 vLLM compose + patches (83e8353)
  • Add Qwen3.6-27B fast/max tiers across dual + multi4 (4 slugs) (#340) (#340 by @noonghunna)
  • Add Qwen3-Omni-30B-A3B vLLM-Omni compose (non-registry, 2x3090) (#317) (#317 by @noonghunna)

🐛 Bug fixes

  • fix(gpu-mode): stop gemma-4-12b chat in video-studio + comfyui modes (#376 by @noonghunna)
  • fix(35b-a3b): bump preview-single gpu-mem 0.92->0.95 for v0.22.0 boot (195bd47)
  • fix(35b-a3b): correct AutoRound INT4 hf_repo (#316) (121330c)

📝 Documentation

  • docs(UPSTREAM): #39598 MTP-streaming tool-call drop is un-mitigated on v0.22.0 (P64 retired); #145 closed (8e38f7a)
  • docs(BENCHMARKS): add author-rig Cerebellum-v3 data point (35B-A3B, #390/#393) (85087ad)
  • docs(UPSTREAM): mark #40361 closed-superseded by #45295; track v0.23.0 pin (18656e7)
  • docs(ARCHITECTURE): drop pinned version on 'surfaces (current)' marker (fb114bf)
  • docs(README): refresh 35B-A3B row + drop stale NEW v0.7.3 tags (a36d2c0)
  • docs(README): un-stale 35B-A3B vLLM-dual row (preview→Production, 262K) (0689fc4)
  • docs(README): correct 35B-A3B llama.cpp ❌→✅ (mainline serves the MoE; #390) (559a3fe)
  • docs(ai-studio): add architecture diagrams to README/image/audio (81b7157)
  • docs(ai-studio): scope the umbrella to image/video/audio — text is the core stack (fd81dc2)
  • docs: relocate Studio docs into docs/ai-studio/ + add overview & audio (#386) (#386 by @noonghunna)
  • docs(video-studio): boxed architecture diagram + Quickstart/First-run (match IMAGE_STUDIO) (96794a0)
  • docs(video-studio): add a user-facing 'How to prompt' section (4abdadd)
  • docs: reconcile DUAL/MULTI_CARD for the qwen fast/max tiers (#340) (c51dc23)
  • docs(ADDING_MODELS): quant & arch gotchas checklist (Step 1) (21d01bd)
  • docs: quant-fidelity (KLD/QAT) + the Ampere KV-dtype traps (int8-PTH native, fp8-guard) (3382a47)
  • docs(upstream): repoint Gemma engine-pin row to vllm-gemma-stable + add vllm-stable row (#324 fidelity) (09a4482)
  • docs(adding-models): extend coherence rules — patch roles, engine identity/channels, test matrix (b314ea9)
  • docs(internals): drop stale /opt/ai vLLM-clone path (marlin-pad overlay is vendored) (4730406)
  • docs: drop stale /opt/ai vLLM-clone instructions (marlin-pad is vendored + auto-mounted) (47f6291)
  • docs(faq,dual-card): image/video gen guidance + 2x3090 multimodal lessons (924883c)
  • docs(qwen3-omni): add image/video gen options, UI recommendations, 2x3090 lessons (8c1370b)
  • docs(qwen3-omni): correct text decode to ~164 tok/s (12 was the audio path) (4eed607)
  • docs: document the compose filename convention (serving-feature delta) (edc44c4)
  • docs(ADDING_MODELS): document the registry slug-naming convention (28794da)
  • docs(UPSTREAM): record gemma4 p-RoPE fix shared on vllm#39914 (d391f32)
  • docs(ADDING_MODELS): accommodate Codex registry-onboarding review (d080757)
  • docs(WSL_SETUP): add 'Expose the API to your local network (LAN)' section (d11f29d)
  • docs(UPSTREAM): track Gemma-4-12B unified 256K large-prefill OOB (vllm#39914) (960cbf4)

🛠️ Scripts + tooling

  • verify-full: add streaming tool-call check + a reusable streaming probe (#404) (#404 by @noonghunna)
  • setup.sh: make Genesis opt-in, stop the default stale-pin clone (#182) (#399) (#399 by @noonghunna)
  • scripts: auto-detect served model from /v1/models in verify/bench (#372) (#388) (#388 by @noonghunna)
  • setup.sh: add diffusiongemma-26b-a4b dispatch (fetch fp8 weights) (8ffa46d)
  • bench.sh: FORCE_TOKENS — bench at a fixed/larger output size (0948e6b)
  • switch.sh --owui: auto-register a launched model in Open WebUI (111c72b)
  • preflight: resolve ${VAR:-default} model paths in compose-deps check (345f24e)
  • preflight: detect endpoint by engine port, not a model-name allowlist (#310) (f48a7ff)

🧹 Maintenance

  • test(weights): opt-in HF-repo resolve guard (#320) (#409) (#409 by @deucebucket)
  • chore: make setup script work with WEIGHTS=FP8 and qwen3.6-27b (#369) (#369 by @hlo-world)
  • chore(327): archive the Qwen3.6-27B DFlash path + deprecate vllm-nightly-dflash (cc3e906)
  • chore(254): deprecate the now-unused Genesis nightly engines + patches [Phase 3+4] (baac1ac)
  • chore(254): archive 15 Genesis/nightly composes + migrate the cascade [WIP: 5 test fixtures] (b5ef9e6)
  • chore(254): migrate qwen-a3b-preview-single off purged nightly-clean -> vllm-stable (36ee7bb)
  • refactor(vllm): reconcile vLLM engines to v0.22.0 — two-engine split (#254) (a9ffb53)

🧹 Other

  • BENCHMARKS: add DiffusionGemma 26B-A4B section + cross-rig row (#405) (0542de8)
  • Fix soak-test container auto-detect: match by engine port, not model allowlist (#405) (#414) (#414 by @noonghunna)
  • Pin hauhaucs-35ba3b-dual weights to morikomorizz commit 49a080d (#319) (#413) (#413 by @noonghunna)
  • qwopus-coder compose: sanitize /opt/ai/hf-download.sh leak in Quick-start -> generic hf download (69f8632)
  • deckard-40b: anti-loop sampling defaults (rep-penalty 1.1 + repeat-last-n 256) + DRY opt-in (#402) (#402 by @noonghunna)
  • ik-llama: migrate spec-dec flags to --spec-type + digest-pin the image (#401) (#401 by @noonghunna)
  • Add curated quality-baseline corpus + auto-diff (#252 Phase 1) (#397) (#397 by @noonghunna)
  • catalog: add beellama/qwopus-coder (Qwopus3.6-27B-Coder, KVarN-4) — first KVarN compose (#391) (#391 by @noonghunna)
  • beellama: bump pin v0.3.0 → v0.3.2-preview (commit-pinned) + validate (#389) (#389 by @noonghunna)
  • setup: fix fp8 weights nits after #369 (typo, help string, manual_note) (eae0e36)
  • openwebui: pin OWUI task models to the qwen director (not the generation pipe) (d7c6e6d)
  • studio(pipe): ignore OWUI internal task prompts — stop rendering them as images (0dddfa7)
  • studio(pipe): drop the visible refine marker — read 'Prompt used:' instead (892324f)
  • studio: add push-pipe-to-owui.sh — update the installed OWUI function in one command (d67a067)
  • studio(pipe): intent-gate the director — don't render on greetings/small-talk (#387) (#387 by @noonghunna)
  • studio: add 🎙️ Voice lane — Step-Audio-EditX premium clone (isolated service) (#385) (#385 by @noonghunna)
  • studio: add ✨ HiDream-O1 image lane (top-quality / photoreal) (#384) (#384 by @noonghunna)
  • studio: add 🔊 SFX lane (Stable Audio Open) — sound effects + ambient (#383) (#383 by @noonghunna)
  • studio: add 🎵 Music lane (ACE-Step) — songs + instrumentals (#382 by @noonghunna)
  • studio: integrated voices for video — Kokoro TTS + layer-aware audio mixdown (#381 by @noonghunna)
  • studio: add Chroma uncensored image lane (the "Sulphur for stills") (#380 by @noonghunna)
  • studio: fix OWUI native 🖼️ image button via ComfyUI reverse-proxy shim (#379 by @noonghunna)
  • studio: fix image-lane _min_caption fallback (empty arrays hard-block) (#378 by @noonghunna)
  • studio: add 🖼️ Image lane (Ideogram-4) with JSON-caption director (#377 by @noonghunna)
  • studio: in-chat 60s+ via orchestrator (auto-chain segments -> one video) (#375 by @noonghunna)
  • studio: extend-chain tool for 60s+ video (proven, seamless joins) (#374 by @noonghunna)
  • studio: video lane (LTX-2.3 / Sulphur) — Director pipe, gallery, gpu-mode, docs (86f7e5e)
  • comfyui: claim pip cache for container uid so it persists across recreates (#370 by @noonghunna)
  • soak-helper: count silent-empty by completion_tokens, not decode_tps (#368 by @noonghunna)
  • quality-test: add --no-thinking (symmetric force-off for reasoning A/B) (#367 by @noonghunna)
  • soak-test: add beellama- to container auto-detect glob (#362) (#366 by @noonghunna)
  • UPSTREAM: dgemma #45163 — add promote-to-caveats trigger (hold at experimental for now) (ffd525a)
  • dgemma: adopt official vllm/vllm-openai:gemma image (drop 120-file sideload) (0cfd099)
  • gpu-mode: add dgemma mode (DiffusionGemma 26B-A4B dLLM, dual-card) (f8ad9a0)
  • Wire DiffusionGemma into the catalog via stock-nightly sideload (af1e909)
  • gpu-mode: add deckard mode (uncensored 40B, dual-card) (1cee8eb)
  • test-measurement-record: make BENCH_MOCK capture hermetic (#478) (71a05fd)
  • Promote Deckard-40B to ✅ Production; fix arch + slug naming (93acbf9)
  • Deckard-40B: fix provenance — GGUF is PiehSoft's, wire hf_repo fetch (d6725fa)
  • Deckard-40B: record soak PASS + final 105/150 (gates all green) (20e1d6f)
  • Fix deckard40B compose: pin b9570, disk-count 45, status word (881a449)
  • image-studio setup: real preflight (docker/GPU/disk/hf/chat-model) before heavy work (caca7b8)
  • image-studio P1 follow-up: setup UX, LiteLLM route, architecture docs (18902fa)
  • image-studio P1 docs: add IMAGE_STUDIO.md + index/README/FAQ pointers (c28470c)
  • image-studio P1: pin ComfyUI commit + drop hardcoded OWUI secret (092b7c7)
  • Add image-studio bundle P1: Ideogram-4 + gemma-12b chat + gpu-mode mode (9981b28)
  • Add vllm/qwen-27b-dual-balanced + record 3-way 8-pack A/B (tie) (#343) (#343 by @noonghunna)
  • Set 31B w4a16 default MTP n=4->3 (n-swept optimum) + update A/B record (31dc2c4)
  • Record 31B w4a16 8-pack A/B: 109/150 vs autoround 105 (comparable quality, weaker MTP) (97b678e)
  • Experimental Gemma-4 QAT W4A16 vLLM composes + kv-calc int4 fix (#339) (#339 by @noonghunna)
  • gemma-26ba4b-single: promote INT8-PTH single → ⚠️ Production-w/-caveats (gate PASS) (3a5ece7)
  • gemma-26ba4b: add --reasoning-parser gemma4 (single int8 + dual) (0375d89)
  • Repoint vllm/gemma-26ba4b-single to INT8-PTH long-ctx (#465) (e2efb75)
  • gpu-mode: add power-cap on/off/status controls (87190f9)
  • kv-calc: per-sequence KV-pool floor (capped at 1 GB), fix KV-light false-FAIL (95e47fe)
  • Enable MTP on gemma-4-26b-a4b single + ladder both to max ctx (#326) (95e1448)
  • Wire gemma-4-26b-a4b AWQ on stock vLLM v0.22.0; retire AutoRound (#326) (48eaf82)
  • Fix Genesis cleanup test fixtures (6b26bd7)
  • gemma-4-12b: record soak PASS in the 2 GGUF single-card headers (5387614)
  • gemma-4-12b: promote the two vLLM MTP composes to ⚠️ Production w/ caveats (90c67dc)
  • gemma-4-12b: normalize gemma-12b slug naming + prune the no-MTP bases (87b43f1)
  • gemma-4-12b int8: add 8-pack quality (105/150) to BENCHMARKS + compose headers (4c390e7)
  • gemma-4-12b: add single-card int8 MTP variant (n-swept) + register it (077584a)
  • gemma-4-12b: add single-card vLLM INT8 compose (full 256K on one 3090) (b444189)
  • gemma-4-12b: drop vendored p-RoPE overlay — upstream config fix supersedes it (942c5c8)
  • gemma-4-12b: fold rebench-full verdict into vLLM compose headers + BENCHMARKS (8c4bcab)
  • BENCHMARKS: Gemma-4-12B section (256K all-engine; vLLM 256K+MTP via p-RoPE overlay) (96e9852)
  • gemma-4-12b: register single-card slugs beellama/gemma-12b + llamacpp/gemma-12b (8b459af)
  • gemma-4-12b vLLM: 256K via vendored gemma4 p-RoPE long-ctx overlay (#39914) (872bb89)
  • gemma-4-12b mainline llama.cpp: single-card 256K (override-kv, q8_0 KV) (8c1f811)
  • gemma-4-12b composes: scrub internal /opt/ai/hf-download.sh from quick-start docs (ab825e5)
  • gemma-4-12b beellama single-card: 256K via --override-kv (native p-RoPE) (a63ccb0)
  • kv-calc: address Codex review notes (gemma4_unified calibration) (7f5ef72)
  • kv-calc: calibrate gemma4_unified global-KV per-token to measured anchor (0f6f861)
  • Wire gemma-4-12b into curated catalog (vLLM gemma4-unified, bf16 + MTP) (aff9890)

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

v0.8.7 — 2026-06-03

⚠️ Cliffs, gotchas, regressions

  • Retract beellama v0.3.0 prose-DFlash "regression" — net-positive on tok/s (f2b9dc2)

✨ Features

  • feat(35b-a3b): byteshape IQ4_XS ik-llama single-card preset — validated (#299) (#299 by @noonghunna)
  • feat(beellama): release v0.3.0 Q8_K_XL dual composes (experimental) + centralize image pin (#296) (#296 by @noonghunna)
  • feat(gemma): gemma duals → vLLM v0.22.0 (rebase #40391 lean + re-instate #42006) (#287) (#287 by @noonghunna)
  • feat(beellama): add beellama.cpp DFlash as first-class compose engine (#268) (#268 by @noonghunna)
  • feat(switch): hardware-filter --list by GPU count; add --all (#267) (#267 by @noonghunna)
  • feat: model-default resolver + user-pinnable defaults (PR-B) (#266) (#266 by @noonghunna)
  • feat(registry): slug health/availability flag (#265) (#265 by @noonghunna)
  • feat(switch): group --list by model · topology (#264) (#264 by @noonghunna)
  • feat(qwen3.6-35b-a3b): promote dual → 262K + vision Production (vllm/qwen-35b-a3b-dual) (#259) (#259 by @noonghunna)

🐛 Bug fixes

  • fix(nvlink): add NVLINK_MODE=pcie_p2p for PCIe P2P without NVLink (#290) (#291) (#291 by @noonghunna)
  • fix(report): detect beellama- containers in report.sh auto-detection (8cb5027)
  • fix(gemma): wire --reasoning-parser gemma4 on both duals (#289) (#289 by @noonghunna)
  • fix(kv-calc): shard qwen3-next-moe weights by TP (#260) (#261) (#261 by @noonghunna)

📝 Documentation

  • docs: surface the mandatory compose Profile header to contributors (8f3ae5c)
  • docs(BRING_YOUR_OWN): BYO models aren't registered — boot composes directly (3b8e469)
  • docs(BRING_YOUR_OWN): note INT8 KV is a vendored patch, not a stock dtype (6ddfaca)
  • docs(BRING_YOUR_OWN): split KV-quant guidance by engine (a2d0af6)
  • docs: add BRING_YOUR_OWN — serve/tune/validate your own model (93e6cd8)
  • docs(CONTRIBUTING): broaden one-per-PR rule to feature/concern scope (557e615)
  • docs(CONTRIBUTING): require one model per compose PR (497c341)
  • docs(FAQ): fix Copilot LLM Gateway entry — vllm/tools-text retired (aa458bb)
  • docs(FAQ): agent stops mid-task → set client temperature to 0.6 (#232) (6bc91b5)
  • docs: deprecate vLLM dual-dflash composes, redirect DFlash to beellama (#297) (b7955ac)
  • docs(beellama): point gemma-dflash-dual v0.3.0 override at Anbeeld's official image (533d2c3)
  • docs(bench): @hlo-world PCIe-P2P A/B validates NVLINK_MODE=pcie_p2p (#291/#290) (55eb500)
  • docs(beellama): correct prose-regression attribution — v0.3.0-wide, not SWA (44358d1)
  • docs(beellama): record v0.3.0 dual-3090 validation — multi-GPU DFlash fixed (8da27fd)
  • docs(gemma): record bf16-mtp 8-pack (reasoning-on 111/150) + cross-config quality summary (b2d7d8f)
  • docs(gemma): record int8-mtp v0.22.0 closeout — bench, soak PASS, 8-pack quality + reasoning A/B (0abba3a)
  • docs(FAQ): clarify model-switch scope — supported models only (8356a11)
  • docs(FAQ): add 'how to switch to / try a different model' entry (2aeec74)
  • docs(quality-test): document failure-reason reading; fix drifted Failure-breakdown sample (77c1cd6)
  • docs(ik-apex-fit-mtp): warn RAM-constrained systems on --cache-ram + MTP OOM (#243) (c61cfc4)
  • docs: document quality-test timeout sizing (QUALITY_TEST.md + agent guide) (9c333f4)
  • docs(UPSTREAM): add vLLM #39056 row + cross-reference to #39598 streaming fix (#354) (0ed228c)
  • docs(hardware): correct turbo3 "quality-neutral" claim — it's avg-distortion, not tail (572f1c9)
  • docs(faq): add "which KV-cache quant should I use?" entry (6b85575)
  • docs(cliffs): NIAH certifies retrieval, not KV-quant tail quality (a307846)
  • docs(bench): single-card 1x 3090 llama.cpp Gemma-4 rows (mainline FA_ALL_QUANTS + beellama DFlash) (6b011f6)
  • docs: flip CLAUDE.md/AGENTS.md symlink + document localhost requirement for sandboxed agentic packs (#240 by @noonghunna)
  • docs: make AGENTS.md a symlink to CLAUDE.md (one source, matches the /opt/ai convention) (ef1d9b8)
  • docs: link the docs index + ARCHITECTURE from the repo agent entry points (dc7c613)
  • docs: formalize the add-a-model workflow for the post-refactor architecture + agent discoverability (37871c6)

🔧 Pin bumps + upstream

  • Bump vllm/minimal + vllm/dual to stable v0.22.0 (off nightly) (#277) (#277 by @noonghunna)

🛠️ Scripts + tooling

  • preflight: detect beellama + check spec-draft-model drafter GGUF (180adb0)
  • switch.sh --list: show max context per slug (+ registry<->compose drift) (#283) (#283 by @noonghunna)
  • gpu-mode.sh: align with dual prune — drop dead 27b modes, gemma -> int8 default (#280) (#280 by @noonghunna)
  • setup.sh: reject extra positional args instead of silently ignoring them (#273) (#273 by @noonghunna)
  • quality-test.sh: forward --progress to benchlocal-cli, default ON (#248) (#248 by @noonghunna)
  • soak-test.sh: add qwen3.6-35b-a3b to container auto-detect glob (#244) (#244 by @noonghunna)
  • quality-test.sh: stop hardcoding --timeout-per-case 60 (benchlocal-cli #41) (#245) (#245 by @noonghunna)

🧹 Maintenance

  • refactor(gemma): rename dual slugs + ladder gemma-bf16-mtp to 131K (#286) (#286 by @noonghunna)
  • chore(beellama): default to published ghcr image (sm86-b9459-07ac3ce) (#270) (#270 by @noonghunna)
  • chore: retire vllm-club3090 image references (stack on stock vLLM) (#269) (#269 by @noonghunna)
  • chore(vllm): remove redundant nvlink-* dual composes (NVLink auto-detected) (#257) (#257 by @noonghunna)
  • chore(litellm): prune dead routes, add 35B-A3B dual, drop wildcard (#263) (#263 by @noonghunna)
  • chore(35b-a3b): drop the built-in-MTP A/B compose (vllm/qwen-a3b-preview-mtp) (#262) (#262 by @noonghunna)

🧹 Other

  • rebench: add fail-fast verify-full preflight + fix runtime skip set (#306) (#306 by @noonghunna)
  • rebench-full: swap aider step for think-ON 8-pack + live tee (#303) (#303 by @noonghunna)
  • Repoint stale single-card launcher hints off deprecated vLLM composes (bb9f9f2)
  • beellama: refresh stale b9459 image refs to v0.3.0 (#300 by @noonghunna)
  • Add Results Card doc — standard format for sharing config results (cabdf12)
  • Operational robustness (#281): orphan-safe switch.sh · reboot-surviving vLLM · multi-GPU power sweep (#285) (#285 by @noonghunna)
  • beellama Gemma-4 ctx: single 128K (caveats) + dual 262K parked/upstream-gated (#284) (#284 by @noonghunna)
  • Prune dual vLLM composes: qwen-27b -> one config; gemma-31b default -> gemma-int8 (#279) (#279 by @noonghunna)
  • Gemma vLLM -> v0.22.0: bump dual gemma-mtp, deprecate gemma-mtp-tp1 (#278) (#278 by @noonghunna)
  • Deprecate Genesis vLLM composes; vLLM single default → vllm/minimal (#276) (#276 by @noonghunna)
  • Align gemma sampling default to model card (top_k -1 -> 64) (#275) (#275 by @noonghunna)
  • Promote beellama/gemma-dflash to single-card Gemma-4-31B default (#272) (#272 by @noonghunna)
  • Promote beellama/dflash to single-card Qwen3.6-27B default (#271) (#271 by @noonghunna)
  • bench-agentic: anchor TTFT-growth to first warm turn (exclude cold-start) (#114 by @noonghunna)
  • Revive agentic context-depth benchmark (a9cf70e)
  • Prune Gemma vLLM variants (9->3) and pin survivors to v0.21.0 (#253 by @noonghunna)
  • Fail loud on hollow measured records in measurement_record (#251) (#251 by @noonghunna)
  • Add measurement-record producer for bench runs (#249) (#249 by @noonghunna)
  • BENCHMARKS: flag Gemma mainline-llama.cpp 36.8 TPS row as does-not-reproduce (13.6/15.4 re-bench) (95da8e1)
  • BENCHMARKS: post-PR #38 chain rebench for ik-llama/iq4ks-mtp (8-pack 101→107, aider 19→18 noise) (8351956)
  • scripts/preflight.sh: surface 4090 / 5090 hint with FAQ deep-link (#247) (#247 by @noonghunna)
  • docs/README: refresh supported-models table — single-card Gemma 4 31B + 35B-A3B now in production (285c632)
  • docs/README: add above-the-fold cross-rig callout for 4090 / 5090 owners (eea717f)
  • docs/FAQ: refresh 4090 / 5090 entries with cross-rig measurements (2f0a54c)
  • Add ik-llama apex-fit-q8q5 variant for Qwen3.6-35B-A3B (#242) (#243) (#243 by @noonghunna)

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

v0.8.6 — 2026-05-26

✨ Features

  • feat(ik-llama): PRISM-PRO-DQ + APEX-MTP presets, conformed to the / layout (458c473)

🐛 Bug fixes

  • fix(profiles): cover the new ik-llama PRISM/APEX presets in the compat catalog (aa2a965)
  • fix: post-PR-A compose-path fixes for gpu-mode.sh + 2 patch READMEs (b23846e)
  • fix(registry+bench): sync vision defaults to the 2026-05-25 re-tune (#438) (b116750)
  • fix(vision): re-tune single-card vision defaults to measured-safe (1M-px + 160K/150K) (c9b7dd3)
  • fix(vllm/dual): pin to stable v0.21.0, drop all source overlays (#407 pin-drift) (cf1f14f)

📝 Documentation

  • docs+scripts: finish / path migration across full repo sweep (eaa7a8c)
  • docs(switch): correct ik-llama/iq4ks-mtp usage comment 262K -> 200K (2135230)

🧹 Maintenance

  • refactor(launch): derive launcher tables from the registry + /default resolver (a0520e2)
  • refactor(compose): insert layer + make the registry the single source of truth (9821c94)

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

v0.8.5 — 2026-05-24

✨ Features

  • feat(llama.cpp): Structured-CoT bounded-thinking compose + grammar-dialect fix (#214) (#214 by @noonghunna)
  • feat(kv-calc): opt-in --kv-breakdown architecture cache planning layer (#213) (#213 by @noonghunna)
  • feat(ik-llama/two-stage): ctx default 131072→200000 + promote 🧪→⭐ code option (#212) (#212 by @noonghunna)

🐛 Bug fixes

  • fix(rebench-report): surface ceiling VRAM margin in verify-stress section (#184) (1055c91)
  • fix(switch): shell env wins over .env (MODEL_DIR etc.) + CRLF-tolerant (#425) (9a27de8)
  • fix(ik-llama/two-stage): default ngram n_max 64→4 (tuned code-decode optimum) (#210) (#210 by @noonghunna)
  • fix(#168): scope report.sh kv-calc calibration to the running model (477873a)
  • fix(#169): distinct default container_name per llama.cpp/ik single variant (9e5f200)

📝 Documentation

  • docs(BENCHMARKS): 4090 ik-two-stage cross-rig row + 4090 ctx-derate note (#184) (703fa3c)
  • docs(README): direct docker-compose fallback when launch/switch error + default capture to --full (27e818f)
  • docs(BENCHMARKS): add thinking-on vs no-think code-gen baseline (Qwen3.6-27B) (d8adf55)
  • docs(README): Windows/WSL2 signpost at top of Quick start (f954692)
  • docs(WSL): add Diagnostics section — suggest pciutils, set lspci/WSL2 expectation (d36eb63)
  • docs(WSL,FAQ): clarify club-3090 needs WSL2 — native Windows = upstream engine only (6fa639b)
  • docs(README,WSL): fold reasoning suite into Benchmarks; add native llama.cpp + overhead-reduction to WSL guide (80527f9)
  • Document reasoning quality suite (605f1df)
  • docs: add WSL2/Windows from-scratch setup guide (#187) (3c1a6e9)
  • docs(README): add Benchmarks + Diagnostics sections (37574fe)
  • docs(diagnostics): redact internal paths in structured-cot-bench.md (3b270b9)
  • docs: promote iq4ks-two-stage 🧪→⭐ (code, 200K) + BENCHMARKS row (7e6eaf8)
  • docs(SINGLE_CARD): add measured two-stage TPS (~59/~98, code +35% vs MTP-only) (b10096c)
  • docs(SINGLE_CARD): mark the #167-blocked vLLM configs in "Pick a config" (cb19d68)
  • docs(README): drop SGLang from the headline engine claims (blocked, not a route) (678fd00)
  • docs(README): single-card "recommended" → llamacpp/default (was #167-blocked vllm/default) (44c08b6)
  • docs(DUAL_CARD): distinguish decode-concurrent vs long-prefill-overlap (#208) (36767f1)
  • docs(README): fix stale 'llama.cpp single = full 262K' → 200K in supported-models cell (2a8357f)
  • docs+registry: surface ik-llama on the single-card front door + fix stale max_ctx (7f73361)
  • docs(BENCHMARKS): refresh llamacpp/mtp row to the 200K thinking-off rebench (2eca18d)
  • docs(#169 branch): fix stale 262K→200K cross-refs in single compose headers (62a0f4b)
  • docs: correct single-card llama.cpp/ik_llama ctx 262K -> 200K (shipped default) (c7fc9ca)

🧹 Maintenance

  • chore: retire the club-3090 pre-built vLLM image (workflow + docs) (7003e61)

🧹 Other

  • Add profile-backed model weight fetch registry (5f37ae6)
  • Generalize compose model preflight (99d264b)
  • Expose benchlocal reasoning suite (caf6fc2)

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

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]