Bounds including travel moves.
Sparse M600 filament-swap color-change boundaries (DD-009 D2, #147); empty when none seen.
Bounds over the printed model — extrusion classified as model by the non-model classifier
(DD-026 D4/D5): object membership when present, otherwise all extrusion minus explicit housekeeping
roles (skirt, brim, raft, support, prime/wipe tower, purge) and wipe moves. Strictly additive to
objectBounds (whose object-channel contract is unchanged): modelBounds also excludes housekeeping
that carries an object label (e.g. a Bambu prime tower emitted inside an open object bracket) and
works for label-less files that still mark their housekeeping. Empty (Infinity/-Infinity) when the
model is unknowable (no membership and nothing excludable — an honest "cannot classify", never a
guess). Framing precedence is modelBounds → objectBounds → bounds; see
header.capabilities.nonModelClassification (known | inferred | unavailable) for confidence.
Bounds over the extrusion of labeled objects (segments.object != 0) — excludes skirt/prime/purge
(which are object 0). Empty (Infinity/-Infinity) when the file carries no object labels. Used to
"frame the printed object, not the skirt" (#306/#6); a consumer checks it is finite before use.
Sparse retraction/unretraction events (DD-009 D1, #148); empty when none seen.
Bounds over extruding moves only.