Roshera

Rev alpha Kernel Rust B-Rep Surface MCP · REST

Self-certifying geometry kernel

An agent can build the part.
Proving it didn't lie is the product.

Roshera is a native Rust B-Rep kernel built to be driven by machines rather than operated by hand. Every operation that touches geometry returns a verifiable certificate: soundness across nine structural invariants, DOF accounting, conflict witnesses.

Where it cannot answer inside a verified envelope, it refuses with a typed error rather than returning an approximation labelled exact.

The reason this matters is not craftsmanship. It is that the operator has changed. For forty years a geometry kernel answered to a human with eyes — someone who would notice a face flipped inside out, a bore that didn't go through, a fillet that quietly ate a neighbouring feature. The kernel could be approximately honest because a person was holding the other end of the contract.

An agent has no eyes. It receives a solid, believes it, and builds the next twelve operations on top. A wrong answer does not announce itself at the moment it is produced — it surfaces four steps later as a part that will not manufacture, and by then the reasoning that produced it is gone. Silence is the failure mode, and no amount of model capability fixes it, because the model is not the thing that is wrong.

So the contract has to move into the kernel. Not a confidence score, not a validation pass you can forget to run — a structural proof, computed under the same lock as the mutation, returned with every single call, failing closed.

Ø50 Ø16 6 13 0.8×45° ALL ROUND SECTION A–A A A 4ר5 ON Ø38 PCD
Flange Ø50 — as built by an agent, MCP callsSolid 12 · SOUND
Note 1 — provenance Dimensions above are the part in the session on the right, not an illustration. Its certificate is reproduced in full on The Certificate.
Solid 12SOUND drag to orbit
Conical ×13 — chamfers Cylindrical ×7 Planar ×3
Ø50 flange — 23 analytic faces, 0.8×45° chamfers on all 39 convex edges.
Surfaces coloured by kernel classification23 faces

What you are looking at

Twenty-three faces, and the kernel knows what each one is

That is not a mesh with a smooth shader on it. It is twenty-three analytic faces — planar, cylindrical, conical — and the colours are the kernel's own surface classification, not decoration. Every band on a chamfer is a real 0.8×45° conical face carried on its own surface, not a darkened edge in a triangle soup.

The distinction is load-bearing. A face that knows it is a cylinder of radius 8 gives an exact bore area, an exact mass moment, and a watertight mesh at any tessellation density. A face that is merely 400 triangles which happen to lie near a cylinder gives you numbers that look right and drift — and it cannot answer the question "is this a through bore?" at all.

Chamfering all thirty-nine convex edges in a single call is the operation where kernels quietly produce a leaky solid: each blend removes material at a vertex where three surfaces already disagree. This one returned watertight, manifold, zero boundary edges, with the Euler characteristic unchanged at −8 — the four bolt holes and the bore still correctly accounted for after the blend.

Certificate — solid 12SOUND
watertight
true
manifold
true
oriented
true
self-intersection free
true
euler characteristic
−8
boundary edges
0
non-manifold edges
0
errors
[ ]
Note 2 — order dependence, observed live Applying the chamfers before drilling the bolt holes left this solid unsound at the seam, and the kernel halted after the first hole rather than serving the rest. Drill first, chamfer last. The family of coincident-face weld defects behind this is discussed on the Casebook, including one that is now fixed and one whose documentation outlived the bug.

The wager

A kernel that refuses is worth more than one that guesses

Every kernel has an envelope. The question is what happens at its edge. The industry's default answer is to return something — a fitted surface, a tolerance-widened weld, a result that is probably fine — because a human will catch it if it isn't.

We take the opposite position, and it costs us. A refusal is a worse demo than a wrong answer, because the wrong answer looks like a part. But a refusal is the only response an agent can actually act on: it names the entities, states the reason, and says what to do instead. The agent recovers on the next call. A silent approximation cannot be recovered from, because nothing knows it happened.

This is also why the envelope is published rather than hidden. A kernel selling honest refusal that conceals its own limitations has already failed its own test — so the map of what does and does not work is a first-class page of this site, maintained against the source tree rather than against intent.

REFUSED  chamfer_edges

Edges 32 and 2 share corner vertex 0 —
same-kind corner-patch synthesis for this
vertex kind is not yet implemented.
Do not apply sequentially.
Note 3 — what a good refusal contains The entities (edges 32 and 2, vertex 0), the mechanism (same-kind corner patch), the status (not yet implemented — not "invalid input"), and the trap to avoid (sequential application, which would silently produce a different wrong answer). The agent recovered on the following call and chamfered all thirty-nine edges in one pass.