Sixteen kinds of measurement, standing between a model that looks right and a claim that it is.
What it does
You describe a part. It asks questions until the answers are numbers: bore diameter, wall thickness, the clearance the mating part needs, the printer it comes off. Those become a contract. Then it builds the geometry as build123d source and measures the model against that contract.
16 kinds of measurement. A hole's distance from a datum, the thinnest wall on the thinnest body, whether two parts collide on assembly, whether the thing is watertight. A type the enforcer cannot measure is an error rather than a silence, which is what stops a contract from declaring something nothing will check.
Every result lands in a run record, written read-only and hashed: the source, the contract, the STEP file, the meshes, the snapshots, the tools that made them.
What it refuses to tell you
That your part is fine.
Four exit codes, one of them a pass. 1 means something was measured and missed. 2
means the run could not happen. 3 is the one that matters: INCOMPLETE, meaning
nothing failed and something could not be checked. A skipped stage lands there. So does a
fit coupon it told you to print and you did not.
Honest runs sit at 3 for a while, because of the rule underneath all of it. Geometry
decides whether the model is right. It decides nothing about fit, friction, retention,
wear, heat or fatigue. Those need a printed part and somebody holding it.
The suite is green at 604 of 604, and no part has been through the full gate. A tool that reports a number it has not earned is worse than one that says so, and this one says so.
The version I tried first
SPATIAL was going to be the whole thing: describe an object, watch a millimetre-accurate model appear, then slice and explode it in a WebGPU viewport that does not fight the camera. I got to phase 2 of 6, 1,707 lines, 44 tests, and stopped.
Not because it broke. The viewport was the part I was best at and the least important part of the problem, with people years ahead of me on it. The half that made it worth using, the path from a sentence to a model, was still a design document.
Two codebases, different languages, nothing carried over but the part of the problem that mattered. I did not need to look at a part more comfortably. I needed to know it was right before spending a night of filament finding out. Cutting the half I was proud of to keep the half that was load-bearing is the trade I would make again.
Why it is here
Same argument as the rest of this site, pointed at a printer. An agent that writes geometry is an agent acting on a real system: it produces a file that becomes an object that either fits or does not, and no amount of confidence in the model settles that.
I did not know parametric CAD when I started this. I am learning Fusion 360 now for the
same reason I learned build123d: the goal needed it, so it went on the list. Picking up
the tool the problem asks for is most of what this work is.
The interesting engineering was never the generation. It is the gate, and the gate is built.