Back to all instances

Product solution puzzle

Benchmark instance 061
Input static SVG
Input static SVG for Product solution puzzle
Source Lottie animation
Motion edit prompt

Treat each puzzle quadrant and its attached knobs, notches, strips, and small inset details as rigid grouped pieces. Starting from the assembled square, move the four pieces apart diagonally from the center with smooth ease-in/ease-out timing: the upper-left piece slides upward and slightly left, the upper-right piece slides upward and right, the lower-left piece slides downward and left, and the lower-right piece slides downward and right, keeping their orientation and size unchanged until the gaps between neighboring square bodies are about one circular knob’s width. Hold the separated arrangement briefly, then move all four pieces back along the same paths with smooth ease-in/ease-out timing until each returns to where it sits in the provided SVG and the puzzle locks together again. After the pieces meet, apply a quick centered bounce to the entire assembled puzzle: shrink inward first, expand slightly past its size in the provided SVG, then settle at its size in the provided SVG.

Example model outputs

Human-approved

DeepSeek V4 Flash 0731

Reasoning effort: maximum

Verification report: 6 passed · 0 failed
Result Check
PASS ver_assembled_anchors

The first and last assembled poses match the supplied artwork

Measured values
{
  "maximum_pose_error": 0.0
}
PASS ver_centered_lock_bounce

Travel keeps size/orientation; the locked puzzle then shrinks inward and overshoots about one central pivot

Measured values
{
  "lock_error": 0.019900000000006912,
  "overshoot": 1.0349,
  "pivot": [
    250.0,
    250.0
  ],
  "pivot_fit_error": 0.0,
  "shrink": 0.9579
}
PASS ver_diagonal_paths

Each quadrant moves in its named diagonal direction and retraces its route

Measured values
{
  "excursions": {
    "blue": [
      29.0,
      29.0
    ],
    "green": [
      29.0,
      29.0
    ],
    "red": [
      29.0,
      29.0
    ],
    "yellow": [
      29.0,
      29.0
    ]
  },
  "retrace_error": 1.1102230246251565e-16
}
PASS ver_eased_slides

Every piece has slower departure/arrival than its interior travel

Measured values
{
  "speeds": {
    "blue_outward": {
      "end_speed": 0.0281,
      "measurement_stride": 1,
      "peak_speed": 6.104,
      "start_speed": 0.0281
    },
    "blue_return": {
      "end_speed": 0.1969,
      "measurement_stride": 1,
      "peak_speed": 6.104,
      "start_speed": 0.0281
    },
    "green_outward": {
      "end_speed": 0.0281,
      "measurement_stride": 1,
      "peak_speed": 6.104,
      "start_speed": 0.0281
    },
    "green_return": {
      "end_speed": 0.1969,
      "measurement_stride": 1,
      "peak_speed": 6.104,
      "start_speed": 0.0281
    },
    "red_outward": {
      "end_speed": 0.0281,
      "measurement_stride": 1,
      "peak_speed": 6.104,
      "start_speed": 0.0281
    },
    "red_return": {
      "end_speed": 0.1969,
      "measurement_stride": 1,
      "peak_speed": 6.104,
      "start_speed": 0.0281
    },
    "yellow_outward": {
      "end_speed": 0.0281,
      "measurement_stride": 1,
      "peak_speed": 6.104,
      "start_speed": 0.0281
    },
    "yellow_return": {
      "end_speed": 0.1969,
      "measurement_stride": 1,
      "peak_speed": 6.104,
      "start_speed": 0.0281
    }
  }
}
PASS ver_rigid_pieces

All attached details retain their shape, visible paint, and relation to their quadrant

Measured values
{
  "outline_error": 0.00013197179950678704,
  "relative_drift": 0.0
}
PASS ver_separated_spacing_and_hold

The knob-scale arrangement is held before returning

Measured values
{
  "gaps": [
    58.0,
    58.0,
    58.0,
    58.0
  ],
  "hold_source_frames": [
    18,
    27
  ],
  "knob_width": 58.0175
}

Human-rejected

Gemini 3.6 Flash

Reasoning effort: high

Verification report: 5 passed · 1 failed
Result Check
PASS ver_assembled_anchors

The first and last assembled poses match the supplied artwork

Measured values
{
  "maximum_pose_error": 0.0
}
PASS ver_centered_lock_bounce

Travel keeps size/orientation; the locked puzzle then shrinks inward and overshoots about one central pivot

Measured values
{
  "lock_error": 0.022999999999996135,
  "overshoot": 1.0498,
  "pivot": [
    250.0,
    249.99976796496927
  ],
  "pivot_fit_error": 0.0023999999999944066,
  "shrink": 0.9387
}
PASS ver_diagonal_paths

Each quadrant moves in its named diagonal direction and retraces its route

Measured values
{
  "excursions": {
    "blue": [
      30.0,
      30.0
    ],
    "green": [
      32.0,
      28.0
    ],
    "red": [
      30.0,
      30.0
    ],
    "yellow": [
      18.0,
      32.0
    ]
  },
  "retrace_error": 8.750000000112834e-05
}
PASS ver_eased_slides

Every piece has slower departure/arrival than its interior travel

Measured values
{
  "speeds": {
    "blue_outward": {
      "end_speed": 0.0184,
      "measurement_stride": 1,
      "peak_speed": 5.7768,
      "start_speed": 0.0184
    },
    "blue_return": {
      "end_speed": 0.2036,
      "measurement_stride": 1,
      "peak_speed": 6.3145,
      "start_speed": 0.0291
    },
    "green_outward": {
      "end_speed": 0.0184,
      "measurement_stride": 1,
      "peak_speed": 5.7897,
      "start_speed": 0.0184
    },
    "green_return": {
      "end_speed": 0.2042,
      "measurement_stride": 1,
      "peak_speed": 6.3285,
      "start_speed": 0.0291
    },
    "red_outward": {
      "end_speed": 0.0184,
      "measurement_stride": 1,
      "peak_speed": 5.7768,
      "start_speed": 0.0184
    },
    "red_return": {
      "end_speed": 0.2036,
      "measurement_stride": 1,
      "peak_speed": 6.3145,
      "start_speed": 0.0291
    },
    "yellow_outward": {
      "end_speed": 0.0159,
      "measurement_stride": 1,
      "peak_speed": 4.9993,
      "start_speed": 0.0159
    },
    "yellow_return": {
      "end_speed": 0.1764,
      "measurement_stride": 1,
      "peak_speed": 5.4645,
      "start_speed": 0.0251
    }
  }
}
FAIL ver_rigid_pieces

All attached details retain their shape, visible paint, and relation to their quadrant

Measured values
{
  "relative_drift": 0.0125
}
PASS ver_separated_spacing_and_hold

The knob-scale arrangement is held before returning

Measured values
{
  "gaps": [
    50.0,
    60.0,
    62.0,
    58.0
  ],
  "hold_source_frames": [
    21,
    27
  ],
  "knob_width": 58.0175
}