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
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>
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>
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>
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>
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
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
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
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
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>
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>
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>
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>
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>