← back to Model Arena
auto-save: 2026-07-29T07:37:00 (3 files) — data/challenges.json yolo/daily-log.jsonl data/artifacts/b697e7a2f3e5/
078d994aee5fa81d7e2af7bf59c1bcde583d65cb · 2026-07-29 07:37:11 -0700 · Steve Abrams
Files touched
A data/artifacts/b697e7a2f3e5/gemma3-12b.htmlA data/artifacts/b697e7a2f3e5/gemma3-12b.pngA data/artifacts/b697e7a2f3e5/hermes3-8b.htmlA data/artifacts/b697e7a2f3e5/hermes3-8b.pngA data/artifacts/b697e7a2f3e5/qwen25-7b.htmlA data/artifacts/b697e7a2f3e5/qwen25-7b.pngA data/artifacts/b697e7a2f3e5/qwen3-14b.htmlA data/artifacts/b697e7a2f3e5/qwen3-14b.pngM data/challenges.jsonM yolo/daily-log.jsonl
Diff
commit 078d994aee5fa81d7e2af7bf59c1bcde583d65cb
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Jul 29 07:37:11 2026 -0700
auto-save: 2026-07-29T07:37:00 (3 files) — data/challenges.json yolo/daily-log.jsonl data/artifacts/b697e7a2f3e5/
---
data/artifacts/b697e7a2f3e5/gemma3-12b.html | 148 ++++++++++++++++++++++++++
data/artifacts/b697e7a2f3e5/gemma3-12b.png | Bin 0 -> 7123 bytes
data/artifacts/b697e7a2f3e5/hermes3-8b.html | 148 ++++++++++++++++++++++++++
data/artifacts/b697e7a2f3e5/hermes3-8b.png | Bin 0 -> 6232 bytes
data/artifacts/b697e7a2f3e5/qwen25-7b.html | 102 ++++++++++++++++++
data/artifacts/b697e7a2f3e5/qwen25-7b.png | Bin 0 -> 7894 bytes
data/artifacts/b697e7a2f3e5/qwen3-14b.html | 158 ++++++++++++++++++++++++++++
data/artifacts/b697e7a2f3e5/qwen3-14b.png | Bin 0 -> 6748 bytes
data/challenges.json | 90 ++++++++++++++++
yolo/daily-log.jsonl | 1 +
10 files changed, 647 insertions(+)
diff --git a/data/artifacts/b697e7a2f3e5/gemma3-12b.html b/data/artifacts/b697e7a2f3e5/gemma3-12b.html
new file mode 100644
index 0000000..c5825a8
--- /dev/null
+++ b/data/artifacts/b697e7a2f3e5/gemma3-12b.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Conway's Game of Life</title>
+ <style>
+ body { margin: 0; overflow: hidden; }
+ canvas { background-color: black; display: block; }
+ #controls { position: absolute; top: 10px; left: 10px; color: white; font-family: sans-serif; }
+ </style>
+</head>
+<body>
+
+<div id="controls">
+ <button id="playPause">Play</button>
+ <button id="randomize">Randomize</button>
+ <input type="range" id="speedSlider" min="1" max="100" value="25"> <span id="speedValue">25</span>
+</div>
+
+<canvas id="gameCanvas"></canvas>
+
+
+<script>
+ const canvas = document.getElementById('gameCanvas');
+ const ctx = canvas.getContext('2d');
+ const playPauseButton = document.getElementById('playPause');
+ const randomizeButton = document.getElementById('randomize');
+ const speedSlider = document.getElementById('speedSlider');
+ const speedValueDisplay = document.getElementById('speedValue');
+
+ let gridWidth = 60;
+ let gridHeight = 30;
+ canvas.width = gridWidth * 10;
+ canvas.height = gridHeight * 10;
+ const cellSize = 10;
+
+ let grid = [];
+ let running = false;
+ let speed = 25;
+
+
+ function initGrid() {
+ grid = [];
+ for (let row = 0; row < gridHeight; row++) {
+ grid[row] = [];
+ for (let col = 0; col < gridWidth; col++) {
+ grid[row][col] = Math.random() < 0.25; // Initial random alive cells
+ }
+ }
+ }
+
+ function drawGrid() {
+ for (let row = 0; row < gridHeight; row++) {
+ for (let col = 0; col < gridWidth; col++) {
+ if (grid[row][col]) {
+ ctx.fillStyle = 'white';
+ } else {
+ ctx.fillStyle = 'black';
+ }
+ ctx.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);
+ }
+ }
+ }
+
+ function getNeighbors(x, y) {
+ let neighbors = 0;
+ for (let i = -1; i <= 1; i++) {
+ for (let j = -1; j <= 1; j++) {
+ if (i === 0 && j === 0) continue;
+ let neighborX = x + i;
+ let neighborY = y + j;
+
+ if (neighborX >= 0 && neighborX < gridWidth && neighborY >= 0 && neighborY < gridHeight) {
+ neighbors += grid[neighborY][neighborX];
+ }
+ }
+ }
+ return neighbors;
+ }
+
+
+ function updateGrid() {
+ let nextGrid = [];
+ for (let row = 0; row < gridHeight; row++) {
+ nextGrid[row] = [];
+ for (let col = 0; col < gridWidth; col++) {
+ let neighbors = getNeighbors(col, row);
+ if (grid[row][col]) {
+ // Alive cell
+ if (neighbors < 2 || neighbors > 3) {
+ nextGrid[row][col] = false;
+ } else {
+ nextGrid[row][col] = true;
+ }
+ } else {
+ // Dead cell
+ if (neighbors === 3) {
+ nextGrid[row][col] = true;
+ } else {
+ nextGrid[row][col] = false;
+ }
+ }
+ }
+ }
+
+ grid = nextGrid;
+ }
+
+
+ function runGame() {
+ if (running) {
+ updateGrid();
+ drawGrid();
+ }
+ requestAnimationFrame(runGame);
+ }
+
+ playPauseButton.addEventListener('click', () => {
+ running = !running;
+ playPauseButton.textContent = running ? 'Pause' : 'Play';
+ });
+
+ randomizeButton.addEventListener('click', () => {
+ initGrid();
+ drawGrid();
+ });
+
+ speedSlider.addEventListener('input', (event) => {
+ speed = parseInt(event.target.value);
+ speedValueDisplay.textContent = speed;
+ setInterval(() => {updateGrid(); drawGrid()}, 1000 / speed)
+ if (running){
+ clearInterval(intervalId); // Clear the previous interval if running
+ intervalId = setInterval(() => { updateGrid(); drawGrid() }, 1000 / speed);
+ }
+
+ });
+
+ let intervalId;
+
+
+ initGrid();
+ drawGrid();
+
+
+</script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/data/artifacts/b697e7a2f3e5/gemma3-12b.png b/data/artifacts/b697e7a2f3e5/gemma3-12b.png
new file mode 100644
index 0000000..d1389c8
Binary files /dev/null and b/data/artifacts/b697e7a2f3e5/gemma3-12b.png differ
diff --git a/data/artifacts/b697e7a2f3e5/hermes3-8b.html b/data/artifacts/b697e7a2f3e5/hermes3-8b.html
new file mode 100644
index 0000000..3ba7720
--- /dev/null
+++ b/data/artifacts/b697e7a2f3e5/hermes3-8b.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>Conway's Game of Life</title>
+ <style>
+ body {
+ margin: 0;
+ padding: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+ background-color: #f0f0f0;
+ }
+
+ canvas {
+ border: 1px solid #ccc;
+ cursor: pointer;
+ }
+ </style>
+</head>
+<body>
+ <canvas id="gameCanvas"></canvas>
+
+ <div style="position: fixed; bottom: 10px; width: 100%;">
+ <button id="playPauseBtn">Play/Pause</button>
+ <button id="randomizeBtn">Randomize</button>
+ <input type="range" id="speedSlider" min="0.1" max="2" step="0.1" value="0.5">
+ </div>
+
+ <script>
+ const canvas = document.getElementById('gameCanvas');
+ const ctx = canvas.getContext('2d');
+
+ let gameSpeed = 0.5;
+ let gameInterval;
+
+ // Set canvas size
+ function setCanvasSize() {
+ canvas.width = window.innerWidth * 0.8;
+ canvas.height = window.innerHeight * 0.8;
+ }
+
+ // Game of Life rules
+ function countNeighbors(x, y) {
+ let neighborsCount = 0;
+ for (let i = -1; i < 2; i++) {
+ for (let j = -1; j < 2; j++) {
+ if (
+ (i === 0 && j === 0) ||
+ x + i < 0 ||
+ x + i >= canvas.width / 10 ||
+ y + j < 0 ||
+ y + j >= canvas.height / 10
+ )
+ continue;
+
+ const cell = grid[y + j][x + i];
+ neighborsCount += cell;
+ }
+ }
+
+ return neighborsCount - grid[y][x]; // Exclude the cell itself
+ }
+
+ function gameOfLife() {
+ for (let y = 0; y < canvas.height; y++) {
+ for (let x = 0; x < canvas.width; x++) {
+ const cell = countNeighbors(x * 10, y * 10);
+ grid[y][x] = (cell === 3 || cell === 4) ? 1 : 0;
+ }
+ }
+
+ drawGrid();
+ }
+
+ // Initialize game state
+ let grid = [];
+
+ function createGameGrid() {
+ for (let y = 0; y < canvas.height / 10; y++) {
+ const row = [];
+ for (let x = 0; x < canvas.width / 10; x++) {
+ row.push(Math.round(Math.random()));
+ }
+ grid.push(row);
+ }
+
+ drawGrid();
+ }
+
+ function drawGrid() {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+ for (let y = 0; y < canvas.height / 10; y++) {
+ for (let x = 0; x < canvas.width / 10; x++) {
+ if (grid[y][x]) {
+ const cellX = x * 10;
+ const cellY = y * 10;
+
+ ctx.fillStyle = 'black';
+ ctx.fillRect(cellX, cellY, 10, 10);
+
+ ctx.strokeStyle = 'white';
+ ctx.lineWidth = 1;
+ ctx.strokeRect(cellX, cellY, 10, 10);
+ }
+ }
+ }
+ }
+
+ // Event listeners
+ canvas.addEventListener('click', createGameGrid);
+ document.getElementById('playPauseBtn').addEventListener('click', () => {
+ if (gameInterval) {
+ clearInterval(gameInterval);
+ gameInterval = null;
+ } else {
+ gameInterval = setInterval(() => {
+ gameOfLife();
+ }, 1000 / gameSpeed);
+ }
+ });
+
+ document.getElementById('randomizeBtn').addEventListener('click', createGameGrid);
+
+ document.getElementById('speedSlider').addEventListener('input', (e) => {
+ gameSpeed = e.target.value;
+ if (gameInterval) {
+ clearInterval(gameInterval);
+ gameInterval = setInterval(() => {
+ gameOfLife();
+ }, 1000 / gameSpeed);
+ }
+ });
+
+ // Initialize
+ setCanvasSize();
+ createGameGrid();
+
+ window.addEventListener('resize', () => {
+ setCanvasSize();
+ });
+ </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/data/artifacts/b697e7a2f3e5/hermes3-8b.png b/data/artifacts/b697e7a2f3e5/hermes3-8b.png
new file mode 100644
index 0000000..36e95fe
Binary files /dev/null and b/data/artifacts/b697e7a2f3e5/hermes3-8b.png differ
diff --git a/data/artifacts/b697e7a2f3e5/qwen25-7b.html b/data/artifacts/b697e7a2f3e5/qwen25-7b.html
new file mode 100644
index 0000000..8e97403
--- /dev/null
+++ b/data/artifacts/b697e7a2f3e5/qwen25-7b.html
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title>Conway's Game of Life</title>
+ <style>
+ body { display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; background-color: #f0f0f0; }
+ canvas, .controls { width: fit-content; }
+ .controls { margin-top: 20px; }
+ </style>
+</head>
+<body>
+<canvas id="gameCanvas" width="480" height="360"></canvas>
+<div class="controls">
+ <button onclick="togglePlay()">Play/Pause</button>
+ <button onclick="randomizeCells()">Randomize</button>
+ <input type="range" min="1" max="500" value="250" step="1" oninput="setSpeed(this.value)" id="speedSlider">
+</div>
+
+<script>
+const canvas = document.getElementById('gameCanvas');
+const ctx = canvas.getContext('2d');
+
+let cells = [];
+let isPlaying = false;
+let intervalId;
+let speed = 250;
+
+function setup() {
+ for (let y = 0; y < canvas.height / 10; y++) {
+ cells[y] = [];
+ for (let x = 0; x < canvas.width / 10; x++) {
+ cells[y][x] = Math.random() > 0.5 ? true : false;
+ }
+ }
+}
+
+function drawCell(x, y) {
+ ctx.fillStyle = cells[y][x] ? 'black' : 'white';
+ ctx.fillRect(x * 10, y * 10, 10, 10);
+}
+
+function draw() {
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ for (let y = 0; y < cells.length; y++) {
+ for (let x = 0; x < cells[y].length; x++) {
+ drawCell(x, y);
+ }
+ }
+}
+
+function update() {
+ const newCells = [...cells];
+ for (let y = 1; y < cells.length - 1; y++) {
+ for (let x = 1; x < cells[y].length - 1; x++) {
+ let neighbors = 0;
+ for (let my = -1; my <= 1; my++) {
+ for (let mx = -1; mx <= 1; mx++) {
+ if (!(my === 0 && mx === 0)) {
+ neighbors += cells[y + my][x + mx] ? 1 : 0;
+ }
+ }
+ }
+ newCells[y][x] = (cells[y][x] && (neighbors == 2 || neighbors == 3)) || (!cells[y][x] && neighbors == 3);
+ }
+ }
+ cells = newCells;
+}
+
+function togglePlay() {
+ isPlaying = !isPlaying;
+ if (isPlaying) start();
+ else stop();
+}
+
+function start() {
+ intervalId = setInterval(update, speed);
+}
+
+function stop() {
+ clearInterval(intervalId);
+}
+
+function randomizeCells() {
+ for (let y = 0; y < cells.length; y++) {
+ for (let x = 0; x < cells[y].length; x++) {
+ cells[y][x] = Math.random() > 0.5 ? true : false;
+ }
+ }
+}
+
+function setSpeed(value) {
+ speed = value;
+}
+
+setup();
+draw();
+
+document.getElementById('speedSlider').oninput = () => draw();
+</script>
+</body>
+</html>
\ No newline at end of file
diff --git a/data/artifacts/b697e7a2f3e5/qwen25-7b.png b/data/artifacts/b697e7a2f3e5/qwen25-7b.png
new file mode 100644
index 0000000..a475c6c
Binary files /dev/null and b/data/artifacts/b697e7a2f3e5/qwen25-7b.png differ
diff --git a/data/artifacts/b697e7a2f3e5/qwen3-14b.html b/data/artifacts/b697e7a2f3e5/qwen3-14b.html
new file mode 100644
index 0000000..02cf8dc
--- /dev/null
+++ b/data/artifacts/b697e7a2f3e5/qwen3-14b.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8">
+ <title>Conway's Game of Life</title>
+ <style>
+ body {
+ margin: 0;
+ background: #111;
+ color: #fff;
+ font-family: sans-serif;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ height: 100vh;
+ }
+ canvas {
+ border: 1px solid #555;
+ background: #222;
+ }
+ #controls {
+ margin-top: 10px;
+ }
+ #controls button, #controls input {
+ margin: 5px;
+ padding: 5px 10px;
+ font-size: 14px;
+ }
+ </style>
+</head>
+<body>
+ <canvas id="gameCanvas" width="600" height="400"></canvas>
+ <div id="controls">
+ <button id="playPause">Play</button>
+ <button id="randomize">Randomize</button>
+ <label for="speed">Speed:</label>
+ <input type="range" id="speed" min="1" max="100" value="10">
+ </div>
+ <script>
+ const canvas = document.getElementById('gameCanvas');
+ const ctx = canvas.getContext('2d');
+ const width = canvas.width;
+ const height = canvas.height;
+ const cellSize = 10;
+ const cols = width / cellSize;
+ const rows = height / cellSize;
+
+ let grid = [];
+ let nextGrid = [];
+ let isRunning = false;
+ let intervalId = null;
+
+ function createGrid() {
+ grid = [];
+ nextGrid = [];
+ for (let y = 0; y < rows; y++) {
+ grid[y] = [];
+ nextGrid[y] = [];
+ for (let x = 0; x < cols; x++) {
+ grid[y][x] = 0;
+ nextGrid[y][x] = 0;
+ }
+ }
+ }
+
+ function drawGrid() {
+ ctx.clearRect(0, 0, width, height);
+ for (let y = 0; y < rows; y++) {
+ for (let x = 0; x < cols; x++) {
+ if (grid[y][x]) {
+ ctx.fillStyle = '#0f0';
+ ctx.fillRect(x * cellSize, y * cellSize, cellSize, cellSize);
+ }
+ }
+ }
+ }
+
+ function countNeighbors(x, y) {
+ let count = 0;
+ for (let dy = -1; dy <= 1; dy++) {
+ for (let dx = -1; dx <= 1; dx++) {
+ if (dx === 0 && dy === 0) continue;
+ const nx = x + dx;
+ const ny = y + dy;
+ if (nx >= 0 && nx < cols && ny >= 0 && ny < rows) {
+ count += grid[ny][nx];
+ }
+ }
+ }
+ return count;
+ }
+
+ function updateGrid() {
+ for (let y = 0; y < rows; y++) {
+ for (let x = 0; x < cols; x++) {
+ const neighbors = countNeighbors(x, y);
+ if (grid[y][x]) {
+ nextGrid[y][x] = (neighbors === 2 || neighbors === 3) ? 1 : 0;
+ } else {
+ nextGrid[y][x] = (neighbors === 3) ? 1 : 0;
+ }
+ }
+ }
+ for (let y = 0; y < rows; y++) {
+ for (let x = 0; x < cols; x++) {
+ grid[y][x] = nextGrid[y][x];
+ }
+ }
+ drawGrid();
+ }
+
+ function startGame() {
+ isRunning = true;
+ document.getElementById('playPause').textContent = 'Pause';
+ intervalId = setInterval(updateGrid, 1000 / parseInt(document.getElementById('speed').value));
+ }
+
+ function pauseGame() {
+ isRunning = false;
+ document.getElementById('playPause').textContent = 'Play';
+ clearInterval(intervalId);
+ }
+
+ function randomizeGrid() {
+ for (let y = 0; y < rows; y++) {
+ for (let x = 0; x < cols; x++) {
+ grid[y][x] = Math.random() > 0.8 ? 1 : 0;
+ }
+ }
+ drawGrid();
+ }
+
+ document.getElementById('playPause').addEventListener('click', () => {
+ if (isRunning) {
+ pauseGame();
+ } else {
+ startGame();
+ }
+ });
+
+ document.getElementById('randomize').addEventListener('click', () => {
+ createGrid();
+ randomizeGrid();
+ });
+
+ document.getElementById('speed').addEventListener('input', () => {
+ if (isRunning) {
+ clearInterval(intervalId);
+ intervalId = setInterval(updateGrid, 1000 / parseInt(document.getElementById('speed').value));
+ }
+ });
+
+ createGrid();
+ drawGrid();
+ </script>
+</body>
+</html>
\ No newline at end of file
diff --git a/data/artifacts/b697e7a2f3e5/qwen3-14b.png b/data/artifacts/b697e7a2f3e5/qwen3-14b.png
new file mode 100644
index 0000000..0100d63
Binary files /dev/null and b/data/artifacts/b697e7a2f3e5/qwen3-14b.png differ
diff --git a/data/challenges.json b/data/challenges.json
index 7a54f44..57c9327 100644
--- a/data/challenges.json
+++ b/data/challenges.json
@@ -30824,5 +30824,95 @@
"judging": false,
"aiPick": "qwen3-14b",
"judged_at": "2026-07-28T14:18:14.986Z"
+ },
+ {
+ "id": "b697e7a2f3e5",
+ "title": "Daily: Conway Life",
+ "prompt": "Single-file HTML Conway's Game of Life on canvas with play/pause, randomize, and a speed slider.",
+ "category": "Games",
+ "designTools": false,
+ "created_at": "2026-07-29T14:15:05.347Z",
+ "winner": null,
+ "runs": [
+ {
+ "model": "qwen3-14b",
+ "status": "done",
+ "error": null,
+ "seconds": 31,
+ "cost": 0,
+ "started_at": "2026-07-29T14:15:05.381Z",
+ "finished_at": "2026-07-29T14:15:36.458Z",
+ "queued_at": "2026-07-29T14:15:05.362Z",
+ "bytes": 4808,
+ "thumb": true,
+ "aiScore": 6.8,
+ "aiReason": "The page is functional but lacks visual appeal and interactivity.",
+ "aiScores": {
+ "qwen2.5vl:7b": 7,
+ "minicpm-v:latest": 6.5
+ },
+ "aiSpread": 0.5
+ },
+ {
+ "model": "gemma3-12b",
+ "status": "done",
+ "error": null,
+ "seconds": 31,
+ "cost": 0,
+ "started_at": "2026-07-29T14:15:36.468Z",
+ "finished_at": "2026-07-29T14:16:07.098Z",
+ "queued_at": "2026-07-29T14:15:05.367Z",
+ "bytes": 3655,
+ "thumb": true,
+ "aiScore": 6.3,
+ "aiReason": "The model fulfills the challenge but lacks visual quality and interactivity.",
+ "aiScores": {
+ "qwen2.5vl:7b": 7,
+ "minicpm-v:latest": 5.5
+ },
+ "aiSpread": 1.5
+ },
+ {
+ "model": "hermes3-8b",
+ "status": "done",
+ "error": null,
+ "seconds": 43,
+ "cost": 0,
+ "started_at": "2026-07-29T14:16:07.109Z",
+ "finished_at": "2026-07-29T14:16:50.085Z",
+ "queued_at": "2026-07-29T14:15:05.372Z",
+ "bytes": 4455,
+ "thumb": true,
+ "aiScore": 5.5,
+ "aiReason": "The canvas is empty and there are no visible elements related to Conway's Game of Life or the specified controls.",
+ "aiScores": {
+ "qwen2.5vl:7b": 7,
+ "minicpm-v:latest": 4
+ },
+ "aiSpread": 3
+ },
+ {
+ "model": "qwen25-7b",
+ "status": "done",
+ "error": null,
+ "seconds": 21,
+ "cost": 0,
+ "started_at": "2026-07-29T14:15:05.387Z",
+ "finished_at": "2026-07-29T14:15:26.546Z",
+ "queued_at": "2026-07-29T14:15:05.376Z",
+ "bytes": 2625,
+ "thumb": true,
+ "aiScore": 7,
+ "aiReason": "The model fulfills the challenge requirements but lacks visual appeal and interactivity.",
+ "aiScores": {
+ "qwen2.5vl:7b": 7,
+ "minicpm-v:latest": 7
+ },
+ "aiSpread": 0
+ }
+ ],
+ "judging": false,
+ "aiPick": "qwen25-7b",
+ "judged_at": "2026-07-29T14:17:23.568Z"
}
]
\ No newline at end of file
diff --git a/yolo/daily-log.jsonl b/yolo/daily-log.jsonl
index d700d0a..cfd5715 100644
--- a/yolo/daily-log.jsonl
+++ b/yolo/daily-log.jsonl
@@ -1,3 +1,4 @@
{"ts":"2026-07-23T06:44:54.850Z","id":"08d1c975f6db","title":"Daily: Bouncing Balls","done":3,"aiPick":"gemma3-12b"}
{"ts":"2026-07-27T21:27:30.065Z","id":"47d52f832fb5","title":"Daily: Starfield Warp","done":4,"aiPick":"qwen3-14b"}
{"ts":"2026-07-28T14:18:17.144Z","id":"b1ea25724e78","title":"Daily: Sample-Sale Email","done":4,"aiPick":"qwen3-14b"}
+{"ts":"2026-07-29T14:17:29.433Z","id":"b697e7a2f3e5","title":"Daily: Conway Life","done":4,"aiPick":"qwen25-7b"}
← 3bcf2d3 auto-save: 2026-07-28T07:28:16 (3 files) — data/challenges.j
·
back to Model Arena
·
auto-save: 2026-07-30T07:15:28 (2 files) — data/challenges.j 69710ee →