Seamline
A steel panel goes in, and a weld plan somebody can argue with comes out.
Every seam found, put in a build order, reviewed in 3D, released, and then run by a simulated cell that faults and recovers. The part worth stealing is not the welding: the browser and the server share one compiled Rust core, so what the editor calls a valid plan and what the server will accept cannot drift apart.
- Rust
- WebAssembly
- TypeScript
- React Three Fiber
- Postgres
spec
↓ seams
↓ sequence
↓ review
↓ release
↓ run
↓ fault
↓ retry One core, compiled twice
seamcore is one Rust crate holding spec validation, seam extraction, the
sequencer and the plan checker. It is compiled to WebAssembly two times — once for the browser, once for node. The editor runs it on
every keystroke for instant validation; the server runs the same build against every saved
plan. Anyone who has kept duplicate validation in sync across an API boundary knows what
that is worth.
- State transitions are enforced in SQL, not in application code. Every change is a conditional update on the current status, and partial unique indexes allow one draft per panel and one open run per revision. A stale or duplicated request gets a 409 instead of racing.
- A run is an event log. The cell writes each event to Postgres before publishing it, and the operator screen rebuilds itself from that log over server-sent events, resuming from the last event it saw. Two operators clicking start at once cannot start the cell twice, and a server restart shows up as a fault they can retry — the same as a controller losing power.
- The sequencer is rules, not an optimiser. Tack everything, weld from the centre out, alternate faces to balance heat. Stated that plainly the rule failed on the seams that matter most — a full-length stiffener runs through the centre, so neither end is further out. Those are welded as two halves that both start at the centre.
What it is not
Parametric flat-bar panels only: no CAD import, no tees, no bulb flats, no cutouts. Reading STEP geometry properly needs a kernel and considerably more than the day this was built in, and faking it on top of a mesh would have put the time in the wrong place. The sequencing heuristic stands in for distortion modelling and is not a substitute for it. The weld cell is simulated — no robot motion, no weld parameters, no controller. There is no login, because it is a public link.
One thing the tests would not have caught. Crossings are modelled the way the parts are actually built: longitudinals run continuously, transverses are cut into pieces between them, and at each crossing the fillets split around the web so every piece end takes four joint welds. The first draft had two. Drawing the parts out on paper found it, before anything in the suite did.