Skip to content

Propagate remaining topology and healing failures (follow-up #521) - #700

Draft
fkirill wants to merge 4 commits into
tangency-labs:mainfrom
fkirill:fix/521-topology-evaluation-status
Draft

fkirill wants to merge 4 commits into
tangency-labs:mainfrom
fkirill:fix/521-topology-evaluation-status

Conversation

@fkirill

@fkirill fkirill commented Oct 24, 2026 •

Copy link
Copy Markdown

A failed Hermite reversal used to overwrite its wire edge interval with [1e20,-1e20] and flip its uses. Propagate failures before consuming output or editing edge topology. Loop UV corners, edge-use loop gaps/deviation and healing classification preserve their failed statuses too; an incomplete Stage3 resets its marker so retry cannot appear cached.

Follow-up to #521 after #704 landed. #704's vertex contract, regression and 70 fixtures are preserved exactly. This PR's vertex error policy and one regression were removed. All 43 former vertex exceptions were proven matching, removed individually, and the full 5,598-case vertex unit then passed strictly. The 20 constant-angle/control fixtures remain parity coverage.

  • Six remaining Rust regressions were reproduced failing before their production fixes. Their implementation is unchanged from its earlier validated revision.
  • The unchanged C++ reference confirms the Hermite reversal's invalid interval/orientation change. Four healing cases retain error 1040 on both sides and differ only in the incomplete marker (C++ 5, Rust 4); raw outputs were rechecked, all four stay explicit known records, and heal.face_props stays partial.
  • No comparison tolerance/floor or native rejection guard changed. Empty-NURB native operations were not invoked. Protection covers edge topology; it does not promise transactional edits inside a curve method.

Validation on 0cdc106a4a941c31be2f48402084dca3a72832f0:

  • fmt, default/native workspace Clippy -D warnings, 2,094 kernel unit tests, wasm and 48 runner tests pass. Five integration tests pass under the same optimized profile now used by CI; one existing partial-sphere/torus case remains ignored.
  • Fresh native 13-unit matrix: 37,684 cases, 37,163 matching, six explicit known differences (four healing markers plus two existing main Rust/harness MoveSeam limitations), 462 UNPORTED deferrals, 53 native rejections (37 UB-137 crash traps, one HANG-39 input guard, 15 missing-entity cases), zero unexpected failures. Twelve units use the initial matrix; vertex was rerun after removing the stale exceptions, with code/fixtures unchanged.
  • Current main's trimmed caches, live queries and tolerance storage are retained. Detailed current-scope notes follow the historical draft evidence in plan/findings.md.

Scope: ContainsUVPoint already handles failed evaluations safely; HasDogLegNearPole is unported. This remains a draft awaiting maintainer approval for canonical CI; full macOS --green is not claimed because of the reference issues #448–450.

GitHub’s reported conflict after main’s region-nesting cleanup is resolved on 0d99454881b00467325d4ced11593dfaba9f5200. Fresh fmt, kernel Clippy with warnings denied, 2094 kernel unit tests (--lib) and wasm pass. Implementation, C++ shim and fixture blobs are byte-identical to the preceding validated revision. All 8 current main records and 4 issue-specific records are retained; obsolete main records are not restored. Own records precede the unchanged main header to keep later head deletions and tail additions independent. Native comparison figures above remain attributed to their stated earlier bases; standalone native comparisons were not rerun for this metadata conflict repair. Canonical CI remains pending maintainer approval.

Rebased onto current main 2ca17d8e9963483d46ab53e7e52743a6dfc4345c on 2026-10-24, published as 297add048cc4b0eeaed9fd9d32e90fb54453aa7a. Conflicts were confined to plan/units/topology.edge.toml and plan/units/topology.edgeuse_p1.toml; both upstream coverage notes and this PR's historical validation were retained. The four modules' added/removed source lines match the previous PR exactly, the vertex fixture corpus is byte-identical, and upstream's edge owner-key update is retained. Fresh formatting, default workspace/all-target Clippy with warnings denied, 2,115 kernel unit tests (--lib), and wasm check pass. Native comparisons were not rerun for this plan-note conflict resolution; their figures above retain their original validation bases. The cache-wrapper refactor described in the coordination comment is not on this main revision yet. Canonical CI remains pending maintainer approval.

@fkirill
fkirill force-pushed the fix/521-topology-evaluation-status branch from 016f4a1 to 9ccb0da Compare October 24, 2026 02:22
@fkirill fkirill changed the title Propagate failed topology evaluations (#521) Propagate failed topology and healing evaluations (#521) Oct 24, 2026
@fkirill
fkirill force-pushed the fix/521-topology-evaluation-status branch from 8d7a896 to 2514779 Compare October 24, 2026 02:51
@fkirill
fkirill force-pushed the fix/521-topology-evaluation-status branch from 2514779 to db87b73 Compare October 24, 2026 04:10
@fkirill fkirill changed the title Propagate failed topology and healing evaluations (#521) Propagate remaining topology and healing failures (follow-up #521) Oct 24, 2026
@fkirill
fkirill force-pushed the fix/521-topology-evaluation-status branch 2 times, most recently from ae5abf5 to 021665c Compare October 24, 2026 04:46
@erlis

erlis commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

@fkirill a heads-up: I have a change ready that touches heal/face_props.rs near your hunks in set_props_stage3. It's site 2 from #681, coordinated with brett19 on #717.

It splits set_props_stage3 into a public wrapper plus a crate-private set_props_stage3_cached that takes a CurveOnClassifyCache, and the classify_loops call there becomes classify_loops_cached(.., cache). It also gives set_props_with_seam a cache in place of the seam closure. The body of set_props_stage3 is otherwise unchanged, so whichever of us lands second has a small textual conflict to resolve. If yours lands first, I'll merge main into mine and resolve it.

🤖 Generated with Claude Code

@fkirill

fkirill commented Oct 24, 2026

Copy link
Copy Markdown
Author

@erlis No worries, happy to rebase either way.

fkirill and others added 4 commits October 24, 2026 23:40
Co-Authored-By: Codex <noreply@openai.com>
…s#521)

Require successful curve reversal, tangent/angle evaluation, UV-corner/gap
queries and surface derivatives before consuming their outputs. Preserve
ClassifyLoops errors and retry incomplete healing stages.

Seven regressions failed before their fixes. Record the unchanged C++
reference's 43 lost-angle statuses and four failed-stage marker differences
explicitly; preserve all prior known records and comparison tolerances.

Co-Authored-By: Codex <noreply@openai.com>
Record the measured 471 unported deferrals and 37 UB-137 native crash guards separately. Production code, fixtures and all comparison results are unchanged.

Co-Authored-By: Codex <noreply@openai.com>
Keep tangency-labs#704 implementation and coverage. Remove only proven obsolete vertex exceptions; retain six remaining failure/retry regressions and four explicit healing differences.

Co-Authored-By: Codex <noreply@openai.com>
@fkirill
fkirill force-pushed the fix/521-topology-evaluation-status branch from 021665c to 297add0 Compare October 24, 2026 20:45

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants