Model Wars

repo: ~/Projects/model-wars Β· 7 commits Β· 0 in last 24h, 0 in last 7d Β·

Search the build

7 commits indexed

  1. 75a84ba 2026-08-24 feat: procedural Web Audio battle sound + mute toggle (v1.2.0)
  2. 8b56730 2026-08-24 chore: lint, refactor, v1.1.0 (session close)
  3. cb1a8df 2026-08-24 5x verification: six-way core 6/6 PASS; add sweep report
  4. bdc0862 2026-08-24 Composite Stable Diffusion sprites into every bout
  5. a979f43 2026-08-24 Redo graphics with Stable Diffusion (SDXL) + fix contrarian findings
  6. 57498cc 2026-08-24 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
  7. e2b346c 2026-08-24 MODEL WARS β€” real API battles, AI judges, medieval ELO ladder

Authors

Agents used

  • none detected

Skills used

  • /assets5
  • /sound1
  • /battle1
  • /mirror1
  • /rotate1
  • /alpha1
  • /glow1
  • /reddens1
  • /fades1
  • /archery1
  • /siege1
  • /duel1
  • /dragon1
  • /champ-claude1
  • /champ-deepseek1
  • /champ-gemini1
  • /champ-gpt1
  • /champ-grok1
  • /streak1
  • /cost-efficiency1

Creative ideas + design notes

Commits with substantial prose (β‰₯120 chars) β€” the rationale behind each move.

75a84ba Β· 2026-08-24 Β· feat: procedural Web Audio battle sound + mute toggle (v1.2.0)
Zero-asset, zero-cost SFX engine (public/sound.js) synthesized from oscillators
+ noise: charge horn + galloping hooves, lance clash, arrow thwip, trebuchet
boom, sword clang, dragon roar, victory fanfare / draw chime. Fired once-per-
event from the bouts (battles.js) and on outcome (app.js). Audio unlocks on the
Begin gesture (autoplay policy); persisted πŸ”Š/πŸ”‡ mute toggle in the header.
Serves the brief's 'make benchmarks feel like games people want to watch.'
Verified: loads, inits, plays, mutes β€” zero console errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8b56730 Β· 2026-08-24 Β· chore: lint, refactor, v1.1.0 (session close)
- fix: /api/battle resolves from allChampions() so custom champions can battle
- guard: boot() catches champions-fetch failure; vote buttons null-safe
- refactor: drop dead node:process import, optional chaining, ternary cleanup
- version 1.0.0 β†’ 1.1.0
cb1a8df Β· 2026-08-24 Β· 5x verification: six-way core 6/6 PASS; add sweep report
M1 HTTP + M2 render + M3 E2E + Chrome/Safari/Firefox all green. The only
click-through fails are a proven harness artifact (hidden-tab #addProvider,
verified operable when its tab is active), not app defects β€” no fabricated fix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
bdc0862 Β· 2026-08-24 Β· Composite Stable Diffusion sprites into every bout
The combatants are now SDXL art, not vector shapes. gen-sprites.mjs generates
5 transparent-PNG sprites (SDXL β†’ 851-labs background-remover, ~$0.09):
mounted knight, archer, swordsman, dragon boss, trebuchet.

battles.js rewritten to composite the sprites over the scene backdrops with a
drawSprite() transform helper (scale/mirror/rotate/alpha/glow):
- Joust: two knights charge and one is unhorsed (rotate + fall + fade).
- Archery: real archers loose arrows at a scoring target.
- Siege: two trebuchets trade flaming volleys; castle-integrity health bars.
- Duel: two swordsmen clash at center with health bars.
- Dragon: the SDXL dragon boss shakes/reddens/fades as both race to slay it.
Champion-colored auras + pennants carry identity on the neutral sprites;
vector fallback if a sprite hasn't loaded. All 5 modes verified, zero errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
a979f43 Β· 2026-08-24 Β· Redo graphics with Stable Diffusion (SDXL) + fix contrarian findings
Graphics (Stable Diffusion XL via Replicate, ~$0.12 total, 11 images):
- 6 cinematic AAA champion portraits (armored fantasy champions per model)
  shown in fighter cards + King's Table avatars.
- 5 cinematic battle backdrops (joust/archery/siege/duel/dragon) drawn behind
  the canvas bouts, replacing the empty gradient stage.
- gen-art.mjs regenerates them from prompts.

Fixes from the contrarian red-team:
- Integrity: a judge failure in LIVE mode no longer falls through to fabricated
  hash scores that moved the persistent ELO ladder β€” outcome is decided on
  MEASURED speed alone and labeled 'no AI judge'; three honest score modes
  (judge / simulated / measured-only) with distinct SIMULATED labels.
- Custom champions now merge into the roster server-side (allChampions) so a
  summoned champion actually appears in selectors and can battle.
- Ladder writes serialized through a mutex (no last-write-wins corruption).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
e2b346c Β· 2026-08-24 Β· MODEL WARS β€” real API battles, AI judges, medieval ELO ladder
Full rebuild of the Qwen2.5 stub into a working project:
- Express backend with streaming provider adapters (OpenAI/Anthropic/Google/
  xAI/DeepSeek/Groq), true time-to-first-token, token+cost accounting, AI judge,
  persistent ELO ladder (K=32) with per-category/streak/cost-efficiency stats.
- 2026 liquid-glass UI: embers, cursor torchlight, parallax castle.
- Five cinematic canvas bouts: Joust, Archery, Castle Siege, Duel, Dragon.
- Honest by design: measured metrics vs AI-judge opinions kept distinct;
  People's Choice tallied separately; no-key champions run clearly-labeled
  Exhibition sims that never touch the persistent ladder.
- Dynamic champion registration; View The Evidence; animated crown on #1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

File tree

33 files tracked. Click any to browse the source at HEAD.

Other build journals

← Model Arena  Β·  all 4 projects  Β·  Momentum Landing β†’

Export

commits.csv Β· feed.atom Β· project.json Β· commits.json

rendered in 1ms