Day five · 12 August 2026 · sessions S-026 and S-027
Gabe glanced at a set of plates and spotted, in about five seconds, a fault that no measurement on this project had ever reported: an ordinary contemporary door, standing in the near right of every single frame.
Six experiments chased it. Four of them were wordings, and all four failed. Underneath them was the worst trap this project has hit — one that had already made two of my conclusions false, and did it in the most convincing way possible.
Seconds to spot it
~5
Arms chasing the wrong cause
6
False conclusions published
2
Primitives, before → after
488 → 72
16-bit levels surviving
5 of 1024
Sets authored blind, so far
all
The door
Six attempts, and the first four could never have worked
The first suspect was real, and it was not the culprit. The tunnel’s starboard service alcove — a recess in the wall — had been modelled as a solid box standing 0.60 m proud of the wall. A hole drawn as a lump. It was the single largest object in that camera’s frame, occupying 82% of the right-hand twelfth of it. A genuine fault, rebuilt properly as a void with the wall running around it.
The door stayed. It also survived renaming every door, doorway and hatch in the prompt; deleting the “recessed handle” phrase the leaf was visibly copying; pushing control strength from 0.90 to 1.00; changing to a 50 mm lens; and pulling the camera back three metres.
Meanwhile the depth map under the door was measurably featureless and symmetric — 192.0 on one side against 191.7 on the other. The map never asked for a door, and could not have prevented one.
I got ahead of the evidence
I published a framing-based explanation for the door before running the arm that actually settled it — on the very page Gabe uses to choose plates. It was wrong. The page is corrected and the lens is back where the camera was always specified. Recorded here because a confident wrong answer in a working document is worse than no answer.
The worst trap so far
The renderer was reading a file that no longer existed
Underneath the whole investigation was something that invalidates evidence rather than merely producing bad output. The image loader caches on the filename.
The depth map had been regenerated twice — once for the round hatch, once for the lens change — and each time uploaded over its own name. So the plate came back byte-identical from a map that had changed by seven thousand bytes. The renderer was serving the first version, forever, with no error and no warning.
What caught it was a physical impossibility rather than a suspicion: a lens change must move the framing. The framing had not moved by a single pixel. When the identical bytes were uploaded under a content-addressed name instead, the render changed substantially — proving the earlier ones had never seen the new map at all.
Two conclusions had already been drawn from the poisoned plates, and both were false.
That the model would not follow a circular aperture, and that maximum control strength could not recover it. The circle in fact renders cleanly on the first attempt. The failure mode is the worst kind available: the wrong plate is entirely plausible. It is a well-formed render of the right prompt at the right seed. It is simply the answer to the previous question — and nothing about it looks wrong.
Every upload now returns a name derived from the file’s own contents, which callers are required to use. A cache keyed on a name you reuse is a cache that lies to you.
Three of the four biggest errors this week were invisible in the output. They were only ever going to be caught by something that could not be true.
Gabe’s best question of the week
“How can we improve your ability to make depth maps?”
He had noticed I kept apologising for what the drawing tool could not do, and asked the better question. The tool understood exactly one shape — the axis-aligned box. Everything else was an approximation built out of stacks of them: a circle was a 48-step staircase, and a 45° chamfer was a flight of forty tiny boxes.
So rather than working around the limit, I removed it. A ray can be moved into a box’s own rotated frame, at which point testing it is ordinary arithmetic again — and a chamfer, a ramp or a canted wall becomes a single primitive.
| Before | After | |
|---|---|---|
| Total primitives in the tunnel | 488 | 72 |
| The circular hatch | 96 boxes | 1 slab − 1 cylinder |
| The four 45° chamfers | 40 boxes | 4 tilted slabs |
| Accuracy of a curve | 48 steps | exact at any resolution |
| Bulkhead thickness | 0.14 m, chosen only to hide the steps | free to choose |
One number in that table turned out not to be structural at all. Bulkhead thickness is a look parameter: at 0.34 m the staircase read as a ring of teeth around the hatch, and at 0.14 m it vanished into the rim — because what you see of an opening is its reveal. It had been set to hide an artefact, and was being carried as though it were a design decision.
Two upgrades measured, and rejected
The obvious next improvement was anti-aliasing the depth maps. Measured properly, one variable: it moved the map’s edge energy from 0.313 to 0.311, and the finished plate’s detail from 4.459 to 4.473, for four times the drawing time. Both movements are noise. The one-pixel blur already applied — which exists because rendered depth is sharper than the depth these control models were trained on — is doing that job already. Built, documented, and left switched off. It was worth an hour to find out rather than assume.
The second was more interesting, because it had been sitting in two open questions as the promising way out of a real trade-off. If eight bits of depth forces you to choose between resolving the near masses and reaching the far wall, use sixteen.
The admission
Every set on this project has been built blind
Gabe raised something I should have raised myself. He has a 3D application installed and asked whether it should drive the blockouts — for a reason that decides the question on its own:
I could see the models myself in Blender and look around.
Every set so far has been authored as coordinates in a text file and verified only by casting a few probe rays afterwards. Nobody has ever looked at one. And the evidence is damning: three of this session’s faults would have been obvious in ten seconds in a viewport. A recess drawn as a lump. A door in the near field. A staircase in the chamfers.
The honest position is a viewer, not a second source of truth — the primitive list stays canonical, and the 3D application becomes a way to see it and to author into it. Nothing has been installed pending his decision. But it is now the cheapest remaining source of error on the project, and I have been the one generating that error.

And then we built a ruler
The last thing we made overturned the decision that asked for it
The week had produced one quality number — a measure of how much fine detail a picture contains — and a growing suspicion that it could not distinguish richness from disobedience. A plate busy with invented clutter and a plate faithfully dense both score well.
So the final act of the week was to build a measure of obedience: score a finished picture against the geometry it was conditioned on, by asking whether the edges the map commanded actually appear where they were commanded. Then validate it against five cases with known answers, and point it at the four renders that had motivated it.
It immediately overturned the decision that had asked for it.
The setting we already used turned out to be better on both axes at once — more obedient and richer — so the trade-off we thought we were managing did not exist. And a claim about depth encoding that had seemed solid the day before turned out to help the near field rather than the far, which is the opposite of what it was adopted for. The full experiment is written up separately, including the one number it produced that was simply wrong.
That is a fitting place for the week to end, because it is the pattern the whole five days share. Every single significant finding arrived by contradiction — a measurement disagreeing with a belief, a primary source disagreeing with a memory, an impossibility disagreeing with a plausible picture. Not one of them arrived by reasoning carefully from what we already thought.
Where it stands
Five days: 558 renders logged, 63 numbered findings, six of which overturn an earlier one. We can build a room that stays the same room from several cameras, put a specific person in it whose face holds across cuts, move him where we want, light it, and cut it together with sound. We cannot yet reliably say where the camera stands, and the window at the end of the hall is still reinvented every time it is seen.
Six of the findings are marked as resting on a single geometry, a single camera and a single seed. They are being followed as working practice and cited as nothing. The next cheap thing is to run the same four arms on a second locale — a room that is deep and open where the tunnel is shallow and enclosed — and find out which of them survive contact with a different shape.
Sources: docs/01_SESSION_LOG.md S-026, S-027 · experiments E-036 to E-039 · decisions D-052 to D-063 · tooling tools/blockout_depth.py (rotated primitives, cylinders), tools/obedience.py, tools/comfy_api.py (content-addressed uploads). The 16-bit finding was verified by sending a synthetic 1024-value ramp through the loader and reading back what arrived.
