Validation & grades
Validation is not a stage of this engine; it is the engine’s spine. Every claim the pipeline makes — “this feature is built”, “this forbidden form is absent”, “these parts fit” — is backed by a named check that actually ran and PASSed on measured geometry.
The honesty rule
Section titled “The honesty rule”Three commitments, enforced structurally rather than by convention:
- A feature is only claimed after its validators PASS.
builtcan only be written when every check in the feature’sverified_bylist has PASSed — and the schema itself enforcesbuilt ⊆ supported, so an unsupported feature literally cannot serialize as built. - An unknown name is a load error, never a silent skip. Every check
name, recipe op and joint type binds against its registry at catalog load.
A typo is a
CatalogErrorbefore any geometry exists. - A check whose implementation is unavailable honestly does not run. It is reported as an ENGINE GAP finding and any feature it verifies stays honestly un-built — never a silent no-op that still claims its features.
Check levels
Section titled “Check levels”Check names follow <level>.<check>; the level tells you where the
measurement happens:
| Level | Measured on | Critical? |
|---|---|---|
form.* | the Form IR — analytically, zero CAD, no tolerance fuzz | per-finding |
interface.* | datums and port frames on the IR; mates in the assembled pose | per-finding |
topology.* | the compiled solid, via geometry probes | yes |
region.* | the compiled solid, restricted to declared semantic regions | yes |
manufacturing.* | the solid / exported mesh, against printer constraints | caps the grade |
assembly.* | cross-part checks in the assembled pose | yes |
quality.* | shape-quality scoring; WARN-oriented | no |
The same physical property is often checked twice, once per side of the CAD
boundary: form.mouth_opens_sideways reads tagged profile segments on the IR;
topology.mouth_opens_sideways probes the actual void through the compiled
solid. The form check gates cheaply and early; the topology probe verifies the
compiler kept the promise.
Which checks run is archetype-driven: a handful of universal form checks
always run; the rest come from the archetype’s own validators: list — one
product family is never judged by another family’s checks. Browse all
registered checks in the registry.
forge validate vs forge build
Section titled “forge validate vs forge build”forge validate is the pre-CAD golden gate — it writes nothing, never imports
cadquery, and exits non-zero on critical failure. forge build refuses to
compile a form that failed its own IR checks, then measures the compiled solid
and finalizes two reports:
- the honesty report — requested / supported / PROVEN-built / missing
features, which forbidden forms were checked and with what verdict
(
absent/present/unchecked), and which gaps the engine admits to; - the score — a numeric grade with a hard gate: a critical FAIL at contract / topology / region level forces status FAIL and grade F no matter how good the numbers look.
The findings model
Section titled “The findings model”Every validator, reviewer and repair rule speaks one result shape:
| Field | Meaning |
|---|---|
check | the registered check name |
status | pass / warn / fail — a report’s status is the worst finding |
level | which validation level produced it |
critical | a critical FAIL forces overall FAIL regardless of score |
measured / limit / unit | the actual number vs the threshold — findings carry evidence, not just verdicts |
suggestion | an actionable hint; feeds the deterministic repair rules |
report.passed(check) is true only if the check ran and its worst finding
is PASS — absence of evidence is never evidence of absence.
Forbidden forms
Section titled “Forbidden forms”An archetype’s contract names what the product must contain and what it
must not degenerate into. Forbidden form ids bind at load time to the
check whose failure means the form is present (e.g. closed_ring is
detected by form.mouth_opens_sideways failing). A detected forbidden form is
a critical contract FAIL; an unchecked one is reported as unchecked in the
honesty report — never assumed absent.