Repository navigation
fix: prepare face geometry for shell ray queries - #613
github-merge-queue[bot] merged 14 commits into
Conversation
Bind shell ray solves to lazy UV trims and owning-face caches. Preserve the construction notification keys when translating pole-free spheres. Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Count reachable B-rep lists and restore curve owners from the native face fixture. Let sweep coverage accept successful kernel calls. Co-Authored-By: Codex <noreply@openai.com>
|
Machine-generated (Claude Fable 5.1 coordinator, Claude Opus 5.5 review agent) on behalf of @tdamsma. Read-only review of head 7c29dc0 against upstream. Verdict: approve with fixes. Hard rules are clean (no unwrap/indexing/unsafe, ordered collections, wasm-safe, no tolerance change, no case removed) and the pole-free sphere fix is correct: Four things to fix before ready:
Nits: Partial units whose deferred cases will now run further and should be checked in CI: topology.shell/brep_p9/p6/p4, primitive.api_primitives, primitive_creation_p1, sweep.api_brep, and every difftest that builds curved primitives as fixtures. Full notes: 🤖 Generated with Claude Code |
|
Machine-generated (OpenAI Codex coordinator and agents) on behalf of @tdamsma. @henlamp, we have an unpublished branch covering the same face-cache dependency through a single mutable solve context. We are holding that overlapping implementation to avoid competing with your PR. Its audit also found the prepared trim-cache fast path and live tolerance reads need attention. A useful independent contribution would be CI-visible primitive geometry, trim/tolerance and shell-ray comparisons, extending the counts-only records. #615 already adds sampled geometry for primitive p3. Are you already extending the primitive API/p1 records for this PR? If not, we can prepare that test-only follow-up and keep kernel changes coordinated here. |
|
Two things from the UV-trim work for the cases #541 moved to the read-only
🤖 Generated with Claude Code |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Use the live curve natural interval for duplicate comparisons while retaining the caller handles. Cover subdomains, distinct identities and missing geometry. Co-Authored-By: Codex <noreply@openai.com>
Expose an explicit pole-free sphere tolerance and use precise property integration for the unchanged analytic gate. Verify all seven complete examples, sphere scaling and translation, UV-edge agreement and tolerance validation. Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Co-Authored-By: Codex <noreply@openai.com>
Use live topology reads and cache-first face classification while retaining exact evaluation geometry. Forward constructor identities into stitching region queries and compare primitive geometry, tolerances, trims and rays against SMLib. Co-Authored-By: Codex <noreply@openai.com>
Export regions in native owning-list order after ResetInfiniteRegion and bind lazy UV trim owners to the construction identities. The 90 spine-doubled fixtures, including both CI failures, compare exactly against C++; the shared p6 exporter stays unchanged. Co-Authored-By: Codex <noreply@openai.com>
|
Linux/GCC full
🤖 Generated with Claude Code |
tangency-labs#613's shell ray face preparation and tangency-labs#639's forwarded face hooks each leave these nine cases deferred; together the cases run and their region nesting differs from C++ (skin_concentric_loops, skin_primitive_annular, topology.brep_p6 make_face tangency-labs#89..95). Probes rule out tangency-labs#639's mutable face queries and tangency-labs#613's cache-first point classification as the cause on their own. List them as known mismatches with a findings entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ll ray face geometry branch Only conflict: plan/units/topology.brep_p10.toml notes; kept tangency-labs#679's UpdateVertexEdgeIntervals update and tangency-labs#613's update text. Code merged cleanly (topology/brep/p5.rs included). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e-geometry-on-main fix: prepare face geometry for shell ray queries (stacked on tangency-labs#613, merged with main)
topology::brep::p2::ray_fire and BrepQuery::classify's boundary solve classified faces read-only, so an edge use without a UV trim stopped them at SmEdgeuse::GetOrCreateUVTrimCurve (unprepared read-only topology), where upstream makes the trim inside the loop walk. Both now solve through query::brep::ray::solve_mutable_brep_point (tangency-labs#613's single-pass live solve on the caller's B-rep), as region nesting already does. A classifier's shared target keeps the read-only boundary solve: its copy is not the caller's B-rep. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Shell rays can reach faces without UV trims, then revisit earlier candidates after preparation raises tolerances. Final region nesting during stitching can also omit geometry constructed under notification identities.
Keep production ray solves in flight while lazy face queries update the original B-rep. Use the prepared trim cache before boundary classification and forward construction identities into the final stitching query. Add native comparisons of reachable geometry, tolerances, stored trims and pyramid miss/side/apex rays, including the translated tall-pyramid regression. Expose an explicit construction tolerance for the pole-free sphere so the example can use strict analytic checks without changing the default tolerance.
Uses the merged #616 and #618 implementations and removes the corresponding duplicate workarounds. Includes only the region-nesting ray entry needed from #619; its remaining entrypoints stay separate.
Validation on
3b617cac8: twelve affected native C++ differential suites (13,380 cases: 13,041 pass, 315 deferred, 24 native rejections) have no failures and bit-identical compared values. Deferrals and native input rejections are reported separately. Focused kernel tests: 43 passed. Kernel Clippy, formatting and WebAssembly check passed. All seven complete example solids are checked against analytic properties with the existing 1e-9 relative gate; partial sphere/torus construction remains outside these seven.Latest integration: main
d51978934is merged inc28753855; formatting and strict kernel Clippy pass after the merge. The targeted follow-up comparisons below ran on32f82cc96before this integration.Local reference: macOS arm64, pinned C9 SMLib, floating-point contraction disabled. The full Linux/GCC suite has not been rerun for this revision.
An additional sweep regression run was stopped during generated-input construction before comparisons; it is not counted in the twelve completed suites.
CI follow-up: export p10 regions in owning-list order after changing the infinite region, and bind lazily generated UV trim owners under the construction identities. Both CI failures and all 90 spine-doubled fixtures match C++ exactly locally; the shared p6 exporter remains at 588 pass, 0 fail, 7 deferred. The full local p10 rerun is incomplete.