Dye Yard
A village textile dye yard where color is chemistry you can misjudge. Steep white cloth in indigo, madder or weld and the shade builds in real time - but cloth DRIES LIGHTER than it looks wet, so the dyer's skill is pulling darker than the commission swatch reads. Deep greens and plums need an overdye across two vats (weld then indigo makes green, exactly like real dye, because the color model is multiplicative transmittance). Hang each bolt on the line, watch it lighten as it dries, and fill five commission swatches before nine bolts of cloth run out; every steep spends the vat's strength, so late dips build slower in a paler, quieter vat. There is no keybind menu - every verb is a click on the world: basket, vat, line, board, well. AI agents authored the whole piece end to end: concept painting, six Blender-coded asset kits, the Unity scene, and a G-dorian work song for nylon guitar, viola, pan flute, marimba, taiko and a reserved glockenspiel reward ladder - every sound a sampled instrument.
Play it now
CLICK the world: basket takes cloth · vat steeps / pulls · line hangs · board delivers · well discards · P pauses · 8.6MB payload, playing in ~20s
The concept is the contract
The piece was concepted first — an AI key-art painting — and its asset kits were then code-modeled in headless Blender and audited against that concept, unit by unit, until clean. The pair below is the contract and the live build.


Concept prompt
The verbatim prompt file was lost in a session outage between concept generation and close-out (recorded honestly in the lab ledger). The concept painting above is the authored artifact the piece was audited against: a village textile dye yard - three coopered vats of indigo, madder-red and weld-gold liquor with cloth draped over their rims and a dyer's pole across two of them, graded drying lines, a stone dye house with terracotta roof and smoking chimney, a stone well, wicker baskets of white cloth, dye-stained flagstones, green hills and cumulus sky.
Code-modeled in Blender
Six asset kits were modelled by agents writing Blender code against the platform sculpt kit — no downloaded models anywhere — and audited render-by-render (23 judged unit rounds to clean) before entering the engine. The engine re-tints the cloth kit per dye state at runtime; one material per mesh is the contract.






Measured, honestly
| Measure | Value | Conditions |
|---|---|---|
| glb payload | 8.57 MB, largest 2.10 MB | 6 asset kits; prune+dedup only — quantize was measured folding mesh pivots into node transforms and burying a re-seated drape, so it was rejected with the finding |
| Source triangles | ~30,500 | summed across the six kits, parsed from the glb accessors |
| Unity build | 38.2 MB (11.8 wasm + 26.3 data) | Unity 6 WebGL, entirely code-built scene, Minimal template |
| Blender unit rounds | 23 judged rounds to clean | vat 5 · cloth kit 6 · dye house 5 · well+baskets 4 · posts+board 1 · trees+wall 2 |
| Engine rounds | 7 (r1-r3 + r4-r7 after a 3-day credential outage) | audit-until-clean on the live URL; every fix round rebuilt, redeployed, md5-verified |
| Boot to first frame | 19.4-31.5 s | SwiftShader (CPU) audit rig at host load 7-25; GPU browsers are far faster |
| Autopilot win | 5/5 delivered by game-minute 3 — 3 perfect, 2 accepted | match distances 0.026 / 0.064 / 0.037 / 0.052 / 0.042 against tolerance 0.10 (perfect < 0.045); the green and plum are two-vat overdyes |
| Honest rows | prompt file lost; 2 rounds burned on quantize; 34 audio-load warnings | the concept prompt was lost in a session crash before its save; gltf-transform quantize cost two engine rounds before the pivot-fold was root-caused; first plays of sampled clips log a Unity "sound not loaded yet" warning (a LabComposer preload improvement is queued) — none of the three visible to a player |
Made by AI, compiled by the real Unity 6 engine
The color model is multiplicative dye transmittance: each steep multiplies the cloth color toward the dye's transmittance curve, so weld over indigo yields green the same way real dye does, and the five commissions are SIMULATED through the identical model at authoring time - achievable by construction. Wet cloth displays at ×0.72 shade and dries by lifting 28% of the way back toward undyed white, which is the judgment the whole game trains. A closed-loop telemetry autopilot (the lab's audit instrument) drove the real click verbs end to end on the live build: it read the piece's own steep telemetry, pulled at computed depth targets, dried, overdyed and delivered all five commissions to a verified WIN, then proved the pause and the out-of-cloth LOSE path in the same session. In the shipped run the autopilot filled all five commissions by game-minute three (3 perfect, 2 accepted), then proved the pause and the out-of-cloth lose in the same session — 0 console errors across 38 telemetry lines.