Skip to content

Retained cutter foundation (CUT-0, #7955)

The disabled retained path owns derived finite prisms separately from captured IFC source recipes. RetainedPrism uses metre coordinates, a proper rigid cutter-to-host frame, an ordered outer loop followed by holes, and a positive-Z extrusion direction. GeometryDocument::add_retained_prism admits the same wire-format-1 request on native and browser runtimes. It grants no product publication authority. Halfspace dispatch still refuses plane, boxed and polygonally bounded halfspaces until their feature slices are qualified.

The frozen segment interface is Line | Arc | Circle. This intentionally extends M5-CHAINED-CLIPS §4.0.1 and §9, following the Round 2 CUT-0 orchestrator message of 2026-10-27: M6 needs partial circular arcs for IfcArcIndex. Arc uses the existing kind 3: centre xyz, normal xyz, x-axis xyz, radius, start angle and signed sweep, all little-endian f64 after kind/reserved u32 words. It is neither a three-point arc nor a new wire version. Prisms supply +Z and +X as their local circular basis; winding normalization can reverse the sweep.

Bounds belong to a retained value's evaluation frame. Lines use endpoints; arcs use full supporting-circle boxes; positive-weight rational disk sweeps use their control hull expanded by radius. Difference and Intersection retain the left bound. Union maps the right corners into the left frame. Placement keeps bounds local; an affine bake maps every corner into the baked frame. Computed endpoints round outward to their adjacent representable f64 value; this is arithmetic enclosure, not an acceptance tolerance or changed wire data. Unknown bounds stay unknown. Finite halfspace cutters use the specified 1 cm / 5% diagonal padding. halfspace_box also takes the halfspace source id so its new Source definition preserves attribution.

oracle::sections reads extrusion definitions independently, clips exact line/arc Green integrals at section heights, and integrates with adaptive 8-point Gauss–Legendre quadrature. Work exhaustion returns None. The relative convergence threshold is the preregistered 1e-13. Analytic hand cases include circular sectors, segments, holes and oblique extrusions.

Universe fragments live in tests/fixtures/cli-retained/universe.d/*.txt; coverage rows live in exactly one base or per-slice TSV. Native blessing writes each model back to its owner; Node parity reads all fragments. Feature oracle checks own separate modules and report through src_oracle and per-family maxima. The workflow uses tests/m* path triggers because the repository's CI path checker rejects bracket classes; the Cargo test selector remains --test 'm[0-9]*'. The broader path trigger only increases validation coverage.

The 2026-10-27 CUT-0 Round 3 orchestrator message also changes the exact comparison's authority, a documented deviation from M1's unconditional linear gate: retained passing the independent source-volume oracle while exact fails that same source value at the exact gate's limit classifies the product's exact comparison as report-only exact_defect. The summary records all three deviations. Every retained-vs-source check remains mandatory, all tolerance values remain frozen, and there are no product allowlists. Missing source oracles and retained source failures leave the exact gate unchanged. See the comparison contract for the report fields.