{"abstract":"Sleeping bodies report residual motion and wake-up comparisons drift.","category":"Physics integrator stability","checks":8,"contract":"solve(v, omega, lin_damp, ang_damp, dt, max_speed, sleep_lin, sleep_ang, sleep_time, kicks): per frame, a sleeping body wakes (timer reset) only when that frame's kick is nonzero, else it is skipped. Add the kick [dvx,dvy,domega], damp with 1/(1+dt*c) (linear and angular coefficients), clamp speed magnitude, then accumulate sleep time while |v|<sleep_lin and |omega|<sleep_ang (else reset). When timer>=sleep_time the body sleeps and velocities are zeroed. Return [vx, vy, omega, timer, asleep, frame index slept or -1].","contract_signature":"v, omega, lin_damp, ang_damp, dt, max_speed, sleep_lin, sleep_ang, sleep_time, kicks","evaluation_group":"w2-physics_integrator_stability-damping-clamp-sleep","failed_approach":"Zeroing only linear velocity keeps residual spin.","family":"w2-physics_integrator_stability-damping-clamp-sleep-sleep-velocity-zeroing","id":"FA-87271","implementations":{"attempt":{"sha256":"ed171b8f44df9cb00a717d402995714c47005c62a29c633159024f9a54aab104","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(v, omega, lin_damp, ang_damp, dt, max_speed, sleep_lin, sleep_ang, sleep_time, kicks):\n    vx, vy = v\n    w = omega\n    timer = 0.0\n    asleep = False\n    slept_at = -1\n    for f, (ax, ay, aw) in enumerate(kicks):\n        if asleep:\n            if ax or ay or aw:\n                asleep = False\n                timer = 0.0\n            else:\n                continue\n        vx += ax\n        vy += ay\n        w += aw\n        dl = 1.0 / (1.0 + dt * lin_damp)\n        vx *= dl\n        vy *= dl\n        w *= 1.0 / (1.0 + dt * ang_damp)\n        sp = math.hypot(vx, vy)\n        if sp > max_speed:\n            s = max_speed / sp\n            vx *= s\n            vy *= s\n        if math.hypot(vx, vy) < sleep_lin and abs(w) < sleep_ang:\n            timer += dt\n        else:\n            timer = 0.0\n        if timer >= sleep_time:\n            asleep = True\n            slept_at = f\n            vx = vy = 0.0\n    return [round(vx, 6), round(vy, 6), round(w, 6), round(timer, 6), asleep, slept_at]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[0.03, -0.0], 0.0, 2.0, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 3.0], [0, 0, 3.0], [0, 0, 3.0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0]]], [0.020852, 0.0, 6.326342, 0.0, False, -1]], [[[0.07, -0.02], 0.0, 2.0, 5.0, 0.015625, 8.0, 0.5, 0.3, 0.046875, [[0, 0, 0], [0, 0, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0.5], [0, 0, 0]]], [0.058199, -0.016628, 0.773423, 0.0, False, -1]], [[[-0.04, 0.04], -0.28, 80.0, 40.0, 0.0625, 3.0, 0.5, 0.3, 0.0625, [[0, 0, 0], [0, 0, 0], [1, 8, -1], [0, 0, 0], [-2, 0, 0.5], [0, 0, 0], [0, 8, -1], [0, 0, 0], [0, -3, -1], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 9]], [[[-0.01, -0.02], -0.81, 20.0, 0.5, 0.015625, 8.0, 2.0, 1.0, 0.03125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, -3, 0.5], [0, 0, 0]]], [-1.160998, -1.741497, 0.492278, 0.0, False, 1]], [[[0.04, -0.03], 0.0, 0.5, 0.5, 0.03125, 8.0, 0.5, 1.0, 0.09375, [[0, 0, -1.5], [0, 0, -1.5], [0, 0, 0], [0, 0, -1.5], [0, 0, 0], [0, 0, 0]]], [0.036447, -0.027335, -4.186696, 0.0, False, -1]], [[[5.83, -5.96], 1.87, 20.0, 40.0, 0.0625, 8.0, 2.0, 1.0, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 1, 0], [1, 0, 0.5]]], [0.444444, 0.0, 0.142857, 0.0625, False, 3]], [[[-1.08, -1.72], -1.45, 20.0, 0.5, 0.03125, 8.0, 0.5, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [0, 1, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.09375, True, 4]], [[[-0.02, 0.03], -1.96, 20.0, 0.5, 0.015625, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [5, 8, 2], [-2, 0, -1], [0, 0, 0], [0, 0, 0], [1, 8, 2], [5, 0, 2]]], [4.81969, 6.010948, 3.087279, 0.0, False, -1]]], [[[[-0.02, -0.03], -1.37, 2.0, 0.5, 0.03125, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [0, 0, 0], [5, 0, 0.5], [0, 0, 0], [-2, 1, 2], [0, 8, 2], [0, 0, 0]]], [1.858205, 7.296514, 3.081645, 0.0, False, -1]], [[[0.81, -0.69], -1.88, 2.0, 40.0, 0.03125, 3.0, 2.0, 0.3, 0.03125, [[1, 0, -1], [5, 8, 0.5], [0, 0, 0], [0, 0, 0], [5, 1, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 0, -1]]], [0.148227, 0.886167, -0.45268, 0.0, False, -1]], [[[0.03, 0.05], -0.24, 20.0, 40.0, 0.03125, 3.0, 0.5, 0.3, 0.09375, [[0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.09375, True, 2]], [[[-0.04, 0.01], -0.55, 2.0, 5.0, 0.0625, 3.0, 2.0, 1.0, 0.125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 1, 0.5], [0, 0, 2], [5, 8, 0.5], [0, 0, 0]]], [1.318477, 2.317915, 1.343309, 0.0, False, 1]], [[[0.63, 0.72], -1.08, 20.0, 0.5, 0.0625, 3.0, 2.0, 1.0, 0.1875, [[0, 0, 0], [0, 0, 0], [5, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.1875, True, 8]], [[[-1.82, -3.97], -1.03, 0.5, 40.0, 0.0625, 3.0, 2.0, 0.3, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 8, 0.5], [0, 0, 0]]], [-0.541146, 2.858316, 0.040771, 0.0, False, -1]], [[[0.01, 0.07], 0.0, 2.0, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.046875, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -3.0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.046875, True, 6]], [[[0.04, 0.05], -1.81, 20.0, 40.0, 0.0625, 3.0, 2.0, 1.0, 0.1875, [[5, 0, 0.5], [0, 0, 0], [1, -3, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 1, 0], [0, 8, 0]]], [0.157676, 2.995853, 0.0, 0.0, False, 3]]], [[[[-1.13, 2.26], 0.9, 0.5, 5.0, 0.0625, 3.0, 2.0, 0.3, 0.1875, [[0, 0, 0], [0, 0, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [-0.911026, 1.822052, -0.061479, 0.0, False, -1]], [[[0.01, -0.05], 0.0, 0.5, 5.0, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, 3.0], [0, 0, -3.0], [0, 0, 0], [0, 0, 3.0], [0, 0, -3.0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0], [0, 0, 3.0]]], [0.0, 0.0, 4.853834, 0.0, False, 2]], [[[4.02, -0.48], -0.66, 2.0, 5.0, 0.03125, 3.0, 0.5, 1.0, 0.0625, [[0, 0, 0], [1, -3, 0.5], [0, 0, 0]]], [2.158391, -1.820348, -0.052966, 0.0, False, -1]], [[[-0.05, 0.02], -0.33, 20.0, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, -3, 0.5], [5, 1, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.038365, -0.002501, 0.416569, 0.0, False, -1]], [[[-0.43, 5.53], 1.03, 80.0, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 2]], [[[0.08, -0.01], 0.0, 0.5, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.09375, True, 8]], [[[0.03, 0.03], -0.45, 80.0, 40.0, 0.03125, 3.0, 2.0, 1.0, 0.09375, [[5, 8, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.09375, True, 3]], [[[0.05, -0.06], 0.0, 0.5, 5.0, 0.03125, 8.0, 0.5, 0.3, 0.0625, [[0, 0, 0], [0, 0, 0], [0, 0, 1.5], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, -1.5], [0, 0, 1.5]]], [0.0, 0.0, 0.17531, 0.03125, False, 6]]], [[[[-0.1, 0.04], 0.0, 0.5, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.09375, [[0, 0, -3.0], [0, 0, -3.0], [0, 0, 0], [0, 0, 3.0]]], [-0.093987, 0.037595, -1.024612, 0.0, False, -1]], [[[3.82, 5.03], 0.39, 2.0, 5.0, 0.03125, 3.0, 2.0, 1.0, 0.03125, [[0, 0, 0], [0, 0, 0], [0, -3, 0], [0, 0, 0], [-2, -3, 0.5], [0, 0, 0]]], [-1.566212, -2.349318, 0.373996, 0.0, False, 2]], [[[0.09, 0.04], 0.0, 0.5, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, 0, 1.5], [0, 0, -1.5], [0, 0, 0], [0, 0, 1.5], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.07256, 0.032249, 0.435606, 0.0, False, -1]], [[[-0.03, -0.0], 0.97, 2.0, 5.0, 0.015625, 8.0, 0.5, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 1, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [5, 8, 0]]], [3.941435, 6.961687, 0.295315, 0.0, False, 0]], [[[-0.05, -0.03], 1.51, 0.5, 0.5, 0.03125, 3.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [0, 0, 0], [5, 1, 0], [0, 1, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [2.524203, 1.35238, 1.824634, 0.0, False, -1]], [[[-0.0, 0.07], 0.0, 0.5, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.046875, [[0, 0, 0], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 0], [0, 0, -1.5]]], [0.0, 0.065775, -5.817074, 0.0, False, -1]], [[[-0.04, -0.07], 0.0, 0.5, 0.5, 0.03125, 8.0, 0.5, 0.3, 0.0625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -0.5], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, -0.477276, 0.0, False, 1]], [[[1.67, 5.72], 0.16, 80.0, 40.0, 0.03125, 8.0, 0.5, 0.3, 0.03125, [[0, 0, 0], [-2, 0, 0.5], [0, 0, 0], [0, -3, -1], [0, 0, 0], [-2, -3, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, -3, -1]]], [0.0, -0.857143, -0.444444, 0.0, False, 6]]], [[[[-0.04, -0.02], 1.89, 20.0, 40.0, 0.0625, 3.0, 0.5, 1.0, 0.125, [[0, 0, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, -3, -1], [-2, 0, 0.5]]], [-1.283951, -0.592593, 0.061224, 0.0, False, 1]], [[[0.06, 0.05], 0.0, 2.0, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0.5], [0, 0, 0.5], [0, 0, -0.5], [0, 0, 0], [0, 0, 0.5]]], [0.0, 0.0, 0.432432, 0.03125, False, 6]], [[[-0.04, -0.04], -0.84, 2.0, 40.0, 0.0625, 3.0, 2.0, 1.0, 0.0625, [[1, 8, 0], [0, 0, 0], [1, 1, 0.5], [1, 1, 0.5], [0, 0, 0], [-2, -3, 0.5], [0, 0, 0], [5, 1, -1], [0, 0, 0], [0, 0, 0]]], [2.324339, 0.464868, -0.023324, 0.0, False, 5]], [[[-2.6, 4.32], -1.06, 2.0, 5.0, 0.03125, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [0, 0, 2], [0, 0, 0], [0, 0, 0], [0, 8, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [-1.041672, 5.81551, -0.125229, 0.0, False, -1]], [[[-0.01, 0.03], -0.14, 0.5, 0.5, 0.0625, 3.0, 0.5, 1.0, 0.0625, [[0, 0, 0], [1, 1, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0.5], [0, 0, 0]]], [0.806218, 0.806218, -0.336061, 0.0, False, 0]], [[[-1.37, -4.17], -0.34, 20.0, 0.5, 0.03125, 8.0, 2.0, 1.0, 0.0625, [[-2, 8, 2], [-2, 0, 0], [1, 0, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 1, -1], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 8]], [[[1.67, -3.47], 0.96, 0.5, 0.5, 0.015625, 3.0, 0.5, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [5, -3, 2]]], [2.226277, -2.010893, 2.922343, 0.0, False, -1]], [[[0.04, -0.02], -0.56, 20.0, 5.0, 0.03125, 3.0, 2.0, 0.3, 0.0625, [[0, 0, 0], [-2, 8, 0], [1, -3, 2], [0, 0, 0], [0, 1, 0.5]]], [0.065203, 0.594939, 1.45528, 0.0, False, -1]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"case %d\" % i, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"0ef25afa2fe4e4254cc6110a8943b56a5dafddf966bb910a87ce07465602448e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(v, omega, lin_damp, ang_damp, dt, max_speed, sleep_lin, sleep_ang, sleep_time, kicks):\n    vx, vy = v\n    w = omega\n    timer = 0.0\n    asleep = False\n    slept_at = -1\n    for f, (ax, ay, aw) in enumerate(kicks):\n        if asleep:\n            if ax or ay or aw:\n                asleep = False\n                timer = 0.0\n            else:\n                continue\n        vx += ax\n        vy += ay\n        w += aw\n        dl = 1.0 / (1.0 + dt * lin_damp)\n        vx *= dl\n        vy *= dl\n        w *= 1.0 / (1.0 + dt * ang_damp)\n        sp = math.hypot(vx, vy)\n        if sp > max_speed:\n            s = max_speed / sp\n            vx *= s\n            vy *= s\n        if math.hypot(vx, vy) < sleep_lin and abs(w) < sleep_ang:\n            timer += dt\n        else:\n            timer = 0.0\n        if timer >= sleep_time:\n            asleep = True\n            slept_at = f\n    return [round(vx, 6), round(vy, 6), round(w, 6), round(timer, 6), asleep, slept_at]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[[[[0.03, -0.0], 0.0, 2.0, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 3.0], [0, 0, 3.0], [0, 0, 3.0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0]]], [0.020852, 0.0, 6.326342, 0.0, False, -1]], [[[0.07, -0.02], 0.0, 2.0, 5.0, 0.015625, 8.0, 0.5, 0.3, 0.046875, [[0, 0, 0], [0, 0, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0.5], [0, 0, 0]]], [0.058199, -0.016628, 0.773423, 0.0, False, -1]], [[[-0.04, 0.04], -0.28, 80.0, 40.0, 0.0625, 3.0, 0.5, 0.3, 0.0625, [[0, 0, 0], [0, 0, 0], [1, 8, -1], [0, 0, 0], [-2, 0, 0.5], [0, 0, 0], [0, 8, -1], [0, 0, 0], [0, -3, -1], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 9]], [[[-0.01, -0.02], -0.81, 20.0, 0.5, 0.015625, 8.0, 2.0, 1.0, 0.03125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, -3, 0.5], [0, 0, 0]]], [-1.160998, -1.741497, 0.492278, 0.0, False, 1]], [[[0.04, -0.03], 0.0, 0.5, 0.5, 0.03125, 8.0, 0.5, 1.0, 0.09375, [[0, 0, -1.5], [0, 0, -1.5], [0, 0, 0], [0, 0, -1.5], [0, 0, 0], [0, 0, 0]]], [0.036447, -0.027335, -4.186696, 0.0, False, -1]], [[[5.83, -5.96], 1.87, 20.0, 40.0, 0.0625, 8.0, 2.0, 1.0, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 1, 0], [1, 0, 0.5]]], [0.444444, 0.0, 0.142857, 0.0625, False, 3]], [[[-1.08, -1.72], -1.45, 20.0, 0.5, 0.03125, 8.0, 0.5, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [0, 1, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.09375, True, 4]], [[[-0.02, 0.03], -1.96, 20.0, 0.5, 0.015625, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [5, 8, 2], [-2, 0, -1], [0, 0, 0], [0, 0, 0], [1, 8, 2], [5, 0, 2]]], [4.81969, 6.010948, 3.087279, 0.0, False, -1]]], [[[[-0.02, -0.03], -1.37, 2.0, 0.5, 0.03125, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [0, 0, 0], [5, 0, 0.5], [0, 0, 0], [-2, 1, 2], [0, 8, 2], [0, 0, 0]]], [1.858205, 7.296514, 3.081645, 0.0, False, -1]], [[[0.81, -0.69], -1.88, 2.0, 40.0, 0.03125, 3.0, 2.0, 0.3, 0.03125, [[1, 0, -1], [5, 8, 0.5], [0, 0, 0], [0, 0, 0], [5, 1, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 0, -1]]], [0.148227, 0.886167, -0.45268, 0.0, False, -1]], [[[0.03, 0.05], -0.24, 20.0, 40.0, 0.03125, 3.0, 0.5, 0.3, 0.09375, [[0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.09375, True, 2]], [[[-0.04, 0.01], -0.55, 2.0, 5.0, 0.0625, 3.0, 2.0, 1.0, 0.125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 1, 0.5], [0, 0, 2], [5, 8, 0.5], [0, 0, 0]]], [1.318477, 2.317915, 1.343309, 0.0, False, 1]], [[[0.63, 0.72], -1.08, 20.0, 0.5, 0.0625, 3.0, 2.0, 1.0, 0.1875, [[0, 0, 0], [0, 0, 0], [5, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.1875, True, 8]], [[[-1.82, -3.97], -1.03, 0.5, 40.0, 0.0625, 3.0, 2.0, 0.3, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 8, 0.5], [0, 0, 0]]], [-0.541146, 2.858316, 0.040771, 0.0, False, -1]], [[[0.01, 0.07], 0.0, 2.0, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.046875, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -3.0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.046875, True, 6]], [[[0.04, 0.05], -1.81, 20.0, 40.0, 0.0625, 3.0, 2.0, 1.0, 0.1875, [[5, 0, 0.5], [0, 0, 0], [1, -3, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 1, 0], [0, 8, 0]]], [0.157676, 2.995853, 0.0, 0.0, False, 3]]], [[[[-1.13, 2.26], 0.9, 0.5, 5.0, 0.0625, 3.0, 2.0, 0.3, 0.1875, [[0, 0, 0], [0, 0, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [-0.911026, 1.822052, -0.061479, 0.0, False, -1]], [[[0.01, -0.05], 0.0, 0.5, 5.0, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, 3.0], [0, 0, -3.0], [0, 0, 0], [0, 0, 3.0], [0, 0, -3.0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0], [0, 0, 3.0]]], [0.0, 0.0, 4.853834, 0.0, False, 2]], [[[4.02, -0.48], -0.66, 2.0, 5.0, 0.03125, 3.0, 0.5, 1.0, 0.0625, [[0, 0, 0], [1, -3, 0.5], [0, 0, 0]]], [2.158391, -1.820348, -0.052966, 0.0, False, -1]], [[[-0.05, 0.02], -0.33, 20.0, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, -3, 0.5], [5, 1, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.038365, -0.002501, 0.416569, 0.0, False, -1]], [[[-0.43, 5.53], 1.03, 80.0, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 2]], [[[0.08, -0.01], 0.0, 0.5, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.09375, True, 8]], [[[0.03, 0.03], -0.45, 80.0, 40.0, 0.03125, 3.0, 2.0, 1.0, 0.09375, [[5, 8, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.09375, True, 3]], [[[0.05, -0.06], 0.0, 0.5, 5.0, 0.03125, 8.0, 0.5, 0.3, 0.0625, [[0, 0, 0], [0, 0, 0], [0, 0, 1.5], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, -1.5], [0, 0, 1.5]]], [0.0, 0.0, 0.17531, 0.03125, False, 6]]], [[[[-0.1, 0.04], 0.0, 0.5, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.09375, [[0, 0, -3.0], [0, 0, -3.0], [0, 0, 0], [0, 0, 3.0]]], [-0.093987, 0.037595, -1.024612, 0.0, False, -1]], [[[3.82, 5.03], 0.39, 2.0, 5.0, 0.03125, 3.0, 2.0, 1.0, 0.03125, [[0, 0, 0], [0, 0, 0], [0, -3, 0], [0, 0, 0], [-2, -3, 0.5], [0, 0, 0]]], [-1.566212, -2.349318, 0.373996, 0.0, False, 2]], [[[0.09, 0.04], 0.0, 0.5, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, 0, 1.5], [0, 0, -1.5], [0, 0, 0], [0, 0, 1.5], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.07256, 0.032249, 0.435606, 0.0, False, -1]], [[[-0.03, -0.0], 0.97, 2.0, 5.0, 0.015625, 8.0, 0.5, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 1, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [5, 8, 0]]], [3.941435, 6.961687, 0.295315, 0.0, False, 0]], [[[-0.05, -0.03], 1.51, 0.5, 0.5, 0.03125, 3.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [0, 0, 0], [5, 1, 0], [0, 1, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [2.524203, 1.35238, 1.824634, 0.0, False, -1]], [[[-0.0, 0.07], 0.0, 0.5, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.046875, [[0, 0, 0], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 0], [0, 0, -1.5]]], [0.0, 0.065775, -5.817074, 0.0, False, -1]], [[[-0.04, -0.07], 0.0, 0.5, 0.5, 0.03125, 8.0, 0.5, 0.3, 0.0625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -0.5], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, -0.477276, 0.0, False, 1]], [[[1.67, 5.72], 0.16, 80.0, 40.0, 0.03125, 8.0, 0.5, 0.3, 0.03125, [[0, 0, 0], [-2, 0, 0.5], [0, 0, 0], [0, -3, -1], [0, 0, 0], [-2, -3, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, -3, -1]]], [0.0, -0.857143, -0.444444, 0.0, False, 6]]], [[[[-0.04, -0.02], 1.89, 20.0, 40.0, 0.0625, 3.0, 0.5, 1.0, 0.125, [[0, 0, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, -3, -1], [-2, 0, 0.5]]], [-1.283951, -0.592593, 0.061224, 0.0, False, 1]], [[[0.06, 0.05], 0.0, 2.0, 5.0, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0.5], [0, 0, 0.5], [0, 0, -0.5], [0, 0, 0], [0, 0, 0.5]]], [0.0, 0.0, 0.432432, 0.03125, False, 6]], [[[-0.04, -0.04], -0.84, 2.0, 40.0, 0.0625, 3.0, 2.0, 1.0, 0.0625, [[1, 8, 0], [0, 0, 0], [1, 1, 0.5], [1, 1, 0.5], [0, 0, 0], [-2, -3, 0.5], [0, 0, 0], [5, 1, -1], [0, 0, 0], [0, 0, 0]]], [2.324339, 0.464868, -0.023324, 0.0, False, 5]], [[[-2.6, 4.32], -1.06, 2.0, 5.0, 0.03125, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [0, 0, 2], [0, 0, 0], [0, 0, 0], [0, 8, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [-1.041672, 5.81551, -0.125229, 0.0, False, -1]], [[[-0.01, 0.03], -0.14, 0.5, 0.5, 0.0625, 3.0, 0.5, 1.0, 0.0625, [[0, 0, 0], [1, 1, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0.5], [0, 0, 0]]], [0.806218, 0.806218, -0.336061, 0.0, False, 0]], [[[-1.37, -4.17], -0.34, 20.0, 0.5, 0.03125, 8.0, 2.0, 1.0, 0.0625, [[-2, 8, 2], [-2, 0, 0], [1, 0, -1], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 1, -1], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 8]], [[[1.67, -3.47], 0.96, 0.5, 0.5, 0.015625, 3.0, 0.5, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [5, -3, 2]]], [2.226277, -2.010893, 2.922343, 0.0, False, -1]], [[[0.04, -0.02], -0.56, 20.0, 5.0, 0.03125, 3.0, 2.0, 0.3, 0.0625, [[0, 0, 0], [-2, 8, 0], [1, -3, 2], [0, 0, 0], [0, 1, 0.5]]], [0.065203, 0.594939, 1.45528, 0.0, False, -1]]]]\nfor i, (args, expected) in enumerate(fixtures[N-1]):\n    check(\"case %d\" % i, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic bounded teaching model with stipulated toy conventions and rounded float output; not a production physics engine or a proof of numerical stability. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-physics_integrator_stability-damping-clamp-sleep-sleep-velocity-zeroing","generated_at":"2026-09-29T14:50:57.219315+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Game and robotics physics loops depend on integrator update order, step control and stabilization terms; a wrong decision point turns a stable simulation into drifting or exploding motion.","root_cause":"The zeroing of vx, vy and omega on sleep is missing.","sha256":"f3a993dfcacff7fd70774130d5c27470692d48a120050e351e9784cba958e01a","title":"Falling asleep does not zero velocities · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":45.116,"exit_code":1,"observations":[{"actual":[0.020852,0.0,6.326342,0.0,false,-1],"check":"case 0","expected":[0.020852,0.0,6.326342,0.0,false,-1],"passed":true},{"actual":[0.058199,-0.016628,0.773423,0.0,false,-1],"check":"case 1","expected":[0.058199,-0.016628,0.773423,0.0,false,-1],"passed":true},{"actual":[0.0,0.0,-0.087512,0.0625,true,9],"check":"case 2","expected":[0.0,0.0,0.0,0.0625,true,9],"passed":false},{"actual":[-1.160998,-1.741497,-0.292896,0.0,false,1],"check":"case 3","expected":[-1.160998,-1.741497,0.492278,0.0,false,1],"passed":false},{"actual":[0.036447,-0.027335,-4.186696,0.0,false,-1],"check":"case 4","expected":[0.036447,-0.027335,-4.186696,0.0,false,-1],"passed":true},{"actual":[0.444444,0.0,0.146418,0.0625,false,3],"check":"case 5","expected":[0.444444,0.0,0.142857,0.0625,false,3],"passed":false},{"actual":[0.0,0.0,-0.864565,0.09375,true,4],"check":"case 6","expected":[0.0,0.0,0.0,0.09375,true,4],"passed":false},{"actual":[4.81969,6.010948,3.087279,0.0,false,-1],"check":"case 7","expected":[4.81969,6.010948,3.087279,0.0,false,-1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [0.020852, 0.0, 6.326342, 0.0, false, -1], \"expected\": [0.020852, 0.0, 6.326342, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 1\", \"actual\": [0.058199, -0.016628, 0.773423, 0.0, false, -1], \"expected\": [0.058199, -0.016628, 0.773423, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 2\", \"actual\": [0.0, 0.0, -0.087512, 0.0625, true, 9], \"expected\": [0.0, 0.0, 0.0, 0.0625, true, 9], \"passed\": false}, {\"check\": \"case 3\", \"actual\": [-1.160998, -1.741497, -0.292896, 0.0, false, 1], \"expected\": [-1.160998, -1.741497, 0.492278, 0.0, false, 1], \"passed\": false}, {\"check\": \"case 4\", \"actual\": [0.036447, -0.027335, -4.186696, 0.0, false, -1], \"expected\": [0.036447, -0.027335, -4.186696, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [0.444444, 0.0, 0.146418, 0.0625, false, 3], \"expected\": [0.444444, 0.0, 0.142857, 0.0625, false, 3], \"passed\": false}, {\"check\": \"case 6\", \"actual\": [0.0, 0.0, -0.864565, 0.09375, true, 4], \"expected\": [0.0, 0.0, 0.0, 0.09375, true, 4], \"passed\": false}, {\"check\": \"case 7\", \"actual\": [4.81969, 6.010948, 3.087279, 0.0, false, -1], \"expected\": [4.81969, 6.010948, 3.087279, 0.0, false, -1], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.708,"exit_code":1,"observations":[{"actual":[0.020852,0.0,6.326342,0.0,false,-1],"check":"case 0","expected":[0.020852,0.0,6.326342,0.0,false,-1],"passed":true},{"actual":[0.058199,-0.016628,0.773423,0.0,false,-1],"check":"case 1","expected":[0.058199,-0.016628,0.773423,0.0,false,-1],"passed":true},{"actual":[-0.000254,-0.077132,-0.087512,0.0625,true,9],"check":"case 2","expected":[0.0,0.0,0.0,0.0625,true,9],"passed":false},{"actual":[-1.164368,-1.748236,-0.292896,0.0,false,1],"check":"case 3","expected":[-1.160998,-1.741497,0.492278,0.0,false,1],"passed":false},{"actual":[0.036447,-0.027335,-4.186696,0.0,false,-1],"check":"case 4","expected":[0.036447,-0.027335,-4.186696,0.0,false,-1],"passed":true},{"actual":[0.743076,0.094175,0.146418,0.0625,false,3],"check":"case 5","expected":[0.444444,0.0,0.142857,0.0625,false,3],"passed":false},{"actual":[-0.095314,0.081249,-0.864565,0.09375,true,4],"check":"case 6","expected":[0.0,0.0,0.0,0.09375,true,4],"passed":false},{"actual":[4.81969,6.010948,3.087279,0.0,false,-1],"check":"case 7","expected":[4.81969,6.010948,3.087279,0.0,false,-1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [0.020852, 0.0, 6.326342, 0.0, false, -1], \"expected\": [0.020852, 0.0, 6.326342, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 1\", \"actual\": [0.058199, -0.016628, 0.773423, 0.0, false, -1], \"expected\": [0.058199, -0.016628, 0.773423, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 2\", \"actual\": [-0.000254, -0.077132, -0.087512, 0.0625, true, 9], \"expected\": [0.0, 0.0, 0.0, 0.0625, true, 9], \"passed\": false}, {\"check\": \"case 3\", \"actual\": [-1.164368, -1.748236, -0.292896, 0.0, false, 1], \"expected\": [-1.160998, -1.741497, 0.492278, 0.0, false, 1], \"passed\": false}, {\"check\": \"case 4\", \"actual\": [0.036447, -0.027335, -4.186696, 0.0, false, -1], \"expected\": [0.036447, -0.027335, -4.186696, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [0.743076, 0.094175, 0.146418, 0.0625, false, 3], \"expected\": [0.444444, 0.0, 0.142857, 0.0625, false, 3], \"passed\": false}, {\"check\": \"case 6\", \"actual\": [-0.095314, 0.081249, -0.864565, 0.09375, true, 4], \"expected\": [0.0, 0.0, 0.0, 0.09375, true, 4], \"passed\": false}, {\"check\": \"case 7\", \"actual\": [4.81969, 6.010948, 3.087279, 0.0, false, -1], \"expected\": [4.81969, 6.010948, 3.087279, 0.0, false, -1], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}