SVG: exploded French press, by claude-opus-5.5
claude-opus-5.5 · round 3 of 3 · seed 3$0.22SVGPNGpress.svg
press.svg · 145 lines
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 1420" width="900" height="1420" font-family="Helvetica, Arial, sans-serif">
<defs>
  <linearGradient id="steel" x1="0" x2="1"><stop offset="0" stop-color="#8a9097"/><stop offset=".45" stop-color="#eef1f4"/><stop offset="1" stop-color="#7b8188"/></linearGradient>
  <linearGradient id="glass" x1="0" x2="1"><stop offset="0" stop-color="#cfe6f2" stop-opacity=".7"/><stop offset=".3" stop-color="#ffffff" stop-opacity=".5"/><stop offset="1" stop-color="#a9cbe0" stop-opacity=".7"/></linearGradient>
  <linearGradient id="black" x1="0" x2="1"><stop offset="0" stop-color="#222"/><stop offset=".4" stop-color="#666"/><stop offset="1" stop-color="#1a1a1a"/></linearGradient>
  <pattern id="mesh" width="4" height="4" patternUnits="userSpaceOnUse"><path d="M0 0L4 4M4 0L0 4" stroke="#555" stroke-width=".5"/></pattern>
  <marker id="dot" markerWidth="6" markerHeight="6" refX="3" refY="3"><circle cx="3" cy="3" r="2" fill="#333"/></marker>
</defs>
<rect width="900" height="1420" fill="#fbfaf7"/>
<text x="450" y="38" text-anchor="middle" font-size="26" font-weight="bold" fill="#222">French Press — Exploded Assembly</text>
<text x="450" y="62" text-anchor="middle" font-size="14" fill="#555">Standard three-piece plunger filter (cross plate · mesh screen · spiral plate)</text>

<!-- center axis -->
<line x1="400" y1="80" x2="400" y2="1390" stroke="#c33" stroke-width="1" stroke-dasharray="14 4 3 4"/>

<!-- 1 knob -->
<g stroke="#111" stroke-width="1.5">
  <path d="M380 118 Q378 88 400 84 Q422 88 420 118 Z" fill="url(#black)"/>
  <rect x="376" y="116" width="48" height="10" rx="3" fill="url(#black)"/>
</g>
<!-- 2 rod -->
<g stroke="#333" stroke-width="1.2">
  <rect x="396" y="150" width="8" height="250" fill="url(#steel)"/>
  <rect x="393" y="150" width="14" height="12" fill="url(#steel)"/>
  <g stroke="#555" stroke-width="1"><path d="M396 372l8 3M396 378l8 3M396 384l8 3M396 390l8 3M396 396l8 3"/></g>
</g>

<!-- 3 lid -->
<g stroke="#333" stroke-width="1.5">
  <path d="M300 450 L300 470 A100 22 0 0 0 500 470 L500 450 Z" fill="url(#steel)"/>
  <ellipse cx="400" cy="450" rx="100" ry="22" fill="#e6e9ec"/>
  <path d="M322 452 A78 16 0 0 1 478 452" fill="none" stroke="#888"/>
  <path d="M320 470 L320 492 A80 16 0 0 0 480 492 L480 470" fill="#b8bec4" stroke="#555"/>
  <ellipse cx="400" cy="444" rx="16" ry="5" fill="url(#steel)"/>
  <ellipse cx="400" cy="444" rx="5" ry="2" fill="#333"/>
  <path d="M470 458 L494 452 L492 462 L468 466 Z" fill="#555" stroke="none"/>
</g>

<g transform="translate(0,-158)"><!-- 6 cross plate -->
<g stroke="#333" stroke-width="1.3">
  <path d="M296 718 v6 A104 23 0 0 0 504 724 v-6" fill="#9aa0a6"/>
  <ellipse cx="400" cy="718" rx="104" ry="23" fill="url(#steel)"/>
  <g fill="#fbfaf7" stroke="#666">
    <path d="M308 718 A92 20 0 0 1 390 698.5 L390 714 Z"/>
    <path d="M410 698.5 A92 20 0 0 1 492 718 L410 714 Z"/>
    <path d="M308 718 A92 20 0 0 0 390 737.5 L390 722 Z"/>
    <path d="M410 737.5 A92 20 0 0 0 492 718 L410 722 Z"/>
  </g>
  <ellipse cx="400" cy="718" rx="12" ry="4" fill="url(#steel)"/>
  <ellipse cx="400" cy="718" rx="4" ry="1.5" fill="#222"/>
