Skip to content

A grab inside a blended group moves the raw field by an ulp outside the node's influence bound (seed 5128) #650

Description

@leonardoaraujosantos

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

No activity

Activity on this issue will appear here.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions