Commit Graph

16 Commits

Author SHA1 Message Date
Brett Lawson 86e36540dd difftest: ReplaceImplicitOffsets on extrusion, plane and B-spline offset bases (#1476)
Shim mode 7 builds one CreateFaceFromSurface face on an owning
SmOffsetSurface of a real SmSurfOfExtrusion (lazy, no NURB), SmPlane or
SmBSplineSurface, runs ReplaceImplicitOffsets and records the status, the
result surface type, domains and sampled points. 12 fixtures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXj2sJf943y2dDF36Vy
2026-10-29 10:42:45 +01:00
Alex Lytvynenko 5debd62611 Merge main vertex caps and mutable-kernel face construction into offset p2
Preserve p2 notification and synchronization work alongside landed PR #288 vertex caps. Share face topology construction and closure splitting through notification state so the actual mutable kernel handles marks while callbacks retain their selected live or external context. Update the owner-routing regression and regenerate the combined p1 report.

Validated formatting, strict C++-enabled workspace/all-target Clippy, all 1680 kernel tests, and seven affected Rust/C++ differential units: 4142 cases, 2928 compared passes, 1193 deferred, 21 rejected, zero failures. Existing tolerances, seeds, floors and case order are unchanged. Used 12 build jobs and reused the cached native reference.

Co-Authored-By: Codex GPT-6 <noreply@openai.com>
2026-10-21 20:17:12 +02:00
Alex Lytvynenko a5624de93c Merge main while preserving vertex and face-tail fixture coverage
Retain the narrow typed vertex backend and shared creator algorithm alongside the landed contained-face/mapping work. Preserve ABI modes 4/5/6 and all 448 fixtures plus 600 generated cases; regenerate the conflicted report from the combined native run. Keep the feature's partial and coverage boundaries explicit.

Validation: formatting, strict Clippy with/without C++, 1557 kernel tests, wasm, 27 p1 runner tests, 16 FFI tests and the full C++ runner suite (179 passed/29 ignored) pass. P1: 1048 cases, 731 compared, 316 deferred, 1 rejected, zero failures; all 18 vertex cases bit-identical. Creator report unchanged at 874/585/289. Both sensitivities pass. Full ARM64 gate: 238 units, only four documented platform failures; fresh canonical CI is required before ready-for-review.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-21 16:03:50 +02:00
Alex Lytvynenko d2fa48599a Merge main and complete the offset trim-domain continuation
Integrate notification-aware mapping from #282 and the landed #229 constructor without replacing caller context or resetting merge state. Preserve caller keys in wire and face copies and namespace-backed construction. Port original/extended/outside trim selection, active face marks and owning-list order, with restoration-error precedence. Renumber the box finding to WR-209 and guard the newly merged handwritten Boolean shim.

Validation: fmt/include checks, strict Clippy with and without C++, 1617 kernel tests, wasm, 43 offset runner tests, 35 FFI tests and both native-lock probes pass. P1: 1032 cases, 715 compared, 316 deferred, 1 rejected, zero failures; p2 report unchanged at 141/164/17. All four offset/Boolean sensitivities pass. Local ARM64 manifest gate: 239 units, only four documented platform failures. Canonical x86 CI remains required.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-21 14:16:59 +02:00
Alex Lytvynenko 11a535b915 offset: keep vertex follow-up compatible with current main
Reserve fixture modes 4/5 for PR #282 and use mode 6 for vertex coverage. Keep native synchronization in its existing PR #201 rather than importing an unavailable macro. Match the existing RemoveExcessFaces editing-metadata deferral in the probe assertion.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-20 12:30:45 +02:00
Alex Lytvynenko be433c82f4 offset: wire vertex-cap creation and native geometry coverage
Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-20 12:05:29 +02:00
Christian Svensson 270b8f3718 offset_executive_p1: twin loop order, control point bound, report on merged tree
The hand-built twin's downward loop now starts at the first edge's mate as the
native MakeFaceWithCurves loop does (observed through the split-edge map_twin
cases: the first half's mate consumes the shared original use). Shim: the
generalized curve_face no longer shadows its loop parameter.

FFI points() bounds control point coordinates by MAX_COORDINATE = 1e154:
--fuzz 2000 on the merged tree hit a native extend that gives no result within
25 s for a -1e300 control point (1e155 returns in 40 ms, 1e160 does not);
recorded in plan/findings.md and as fuzz regression input fuzz00331.

Report regenerated on the merged tree: 1032 cases, 714 passed, 0 failed,
317 deferred, 1 rejected; perturb 714/714; FUZZ-PASS; green 228 units.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BfiWnWawYvdkvRXZtfC7zK
2026-10-20 10:02:39 +00:00
Christian Svensson b4c96965b6 offset_executive_p1: re-check fixes (FFI validators, split/overhang twins, rustfmt)
The runner's Rust side now runs the FFI packers' own input checks
(ffi::validate_{config,synchronize,extend,face_tail,map_twin}) instead of a
hand copy, so budgets (MAX_PACKED_VALUES, extension output_bound) and
fixture geometry validation are refused identically on both sides.

map_twin gains an optional split of the offset bottom edge (five-edge loop:
two offset uses drop onto one original use, which the first consumes) and
overhanging-offset cases; 27 fixtures. Both unit files formatted with
rustfmt --edition 2021, including main's pre-existing measured_traversal hunk.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BfiWnWawYvdkvRXZtfC7zK
2026-10-20 06:03:19 +00:00
Christian Svensson ef3365f5b0 offset_executive_p1: pre-review fixes (fuzz guards, map_twin comparison, coverage)
Runner Rust side now refuses exactly what the FFI packer and shim refuse
(config/sync/extension/face_tail/map_twin guards): --fuzz 2000 had 7 Rust
OOMs in config mode and 1 timeout in extend mode (HANG-16); now FUZZ-PASS.
The 8 recorded inputs live in crates/difftest/tests/fuzz_regressions and a
self-test feeds them through both sides.

New difftest mode 5 map_twin: MapEdgeuses between two rectangle faces, native
MakeFaceWithCurves vs hand-built Rust twins with explicit UV trims; 22 cases
under live comparison (normal/side selection, scale loop, drop above 10,
relate, mapped ends). Per-use records are sorted by the use's start point.

face_tail: optional distinct second SSI UV curve (10 cases; merge still
returns SM_ERR natively for every layout tried) and 4 negative-tolerance
cases reaching the DeleteFaces branch natively. DeleteFaces stub symbol now
names the missing IntersectorBrep adapter, with the upstream call spelled
out. query.face_p2 porter note lists the lamina test call site.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BfiWnWawYvdkvRXZtfC7zK
2026-10-20 03:25:07 +00:00
Christian Svensson 404c161c21 offset_executive_p1: BuildOffsetOfFaceuse contained-branch tail and MapEdgeuses
Port the contained-domain branch of BuildOffsetOfFaceuse (MakeFaceWithCurves
in the offset B-rep's infinite region, Copy notify, self-intersection merge,
lamina distance test, relate and MapEdgeuses) and MapEdgeuses' matching loop
(scaled midpoint test, intersecting DropPoint, relate, notify edge and
vertices). DeleteFaces stays UNPORTED(boolean.merge_p4): no topology::Brep
IntersectorBrep adapter on main yet.

Signature change: build_offset_of_faceuse takes &mut Kernel, the SSI data,
the notification environment and the offset key; map_edgeuses takes the
original B-rep mutably plus the environment and key.

Adds difftest mode 4 (face_tail) with 298 fixture cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BfiWnWawYvdkvRXZtfC7zK
2026-10-20 00:55:08 +02:00
Alex Lytvynenko 7151d1aa55 Carry reviewed offset part 1 fixes and current dependencies into part 2
Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-18 01:03:20 +02:00
Alex Lytvynenko 0c22c868e6 Address nonblocking offset executive review follow-ups
Annotate the arena-order GetEdges boundary, preserve upstream ignored ordinary UV-conversion/bounding-box statuses, and treat an absent strut mate as an empty relation lookup. Use a real nonzero closing support curve for coincident measured endpoints so zero-trim/constant-spline cases can reach synchronization; retain explicit invalid-line constructor rejection and add positive near-degenerate counterparts. Numerical regression validation follows before publishing.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-18 00:47:12 +02:00
Alex Lytvynenko 2e0e38baa4 Serialize native shim calls around the shared API context
Guard common and handwritten entrypoints through native cleanup and callback restoration. Add exclusion, recursive forwarding and exception-unwind probes; p2 adds its concurrent cross-wrapper regression with the port.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-17 20:33:34 +02:00
Alex Lytvynenko 4dc2971c47 Address offset executive review and submit verified partial port
Restore the Rust kernel, native adapter, FFI, fixtures and runner directly in PR #175. Reject negative internal extension magnitudes before native construction, retain signed public inset/getter coverage, and normalize only exactly equal-minimum groups under the established SmRelation convention. Correct HANG-16 reachability and replace the obsolete blocked Markdown investigation with a normal JSON report.

Native target: 691 cases, 633 passed, 0 failed, 17 deferred, 41 rejected; max relative error 2.5139756042650037e-14, no absolute floors. Sensitivity 633/633. Format, C++-enabled Clippy, 1299 kernel tests, 20 runner tests, 14 FFI tests and wasm pass. Full green suite exceeded 1200 seconds after 174 completed units with no reported failures; no full-suite pass claimed.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-17 12:24:46 +02:00
Alex Lytvynenko a3b98bfe53 Document offset executive parity blockers; preserve implementation as WIP
Keep PR #175 findings-only under the blocked-unit workflow. Full implementation and all fixtures remain on wip/offset.offset_executive_p1-pr175 at e173a722. Record observable pointer-order leakage (ND-2), negative-extension native timeouts (HANG-16), exact isolated-case results and validation commands. No parity tolerance or output ordering was relaxed.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-17 04:26:28 +02:00
Alex Lytvynenko e173a72239 WIP: port offset executive part 1 and expose parity blockers
Preserve the safe Rust port, native adapter, fixtures, and differential runner. Native isolated validation: 523 pass, 2 order failures, 17 deferred, 41 rejected and 108 C++ timeouts out of 691 cases. This is not a green or partial correctness-gate claim.

Co-Authored-By: GPT-6.1-Sol <noreply@openai.com>
2026-10-17 04:22:57 +02:00