</g>
</g>
<!-- 5 mesh -->
<g stroke="#333" stroke-width="1.3">
  <ellipse cx="400" cy="640" rx="110" ry="25" fill="url(#mesh)"/>
  <ellipse cx="400" cy="640" rx="110" ry="25" fill="none" stroke-width="3" stroke="#777"/>
  <ellipse cx="400" cy="640" rx="7" ry="2.5" fill="#fbfaf7"/>
</g>
<g transform="translate(0,158)"><!-- 4 spiral plate -->
<g stroke="#333" stroke-width="1.3">
  <ellipse cx="400" cy="560" rx="112" ry="26" fill="none" stroke="#666" stroke-width="3" stroke-dasharray="2 2"/>
  <ellipse cx="400" cy="560" rx="104" ry="23" fill="url(#steel)"/>
  <path d="M400 560 m-10 0 a10 3 0 1 1 20 0 a20 5 0 1 1 -40 0 a32 8 0 1 1 64 0 a46 11 0 1 1 -92 0 a62 14 0 1 1 124 0 a78 17 0 1 1 -156 0" fill="none" stroke="#555"/>
  <ellipse cx="400" cy="560" rx="5" ry="2" fill="#222"/>
  <path d="M296 560 v5 A104 23 0 0 0 504 565 v-5" fill="none"/>
</g>
</g>
<!-- 7 nut -->
<g stroke="#333" stroke-width="1.3">
  <path d="M388 776 L388 792 A12 4 0 0 0 412 792 L412 776" fill="url(#steel)"/>
  <ellipse cx="400" cy="776" rx="12" ry="4" fill="#dde"/>
  <ellipse cx="400" cy="776" rx="4" ry="1.5" fill="#222"/>
  <path d="M396 792 v10 h8 v-10" fill="url(#steel)"/>
</g>

<!-- 8 beaker -->
<g stroke="#557" stroke-width="1.5">
  <path d="M312 850 L312 1110 A88 18 0 0 0 488 1110 L488 850" fill="url(#glass)"/>
  <ellipse cx="400" cy="850" rx="88" ry="18" fill="#e8f4fa" fill-opacity=".6"/>
  <path d="M312 850 Q300 838 292 846 L312 862" fill="#e8f4fa" fill-opacity=".6"/>
  <path d="M312 1110 A88 18 0 0 1 488 1110" fill="none" stroke="#99a" stroke-dasharray="4 3"/>
  <line x1="330" y1="880" x2="330" y2="1090" stroke="#fff" stroke-width="5" stroke-opacity=".8"/>
  <g stroke="#6a7a8a" stroke-width="1"><path d="M460 920h14M466 960h8M460 1000h14M466 1040h8"/></g>
</g>

<!-- 9 frame with handle -->
<g stroke="#333" stroke-width="1.5">
  <!-- rear straps visible through -->
  <path d="M300 1180 L300 1330" stroke="#888" stroke-width="8" stroke-linecap="round"/>
  <path d="M500 1180 L500 1330" stroke="#888" stroke-width="8" stroke-linecap="round"/>
  <path d="M300 1180 A100 18 0 0 1 500 1180" fill="none" stroke="#999" stroke-width="7"/>
  <path d="M300 1180 A100 18 0 0 0 500 1180" fill="none" stroke="url(#steel)" stroke-width="9"/>
  <path d="M300 1180 A100 18 0 0 0 500 1180" fill="none" stroke="#444" stroke-width="1"/>
  <!-- base cup -->
  <path d="M296 1318 L296 1340 A104 20 0 0 0 504 1340 L504 1318 Z" fill="url(#steel)"/>
  <ellipse cx="400" cy="1318" rx="104" ry="20" fill="#d6dade"/>
  <ellipse cx="400" cy="1320" rx="92" ry="15" fill="#aeb4ba"/>
  <!-- feet -->
  <path d="M330 1356 l-8 14 h20 l2 -10 M470 1356 l8 14 h-20 l-2 -10" fill="url(#steel)"/>
  <!-- front strap -->
  <rect x="395" y="1196" width="10" height="138" fill="url(#steel)"/>
  <!-- handle -->
  <path d="M500 1190 C590 1190 600 1210 600 1260 C600 1300 580 1310 500 1310 L500 1290 C560 1290 575 1285 575 1255 C575 1220 565 1212 500 1212 Z" fill="url(#black)"/>
