Small, standalone checks for the euler operators’ own arguments —
e.g. “does this pcurve actually start/end where the caller claims” —
as opposed to super::validation, which checks a whole super::Model
for internal consistency. Each check lives in its own file.
Topological containment queries: “is this point inside this face/shell?”
— distinct from crate::contains, which tests raw-geometry (“does this
3-D point lie on this NURBS surface/curve”) without any awareness of
trimming loops or topology.
Incremental mutation of an existing crate::Model: unlike
Model’s own insert_* methods (which only ever add a brand-new,
unconnected entity), everything here restructures or replaces what’s
already there.
Whole-model consistency checks — as opposed to
super::argument_validation, which checks a single euler operator
call’s own arguments. Each check lives in its own file, one check per
file. Every check function takes (params, errors, model) and pushes
its own violations onto errors rather than returning on the first one,
so validate always runs every check and reports everything wrong in
one pass.