MARB-A: three AIs build the same house

Lane: MARB-A architecture · Task: PH-1 "Bungalow" · Kit pascal-v0.1 · Grader v0.1.1 (frozen) · 2026-07-09 · n=1 per cell

MARB was built to grow beyond one machine, and this is the first expansion: instead of a 100-part printer frame graded as STEP geometry, an AI builds a fully specified house in Pascal, a free, open-source 3D building editor, driving the tool's own agent interface in a sealed session. It is also the first MARB lane graded entirely outside the CADCLAW engine — the submitted artifact is the tool's scene export, scored against a reference layout.

Two of the three models twisted every piece of furniture out of square. One was perfect — in ten minutes. The renders below are Pascal's own output, not mock-ups.

Two 3D renders of the same house by Pascal: top shows furniture rotated at odd angles (Claude Fable 5); bottom shows furniture correctly squared (GPT-5.5 Codex).
Same task, same tool, rendered by Pascal itself. Top: Claude Fable 5 — every position exact, every rotation written in the wrong units (Claude Opus 4.8 at max effort failed identically). Bottom: GPT-5.5 Codex — correct units, 100% orientation, 9.9 minutes.

The task

The blind kit hands the model a fully dimensioned bungalow: six rooms, six doors, nine windows, 22 pieces of furniture from Pascal's built-in catalog — exact coordinates included, on purpose. Placing things is copying numbers; the test is whether those numbers survive the trip through a real tool's contract. Each model ran sealed — no human help, no access to the reference layout or the grader.

The board

Model · effortORIENT-AGatesWall-clockTokens billed
GPT-5.5 · Codex · xhigh100%all PASS9.9 min2.11 M (22k out)
Claude Opus 4.8 · max31.6%collisions FAIL19.9 min13.50 M (313k out)
Claude Fable 5 · medium31.6%collisions FAIL117.8 min¹4.83 M (129k out)

All three placed every wall, door, window, and furniture item at 0.0 mm median error, with an exact bill of materials. ¹ Includes human approval latency (this run predates auto-approval); the other two ran fully auto-approved. Token meters count differently across vendors — the bills are listed, not compared.

Three-panel bar chart comparing orientation accuracy, wall-clock minutes, and token bill for the three models.
Positions saturated at 0.0 mm for all three — orientation and cost are what separate the cohort.

The trap: one undocumented number

In the tool version tested (@pascal-app/mcp 0.3.1), the furniture rotation input takes a bare number — no units stated anywhere a model can see — and stores radians (the three.js convention). Both Claude models wrote degrees. The software accepted 90, 180, 270 without a word. Rendered by Pascal itself: furniture 10–37° off square, a kitchen unit through a wall, the collision gate failing. The orientation score reads 31.6%, but earned credit is roughly zero — the "correct" items just happened to face the default direction.

Opus 4.8 at max effort ran the most careful check of the three: it placed two disposable test sofas, read the values back, deleted them — and still concluded degrees, because the field echoes whatever you give it. Reading back your own number is the one experiment that cannot reveal units.

Codex wrote radians and scored 100% — verified the hard way: correct values in the exported file, its own construction route, and a transcript scan showing no access to anything it shouldn't touch. One honest unknown: Pascal's source is public, so we cannot rule out that Codex knew this specific tool from training rather than knowing 3D conventions in general. The trap is real either way — two frontier models fell in.

The cleanest cost lesson is within one vendor: Claude at medium effort and Claude at max effort produced the identical failure. Max effort bought a better process — not a better answer.

The deeper gap: no eyes

On the mechanical board, drivers can render and inspect their work in progress. Headless Pascal has no picture: GLB export is stubbed and there is no render tool, so a model that places furniture cannot see it. One look at the first placed sofa would have caught the units error instantly — it's why you walk the site. Kit v0.2 adds a sanctioned self-render tool (top view plus elevations from the scene export); shipping it starts a new cohort. Nothing forbade the models from building their own renderer this round; none tried.

Side-by-side floor plans: the goal layout and the as-built layout with furniture footprints visibly rotated off square.
Goal vs built (Claude Fable 5), plotted from the graded scene: walls and openings aligned to the millimeter, furniture footprints skewed by the units error.
Animated build timelapse: walls appear, then doors and windows, then furniture, replayed from the session transcript.
One build replayed step-by-step from the session transcript: walls, then openings, then furniture.

Check our work: every mistake on the record

Provenance and shelf life

Task, grader, figures, exported scenes, and the full run registry — including the caveats above — are public in the MARB repository (see results/pascal_runs.json and tasks/pascal_house/). The answer key is gated separately to keep future runs clean. Fair warning: Pascal's development branch already adds unit documentation to the rotation field — the right fix, and it means this particular trap will not survive their next release. That is the point of measuring now. As far as we can find, this is the first scored benchmark for AI assembly in Pascal; if you know of one, tell us and we will link it.

MARB-A results are a separate cohort family and are never pooled with the mechanical board. Every cell here is a single run; repeat seeds are the next step, same as they were on the mechanical side.