OverviewCode › R80
Code · blind round

R80 · Aggregation by continuous drift

blind round 4/8 local models answered

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.

Show task
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.

The answers — blind

Local models (Brain cluster) — identical prompt, anonymized order
MODEL Aqwen3:8bDNF
No usable answer reached the harness (ERR). Counted as a did-not-finish.
MODEL Bqwen3.5:9bERRBLANKMINIFIED
Show code
<!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>
MODEL Cdeepseek-r1:14bBLANKFORMAT
Show code
```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>
```
MODEL Dgemma4:26bDNF
No usable answer reached the harness (TIMEOUT). Counted as a did-not-finish.
MODEL Eqwen3:14bOKLIMFORMAT
Show code
```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>
```
No usable answer reached the harness (TIMEOUT). Counted as a did-not-finish.
MODEL Gqwen3-coder:30bERRBLANKFORMAT
Show code
```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>
```
MODEL Hllama3.1:8bDNF
No usable answer reached the harness (TIMEOUT). Counted as a did-not-finish.
Reveal the models— compare the answers first, then open. Names, blind scores and latencies are hidden until you do.

Who wrote what

Blind labelModelBlind scoreLatencyStatus
MODEL A qwen3:8b harness
MODEL B qwen3.5:9b 36.2 sOK
MODEL C deepseek-r1:14b 81.0 sOK
MODEL D gemma4:26b harness
MODEL E qwen3:14b 33.4 sOK
MODEL F mistral-small:24b DNF
MODEL G qwen3-coder:30b 19.3 sOK
MODEL H llama3.1:8b DNF

Frontier reference — outside the blind field

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.

Collected differently from the blind field: the local models run through a plain API harness, the frontier references through a context-free agent, one shot, no retries. Response times are therefore not comparable and are not shown. On two English tasks the reference answer came back in German — an artefact of that harness, flagged on the affected rounds.
Claude Opus 5frontier reference
Show code
<!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 &nbsp;&middot;&nbsp; cluster radius <i id="r">0.0</i> px &nbsp;&middot;&nbsp; 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>