Weaver Shed
A handweaver's shed at first light, and a machine you actually operate rather than watch. Press a treadle and the warp splits into two sheets — that gap is called the shed, and it is the thing you are looking at. Throw the shuttle through it, beat the weft home, and the cloth grows by one pick. Then the other treadle, and again: the even warp threads ride one shed and the odd ones the other, which is exactly why plain weave interlocks. The pressure is not a timer but the pack — how promptly you beat after each throw — and it is recorded permanently in the spacing of the weft lines you leave behind. Modelled, composed and coded end to end by AI agents.
Play it now
A / D press a treadle · SPACE throws the shuttle · B beats it home · P pauses, R restarts
The contract this piece was built against
Every piece in this lab is authored against a contract and then audited against it. This cycle the concept painting could not be generated — the image account was out of credits — so the contract stayed in words, and each element it names still got its own modelled unit. The engine frame beside it is the shipped build.
The written contract. A handweaver's shed at first light: a large wooden floor loom with its warp stretched taut from the back beam down to the cloth beam, four harnesses of wire heddles in the castle above, a boat shuttle resting on the finished cloth, the hinged beater angled back, two treadles below; a bobbin rack strung with cones of madder-red, indigo and undyed linen, a warping board hung with a measured warp chain, a low bench worn smooth at the seat, a basket of wound quills; whitewashed plaster, a wide-planked oak floor, and a small paned window throwing cool morning light across the warp so the threads catch like harp strings.

The shed is the readout
There is no bar to read. Pressing a treadle lifts alternating harnesses and the warp physically separates into an upper and a lower sheet — the triangular gap the shuttle flies through. Closed and open, from the weaver's own seat:


Code-modeled in Blender
Eight units, one per element the contract names, written as Blender code against the platform sculpt kit — no downloaded models anywhere — and rendered by the studio harness for audit before entering the engine scene. The loom ships named nodes for every part that moves, so the engine animates the real machine rather than a stand-in.








Measured
The lab's signature numbers for this piece, including the ones that are not flattering.
| Measurement | Value | Condition |
|---|---|---|
| Warp threads, split for plain weave | 13 / 13 | even threads on one shed, odd on the other |
| Shed gap when a treadle is down | 0.156 m | asserted at boot to be wider than the shuttle |
| Harnesses / treadles rigged | 4 / 2 | named nodes driven from the loom's own export |
| Picks in a finished band | 14 | each one a weft line you can count in the cloth |
| Beat window counted as tight | ≤ 1.30 s | after the throw; beyond 2.80 s the pick lands loose |
| Audited playthrough | 14 / 14 picks, pack 1.000 | autopilot drove treadle → throw → beat for a full band |
| In-fiction refusals proven | 3 / 3 | throw with no shed, beat with no throw, re-press an open shed |
| Sampled note files shipped | 47 | harp, koto, cello, clarinet, marimba, celesta |
| Ambience beds | 2 | shed room tone and the dawn outside the window |
| Blender units modelled | 8 | one per element in the written contract |
| Streamed asset payload | 5.8 MB | the eight units, nothing else |
| Time to first frame | ~18 s | URP under SwiftShader on the audit host — slower than a GPU client |
| Console errors across the audited run | 0 | boot, 14 picks, three refusals, pause, restart |
What the piece earned
Engine and craft features this piece genuinely used, with the constants it settled on.
A real plain weave
Shed one lifts the even warp threads and shed two the odd ones, so consecutive picks interlock the way cloth actually holds together. The split is asserted at boot, not assumed.
The cloth is the record
Every pick you beat leaves a weft line, and its spacing encodes how promptly you beat — tight picks sit close, loose ones leave a gap. The quality of your rhythm is legible in the finished band rather than in a meter.
Refusals that cost nothing
Throwing with no shed open, beating with nothing thrown, or pressing a treadle that is already down are each refused in the loom's own language and cost only the moment — consequence without a wall.
Composed from sampled instruments
Forty-seven real note files across six instruments in D dorian — a patient working morning rather than a sweet one — with two layered ambience beds, and the loom's own sounds drawn from the same library. No synthesis anywhere.
Made by AI, compiled by the real Unity 6 engine
The loom, shuttle, rack, warping board, bench, basket, window and lamp are eight code-modeled Blender exports lit in a URP scene; the piece's own code drives the shed, the shuttle's flight, the beater and the growing cloth. Contract, models, score, engine code and audit were authored end to end by AI agents, then compiled by Unity 6 to WebGL — the same engine and build path a shipping game would use.