{"slug":"model-wars","total":7,"limit":100,"offset":0,"since":null,"commits":[{"hash":"75a84ba","date":"2026-08-24 10:45:34 -0700","author":"Steve Abrams","subject":"feat: procedural Web Audio battle sound + mute toggle (v1.2.0)","body":"Zero-asset, zero-cost SFX engine (public/sound.js) synthesized from oscillators\n+ noise: charge horn + galloping hooves, lance clash, arrow thwip, trebuchet\nboom, sword clang, dragon roar, victory fanfare / draw chime. Fired once-per-\nevent from the bouts (battles.js) and on outcome (app.js). Audio unlocks on the\nBegin gesture (autoplay policy); persisted 🔊/🔇 mute toggle in the header.\nServes the brief's 'make benchmarks feel like games people want to watch.'\nVerified: loads, inits, plays, mutes — zero console errors.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"8b56730","date":"2026-08-24 09:56:12 -0700","author":"Steve Abrams","subject":"chore: lint, refactor, v1.1.0 (session close)","body":"- fix: /api/battle resolves from allChampions() so custom champions can battle\n- guard: boot() catches champions-fetch failure; vote buttons null-safe\n- refactor: drop dead node:process import, optional chaining, ternary cleanup\n- version 1.0.0 → 1.1.0"},{"hash":"cb1a8df","date":"2026-08-24 09:23:56 -0700","author":"Steve Abrams","subject":"5x verification: six-way core 6/6 PASS; add sweep report","body":"M1 HTTP + M2 render + M3 E2E + Chrome/Safari/Firefox all green. The only\nclick-through fails are a proven harness artifact (hidden-tab #addProvider,\nverified operable when its tab is active), not app defects — no fabricated fix.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"bdc0862","date":"2026-08-24 09:18:13 -0700","author":"Steve Abrams","subject":"Composite Stable Diffusion sprites into every bout","body":"The combatants are now SDXL art, not vector shapes. gen-sprites.mjs generates\n5 transparent-PNG sprites (SDXL → 851-labs background-remover, ~$0.09):\nmounted knight, archer, swordsman, dragon boss, trebuchet.\n\nbattles.js rewritten to composite the sprites over the scene backdrops with a\ndrawSprite() transform helper (scale/mirror/rotate/alpha/glow):\n- Joust: two knights charge and one is unhorsed (rotate + fall + fade).\n- Archery: real archers loose arrows at a scoring target.\n- Siege: two trebuchets trade flaming volleys; castle-integrity health bars.\n- Duel: two swordsmen clash at center with health bars.\n- Dragon: the SDXL dragon boss shakes/reddens/fades as both race to slay it.\nChampion-colored auras + pennants carry identity on the neutral sprites;\nvector fallback if a sprite hasn't loaded. All 5 modes verified, zero errors.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"a979f43","date":"2026-08-24 09:08:56 -0700","author":"Steve Abrams","subject":"Redo graphics with Stable Diffusion (SDXL) + fix contrarian findings","body":"Graphics (Stable Diffusion XL via Replicate, ~$0.12 total, 11 images):\n- 6 cinematic AAA champion portraits (armored fantasy champions per model)\n  shown in fighter cards + King's Table avatars.\n- 5 cinematic battle backdrops (joust/archery/siege/duel/dragon) drawn behind\n  the canvas bouts, replacing the empty gradient stage.\n- gen-art.mjs regenerates them from prompts.\n\nFixes from the contrarian red-team:\n- Integrity: a judge failure in LIVE mode no longer falls through to fabricated\n  hash scores that moved the persistent ELO ladder — outcome is decided on\n  MEASURED speed alone and labeled 'no AI judge'; three honest score modes\n  (judge / simulated / measured-only) with distinct SIMULATED labels.\n- Custom champions now merge into the roster server-side (allChampions) so a\n  summoned champion actually appears in selectors and can battle.\n- Ladder writes serialized through a mutex (no last-write-wins corruption).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>"},{"hash":"57498cc","date":"2026-08-24 09:04:54 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-24T09:04:34 (11 data files) — public/assets/champ-claude.png public/assets/champ-deepseek.png public/assets/champ-gemini.png public/assets/champ-gpt.png public/assets/champ-grok.png","body":""},{"hash":"e2b346c","date":"2026-08-24 08:55:39 -0700","author":"Steve Abrams","subject":"MODEL WARS — real API battles, AI judges, medieval ELO ladder","body":"Full rebuild of the Qwen2.5 stub into a working project:\n- Express backend with streaming provider adapters (OpenAI/Anthropic/Google/\n  xAI/DeepSeek/Groq), true time-to-first-token, token+cost accounting, AI judge,\n  persistent ELO ladder (K=32) with per-category/streak/cost-efficiency stats.\n- 2026 liquid-glass UI: embers, cursor torchlight, parallax castle.\n- Five cinematic canvas bouts: Joust, Archery, Castle Siege, Duel, Dragon.\n- Honest by design: measured metrics vs AI-judge opinions kept distinct;\n  People's Choice tallied separately; no-key champions run clearly-labeled\n  Exhibition sims that never touch the persistent ladder.\n- Dynamic champion registration; View The Evidence; animated crown on #1.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n"}]}