DeepSeek V4 Flash · vLLM TP2 · two Sparks
thinking on · 31,797 output tokens (29K chars reasoning) · 8m36s · 61.6 tok/s · 85 KB · as shipped: UI and readouts live, canvas empty · after 1 sign fix: a wedge with holes, camera inside it
One 4.5 KB brief: a grabbable watermelon jelly wedge in native WebGPU with WGSL shaders, XPBD tetrahedral physics, and a full editorial UI. Two arms are in so far. Neither shipped a jelly you can grab. Both originals are published untouched beside a one-edit repaired copy.
thinking on · 31,797 output tokens (29K chars reasoning) · 8m36s · 61.6 tok/s · 85 KB · as shipped: UI and readouts live, canvas empty · after 1 sign fix: a wedge with holes, camera inside it
thinking off · 21,889 output tokens · 5m22s · 68.6 tok/s · 51 KB · as shipped: SyntaxError, nothing runs · after 1 rename: TypeError at init, no canvas ever created
Prompt, verbatim:
Create “Melon Jelly” - a polished, interactive 3D watermelon jelly slice that runs directly in the browser using genuine WebGPU and WGSL shaders. Deliver a single, self-contained HTML file with embedded JavaScript and CSS. This must be an actual interactive 3D simulation, not a static render, video, or 2D imitation. THE WATERMELON Create a thick, rounded triangular watermelon wedge with: Translucent ruby-red jelly flesh. A pale, slightly translucent layer between the flesh and rind. A glossy green outer rind with irregular dark-green stripes. Individually modeled dark seeds embedded in both exposed sides. Softly rounded corners and an appealing, substantial thickness. Make it look like an expensive gummy candy photographed in a studio. It should feel juicy, soft, and almost edible. Keep the colors rich without overexposing the highlights. SOFT-BODY PHYSICS Use a volumetric soft-body simulation, such as a tetrahedral mesh with XPBD elastic and volume-preservation constraints. The user must be able to: Grab the tip, a corner, the flesh, or the rind. Stretch, bend, lift, and gently twist the slice. Release it and watch it wobble before gradually settling. The slice must visibly deform locally, not simply move or scale as one rigid object. Make the rind slightly firmer than the flesh while keeping the whole slice flexible. Preserve volume reasonably during stretching. Prevent inverted elements, explosive motion, and permanent collapse. Use a fixed simulation timestep and bounded substeps for stability. After release, the motion should decay naturally - no instant snapping back and no endless oscillation. Keep seeds attached to the deforming flesh. They must move and rotate with the surface rather than float independently or remain fixed in space. Include ground contact, gentle friction, and soft bouncing. Avoid visible floor penetration. RENDERING Use native WebGPU with WGSL shaders. Include: Thickness-dependent light absorption. Refraction through the jelly. Fresnel reflections and glossy highlights. Soft transmitted light through thin edges. Subtle internal details and a few tiny air bubbles. Soft contact shadows beneath the slice. A light, neutral studio background. The flesh, pale rind, and green skin should have distinct material responses. Avoid making everything look like clear glass or opaque plastic. Keep the slice large and easy to inspect, with a three-quarter camera angle that reveals the flesh, seeds, and thickness. INTERFACE Use a minimal editorial layout with generous whitespace, thin borders, restrained controls, and no decorative UI gradients. Top left: “MATERIAL STUDIES / NO. 009” A large italic serif heading split across two lines: “Melon” and “Jelly.” Small caption: “A slice of summer.” “A little wobble.” “Too soft to share.” Top right: A small status indicator showing “WEBGPU · LIVE” when the renderer is running. Right-side panel: “THE SPECIMEN” Three coordinated watermelon-inspired color presets. Firmness slider with its current value. Internal damping slider with its current value. “Give it a nudge” and “Reset” buttons. “¼ speed” and “Show mesh” checkboxes. Pause / Resume button. Bottom left: A short hint explaining that the slice can be grabbed and stretched. Live mass, relative volume, and kinetic-energy readouts derived from the simulation. Clearly describe illustrative units or approximate values where appropriate. Bottom right: A collapsible “Inside the experiment” section briefly explaining the physics and rendering. BEHAVIOR AND PERFORMANCE Support both mouse and touch input. Use pointer capture so dragging remains reliable when the pointer leaves the object. Make the layout work on desktop and mobile without controls covering the slice. Reuse buffers and avoid rebuilding geometry or compiling shaders during dragging. Keep interaction smooth and responsive. Respect reduced-motion preferences. If WebGPU is unavailable, display a clear explanation instead of silently substituting a fake renderer. VALIDATION Test dragging from several locations, strong stretches, repeated releases, ground collisions, all sliders, presets, pause, reset, and slow motion. Check that the model returns to a stable resting shape, seeds stay attached, the mesh remains intact, and there are no rendering errors. Prioritize the quality of the jelly response and lighting. The result should be something people want to keep grabbing and playing with.
Sampling on every arm: temperature 0.3, top_k 20, top_p 0.95, seed 42. TensorFold arms ran with DFlash2 drafting on (drafted output is byte-identical to serial on this engine).
Thinking-on runs that produced nothing. Qwen3.8-27B with thinking on spent its entire 260,000-token output budget reasoning (881K characters, 100 minutes at 43 tok/s) and never began the HTML. GLM-5.3-Flash on TensorFold TP2 with thinking on hit a 60,000-token cap the same way (200K characters, 43 minutes at 23 tok/s). An earlier 27B attempt was cut at 31,859 tokens by a 32K server context I had left set from a speed benchmark — operator error, listed in evidence.json, not counted against the model. The two arms above are the ones that finished: DeepSeek with thinking on, 27B with thinking off.
Repairs. Each arm got exactly one mechanical edit so that something could be recorded, documented in REPAIRS.md with the untouched original beside it. Neither edit fixes the real fault. DeepSeek's view matrix had its forward axis sign flipped, so the wedge sat behind the camera; with the sign corrected the tetrahedral surface has large holes and the camera radius puts the eye inside the mesh. Qwen3.8-27B declared a counter with the same name as a function (SyntaxError); once renamed, the mesh builder passes coordinate arrays where it expects node indices and throws on the first edge. No simulation ever starts.
Recording method. Headless Chrome 153 with WebGPU on Metal, 1280×800, real-time capture (these are not fixed-step renders — cadence is what the page actually did). Five scripted pointer drags from different points with two seconds of wobble time after each, then the "Give it a nudge" button. Both videos show the repaired build and are labelled so.
Pending. GLM-5.3-Flash (TensorFold CUDA TP2, thinking off) is generating as this page goes up; Qwen3.8-Flash-Next on TensorFold is queued behind it on the same Spark. This page will be extended, not replaced.
What this brief is. It is long and prescriptive on purpose: a real WebGPU device, WGSL, a volumetric soft body, pointer capture, reduced-motion, a specific UI with named controls. That is a lot of independent things to get right in one file with no test loop, and it is fair to read the two results as "hard brief" as much as "weak model". A follow-up with the same physics and a looser UI spec would separate those.