Fabdose

Engineering record

How the analysis engine is tested

Fabdose is built by one person, so the analysis engine does not get checked by a QA department. It gets checked by being pointed at thousands of real CAD files until something breaks. This page is the record of those runs.

Read this first

This is internal testing, not customer results. Fabdose publishes no customer case studies, no cost savings figures and no ROI numbers, because it does not have the data to produce any of them honestly. Everything below is the product being run against public CAD datasets and breaking.

2,600 real parts, four process and material combinations

In September 2026 the engine was run against 2,600 STEP files drawn at random, with a fixed seed so the sample can be reproduced, from the Fusion 360 Gallery dataset of 42,912 parts modelled by real people. Each part was analyzed four times: as ABS injection molded, aluminium CNC machined, aluminium die cast, and steel sheet metal. That works out to roughly 9,300 individual analyses, all run through the same pipeline entry point the desktop app calls.

2,324 of the 2,600 completed all four combinations. The other 276 were never attempted, because a worker process died partway through its chunk, which is one of the findings rather than a footnote to them.

Across the three molding and forming processes, about 6,972 analyses, the run produced no exceptions, no NaN or infinite values, no negative physical quantities, no missing report sections and no agent-level partial failures. One part was the exception, and it is the first item below.

What broke

A part with negative volume

One three-face part reported a volume of -117.98mm³, and that negative number propagated into the wall thickness fallback and into the material cost line. The cause was a STEP exporter writing a shell with reversed orientation, which OpenCascade integrates into a signed volume while still reporting the solid as valid. Fixed by normalizing the sign, with the offending part checked in as a regression fixture. Shipped in v0.9.0.

CNC undercut analysis could kill the process outright

A five-face part ended the worker with a segmentation fault, then on a second attempt hung at full CPU instead of crashing. The 60 second internal timeout could not fire, because it was built on a signal that only gets delivered when Python regains control, and the code was stuck inside one long native call. Undercut analysis now runs in its own operating system process that can be killed outright. The underlying geometry problem was traced to OpenCascade's incremental mesher and worked around with a three step meshing ladder, which turned that part from a 90 second failure into a 5 second pass. Both shipped in v0.9.0.

Files with more than one body were mostly ignored

Run against a second dataset, 250 mechanical parts from the ABC dataset, the engine turned out to be reading only the first solid in a multi-body STEP file and discarding the rest without saying so. In an independent 30 part sample, half the files held more than one solid, and 40 percent of those lost freeform surfaces entirely. The worst case carried 146 solids and 3,044 faces, of which the engine was looking at 37. Since v0.9.0 the app selects the largest solid by volume, states on screen how many other parts the file contains, and lets you switch to any of them.

A measurement that was quietly missing

Wall thickness was benchmarked separately over 1,000 real Fusion 360 Gallery parts. The number nobody had looked at was how often a part gets no wall thickness verdict at all, and it turned out to be 116 in 1,000. A self-hit filter was rejecting the far side of a closed surface, so a tube or a boss would find its own opposing wall and throw the measurement away. Relaxing it dropped 116 to 19, with no change to any of the 42 committed test fixtures. Before it shipped in v0.8.13, a second agent with no access to the original investigation re-derived the same result on a different random sample.

What is still wrong

The same sweep that produced the clean result above also produced this list, and none of it is fixed:

  • CNC undercut analysis has a slow tail. 51 of the 2,324 parts, 2.19 percent, ran past the timeout and came back with the undercut section marked as a partial failure instead of an answer. Another 112 took over 20 seconds. A code comment claiming the timeout was unreachable in normal operation had been written against five hand-picked test parts, and a random sample says otherwise. The budget has since been raised to 90 seconds soft and 150 hard, which moves the line without removing the tail.
  • 276 of the 2,600 parts were never analyzed at all and have not been re-run since.
  • The sweep covered 4 of 30 material and process combinations, and 4 of the 15 processes the app offers. Ceramic molding, wood machining, metal 3D printing and eight others were not in it.
  • The ABC dataset is a research corpus of mechanical parts and carries heavier freeform geometry than typical consumer CAD. How often a real upload to Fabdose contains more than one body was not measured at the time. A plain yes or no flag rides on completed analyses now, but there is not yet enough traffic behind it to report a number.

Why this page exists

A manufacturability checker is only worth anything if it is right, and you have no way to verify that from outside the app. The nearest substitute is showing the work: which datasets, how many parts, what broke, what got fixed and in which version, and which problems are still sitting open. Every fix above is in the shipped app. Every open item above is still open.

Check it against a part you already understand

The fastest way to test any of this is to feed Fabdose a part whose problems you can already list from memory, then see whether the face numbers line up. The first five analyses are free and it does not ask for a card.

This site uses analytics and session-recording cookies to understand how designers use Fabdose and to improve the product. Your CAD files are never involved. See our Privacy Policy.

How the Fabdose Analysis Engine Is Tested — Fabdose