MODEL Aqwen3:8bDNF
No usable answer reached the harness (ERR). Counted as a did-not-finish.
Answers below are anonymized and shuffled. Read, judge, pick a favourite — then scroll down and reveal the models.
2 of the 8 local models delivered nothing through our test harness in this round — for reasons that lie with our setup, not with the models. Those cards are marked DNF like any other, but they are not evidence about those models. Which ones, and why, is spelled out in the reveal.
The reveal also holds a frontier reference on the same task (Claude Opus 5) — kept out of sight here so it cannot steer your judgement.
Create ONE self-contained HTML file (STRICT LIMIT: max 120 lines total) that simulates particles clustering by CONTINUOUS MOVEMENT on a <canvas>. A seed sits in the middle; 800 particles with floating-point positions drift under Brownian motion plus a weak pull towards the centre, and stick permanently when they come within one radius of the cluster, growing a branching structure. No grid, no cells — continuous coordinates only. Show the number of stuck particles and the cluster radius. Smooth requestAnimationFrame animation, NO user input, starts immediately and keeps running (restart with a fresh random instance when finished). No external libraries, no comments needed. Output ONLY the HTML file content, nothing else.
<!DOCTYPE html>
<html><body><canvas id="c"></canvas><script>const canvas = document.getElementById('c');const ctx = canvas.getContext('2d');let W=window.innerWidth;let H=window.innerHeight;canvas.width=W;canvas.height=H;const N=800;const STICK_RADIUS=5;const DT=0.98;const CENTER={x:W/2,y:H/2};let particles=[];let stuckCount=0;function init(){particles=[];stuckCount=0;for(let i=0;i<N;i++){particles.push({x:(Math.random()*W),y:(Math.random()*H),vx:(Math.random()-0.5)*0.5,vy:(Math.random()-0.5)*0.5,stuck:false});}requestAnimationFrame(loop)}function update(){for(let i=0;i<N;i++){const p=particles[i];if(!p.stuck){const dx=CENTER.x-p.x;const dy=CENTER.y-p.y;const distSq=dx*dx+dy*dy;const pullForce=1/(distSq+500);p.vx+=dx*pullForce*0.005;p.vy+=dy*pullForce*0.005;}p.vx*=DT;p.vy*=DT;p.x+=p.vx;p.y+=p.vy;const targetDist=(Math.hypot(CENTER.x-p.x,CENTER.y-p.y));if(targetDist<STICK_RADIUS*2){p.stuck=true;p.vx=0;p.vy=0;stuckCount++;}else{p.stuck=false;}}const clusterRadius=Math.max(1,Math.sqrt(particles.filter(p=>p.stuck).reduce((sum, p)=>sum+p.x*p.x,0)/N)*W);return Math.min(250,clusterRadius*1.2)}function draw(radius){ctx.fillStyle='black';ctx.fillRect(0,0,W,H);for(let p of particles){if(!p.stuck){ctx.globalAlpha=0.3;ctx.beginPath();ctx.arc(p.x,p.y,1.5,0,2*Math.PI);ctx.fill();}else{ctx.fillStyle='rgba(100,200,255,0.8)';ctx.beginPath();ctx.arc(p.x,p.y,2,0,2*Math.PI);ctx.fill();}}ctx.globalAlpha=1;ctx.fillStyle='#333';ctx.font='16px Arial';ctx.fillText(`Stuck: ${stuckCount}/${N}`,10,30);ctx.fillText(`Radius: ${radius.toFixed(1)}`,10,55);update();}function loop(){requestAnimationFrame(loop);update();draw(Math.hypot(...particles.filter(p=>p.stuck).map(p=>[p.x-CENTER.x, p.y-CENTER.y]))));}window.addEventListener('resize',()=>({W:window.innerWidth,H:window.innerHeight,canvas.width=W,canvas.height=H,init(),loop()}));init();</script></body></html>```html
<!DOCTYPE html>
<html><body style="margin:0;display:flex;flex-direction:column;align-items:center;background:black;">
<canvas id=c width=800 height=800></canvas>
<div id=i style="color:white;font-size:14px;"></div>
<script>
let c=document.getElementById('c'), ctx=c.getContext('2d');
let i=document.getElementById('i');
let w=h=800;
let particles=[],cluster=[],maxStuck=0,stickCount=0,radius=0;
class Particle{
constructor(seed=false){
this.x=Math.random()*w;
this.y=Math.random()*h;
if(!seed){
this.x=w/2+10,this.y=h/2+10;
return;
}
this.r=3;
this.dx=(Math.random()-0.5)*0.1;
this.dy=(Math.random()-0.5)*0.1;
}
update(){
if(!this.seed){
let dx=this.x - w/2, dy=this.y - h/2;
let dist=Math.hypot(dx,dy);
if(dist < radius+this.r && Math.abs(this.r-3)<1){
this.stuck=true;
stickCount++;
maxStuck=Math.max(maxStuck,dist);
return;
}
this.x += (Math.random()-0.5)*0.02;
this.y += (Math.random()-0.5)*0.02;
if(dist>100) this.x=w/2+this.dx*0.1,this.y=h/2+this.dy*0.1;
}
}
}
function drawParticles(){
ctx.beginPath();
for(let p of particles){
if(p.stuck){
ctx.fillStyle='hsl(140,90%,50%)';
ctx.fillRect(p.x-1,p.y-1,2,2);
continue;
}
ctx.fillStyle='#fff';
ctx.beginPath();
ctx.arc(p.x,p.y,2,0,Math.PI*2);
ctx.fill();
}
}
function drawCluster(){
ctx.strokeStyle='hsl(140,90%,50%)';
for(let i=0;i<cluster.length-1;i++){
let a=cluster[i],b=cluster[i+1];
ctx.beginPath();
ctx.moveTo(a.x,a.y);
ctx.lineTo(b.x,b.y);
ctx.stroke();
}
}
function anim(){
ctx.fillStyle='black';
ctx.fillRect(0,0,w,h);
particles.forEach(p => p.update());
cluster.unshift({x:w/2,y:h/2});
if(stickCount>0){
radius=(maxStuck/10+radius*9/10)/1;
i.textContent=`Cluster: ${stickCount} | Radius: ${(radius).toFixed(1)}`;
}
drawParticles();
drawCluster();
ctx.fillStyle='red';
ctx.beginPath();
ctx.arc(w/2,h/2,3,0,Math.PI*2);
ctx.fill();
if(!stickCount%500){
setTimeout(()=>{
particles=Array.from({length:800}, (_,i)=>new Particle(i));
stickCount=maxStuck=radius=0;
cluster=[];
},1);
}
requestAnimationFrame(anim);
}
particles = Array.from({length:800}, (_,i)=>new Particle(i));
cluster = [{x:w/2,y:h/2}];
anim();
</script>
</body></html>
``````html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Particle Cluster Simulation</title>
<style>body {margin: 0; overflow: hidden;} canvas {display: block; background: #111;}</style>
</head>
<body>
<canvas id="c"></canvas>
<script>
const canvas = document.getElementById('c');
const ctx = canvas.getContext('2d');
let W, H;
function init() {
W = H = window.innerWidth < 800 ? window.innerWidth : 800;
canvas.width = W;
canvas.height = H;
particles = [];
stuckParticles = [];
seed = {x: W / 2, y: H / 2};
const N_PARTICLES = 800;
const STICK_RADIUS = 15;
const DRAG = 0.985;
for (let i = 0; i < N_PARTICLES; i++) {
particles.push({
x: Math.random() * W,
y: Math.random() * H,
vx: (Math.random() - 0.5) * 2,
vy: (Math.random() - 0.5) * 2,
stuck: false
});
}
stuckParticles = [];
}
// Global state management for the simulation loop
let particles;
let seed;
const STICK_RADIUS = 15;
const DRAG = 0.985;
const ATTRACTION_STRENGTH = 0.005;
const BROWNIAN_FORCE = 0.2;
function updateParticles() {
for (let i = 0; i < particles.length; i++) {
const p = particles[i];
if (!p.stuck) {
// 1. Brownian Motion (Random Force)
p.vx += ((Math.random() - 0.5) * BROWNIAN_FORCE);
p.vy += ((Math.random() - 0.5) * BROWNIAN_FORCE);
// 2. Central Pull (Attraction)
const dx = seed.x - p.x;
const dy = seed.y - p.y;
const distSq = dx * dx + dy * dy;
p.vx += dx * ATTRACTION_STRENGTH / Math.sqrt(distSq + 1);
p.vy += dy * ATTRACTION_STRENGTH / Math.sqrt(distSq + 1);
// Apply drag and move
p.vx *= DRAG;
p.vy *= DRAG;
p.x += p.vx;
p.y += p.vy;
// Boundary check (wrap or bounce)
if (p.x < 0 || p.x > W) { p.vx *= -1; p.x = Math.max(Math.min(p.x, W), Math.min(p.x, W)); }
if (p.y < 0 || p.y > H) { p.vy *= -1; p.y = Math.max(Math.min(p.y, H), Math.min(p.y, H)); }
// 3. Clustering/Sticking Check
let isNearCluster = false;
for (const s of stuckParticles) {
const dx_s = p.x - s.x;
const dy_s = p.y - s.y;
if (dx_s * dx_s + dy_s * dy_s < STICK_RADIUS * STICK_RADIUS) {
isNearCluster = true;
break;
}
}
if (isNearCluster && !p.stuck) {
p.stuck = true;
stuckParticles.push({x: p.x, y: p.y});
}
}
}
}
function draw() {
ctx.clearRect(0, 0, W, H);
// Draw stuck particles (the cluster)
for (const s of stuckParticles) {
ctx.fillStyle = '#3a9b4c';
ctx.beginPath();
ctx.arc(s.x, s.y, 1 + Math.random() * 0.5, 0, Math.PI * 2);
ctx.fill();
}
// Draw moving particles
for (const p of particles) {
ctx.fillStyle = p.stuck ? '#3a9b4c' : '#8fa8ff';
ctx.beginPath();
ctx.arc(p.x, p.y, 1, 0, Math.PI * 2);
ctx.fill();
}
// Display stats
const stuckCount = stuckParticles.length;
let minX = W, maxX = 0, minY = H, maxY = 0;
if (stuckCount > 0) {
for(const s of stuckParticles) {
minX = Math.min(minX, s.x); maxX = Math.max(maxX, s.x);
minY = Math.min(minY, s.y); maxY = Math.max(maxY, s.y);
}
}
const clusterWidth = (maxX - minX) || 0;
const clusterHeight = (maxY - minY) || 0;
const clusterRadius = Math.sqrt(clusterWidth * clusterWidth + clusterHeight * clusterHeight) / 2;
ctx.fillStyle = 'rgba(255, 255, 255, 0.8)';
ctx.font = '14px monospace';
ctx.fillText(`Stuck Particles: ${stuckCount} / 800`, 10, 20);
ctx.fillText(`Cluster Radius: ${clusterRadius.toFixed(1)}`, 10, 40);
}
function animate() {
updateParticles();
draw();
requestAnimationFrame(animate);
}
window.addEventListener('resize', init);
init();
animate();
</script>
</body>
</html>
``````html
<!DOCTYPE html>
<html>
<head>
<title>Clustering Simulation</title>
<style>body {margin:0;overflow:hidden;background:#111;}canvas {display:block;}</style>
</head>
<body>
<canvas id="c"></canvas>
<script>
const canvas = document.getElementById('c');
const ctx = canvas.getContext('2d');
let W, H;
let particles = [];
let stuckCount = 0;
function setup() {
W = H = window.innerWidth * 0.95;
canvas.width = W;
canvas.height = H;
particles = [];
stuckCount = 0;
}
function Particle(x, y) {
this.x = x;
this.y = y;
this.vx = (Math.random() - 0.5) * 0.5;
this.vy = (Math.random() - 0.5) * 0.5;
this.stuck = false;
}
Particle.prototype.update = function(center, radius) {
if (this.stuck) return;
// Brownian motion
this.vx += (Math.random() - 0.5) * 0.2;
this.vy += (Math.random() - 0.5) * 0.2;
// Weak pull towards center (0, 0)
const dx = center[0] - this.x;
const dy = center[1] - this.y;
const distSq = dx * dx + dy * dy;
const forceStrength = 0.005 / Math.max(distSq, 1);
this.vx += dx * forceStrength;
this.vy += dy * forceStrength;
// Dampening and movement
this.vx *= 0.98;
this.vy *= 0.98;
this.x += this.vx;
this.y += this.vy;
// Boundary check (simple bounce)
if (this.x < 0 || this.x > W) { this.vx *= -1; this.x = Math.max(0, Math.min(W, this.x)); }
if (this.y < 0 || this.y > H) { this.vy *= -1; this.y = Math.max(0, Math.min(H, this.y)); }
// Clustering check
const distToCenter = Math.sqrt(dx * dx + dy * dy);
if (distToCenter < radius * 2) { // Note: Using 2*R to allow for a slightly larger initial pull area
this.stuck = true;
stuckCount++;
this.vx = 0; this.vy = 0;
}
};
Particle.prototype.draw = function() {
ctx.beginPath();
ctx.arc(this.x, this.y, this.stuck ? 1.5 : 1, 0, Math.PI * 2);
ctx.fillStyle = this.stuck ? '#66ccff' : '#aaddff';
ctx.fill();
};
function init() {
setup();
const center = [W / 2, H / 2];
for (let i = 0; i < 800; i++) {
particles.push(new Particle(Math.random() * W, Math.random() * H));
}
requestAnimationFrame(animate);
}
function animate() {
ctx.fillStyle = 'rgba(17, 17, 17, 0.5)'; // Trail effect
ctx.fillRect(0, 0, W, H);
const center = [W / 2, H / 2];
const clusterRadius = 20; // The effective radius for sticking (visual feedback)
particles.forEach(p => {
p.update(center, clusterRadius);
p.draw();
});
// Stats display
ctx.fillStyle = 'white';
ctx.font = '14px monospace';
ctx.fillText(`Stuck Particles: ${stuckCount} / 800`, 20, 30);
ctx.fillText(`Cluster Radius: ${Math.sqrt(particles.filter(p => p.stuck).map(p => Math.pow(p.x - W/2, 2) + Math.pow(p.y - H/2, 2))).reduce((a, b) => a + b, 0) / stuckCount || 1)**.5:.1f}`, 320, 30);
requestAnimationFrame(animate);
}
window.addEventListener('resize', () => {
setup();
});
init();
</script>
</body>
</html>
```| Blind label | Model | Blind score | Latency | Status |
|---|---|---|---|---|
| MODEL A | qwen3:8b | — | — | harness |
| MODEL B | qwen3.5:9b | — | 36.2 s | OK |
| MODEL C | deepseek-r1:14b | — | 81.0 s | OK |
| MODEL D | gemma4:26b | — | — | harness |
| MODEL E | qwen3:14b | — | 33.4 s | OK |
| MODEL F | mistral-small:24b | — | — | DNF |
| MODEL G | qwen3-coder:30b | — | 19.3 s | OK |
| MODEL H | llama3.1:8b | — | — | DNF |
These models answered the identical prompt outside the blind field. They are deliberately not scored and not part of the blind comparison — they are there so you can see where a frontier model lands on the same task.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Continuous Diffusion-Limited Aggregation</title>
<style>
html,body{margin:0;height:100%;background:#05060c;overflow:hidden}
canvas{display:block}
#hud{position:fixed;top:14px;left:16px;pointer-events:none;
font:12px/1.7 ui-monospace,SFMono-Regular,Menlo,monospace;color:#8ea3c4;letter-spacing:.08em;text-transform:uppercase}
#hud b{color:#7ef2d4;font-weight:600}
#hud i{font-style:normal;color:#f0a4d0}
</style>
</head>
<body>
<canvas id="c"></canvas>
<div id="hud">stuck <b id="s">1</b>/800 · cluster radius <i id="r">0.0</i> px · run <b id="g">1</b></div>
<script>
const cv=document.getElementById('c'),ctx=cv.getContext('2d');
const elS=document.getElementById('s'),elR=document.getElementById('r'),elG=document.getElementById('g');
const N=800,PR=2.1,STICK=PR*2,TAU=Math.PI*2;
let W,H,cx,cy,spawnR,free,stuck,maxR,run=1,hold=0,age=0;
function resize(){W=cv.width=innerWidth;H=cv.height=innerHeight;cx=W/2;cy=H/2;spawnR=Math.min(W,H)*0.46;}
function spawn(){const a=Math.random()*TAU,d=spawnR*Math.sqrt(0.12+0.88*Math.random());
return{x:cx+Math.cos(a)*d,y:cy+Math.sin(a)*d};}
function reset(){resize();stuck=[{x:cx,y:cy,h:0}];maxR=0;age=0;hold=0;free=[];
for(let i=0;i<N;i++)free.push(spawn());}
function step(){
const lim=maxR+STICK+8;
for(let i=free.length-1;i>=0;i--){
const p=free[i];
p.x+=(Math.random()-0.5)*3.6;
p.y+=(Math.random()-0.5)*3.6;
let dx=cx-p.x,dy=cy-p.y,d=Math.sqrt(dx*dx+dy*dy)||1e-6;
const pull=0.30+0.85*(d/spawnR);
p.x+=dx/d*pull;p.y+=dy/d*pull;
if(d>spawnR*1.3){const q=spawn();p.x=q.x;p.y=q.y;continue;}
if(d>lim)continue;
for(let j=stuck.length-1;j>=0;j--){
const q=stuck[j],ax=p.x-q.x,ay=p.y-q.y;
if(ax*ax+ay*ay<STICK*STICK){
const nx=cx-p.x,ny=cy-p.y,rr=Math.sqrt(nx*nx+ny*ny);
stuck.push({x:p.x,y:p.y,h:stuck.length/N});
if(rr>maxR)maxR=rr;
free.splice(i,1);
break;
}
}
}
}
function draw(){
ctx.fillStyle='rgba(5,6,12,0.34)';ctx.fillRect(0,0,W,H);
ctx.strokeStyle='rgba(70,95,140,0.16)';ctx.beginPath();
ctx.arc(cx,cy,Math.max(maxR,4),0,TAU);ctx.stroke();
ctx.globalCompositeOperation='lighter';
for(let i=0;i<free.length;i++){
const p=free[i];
ctx.fillStyle='rgba(90,120,170,0.42)';
ctx.fillRect(p.x-0.9,p.y-0.9,1.8,1.8);
}
for(let i=0;i<stuck.length;i++){
const p=stuck[i];
ctx.fillStyle='hsl('+(188+p.h*168)+',88%,'+(46+p.h*22)+'%)';
ctx.beginPath();ctx.arc(p.x,p.y,PR,0,TAU);ctx.fill();
}
const t=stuck[stuck.length-1];
ctx.fillStyle='rgba(255,255,255,0.9)';
ctx.beginPath();ctx.arc(t.x,t.y,PR*1.3,0,TAU);ctx.fill();
ctx.globalCompositeOperation='source-over';
}
function frame(){
age++;
if(free.length){for(let k=0;k<4;k++)step();}
else hold++;
if(age>7000)hold=90;
if(hold>60){run++;elG.textContent=run;ctx.fillStyle='#05060c';ctx.fillRect(0,0,W,H);reset();}
draw();
elS.textContent=stuck.length;
elR.textContent=maxR.toFixed(1);
requestAnimationFrame(frame);
}
addEventListener('resize',()=>{const o=cx,p=cy;resize();
const dx=cx-o,dy=cy-p;
for(const q of stuck){q.x+=dx;q.y+=dy;}
for(const q of free){q.x+=dx;q.y+=dy;}
ctx.fillStyle='#05060c';ctx.fillRect(0,0,W,H);});
reset();
ctx.fillStyle='#05060c';ctx.fillRect(0,0,W,H);
frame();
</script>
</body>
</html>