Animal actor and held props

U2 and U27 are fixed. V37 is already gone in the current-main repro.

Current-main baseline 42b063eed87321ef9c5192e1f763ff4b2cb439b0
Implementation e450f7f185869c9dd006438a33cf9126da261d0a. Images open at their captured resolution.

U2: held props

Fixed

One shared hold rule measures the drawn head mesh and the prop mesh. The prop stays in front of the body, with the rendered paw on its handle. Animated teeth refresh their mesh outline as the jaws open. Worn sleeves and band-aids stay attached to the arm.

Cleaver, 390 px

Current main
Before: Cleaver, 390 px
Fixed
After: Cleaver, 390 px

Minimum observed gap: 4.0 px over 11 rendered frames.

Teeth, 390 px

Current main
Before: Teeth, 390 px
Fixed
After: Teeth, 390 px

Minimum observed gap: 3.7 px over 50 rendered frames.

Vacuum nozzle, 390 px

Current main
Before: Vacuum nozzle, 390 px
Fixed
After: Vacuum nozzle, 390 px

Minimum observed gap: 4.1 px over 181 rendered frames.

Desktop comparisons, 1440 × 900

Cleaver, 1440 px

Current main
Before: Cleaver, 1440 px
Fixed
After: Cleaver, 1440 px

Minimum observed gap: 3.9 px over 15 rendered frames.

Teeth, 1440 px

Current main
Before: Teeth, 1440 px
Fixed
After: Teeth, 1440 px

Minimum observed gap: 3.7 px over 24 rendered frames.

Vacuum nozzle, 1440 px

Current main
Before: Vacuum nozzle, 1440 px
Fixed
After: Vacuum nozzle, 1440 px

Minimum observed gap: 4.8 px over 136 rendered frames.

Measured clearance on the drawn meshes

Minimum distance between the projected convex outlines of actual posed mesh vertices. These are sampled rendered frames, including the pop and catch. Measurements use CSS pixels, not a face decal or an inset head box.

PropViewportMinimum gapFrames
Cleaver390 × 8444.0 px11
Cleaver1440 × 9003.9 px15
Teeth390 × 8443.7 px50
Teeth1440 × 9003.7 px24
Vacuum nozzle390 × 8444.1 px181
Vacuum nozzle1440 × 9004.8 px136

U27: the pig cheer

Fixed

The anticipation and both landings use a shallower body squash. The face stays readable through the cheer. Only three squash values changed in anim.js.

Before
41.0%
After
59.8%

Minimum combined body and head height-to-width ratio relative to rest, measured across the 1.6 s clip. The figure describes shape, not a change in camera zoom.

Cheer landing, 412 px

Current main
Before: Cheer landing, 412 px
Fixed
After: Cheer landing, 412 px

The same 1.07 s landing pose. The jumps, spin, wrist motion and timing stay in the clip.

390 px and desktop cheer crops

Cheer landing, 390 px

Current main
Before: Cheer landing, 390 px
Fixed
After: Cheer landing, 390 px

The same 1.07 s landing pose. The jumps, spin, wrist motion and timing stay in the clip.

Cheer landing, 1440 px

Current main
Before: Cheer landing, 1440 px
Fixed
After: Cheer landing, 1440 px

The same 1.07 s landing pose. The jumps, spin, wrist motion and timing stay in the clip.

V37: the way home

Already gone on current main

The reported v37B1 offline URL ran for 210 seconds without the warning. The matching Dog → You Pickpocket return also finished with zero final-position snap at 390 × 844, 1440 × 900 and 1920 × 1080. No route or search-limit code changed.

390 px return walk

Current main

Walk home frame 1, beforeWalk home frame 2, beforeWalk home frame 3, beforeWalk home frame 4, before

Final actor rule

Walk home frame 1, afterWalk home frame 2, afterWalk home frame 3, afterWalk home frame 4, after

Zero final-position snap in both builds. The animal is exactly home before the track completes.

Desktop return sequences, including the reported 1920 px viewport

1440 px return walk

Current main

Walk home frame 1, beforeWalk home frame 2, beforeWalk home frame 3, beforeWalk home frame 4, before

Final actor rule

Walk home frame 1, afterWalk home frame 2, afterWalk home frame 3, afterWalk home frame 4, after

Zero final-position snap in both builds. The animal is exactly home before the track completes.

1920 px return walk

Current main

Walk home frame 1, beforeWalk home frame 2, beforeWalk home frame 3, beforeWalk home frame 4, before

Final actor rule

Walk home frame 1, afterWalk home frame 2, afterWalk home frame 3, afterWalk home frame 4, after

Zero final-position snap in both builds. The animal is exactly home before the track completes.

The seeded run is a 3.5 minute check, not an entire 11 minute match. The deterministic return check measures the position immediately before and after the track ends. Measurement summary.

Implementation boundary

The shared rule covers hand attachments and root props posed through the existing grip or hand APIs. The cleaver, teeth and vacuum use the same fit. pickpocket.js, redirect.js, Gridlock, farm, launch and hub files were left alone. No engine, server or production migration changed.

Captures use a local web export and a test-only window reference to inspect the scene. That reference is absent from the committed source. Independent review and the review stamp belong to the coordinator.