CTS EdgeCraft Pro 1.1.1 - Component_5 corner and speed validation
Date: 2026-10-05

Input: the original sharp shell embedded in the uploaded Component_5.skp.
116 vertices, 174 edges, 66 faces. 150 sharp edges selected; 24 smooth
circular wall facet joints retained. Internal model units are inches.

Observed saved comparison:
- EdgeCraft: radius 2.3498206787109375, 8 circular segments, 3492 vertices,
  5618 native faces. Reproduced the vertex positions in the prior core.
- Bevel: 1744 vertices, 2572 faces. Its saved cross-section samples match a
  four-segment quadratic profile with a 3-inch offset. This is a geometric
  inference from the saved vertices, not a report of its internal algorithm.
- The inputs differ in profile, offset and segments. Entity counts and the
  reported sub-second Bevel time therefore do not form a controlled timing
  comparison with the saved EdgeCraft result.

Controlled core calculation benchmark (same source/radius/segment count):
Ruby 3.1 outside SketchUp; three cold builds and five reuse requests per case.
Times are medians in seconds, include geometry validation, and exclude
native insertion, model copying, editable-history saving and UI rendering.
Segments | Prior cold | Updated cold | Updated reuse | Updated native face plan
       4 |     1.0776 |       0.4146 |        0.0150 | 1754
       8 |     2.0628 |       1.1005 |        0.0448 | 5618

Radius-search reproduction, starting with a 3-inch request:
The prior search reproduces the exact saved radius 2.3498206787109375.
The updated rolling corners change the clearance limit, so its fitted radius
differs. Each final accepted radius passes full topology/collision validation.
One elapsed-time run per case; timing includes the failed initial request.
Segments | Prior fit | Updated fit | Full mesh checks: prior / updated | Updated radius
       4 |    6.9823 |      0.7636 |      8 / 1      | 2.4478670654
       8 |   15.2160 |      1.2788 |      8 / 1      | 2.4471353760

Executed checks:
- The comparison shell has 34 mixed rolling corners, including four
  complementary concave/convex joins. Cross-sections match the torus formulas;
  their front boundaries stay on the retained planes.
- The 4- and 8-segment numerical shells have closed, consistently oriented
  seams; original openings and all 24 inactive smooth wall joints remain.
- Uneven polygon wall angles drive the rolling rim treatment.
- Builder simulation creates 66 complete retained source faces with all
  holes, plus planar quads and required corner triangles. Forced exceptions,
  nil returns, dropped holes and empty replacements preserve the source.
- Older PolygonMesh insertion-rejection simulations still preserve source.
- Cache tests cover copied/reordered source reuse, caller-mutation isolation,
  changed geometry/radius/segments/materials/finish flags, model isolation
  and exclusion of failed builds.
- Boundary-first fitting performs one complete final mesh check on this
  model. A simulated hidden collision falls back to the full search;
  unsupported topology errors propagate.
- Actual whole-object job routing passes boundary-probe keywords through the
  timing wrapper, validates the final preview and retains complete Apply jobs.
- 3000 seeded collision pairs match the prior predicate.
- Existing mixed-hole, high-valence, winding, transform, pocket, partial-path
  and independent triangulation-coverage regressions pass.

Limitations:
The image comparison is a render of calculated geometry, not a SketchUp
screenshot. No native SketchUp session was available here. Total Apply time,
native API insertion, visual smoothing and interactive Edit/Undo acceptance
remain to be checked in SketchUp. These measurements do not certify a
sub-second total Apply time or universal support for every topology/radius.

Reproduction scripts (development workspace):
tests/comparison_timings.rb - cold/reuse calculation, baseline and updated
tests/radius_fit_timings.rb - fitted-radius search, baseline and updated
tests/corner_regression.rb, tests/builder_regression.rb, tests/cache_regression.rb
tests/radius_fit_regression.rb, tests/object_probe_regression.rb
tests/validation_differential.rb, tests/release_check.py
