For a grab on a node inside a BLENDED group, the raw field (clay_eval_points) moves by about one ulp at samples outside the node's own influence bound dilated by the band. Identical on main and on #648, so it is the node bound's, not the undo narrowing's.
Measured
benchmarks/undo_bound_oracle_probe with RV_RAWBOUND takes one step, undoes and redoes it, and asserts that every sample whose raw value moved within the band lies inside the reported bound dilated by the band.
Seed 5128, rich mode (a grab on a node in a blended group), on main at c62d521 and on main + #648 alike:
seed 5128 undo: raw moved OUTSIDE bound+band at -0.150 -0.450 -0.250 (-0.03729 -> -0.03729)
seed 5128 undo: raw moved OUTSIDE bound+band at -0.100 -0.350 -0.200 (-0.08273 -> -0.08273)
seed 5128 undo: raw moved OUTSIDE bound+band at -0.050 -0.350 -0.200 (-0.08466 -> -0.08466)
raw-bound violations: 10 samples in 2 directions
The change is below the printed precision (one ulp). Across #648's review sweep -- 800 trials under RV_RAWBOUND, 1,489 undo/redo directions that changed the field -- this is the only seed that shows it, on either revision. The same seed also leaves 13 bricks different from a rebuild on main (#649).
Candidate
The node influence bound's handling of a group blend: an ulp-level change leaking past the group's blend support (a smooth-min whose weight is not exactly zero at the support's edge in float, or a support computed from a quantity rounded the other way). One ulp is harmless for meshing at fp16, but it means the bound's "SHALL NOT be smaller" claim is not strictly true, and a bit-exact oracle cannot be pointed at blended groups without a tolerance.
Reproduce
cmake -S . -B build/probe -DCLAY_BUILD_BENCHMARKS=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build/probe --target undo_bound_oracle_probe --parallel 8
RV_RAWBOUND=1 build/probe/undo_bound_oracle_probe 5128 1 r
RV_RAWBOUND=1 RV_VERBOSE=1 build/probe/undo_bound_oracle_probe 5128 1 r # the fixture
For a grab on a node inside a BLENDED group, the raw field (
clay_eval_points) moves by about one ulp at samples outside the node's own influence bound dilated by the band. Identical on main and on #648, so it is the node bound's, not the undo narrowing's.Measured
benchmarks/undo_bound_oracle_probewithRV_RAWBOUNDtakes one step, undoes and redoes it, and asserts that every sample whose raw value moved within the band lies inside the reported bound dilated by the band.Seed 5128,
richmode (a grab on a node in a blended group), on main at c62d521 and on main + #648 alike:The change is below the printed precision (one ulp). Across #648's review sweep -- 800 trials under
RV_RAWBOUND, 1,489 undo/redo directions that changed the field -- this is the only seed that shows it, on either revision. The same seed also leaves 13 bricks different from a rebuild on main (#649).Candidate
The node influence bound's handling of a group blend: an ulp-level change leaking past the group's blend support (a smooth-min whose weight is not exactly zero at the support's edge in float, or a support computed from a quantity rounded the other way). One ulp is harmless for meshing at fp16, but it means the bound's "SHALL NOT be smaller" claim is not strictly true, and a bit-exact oracle cannot be pointed at blended groups without a tolerance.
Reproduce