Repository navigation
TrueForm increment 3: reclaim split and mis-fitted fillets (stl2step-fc) - #18
Merged
Merged
Conversation
…face closure (D-fc-4.4, D-fc-4.5) Line mode at H0, after claimRelRevolve(Line); Torus mode stays a no-op for the tori lane (separate function, dispatch on mode). D-fc-4.5: an accepted CylGrow region whose own LS residual exceeds tau (the revolve donor test refuses it) is re-certified on its tau-inliers I (columns >= minStations(kParamsCircle), levels >= 2); every other triangle must be chord-bounded cover (>= 2 vertices within tau, third within I's own mid-edge sagitta). It grows from I over free triangles, refits and regrows to a fixed point capped by p.maxRefineIters (unstable => refused), and takes a same-surface partial reached only through the healed gap. D-fc-4.4: certified partial CylGrow regions merge greedily to a fixed point (mutual vertex dev <= tau, strict axial overlap, joint LS <= tau); Unclaimed I/Cover triangles inside the group's extent fill the gap (D-fc-3.2.7, s = claimChordSagitta of the group). Commit only if the result is one edge-component and a disk (domain-not-disk / not-joined defer unchanged). Region fields by the existing D2 rule, dVolCylinderSector over the committed set. Claimed triangles leave the provisionals by the D-fc-1.6(12) straddle trim. Print-only DIAG_REL_BAND stage=reclaim. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw Lane: fx-reclaim
…1 robbing (D-fc-4.1, D-fc-4.2, D-fc-4.3) claimRelExtrude: - D-fc-4.1: when the stored A2 plane does not certify, the REV ORCH-4 peel starts from the plane of the provisional's own maximum-area facet (ties: smallest local id). Certificate unchanged (tau fixed point + a3WouldCommit). - D-fc-4.2: the slab slack at each contact generator is its propagated position bound, contactSlack = (anchorTol(other) + tau) / (r |nA x nB|), replacing tau / r on both sides. I membership unchanged. - D-fc-4.3: triangles of an accepted CylGrow region whose own maxVertexDev exceeds tau are vote candidates; a certified band that commits with them dissolves the region (its own provisionals back to Unclaimed, the region leaves the accepted list, a chamfer cone's accepted index follows its cylinder). Regions within tau are never touched. DIAG_REL_ROB prints under STL2STEP_DIAG_REL only. relational_extrude_unit: contactSlack pins and cases 19-22 (peel seed, contact slack, robbed region dissolves, certified region untouched). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw Lane: fx-extrude
…D-fc-4 performance law) A committed band is tangent to A and B and its contact vertices are boundary vertices of the anchor bodies within tau of its circle. Per side, every boundary vertex of A gives the radii of the side's circle family whose tau-inflated circle contains it (radiusWindow, a widened superset of the exact set); likewise B. When the two unions do not meet, no radius of that side can be a claim and the side is skipped before the vote. The boundary lists were already built per anchor (fillBoundary) and unused. Body11: evaluatedSides 1855892 -> 50768, prunedSides 1805124; convert 72.0 s -> 22.9 s at --threads 3 (ee21b3b 37.6 s). DIAG_REL_SUM gains prunedSides. relational_extrude_unit case 23. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw Lane: fx-extrude
…nchor plane (D-fc-3.2.2) A band can meet a different piece of the same wall than the anchor that claims it (Body28: one far coplanar pair claimed six R0.54 bands in a row). Its contact vertices are then candidates within tanDistTol(anchorTol, tau) of the anchor plane, not boundary vertices of that anchor's body. Each side's contact set is now the body boundary plus those candidates; the windows stay supersets. 51-file sweep (--engine trueform --threads 3): canonical STEP identical to the unpruned 57b805a on 51/51 (974dfb5 differed on Body28 only). Body11 evaluatedSides 50960 (unpruned 1855892). relational_extrude_unit case 24. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw Lane: fx-extrude
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw
…-1.14) - edge-class: linkage_bores_chamfer tier2Ceiling 125 -> 139 (macOS, fc3-int a7d2776): the four R3 slot ends ship as one certified cylinder each and their cyl x cyl quartic contacts with the R10 cross bore are lawful tier-2 polylines replacing facet|facet lines that were counted analytic. - gate_130: a mesh-referenced volume cell (no exactVolume) may carry its own measured ceiling, meshVolumeDeltaPctMax (D-130-15(1)); never applies to an exactVolume cell, default stays 0.01 %. linkage: 0.0100255 (analytic R3 sagitta volume, +2 mm3). - shelf_bracket builtCylindersFloor 20 -> 18: each R2.5 cross hole is one face instead of two (authorised target). - expected-red: S27_sphere_corner_fine retired from gates_full and p1_compose_gate (XPASS: all three R3 fillets match); reverts note updated (sphere stays faceted). - CHANGELOG [Unreleased]: third increment. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw
…the shelf-hole wording (audit-fc3-instruments F1/F2) Text only: no value or gate logic changes. The +14 linkage tier-2 edges are 15 overCap R3 | R10-puncture-plane chord edges (overCap 43 -> 58), not the R3 x R10 quartic contact; the shelf R2.5 holes ship as one face each but stay open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Third increment of the fillet/chamfer work. It reclaims geometry that earlier stages split or mis-fitted, using relations to surfaces the engine has already certified. Every threshold is τ = 2q or a quantity measured on the certified set.
What changes
On the training files
Instruments
Orchestrator rulings are recorded in the commit messages:
meshVolumeDeltaPctMax. The linkage value is 0.0100255 %: the analytic R3 surfaces move off the inscribed mesh by their sagitta volume.Local CI
All 95 tests pass on each platform:
e5c80bd differs from b67332f only in one note and the CHANGELOG text.
🤖 Generated with Claude Code
https://claude.ai/code/session_01HnaoqUzrjXaN8n4om4TREw