{"abstract":"Bodies that move briefly fall asleep mid-motion.","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].","evaluation_group":"w2-physics_integrator_stability-damping-clamp-sleep","failed_approach":"Resetting only on linear motion lets a spinning body keep its accumulated sleep time.","family":"w2-physics_integrator_stability-damping-clamp-sleep-sleep-timer-reset","id":"FA-87251","implementations":{"attempt":{"sha256":"551826f6c5742c54fc700ef1f7ab9666d52d7de170c3eadfb13dc36aa179365b","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        elif math.hypot(vx, vy) >= sleep_lin:\n            timer = 0.0\n        if timer >= sleep_time:\n            asleep = True\n            slept_at = f\n            vx = vy = w = 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.06, 0.07], 0.0, 0.5, 0.5, 0.015625, 8.0, 0.5, 0.3, 0.046875, [[0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 0], [0, 0, -1.5]]], [0.057263, 0.066807, -0.023162, 0.015625, 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.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]], [[[0.03, 0.06], 0.0, 2.0, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, -1.5], [0, 0, 0], [0, 0, 1.5], [0, 0, 0], [0, 0, -1.5], [0, 0, 0]]], [0.013154, 0.026308, -0.658704, 0.0, False, -1]], [[[0.02, 0.01], 0.0, 0.5, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, -0.5], [0, 0, 0], [0, 0, 0.5], [0, 0, -0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.03125, True, 3]], [[[-0.42, 3.07], 0.58, 80.0, 40.0, 0.03125, 3.0, 2.0, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0], [0, 0, 0], [0, -3, 0], [1, 0, 0]]], [0.285714, 0.0, 0.0, 0.03125, False, 5]], [[[0.0, -0.04], 1.5, 20.0, 5.0, 0.0625, 8.0, 2.0, 1.0, 0.125, [[0, 0, 0], [0, 0, 0], [0, 8, 2], [0, 0, 0], [5, -3, 2]]], [2.222222, -0.631695, 2.793498, 0.0, False, -1]], [[[-0.0, 0.0], 0.99, 2.0, 0.5, 0.015625, 8.0, 2.0, 1.0, 0.03125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0], [0, 0, 0]]], [-1.823636, 7.294543, 0.0, 0.0, False, 1]]], [[[[-0.02, 0.1], 0.0, 0.5, 0.5, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 1.5], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0]]], [-0.018223, 0.091117, 1.454874, 0.0, False, -1]], [[[0.02, 0.03], 0.0, 2.0, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0], [0, 0, -3.0], [0, 0, -3.0], [0, 0, 3.0]]], [0.016124, 0.024187, -0.044555, 0.015625, False, -1]], [[[-0.0, -0.03], -0.23, 0.5, 40.0, 0.015625, 8.0, 0.5, 0.3, 0.03125, [[0, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -1], [0, 0, 0], [0, 0, 0], [-2, 0, -1], [0, 0, 0]]], [-1.969112, 0.0, -0.378698, 0.0, False, 6]], [[[0.01, 0.01], 1.94, 0.5, 5.0, 0.015625, 8.0, 2.0, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 0, -1]]], [0.0, 0.0, 0.0, 0.015625, True, 8]], [[[1.56, 0.08], 1.64, 80.0, 0.5, 0.015625, 3.0, 2.0, 1.0, 0.03125, [[1, 1, 0], [0, 0, -1], [-2, 1, 2], [0, 0, 0], [5, -3, 0.5], [0, 8, 0.5], [0, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.03453, 0.111847, 5.360948, 0.0, False, -1]], [[[0.09, -0.07], 0.0, 2.0, 0.5, 0.015625, 8.0, 0.5, 0.3, 0.046875, [[0, 0, 0], [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, 0, 0]]], [0.068229, -0.053067, -4.27269, 0.0, False, -1]], [[[3.71, -5.39], 0.21, 0.5, 5.0, 0.0625, 3.0, 0.5, 0.3, 0.125, [[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], [5, 1, 0], [1, 1, 2]]], [2.924827, 0.667375, 1.580911, 0.0, False, -1]], [[[0.02, -0.02], 0.0, 0.5, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, 0], [0, 0, -0.5], [0, 0, 0], [0, 0, 0.5], [0, 0, 0], [0, 0, -0.5]]], [0.0, 0.0, -0.380952, 0.0, False, 4]]], [[[[-0.1, -0.05], 0.0, 2.0, 5.0, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0]]], [-0.088419, -0.044209, 2.393944, 0.0, False, -1]], [[[-0.02, 0.03], -0.9, 20.0, 40.0, 0.0625, 8.0, 2.0, 0.3, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, 2], [0, 0, 0], [0, 0, 0]]], [-0.000347, 0.00052, 0.044934, 0.125, False, -1]], [[[0.01, -0.05], 0.44, 2.0, 5.0, 0.0625, 8.0, 2.0, 1.0, 0.1875, [[0, 0, 0], [1, 1, 0.5], [-2, 8, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0]]], [-1.386571, 6.97462, 0.222292, 0.0, False, -1]], [[[0.1, 0.08], 0.0, 2.0, 0.5, 0.0625, 8.0, 0.5, 1.0, 0.125, [[0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 1.5], [0, 0, 0], [0, 0, 1.5]]], [0.049327, 0.039462, 5.35548, 0.0, False, -1]], [[[-2.45, 1.2], -1.73, 2.0, 40.0, 0.015625, 8.0, 0.5, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 1, 2], [0, 0, 0], [0, -3, 0], [0, 0, 0], [0, 0, 0], [0, 0, -1]]], [-3.52016, -0.911434, -0.528661, 0.0, False, -1]], [[[-1.31, 0.47], 0.1, 80.0, 5.0, 0.0625, 8.0, 2.0, 0.3, 0.125, [[0, 0, 0], [-2, 8, -1], [0, 0, 0], [0, 0, 0], [1, 0, 0.5], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.125, True, 5]], [[[-3.67, -0.63], 0.95, 2.0, 0.5, 0.0625, 3.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, 0], [-2, 1, 2], [1, -3, 0.5], [-2, -3, 0], [1, 0, 0]]], [-0.643728, -2.182246, 3.014124, 0.0, False, -1]], [[[0.02, -0.01], 1.22, 2.0, 0.5, 0.0625, 3.0, 2.0, 1.0, 0.125, [[0, 0, 0], [0, 0, 0], [1, 8, 0], [0, 0, 0], [0, 0, 0]]], [0.298872, 2.351453, 1.04602, 0.0, False, -1]]], [[[[-0.0, 0.01], -1.88, 2.0, 40.0, 0.015625, 8.0, 2.0, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [5, 8, 0]]], [4.239992, 6.783986, 0.0, 0.0, False, 1]], [[[1.88, -5.23], -1.53, 0.5, 40.0, 0.0625, 3.0, 0.5, 0.3, 0.1875, [[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, 0, 0]]], [0.793373, -2.207096, -1.9e-05, 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.03, 0.05], -1.64, 0.5, 40.0, 0.015625, 3.0, 0.5, 1.0, 0.046875, [[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.046875, True, 3]], [[[2.33, 1.46], 0.09, 80.0, 0.5, 0.03125, 3.0, 2.0, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [5, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.00023, 5e-06, 1.843775, 0.0, False, -1]], [[[-0.04, -0.04], 0.45, 20.0, 40.0, 0.0625, 3.0, 0.5, 0.3, 0.0625, [[0, 1, -1], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 0]], [[[0.06, 0.04], 0.0, 0.5, 5.0, 0.0625, 8.0, 0.5, 1.0, 0.1875, [[0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 0], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.1875, True, 6]], [[[-0.02, -0.1], 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, 0], [0, 0, 0]]], [-0.019387, -0.096935, 1.465386, 0.0, False, -1]]], [[[[-0.04, 0.1], 0.0, 2.0, 0.5, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, -3.0], [0, 0, 0]]], [-0.024972, 0.06243, -2.820937, 0.0, False, -1]], [[[-5.17, -2.18], 1.53, 0.5, 40.0, 0.015625, 8.0, 2.0, 0.3, 0.015625, [[0, 0, 0], [1, 8, 2], [1, 8, 2], [5, -3, -1], [0, 0, 0], [0, -3, -1]]], [3.17179, 1.717873, -0.302003, 0.0, False, -1]], [[[0.04, 0.05], 1.39, 20.0, 40.0, 0.03125, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [1, -3, -1], [5, 1, -1], [-2, 1, 2], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.03125, True, 5]], [[[0.01, -2.66], -0.32, 20.0, 0.5, 0.0625, 3.0, 0.5, 0.3, 0.125, [[0, 0, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, -3, -1], [0, 0, 0], [0, 0, 0], [-2, 0, 2], [0, 0, 0], [0, 0, 0]]], [-0.167876, -0.023122, 0.992224, 0.0, False, 3]], [[[0.05, 0.07], 0.0, 0.5, 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.046993, 0.065791, -0.612882, 0.03125, False, -1]], [[[0.01, -0.03], 0.28, 0.5, 5.0, 0.015625, 8.0, 2.0, 1.0, 0.046875, [[0, 0, 0], [-2, 8, 0.5], [0, 0, 0], [0, 0, 0]]], [-1.908081, 7.641838, 0.606234, 0.0, False, -1]], [[[0.05, 0.08], 0.0, 2.0, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 3.0]]], [0.031215, 0.049944, 3.612569, 0.0, False, -1]], [[[0.07, -0.09], 0.0, 0.5, 0.5, 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, 0, 0]]], [0.064779, -0.083287, 2.951781, 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":"a8ef9918230e5db404a9df13bc1307774fc087bb377cc068f40cd69b027e7eac","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        if timer >= sleep_time:\n            asleep = True\n            slept_at = f\n            vx = vy = w = 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.06, 0.07], 0.0, 0.5, 0.5, 0.015625, 8.0, 0.5, 0.3, 0.046875, [[0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 0], [0, 0, -1.5]]], [0.057263, 0.066807, -0.023162, 0.015625, 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.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]], [[[0.03, 0.06], 0.0, 2.0, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, -1.5], [0, 0, 0], [0, 0, 1.5], [0, 0, 0], [0, 0, -1.5], [0, 0, 0]]], [0.013154, 0.026308, -0.658704, 0.0, False, -1]], [[[0.02, 0.01], 0.0, 0.5, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, -0.5], [0, 0, 0], [0, 0, 0.5], [0, 0, -0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.03125, True, 3]], [[[-0.42, 3.07], 0.58, 80.0, 40.0, 0.03125, 3.0, 2.0, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0], [0, 0, 0], [0, -3, 0], [1, 0, 0]]], [0.285714, 0.0, 0.0, 0.03125, False, 5]], [[[0.0, -0.04], 1.5, 20.0, 5.0, 0.0625, 8.0, 2.0, 1.0, 0.125, [[0, 0, 0], [0, 0, 0], [0, 8, 2], [0, 0, 0], [5, -3, 2]]], [2.222222, -0.631695, 2.793498, 0.0, False, -1]], [[[-0.0, 0.0], 0.99, 2.0, 0.5, 0.015625, 8.0, 2.0, 1.0, 0.03125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0], [0, 0, 0]]], [-1.823636, 7.294543, 0.0, 0.0, False, 1]]], [[[[-0.02, 0.1], 0.0, 0.5, 0.5, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 1.5], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0]]], [-0.018223, 0.091117, 1.454874, 0.0, False, -1]], [[[0.02, 0.03], 0.0, 2.0, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0], [0, 0, -3.0], [0, 0, -3.0], [0, 0, 3.0]]], [0.016124, 0.024187, -0.044555, 0.015625, False, -1]], [[[-0.0, -0.03], -0.23, 0.5, 40.0, 0.015625, 8.0, 0.5, 0.3, 0.03125, [[0, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -1], [0, 0, 0], [0, 0, 0], [-2, 0, -1], [0, 0, 0]]], [-1.969112, 0.0, -0.378698, 0.0, False, 6]], [[[0.01, 0.01], 1.94, 0.5, 5.0, 0.015625, 8.0, 2.0, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 0, -1]]], [0.0, 0.0, 0.0, 0.015625, True, 8]], [[[1.56, 0.08], 1.64, 80.0, 0.5, 0.015625, 3.0, 2.0, 1.0, 0.03125, [[1, 1, 0], [0, 0, -1], [-2, 1, 2], [0, 0, 0], [5, -3, 0.5], [0, 8, 0.5], [0, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.03453, 0.111847, 5.360948, 0.0, False, -1]], [[[0.09, -0.07], 0.0, 2.0, 0.5, 0.015625, 8.0, 0.5, 0.3, 0.046875, [[0, 0, 0], [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, 0, 0]]], [0.068229, -0.053067, -4.27269, 0.0, False, -1]], [[[3.71, -5.39], 0.21, 0.5, 5.0, 0.0625, 3.0, 0.5, 0.3, 0.125, [[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], [5, 1, 0], [1, 1, 2]]], [2.924827, 0.667375, 1.580911, 0.0, False, -1]], [[[0.02, -0.02], 0.0, 0.5, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, 0], [0, 0, -0.5], [0, 0, 0], [0, 0, 0.5], [0, 0, 0], [0, 0, -0.5]]], [0.0, 0.0, -0.380952, 0.0, False, 4]]], [[[[-0.1, -0.05], 0.0, 2.0, 5.0, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0]]], [-0.088419, -0.044209, 2.393944, 0.0, False, -1]], [[[-0.02, 0.03], -0.9, 20.0, 40.0, 0.0625, 8.0, 2.0, 0.3, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, 2], [0, 0, 0], [0, 0, 0]]], [-0.000347, 0.00052, 0.044934, 0.125, False, -1]], [[[0.01, -0.05], 0.44, 2.0, 5.0, 0.0625, 8.0, 2.0, 1.0, 0.1875, [[0, 0, 0], [1, 1, 0.5], [-2, 8, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0]]], [-1.386571, 6.97462, 0.222292, 0.0, False, -1]], [[[0.1, 0.08], 0.0, 2.0, 0.5, 0.0625, 8.0, 0.5, 1.0, 0.125, [[0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 1.5], [0, 0, 0], [0, 0, 1.5]]], [0.049327, 0.039462, 5.35548, 0.0, False, -1]], [[[-2.45, 1.2], -1.73, 2.0, 40.0, 0.015625, 8.0, 0.5, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 1, 2], [0, 0, 0], [0, -3, 0], [0, 0, 0], [0, 0, 0], [0, 0, -1]]], [-3.52016, -0.911434, -0.528661, 0.0, False, -1]], [[[-1.31, 0.47], 0.1, 80.0, 5.0, 0.0625, 8.0, 2.0, 0.3, 0.125, [[0, 0, 0], [-2, 8, -1], [0, 0, 0], [0, 0, 0], [1, 0, 0.5], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.125, True, 5]], [[[-3.67, -0.63], 0.95, 2.0, 0.5, 0.0625, 3.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, 0], [-2, 1, 2], [1, -3, 0.5], [-2, -3, 0], [1, 0, 0]]], [-0.643728, -2.182246, 3.014124, 0.0, False, -1]], [[[0.02, -0.01], 1.22, 2.0, 0.5, 0.0625, 3.0, 2.0, 1.0, 0.125, [[0, 0, 0], [0, 0, 0], [1, 8, 0], [0, 0, 0], [0, 0, 0]]], [0.298872, 2.351453, 1.04602, 0.0, False, -1]]], [[[[-0.0, 0.01], -1.88, 2.0, 40.0, 0.015625, 8.0, 2.0, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [5, 8, 0]]], [4.239992, 6.783986, 0.0, 0.0, False, 1]], [[[1.88, -5.23], -1.53, 0.5, 40.0, 0.0625, 3.0, 0.5, 0.3, 0.1875, [[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, 0, 0]]], [0.793373, -2.207096, -1.9e-05, 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.03, 0.05], -1.64, 0.5, 40.0, 0.015625, 3.0, 0.5, 1.0, 0.046875, [[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.046875, True, 3]], [[[2.33, 1.46], 0.09, 80.0, 0.5, 0.03125, 3.0, 2.0, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [5, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.00023, 5e-06, 1.843775, 0.0, False, -1]], [[[-0.04, -0.04], 0.45, 20.0, 40.0, 0.0625, 3.0, 0.5, 0.3, 0.0625, [[0, 1, -1], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 0]], [[[0.06, 0.04], 0.0, 0.5, 5.0, 0.0625, 8.0, 0.5, 1.0, 0.1875, [[0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 0], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.1875, True, 6]], [[[-0.02, -0.1], 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, 0], [0, 0, 0]]], [-0.019387, -0.096935, 1.465386, 0.0, False, -1]]], [[[[-0.04, 0.1], 0.0, 2.0, 0.5, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, -3.0], [0, 0, 0]]], [-0.024972, 0.06243, -2.820937, 0.0, False, -1]], [[[-5.17, -2.18], 1.53, 0.5, 40.0, 0.015625, 8.0, 2.0, 0.3, 0.015625, [[0, 0, 0], [1, 8, 2], [1, 8, 2], [5, -3, -1], [0, 0, 0], [0, -3, -1]]], [3.17179, 1.717873, -0.302003, 0.0, False, -1]], [[[0.04, 0.05], 1.39, 20.0, 40.0, 0.03125, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [1, -3, -1], [5, 1, -1], [-2, 1, 2], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.03125, True, 5]], [[[0.01, -2.66], -0.32, 20.0, 0.5, 0.0625, 3.0, 0.5, 0.3, 0.125, [[0, 0, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, -3, -1], [0, 0, 0], [0, 0, 0], [-2, 0, 2], [0, 0, 0], [0, 0, 0]]], [-0.167876, -0.023122, 0.992224, 0.0, False, 3]], [[[0.05, 0.07], 0.0, 0.5, 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.046993, 0.065791, -0.612882, 0.03125, False, -1]], [[[0.01, -0.03], 0.28, 0.5, 5.0, 0.015625, 8.0, 2.0, 1.0, 0.046875, [[0, 0, 0], [-2, 8, 0.5], [0, 0, 0], [0, 0, 0]]], [-1.908081, 7.641838, 0.606234, 0.0, False, -1]], [[[0.05, 0.08], 0.0, 2.0, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 3.0]]], [0.031215, 0.049944, 3.612569, 0.0, False, -1]], [[[0.07, -0.09], 0.0, 0.5, 0.5, 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, 0, 0]]], [0.064779, -0.083287, 2.951781, 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"},"fixed":{"sha256":"0b7f2a07880f3e7af60efea4e908a4a42d66317ace977635dd099301dae3d4aa","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 = w = 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.06, 0.07], 0.0, 0.5, 0.5, 0.015625, 8.0, 0.5, 0.3, 0.046875, [[0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 0], [0, 0, -1.5]]], [0.057263, 0.066807, -0.023162, 0.015625, 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.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]], [[[0.03, 0.06], 0.0, 2.0, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, -1.5], [0, 0, 0], [0, 0, 1.5], [0, 0, 0], [0, 0, -1.5], [0, 0, 0]]], [0.013154, 0.026308, -0.658704, 0.0, False, -1]], [[[0.02, 0.01], 0.0, 0.5, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, -0.5], [0, 0, 0], [0, 0, 0.5], [0, 0, -0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.03125, True, 3]], [[[-0.42, 3.07], 0.58, 80.0, 40.0, 0.03125, 3.0, 2.0, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0], [0, 0, 0], [0, -3, 0], [1, 0, 0]]], [0.285714, 0.0, 0.0, 0.03125, False, 5]], [[[0.0, -0.04], 1.5, 20.0, 5.0, 0.0625, 8.0, 2.0, 1.0, 0.125, [[0, 0, 0], [0, 0, 0], [0, 8, 2], [0, 0, 0], [5, -3, 2]]], [2.222222, -0.631695, 2.793498, 0.0, False, -1]], [[[-0.0, 0.0], 0.99, 2.0, 0.5, 0.015625, 8.0, 2.0, 1.0, 0.03125, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0], [0, 0, 0]]], [-1.823636, 7.294543, 0.0, 0.0, False, 1]]], [[[[-0.02, 0.1], 0.0, 0.5, 0.5, 0.03125, 8.0, 0.5, 1.0, 0.0625, [[0, 0, 1.5], [0, 0, -1.5], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0]]], [-0.018223, 0.091117, 1.454874, 0.0, False, -1]], [[[0.02, 0.03], 0.0, 2.0, 0.5, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0], [0, 0, -3.0], [0, 0, -3.0], [0, 0, 3.0]]], [0.016124, 0.024187, -0.044555, 0.015625, False, -1]], [[[-0.0, -0.03], -0.23, 0.5, 40.0, 0.015625, 8.0, 0.5, 0.3, 0.03125, [[0, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, -1], [0, 0, 0], [0, 0, 0], [-2, 0, -1], [0, 0, 0]]], [-1.969112, 0.0, -0.378698, 0.0, False, 6]], [[[0.01, 0.01], 1.94, 0.5, 5.0, 0.015625, 8.0, 2.0, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 0, -1]]], [0.0, 0.0, 0.0, 0.015625, True, 8]], [[[1.56, 0.08], 1.64, 80.0, 0.5, 0.015625, 3.0, 2.0, 1.0, 0.03125, [[1, 1, 0], [0, 0, -1], [-2, 1, 2], [0, 0, 0], [5, -3, 0.5], [0, 8, 0.5], [0, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.03453, 0.111847, 5.360948, 0.0, False, -1]], [[[0.09, -0.07], 0.0, 2.0, 0.5, 0.015625, 8.0, 0.5, 0.3, 0.046875, [[0, 0, 0], [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, 0, 0]]], [0.068229, -0.053067, -4.27269, 0.0, False, -1]], [[[3.71, -5.39], 0.21, 0.5, 5.0, 0.0625, 3.0, 0.5, 0.3, 0.125, [[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], [5, 1, 0], [1, 1, 2]]], [2.924827, 0.667375, 1.580911, 0.0, False, -1]], [[[0.02, -0.02], 0.0, 0.5, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, 0], [0, 0, -0.5], [0, 0, 0], [0, 0, 0.5], [0, 0, 0], [0, 0, -0.5]]], [0.0, 0.0, -0.380952, 0.0, False, 4]]], [[[[-0.1, -0.05], 0.0, 2.0, 5.0, 0.015625, 8.0, 0.5, 1.0, 0.03125, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 0]]], [-0.088419, -0.044209, 2.393944, 0.0, False, -1]], [[[-0.02, 0.03], -0.9, 20.0, 40.0, 0.0625, 8.0, 2.0, 0.3, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, 2], [0, 0, 0], [0, 0, 0]]], [-0.000347, 0.00052, 0.044934, 0.125, False, -1]], [[[0.01, -0.05], 0.44, 2.0, 5.0, 0.0625, 8.0, 2.0, 1.0, 0.1875, [[0, 0, 0], [1, 1, 0.5], [-2, 8, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 8, 0], [0, 0, 0]]], [-1.386571, 6.97462, 0.222292, 0.0, False, -1]], [[[0.1, 0.08], 0.0, 2.0, 0.5, 0.0625, 8.0, 0.5, 1.0, 0.125, [[0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 1.5], [0, 0, 0], [0, 0, 1.5]]], [0.049327, 0.039462, 5.35548, 0.0, False, -1]], [[[-2.45, 1.2], -1.73, 2.0, 40.0, 0.015625, 8.0, 0.5, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [-2, 1, 2], [0, 0, 0], [0, -3, 0], [0, 0, 0], [0, 0, 0], [0, 0, -1]]], [-3.52016, -0.911434, -0.528661, 0.0, False, -1]], [[[-1.31, 0.47], 0.1, 80.0, 5.0, 0.0625, 8.0, 2.0, 0.3, 0.125, [[0, 0, 0], [-2, 8, -1], [0, 0, 0], [0, 0, 0], [1, 0, 0.5], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.125, True, 5]], [[[-3.67, -0.63], 0.95, 2.0, 0.5, 0.0625, 3.0, 0.5, 0.3, 0.125, [[0, 0, 0], [0, 0, 0], [-2, 1, 2], [1, -3, 0.5], [-2, -3, 0], [1, 0, 0]]], [-0.643728, -2.182246, 3.014124, 0.0, False, -1]], [[[0.02, -0.01], 1.22, 2.0, 0.5, 0.0625, 3.0, 2.0, 1.0, 0.125, [[0, 0, 0], [0, 0, 0], [1, 8, 0], [0, 0, 0], [0, 0, 0]]], [0.298872, 2.351453, 1.04602, 0.0, False, -1]]], [[[[-0.0, 0.01], -1.88, 2.0, 40.0, 0.015625, 8.0, 2.0, 1.0, 0.015625, [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [5, 8, 0]]], [4.239992, 6.783986, 0.0, 0.0, False, 1]], [[[1.88, -5.23], -1.53, 0.5, 40.0, 0.0625, 3.0, 0.5, 0.3, 0.1875, [[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, 0, 0]]], [0.793373, -2.207096, -1.9e-05, 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.03, 0.05], -1.64, 0.5, 40.0, 0.015625, 3.0, 0.5, 1.0, 0.046875, [[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.046875, True, 3]], [[[2.33, 1.46], 0.09, 80.0, 0.5, 0.03125, 3.0, 2.0, 1.0, 0.09375, [[0, 0, 0], [0, 0, 0], [5, 0, 2], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]], [0.00023, 5e-06, 1.843775, 0.0, False, -1]], [[[-0.04, -0.04], 0.45, 20.0, 40.0, 0.0625, 3.0, 0.5, 0.3, 0.0625, [[0, 1, -1], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.0625, True, 0]], [[[0.06, 0.04], 0.0, 0.5, 5.0, 0.0625, 8.0, 0.5, 1.0, 0.1875, [[0, 0, -1.5], [0, 0, 1.5], [0, 0, 1.5], [0, 0, 0], [0, 0, 0], [0, 0, -1.5], [0, 0, 1.5], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.1875, True, 6]], [[[-0.02, -0.1], 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, 0], [0, 0, 0]]], [-0.019387, -0.096935, 1.465386, 0.0, False, -1]]], [[[[-0.04, 0.1], 0.0, 2.0, 0.5, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, 0, 0], [0, 0, 0], [0, 0, -3.0], [0, 0, 0]]], [-0.024972, 0.06243, -2.820937, 0.0, False, -1]], [[[-5.17, -2.18], 1.53, 0.5, 40.0, 0.015625, 8.0, 2.0, 0.3, 0.015625, [[0, 0, 0], [1, 8, 2], [1, 8, 2], [5, -3, -1], [0, 0, 0], [0, -3, -1]]], [3.17179, 1.717873, -0.302003, 0.0, False, -1]], [[[0.04, 0.05], 1.39, 20.0, 40.0, 0.03125, 8.0, 2.0, 0.3, 0.03125, [[0, 0, 0], [1, -3, -1], [5, 1, -1], [-2, 1, 2], [0, 0, 0], [0, 0, 0]]], [0.0, 0.0, 0.0, 0.03125, True, 5]], [[[0.01, -2.66], -0.32, 20.0, 0.5, 0.0625, 3.0, 0.5, 0.3, 0.125, [[0, 0, 0.5], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, -3, -1], [0, 0, 0], [0, 0, 0], [-2, 0, 2], [0, 0, 0], [0, 0, 0]]], [-0.167876, -0.023122, 0.992224, 0.0, False, 3]], [[[0.05, 0.07], 0.0, 0.5, 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.046993, 0.065791, -0.612882, 0.03125, False, -1]], [[[0.01, -0.03], 0.28, 0.5, 5.0, 0.015625, 8.0, 2.0, 1.0, 0.046875, [[0, 0, 0], [-2, 8, 0.5], [0, 0, 0], [0, 0, 0]]], [-1.908081, 7.641838, 0.606234, 0.0, False, -1]], [[[0.05, 0.08], 0.0, 2.0, 5.0, 0.0625, 8.0, 0.5, 0.3, 0.1875, [[0, 0, 0], [0, 0, 3.0], [0, 0, 0], [0, 0, 3.0]]], [0.031215, 0.049944, 3.612569, 0.0, False, -1]], [[[0.07, -0.09], 0.0, 0.5, 0.5, 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, 0, 0]]], [0.064779, -0.083287, 2.951781, 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-timer-reset","generated_at":"2026-09-29T14:50:57.039638+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.","repair":"Reset the timer whenever either speed exceeds its threshold.","root_cause":"The timer is not reset when the body exceeds the thresholds.","sha256":"5a240cbb1ab1fcaca42133bf93e1b9d7b4cecf26766217dd803946ebae64a20f","title":"Sleep timer keeps accumulating across moving frames · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.722,"exit_code":1,"observations":[{"actual":[0.057263,0.066807,-0.023162,0.03125,false,-1],"check":"case 0","expected":[0.057263,0.066807,-0.023162,0.015625,false,-1],"passed":false},{"actual":[0.058199,-0.016628,0.773423,0.015625,false,-1],"check":"case 1","expected":[0.058199,-0.016628,0.773423,0.0,false,-1],"passed":false},{"actual":[0.036447,-0.027335,-4.186696,0.0,false,-1],"check":"case 2","expected":[0.036447,-0.027335,-4.186696,0.0,false,-1],"passed":true},{"actual":[0.013154,0.026308,-0.658704,0.0625,false,-1],"check":"case 3","expected":[0.013154,0.026308,-0.658704,0.0,false,-1],"passed":false},{"actual":[0.0,0.0,0.0,0.03125,true,3],"check":"case 4","expected":[0.0,0.0,0.0,0.03125,true,3],"passed":true},{"actual":[0.285714,0.0,0.0,0.03125,false,5],"check":"case 5","expected":[0.285714,0.0,0.0,0.03125,false,5],"passed":true},{"actual":[2.222222,-0.631695,2.793498,0.0,false,-1],"check":"case 6","expected":[2.222222,-0.631695,2.793498,0.0,false,-1],"passed":true},{"actual":[-1.823636,7.294543,0.0,0.0,false,1],"check":"case 7","expected":[-1.823636,7.294543,0.0,0.0,false,1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [0.057263, 0.066807, -0.023162, 0.03125, false, -1], \"expected\": [0.057263, 0.066807, -0.023162, 0.015625, false, -1], \"passed\": false}, {\"check\": \"case 1\", \"actual\": [0.058199, -0.016628, 0.773423, 0.015625, false, -1], \"expected\": [0.058199, -0.016628, 0.773423, 0.0, false, -1], \"passed\": false}, {\"check\": \"case 2\", \"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 3\", \"actual\": [0.013154, 0.026308, -0.658704, 0.0625, false, -1], \"expected\": [0.013154, 0.026308, -0.658704, 0.0, false, -1], \"passed\": false}, {\"check\": \"case 4\", \"actual\": [0.0, 0.0, 0.0, 0.03125, true, 3], \"expected\": [0.0, 0.0, 0.0, 0.03125, true, 3], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [0.285714, 0.0, 0.0, 0.03125, false, 5], \"expected\": [0.285714, 0.0, 0.0, 0.03125, false, 5], \"passed\": true}, {\"check\": \"case 6\", \"actual\": [2.222222, -0.631695, 2.793498, 0.0, false, -1], \"expected\": [2.222222, -0.631695, 2.793498, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 7\", \"actual\": [-1.823636, 7.294543, 0.0, 0.0, false, 1], \"expected\": [-1.823636, 7.294543, 0.0, 0.0, false, 1], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.737,"exit_code":1,"observations":[{"actual":[0.057263,0.066807,-0.023162,0.03125,false,-1],"check":"case 0","expected":[0.057263,0.066807,-0.023162,0.015625,false,-1],"passed":false},{"actual":[0.058199,-0.016628,0.773423,0.015625,false,-1],"check":"case 1","expected":[0.058199,-0.016628,0.773423,0.0,false,-1],"passed":false},{"actual":[0.036447,-0.027335,-4.186696,0.0,false,-1],"check":"case 2","expected":[0.036447,-0.027335,-4.186696,0.0,false,-1],"passed":true},{"actual":[0.013154,0.026308,-0.658704,0.0625,false,-1],"check":"case 3","expected":[0.013154,0.026308,-0.658704,0.0,false,-1],"passed":false},{"actual":[0.0,0.0,0.0,0.03125,true,3],"check":"case 4","expected":[0.0,0.0,0.0,0.03125,true,3],"passed":true},{"actual":[0.285714,-0.244898,0.0,0.0625,false,3],"check":"case 5","expected":[0.285714,0.0,0.0,0.03125,false,5],"passed":false},{"actual":[2.222222,-0.631695,2.793498,0.0625,false,-1],"check":"case 6","expected":[2.222222,-0.631695,2.793498,0.0,false,-1],"passed":false},{"actual":[-1.823636,7.294543,0.0,0.0,false,1],"check":"case 7","expected":[-1.823636,7.294543,0.0,0.0,false,1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [0.057263, 0.066807, -0.023162, 0.03125, false, -1], \"expected\": [0.057263, 0.066807, -0.023162, 0.015625, false, -1], \"passed\": false}, {\"check\": \"case 1\", \"actual\": [0.058199, -0.016628, 0.773423, 0.015625, false, -1], \"expected\": [0.058199, -0.016628, 0.773423, 0.0, false, -1], \"passed\": false}, {\"check\": \"case 2\", \"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 3\", \"actual\": [0.013154, 0.026308, -0.658704, 0.0625, false, -1], \"expected\": [0.013154, 0.026308, -0.658704, 0.0, false, -1], \"passed\": false}, {\"check\": \"case 4\", \"actual\": [0.0, 0.0, 0.0, 0.03125, true, 3], \"expected\": [0.0, 0.0, 0.0, 0.03125, true, 3], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [0.285714, -0.244898, 0.0, 0.0625, false, 3], \"expected\": [0.285714, 0.0, 0.0, 0.03125, false, 5], \"passed\": false}, {\"check\": \"case 6\", \"actual\": [2.222222, -0.631695, 2.793498, 0.0625, false, -1], \"expected\": [2.222222, -0.631695, 2.793498, 0.0, false, -1], \"passed\": false}, {\"check\": \"case 7\", \"actual\": [-1.823636, 7.294543, 0.0, 0.0, false, 1], \"expected\": [-1.823636, 7.294543, 0.0, 0.0, false, 1], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.073,"exit_code":0,"observations":[{"actual":[0.057263,0.066807,-0.023162,0.015625,false,-1],"check":"case 0","expected":[0.057263,0.066807,-0.023162,0.015625,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.036447,-0.027335,-4.186696,0.0,false,-1],"check":"case 2","expected":[0.036447,-0.027335,-4.186696,0.0,false,-1],"passed":true},{"actual":[0.013154,0.026308,-0.658704,0.0,false,-1],"check":"case 3","expected":[0.013154,0.026308,-0.658704,0.0,false,-1],"passed":true},{"actual":[0.0,0.0,0.0,0.03125,true,3],"check":"case 4","expected":[0.0,0.0,0.0,0.03125,true,3],"passed":true},{"actual":[0.285714,0.0,0.0,0.03125,false,5],"check":"case 5","expected":[0.285714,0.0,0.0,0.03125,false,5],"passed":true},{"actual":[2.222222,-0.631695,2.793498,0.0,false,-1],"check":"case 6","expected":[2.222222,-0.631695,2.793498,0.0,false,-1],"passed":true},{"actual":[-1.823636,7.294543,0.0,0.0,false,1],"check":"case 7","expected":[-1.823636,7.294543,0.0,0.0,false,1],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"case 0\", \"actual\": [0.057263, 0.066807, -0.023162, 0.015625, false, -1], \"expected\": [0.057263, 0.066807, -0.023162, 0.015625, 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.036447, -0.027335, -4.186696, 0.0, false, -1], \"expected\": [0.036447, -0.027335, -4.186696, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 3\", \"actual\": [0.013154, 0.026308, -0.658704, 0.0, false, -1], \"expected\": [0.013154, 0.026308, -0.658704, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 4\", \"actual\": [0.0, 0.0, 0.0, 0.03125, true, 3], \"expected\": [0.0, 0.0, 0.0, 0.03125, true, 3], \"passed\": true}, {\"check\": \"case 5\", \"actual\": [0.285714, 0.0, 0.0, 0.03125, false, 5], \"expected\": [0.285714, 0.0, 0.0, 0.03125, false, 5], \"passed\": true}, {\"check\": \"case 6\", \"actual\": [2.222222, -0.631695, 2.793498, 0.0, false, -1], \"expected\": [2.222222, -0.631695, 2.793498, 0.0, false, -1], \"passed\": true}, {\"check\": \"case 7\", \"actual\": [-1.823636, 7.294543, 0.0, 0.0, false, 1], \"expected\": [-1.823636, 7.294543, 0.0, 0.0, false, 1], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}