</g>

<!-- labels -->
<g font-size="15" fill="#222" stroke="none">
  <g stroke="#333" stroke-width="1" fill="none" marker-start="url(#dot)">
    <path d="M420 104 L560 104"/>
    <path d="M404 260 L560 260"/>
    <path d="M404 385 L560 385"/>
    <path d="M490 470 L560 470"/>
    <path d="M505 713 L560 698"/>
    <path d="M296 720 L240 720"/>
    <path d="M500 640 L560 640"/>
    <path d="M490 562 L560 562"/>
    <path d="M412 790 L560 790"/>
    <path d="M480 970 L560 970"/>
    <path d="M296 848 L240 848"/>
    <path d="M598 1250 L640 1250"/>
    <path d="M300 1250 L240 1250"/>
    <path d="M296 1335 L240 1335"/>
  </g>
  <text x="566" y="109">1. Knob</text>
  <text x="566" y="265">2. Plunger rod</text>
  <text x="566" y="390" font-size="13" fill="#555">threaded end</text>
  <text x="566" y="475">3. Lid (with pour slot)</text>
  <text x="566" y="693">6. Spiral plate</text>
  <text x="566" y="710" font-size="12" fill="#555">spring-coil rim seals to glass</text>
  <text x="234" y="725" text-anchor="end" font-size="13" fill="#555">spring rim</text>
  <text x="566" y="645">5. Mesh filter screen</text>
  <text x="566" y="565">4. Cross plate</text>
  <text x="566" y="795">7. Retaining nut</text>
  <text x="566" y="975">8. Glass beaker</text>
  <text x="234" y="853" text-anchor="end" font-size="13" fill="#555">spout</text>
  <text x="646" y="1255">9. Handle</text>
  <text x="234" y="1255" text-anchor="end">10. Frame</text>
  <text x="234" y="1340" text-anchor="end">11. Base / feet</text>
</g>
<text text-anchor="end" x="172" y="760" font-size="13" fill="#555">Filter assembly</text>
<text text-anchor="end" x="172" y="776" font-size="13" fill="#555">(parts 4–6, clamped</text>
<text text-anchor="end" x="172" y="792" font-size="13" fill="#555">by nut 7 on rod thread)</text>
<path d="M190 540 L180 540 L180 800 L190 800" fill="none" stroke="#777"/>
</svg>
round 1 of 3
Exploded French press, by Opus 5.5, the render after round 1
123What the model saw after each round. The picture above is the round that was scored, round 3.

Right in round 1, then it swapped the plates, and its filter is wider than the glass.

modelanthropic/claude-opus-5.5tasksvg-french-press@v2date2026-09-23rounds3 of 8 allowedcost$0.2209thinkingmediumtokens46,009 in, 8,012 out, of which 1,636 reasoningtime1 min 28 sfailurepart-order · physical-plausibility
All seven partsdecided by looking · Pass if all seven are drawn as separate shapes and each has a label naming it. A part that is only named in a label or a comment, with nothing drawn, fails it.pass
Stack orderdecided by a number, from the filefail
Filter fits the glassdecided by a number, from the filefail
One assembly axisdecided by looking · Pass if one vertical line runs through the middle of every part, and every leader line leaves from the same side. One part pushed off to the side fails it.pass
Labels matchdecided by looking · Pass if following each leader line from its label ends on the part that label names. One label pointing at the wrong part, or at nothing, fails it.pass
read the post
its other runs
the prompt it was given
Draw an exploded assembly diagram of a French press, as an SVG. Use the standard three-piece plunger filter rather than a two-piece travel press.
Frozen at v2. This model got this and nothing else.
ground truth

The standard three-piece plunger, from the top down: spiral (spring) plate, mesh screen, cross-plate. The cross-plate is the bottom piece, because its threaded stem is what the rod screws into. The spiral plate above the mesh is what presses the mesh edge out against the glass. Checked against the WebstaurantStore anatomy diagram, which is drawn exploded and labelled, and against each part's y coordinate in the SVG rather than its comment. Two-piece travel presses exist and stack differently, which is why v2 of the prompt names the design. How it is scored, and this run's files on GitHub.