docs: PRECISION.md -- scope, guarantees and limits, for lay readers

Answers, in plain language, what "accurate" means for this project: the
difference between model precision, machine resolution and achieved
accuracy, and why a design file should be far tighter than any machine
that will realise it.

Scoped hard to additive and subtractive manufacturing (section 0).
Formative processes, crystal growth, lithography, joining, metrology and
surface finish are explicitly out. Section 10 asks that additions widening
that scope be refused rather than accommodated -- a borrowed tolerance
figure carries no evidence from this project while looking exactly as
authoritative as a measured one.

Section 7 states what the compiler does NOT do: no assembly layer, no
structural analysis of any kind, prismatic shapes only, no toolpaths,
verified only within its tested range. A part passing every check here may
still be structurally unsound.

Records the facets limit: at facets=48, corner radii up to 4.67 mm stay
within 0.01 mm of a true curve. Above that facets must rise, growing with
the square root of radius.
This commit is contained in:
2026-08-20 06:42:02 -05:00
parent 7b3182c0b9
commit 114189c0cb
+323
View File
@@ -0,0 +1,323 @@
# What "accurate" means here
**Written for readers with no engineering background.** No mathematics beyond
arithmetic is required.
---
## 0. Scope — read this before anything else
This document has a deliberately narrow subject. It is not a guide to precision
in general, and it must not be allowed to become one.
**In scope: two manufacturing families only.**
- **Additive** — material added in layers. 3D printing of plastic, metal or
concrete.
- **Subtractive** — material cut away from a solid block. Milling, turning,
grinding, lapping, polishing.
**Out of scope, and deliberately so:**
- **Formative** processes — casting, forging, injection moulding, stamping,
sheet bending. Material reshaped rather than added or removed.
- **Crystal growth, deposition and lithography.** Semiconductor fabrication is a
different discipline with different physics and different units of concern.
- **Joining** — welding, adhesives, fasteners, fits and interference.
- **Metrology** — the science of measuring finished parts.
- **Surface finish** — roughness and texture, as opposed to dimension. These are
routinely confused; they are not the same property and are not discussed here.
Section 5 is the only place another domain is mentioned at all, and it is
mentioned to *bound a claim*, not to extend the subject.
**Why the boundary is drawn this hard.** The Mechanical Compiler produces
prismatic timber-strap members for additive and subtractive workflows. Every
number below was measured against that use. A tolerance figure borrowed from
casting or lithography would carry no evidence from this project and no
guarantee from this software, while looking exactly as authoritative as the
figures that do. **Scope creep in a specification is more dangerous than scope
creep in code, because nothing fails visibly when it happens.**
---
## 1. The one idea that makes the rest make sense
Nothing manufactured is exactly the size it was meant to be.
Ask a carpenter for a shelf 800 mm long and you will get something between about
799 and 801 mm. Ask a machine shop and you will get 799.98 to 800.02. Nobody
ever hits the number exactly, because "exactly" would require infinite care.
So engineering does not ask for exact. It asks for **exact enough, and states
how much is enough**. That stated allowance is a **tolerance**:
800 mm ± 0.05 mm
meaning anything from 799.95 to 800.05 is acceptable.
A tolerance describes the **worst** case, not the typical one. If a part is
usually within 0.05 mm but occasionally out by 0.5 mm, its tolerance is 0.5 mm.
The bad case is the one that jams the assembly.
### Units
| | | in mm | comparison |
|---|---|---|---|
| millimetre | mm | 1 | credit card ≈ 0.8 mm thick |
| micrometre ("micron") | µm | 0.001 | human hair: 20–100 µm across |
| nanometre | nm | 0.000001 | about 5 silicon atoms |
**Anchor for everything below: a human hair is roughly 70 µm, or 0.07 mm.**
---
## 2. Three different numbers, constantly confused
**(a) Model precision.** How exactly the *design file* describes the intended
shape. No material involved. **This is the only one this software controls.**
**(b) Machine resolution.** The smallest step a machine can be *commanded* to
take. "0.01 mm resolution" on a printer's spec sheet is this number.
**(c) Achieved accuracy.** How far the *finished object* differs from the
design. The number that decides whether the part works.
Resolution is the most quoted and least meaningful. A printer stepping in
0.01 mm increments can still produce a part 0.5 mm wrong, because plastic
shrinks, belts stretch, machines warm up, and parts sag. One industry write-up
puts it plainly: print resolution determines only the smallest feature the
software will not ignore. Building a wall from smaller bricks does not make the
wall the right length.
> **The most common error in this area:** quoting a machine's resolution as
> though it were the accuracy of the result.
---
## 3. The ladder of real-world precision
Additive and subtractive only, per section 0. Typical values, not records;
every one depends on material, size, temperature and operator skill.
| Process | Typical accuracy | In hairs (~70 µm) |
|---|---|---|
| 3D-printed concrete | ±0.5 mm at best, often several mm | 7+ |
| Desktop FDM printer | ±0.3 mm under 100 mm; ±0.2% above | 4 |
| Resin printer (SLA/DLP) | ±0.2 mm | 3 |
| Everyday CNC milling | ±0.025 mm | 1/3 |
| Good CNC milling | ±0.014 mm | 1/5 |
| CNC positioning, slow feed | ±0.0025 mm | 1/28 |
| Precision grinding | ±0.002 – 0.005 mm | 1/20 |
| Lapping / honing | 0.0001 – 0.001 mm | 1/700 |
**Grinding and polishing do reach 0.001 mm and better.** Lapping works below one
micron routinely.
Two observations.
**The spread is a factor of several thousand** across these two families alone.
There is no single number for "how accurate is manufacturing."
**Size makes it worse.** The FDM row switches from a fixed figure to a
*percentage* above 100 mm. Errors that scale with size — thermal expansion,
machine flex, shrinkage — are the norm. A process holding 0.014 mm on a small
part may hold only 0.097 mm at 500 mm. **This is why assembling large printed
structures is hard, and why it is not attempted here.**
---
## 4. Why the design file must be far tighter than the machine
> If no machine on Earth holds 0.0001 mm, why compute to 0.0001 mm?
Because errors accumulate. A finished part's error is the sum of every
contribution: design, translation to machine instructions, machine motion,
material behaviour. If the design consumed a large share of the allowance, there
would be none left for the parts that genuinely cannot be improved. The common
rule of thumb is that the manufacturing process should consume only about **ten
percent** of the tolerance on the drawing. The design should consume far less.
**An analogy.** You are budgeting a 60-minute journey. The train takes 45
minutes and is sometimes 10 minutes late — unavoidable variability, so you plan
around it. The walk to the platform takes 4 minutes. You would not agonise over
whether it is 4 minutes or 4 minutes and 2 seconds.
**The design file is the 2 seconds.** Computing to 0.0001 mm is not a claim that
any part will be that accurate. It guarantees the design contributes *nothing
worth counting* — that when a part comes out wrong, the file is not the reason.
Model precision is cheap; machine precision is expensive. Grinding can cost
several times more than milling for the same feature. Tighter arithmetic costs
nothing — same runtime, same code.
---
## 5. Curves, and the one hard limit
Computers do not store curves. They store corners.
Every rounded corner here is a fan of short straight lines, like a stop sign
standing in for a circle. The shape is always very slightly smaller than a true
circle, because each straight line cuts the corner.
The setting is **`facets`**, currently **48** — a full circle drawn with 48
segments.
| Corner radius | Gap from the true curve |
|---|---|
| 1.25 mm (this project's 4-strap corners) | 0.0027 mm — 1/26 hair |
| 2.00 mm (this project's 3-strap corners) | 0.0043 mm — 1/16 hair |
| 4.67 mm | 0.0100 mm — the limit in section 6 |
| 50 mm | 0.107 mm — 1.5 hairs |
**At fixed `facets`, the error is proportional to radius: double the radius,
double the error.**
**The rule:** at `facets = 48`, radii up to **4.67 mm** stay within 0.01 mm of a
true curve. Above that, raise `facets`. The required count grows with the
*square root* of radius, so a 50 mm radius — forty times larger — needs
`facets = 158`, not forty times as many.
Every shape this project produces uses radii of 1.25 to 2.00 mm, well inside the
limit. **A documented boundary, not a defect** — but a real one.
### The only cross-domain note in this document
It is sometimes said that greater precision is achievable in space. Within this
document's scope the claim does not apply: no additive or subtractive process
described above is performed in orbit at production scale.
The evidence usually cited comes from **crystal growth**, which section 0 places
out of scope. Microgravity does improve *material quality* — a survey of 160
semiconductor crystals grown in orbit between 1973 and 2016 found improvement in
at least one metric for 86% of materials studied. That is purity and uniformity,
not dimensional control.
**The distinction:** space improves *what the material is*. It does not improve
*where the surface sits*. Different kinds of precision; improving one does not
improve the other. Nothing further about space belongs in this document.
---
## 6. What the Mechanical Compiler guarantees
**Every dimensional quantity agrees with the reference implementation to within
0.0001 mm, across all 123 verification cases, with no exceptions.** That covers
each cross-section's overall width and height, the thinnest surviving wall, and
every internally solved placement value.
That is **100× tighter** than the 0.01 mm criterion adopted for this project,
and about 1/700 of a human hair.
Boundary curves are within **0.0027 mm** (4-strap) and **0.0043 mm** (3-strap)
of true curves, per section 5.
Accuracy does **not** degrade with object size. Positions are computed by direct
calculation — "this corner is where these two lines cross" — solved in one step
from the original numbers, never accumulated by adding increments. At a
coordinate of 100 metres the representational limit is around a hundred-billionth
of a millimetre.
---
## 7. What the Mechanical Compiler does NOT do
This section is as important as section 6 and should be read with equal weight.
**It has no assembly layer.** It describes the cross-section of *one* member.
Nothing positions multiple members in a shared coordinate frame. For a bridge,
each component would be modelled to the accuracy above — arranging them into a
structure does not exist here and belongs in separate software.
**It models one shape family.** Prismatic members: a two-dimensional
cross-section swept along a straight axis. Not tapers, not curved axes, not
varying sections, not surfaces of revolution, not anything organic.
**It performs no engineering analysis whatsoever.** No stress, no load, no
deflection, no buckling, no fatigue, no thermal behaviour, no failure
prediction. It reports geometry — area, wall thickness, mass — and nothing about
whether a member will carry anything. **A part that passes every check in this
software may be structurally unsound.** Assessing that is a separate discipline
and requires a qualified engineer.
**It verifies only its tested range.** 123 cases; strap widths 13.4–15.875 mm;
corner radii 1.25–2.00 mm. Outside that, no measurements exist. Section 5's
radius limit is exactly why this matters.
**It agrees with a reference; it is not proven exact.** Both programs draw
curves with flat segments. Section 5 bounds the absolute error by calculation;
the test suite only checks that the two agree.
**Cross-section area is held looser than dimensions.** Area is derived from the
flat-segment approximation, so it inherits it. Two correct programs can disagree
slightly on area while agreeing exactly on every dimension. Area is not a
position — it places no material — so it is held to the 0.01 mm-equivalent
criterion rather than 0.0001 mm.
**It says nothing about surface finish, material properties, or joining.** Per
section 0.
**It does not generate machine instructions.** No toolpaths, no G-code, no slicing.
---
## 8. Summary
- A tolerance is a stated allowance describing the **worst** case.
- **Resolution is not accuracy.**
- Within additive and subtractive processes, real accuracy spans a factor of
several thousand. Grinding and polishing reach 0.001 mm and better.
- The design must be **much tighter than the machine**, so it contributes
nothing worth counting.
- This software holds every dimension to **0.0001 mm** — 100× tighter than
required.
- Curves: fine below **4.67 mm radius**; above that raise `facets`, which grows
with the square root of radius.
- Accuracy does **not** degrade with object size.
- **One member at a time. No assembly. No structural analysis. No toolpaths.**
---
## 9. References
Machining and grinding tolerances:
- https://www.tuofa-cncmachining.com/tuofa-blog/standard-machining-tolerances.html
- https://www.fiveflute.com/guide/first-principles-of-manufacturing-cnc-milling-tolerances/
- https://www.zenithinmfg.com/grinding-vs-milling-tolerances-guide/
- https://www.lkmixer.com/blog/what-is-the-difference-between-grinding-and-lapping/
3D printing accuracy, and resolution versus accuracy:
- https://protoplastic.pl/en/dimensional-tolerances-technology-versus-3d-printing-accuracy/
- https://projet.my/guide-to-3d-printing-tolerances-accuracy-and-precision/
Concrete printing:
- https://www.sciencedirect.com/science/article/pii/S0008884622000643
Microgravity materials (out of scope; cited only in section 5):
- https://www.nature.com/articles/s41526-024-00410-7
Standards worth knowing by name: **ISO 286** (fits and IT grades), **ISO 2768**
(general tolerances where none is stated), **ISO 230-4** (how machine-tool
accuracy is measured).
Figures from commercial sources are typical values published by suppliers, not
independently verified measurements, and are indicative only. The claims in
sections 6 and 7 are measurements from this project's own test suite,
reproducible with `make test`.
---
## 10. Maintenance note
**This document is scoped by section 0. Additions that widen the scope should be
refused, not accommodated.**
If a reader needs casting tolerances, weld distortion, surface roughness or
lithography, the answer is a different document — not another row in section 3's
table. Every such row would look as authoritative as the measured ones while
carrying no evidence from this project.
Section 7 should grow more readily than section 6. A limitation discovered and
written down costs nothing; a limitation discovered by someone who trusted this
document costs a great deal more.