FAILURE MAP
← Case archive

FA-87291 / Physics integrator stability / Open access

Mean period divides the span by the crossing count · case 01

The period is underestimated by a factor (n-1)/n.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The span is divided by len(ts) instead of len(ts)-1 intervals.

VERIFIED REPAIR

There are count-1 intervals between count crossings.

Unsuccessful approach: Using only the first interval ignores the rest of the record.

Case contract

solve(xs, dt, omega): integrator frequency diagnostic. Upward crossings are samples with x[i-1]<0<=x[i], timed by linear interpolation. Period is the mean interval (last-first)/(count-1); relative error vs 2*pi/omega. Fewer than two crossings gives [None, count, None]. Return [period, count, error] rounded to 6.

Why this case matters

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.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(xs, dt, omega):
    ts = []
    for i in range(1, len(xs)):
        a, b = xs[i - 1], xs[i]
        if a < 0 <= b:
            frac = -a / (b - a)
            ts.append((i - 1 + frac) * dt)
    if len(ts) < 2:
        return [None, len(ts), None]
    period = (ts[-1] - ts[0]) / len(ts)
    ref = 2 * math.pi / omega
    return [round(period, 6), len(ts), round((period - ref) / ref, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[-0.203, -0.606, -0.892, -0.999, -0.918, -0.66, -0.263, 0.187, 0.585, 0.852, 0.994, 0.938, 0.636, 0.301, -0.21, -0.509, -0.829, -0.993, -0.968, -0.754, -0.46, 0.183, 0.476, 0.819, 0.993, 0.981, 0.804, 0.232, 0.076, -0.443, -0.756, -1.0, -0.978, -0.867, -0.507, -0.128, 0.443, 0.783, 0.999], 0.125, 3.497], [1.789983, 3, -0.003759]], [[[-0.85, -0.762, 0.233, 0.853, 0.374, -0.493, -0.726, -0.108, 0.577, 0.45, -0.097, -0.564, -0.318, 0.265, 0.458, -0.095, -0.426, -0.335, 0.18, 0.372, 0.243, -0.268, -0.328, 0.088, 0.301, 0.0, -0.112, -0.232], 0.25, 4.679], [1.313915, 5, -0.021546]], [[[-0.148, -0.034, 0.073, 0.174, 0.271, 0.365, 0.444, 0.518, 0.577, 0.645, 0.688], 0.1, 1.115], [None, 1, None]], [[[-0.986, -0.698, -0.174, 0.366, 0.774, 0.88, 0.684, 0.271, -0.252, -0.583, -0.779, -0.665, -0.319, 0.187, 0.441, 0.666, 0.619, 0.432, 0.018, -0.352, -0.591], 0.125, 4.753], [1.288527, 2, -0.025277]], [[[0.998, 0.325, -0.659, -0.774, -0.014, 0.738, 0.491, -0.305, -0.666, -0.273, 0.426, 0.518, 0.137, -0.453, 0.0, 0.02, 0.439, 0.135, -0.242, -0.368, 0.032, 0.282, 0.295], 0.25, 4.593], [1.325115, 4, -0.031343]], [[[0.939, 0.975, 0.882, 0.0, 0.367, 0.054, -0.24, -0.541, -0.725, -0.784, -0.763, -0.617, -0.445, -0.217, 0.142, 0.297, 0.546, 0.615, 0.635, 0.577, 0.381, 0.276, 0.016], 0.125, 2.926], [None, 1, None]], [[[-0.155, -0.709, -0.969, -0.826, -0.384, 0.203, 0.745, 0.916, 0.693, 0.23, -0.36, -0.715, -0.86, -0.596, -0.199, 0.41, 0.726, 0.806, 0.575, 0.185, -0.441, -0.755, -0.755, -0.378, 0.111, 0.488, 0.684], 0.25, 2.559], [2.389854, 3, -0.026666]], [[[0.782, 0.691, 0.589, 0.473, 0.353, 0.222, 0.091, -0.036, -0.144], 0.05, 2.608], [None, 0, None]]], [[[[-0.688, -0.879, -0.986, -0.988, -0.888, -0.715, -0.457, -0.143, 0.218, 0.448, 0.749, 0.913, 0.99, 0.984], 0.1, 3.159], [None, 1, None]], [[[-0.874, -0.975, -0.615, 0.046, 0.678, 0.965, 0.812, 0.27, -0.343, -0.878, -0.915, -0.538, 0.245, 0.739, 0.906, 0.637, -0.007, -0.408, -0.795, -0.789, -0.397, 0.182, 0.725, 0.853, 0.578, -0.108, -0.494, -0.757, -0.746, -0.405, 0.41, 0.638, 0.811, 0.6, -0.247, -0.675, -0.782], 0.125, 5.588], [1.106939, 4, -0.015536]], [[[-0.449, -0.864, -0.954, -0.699, -0.226, 0.308, 0.711, 0.869, 0.73, 0.325, -0.256, -0.615, -0.778, -0.698, -0.293, 0.102, 0.556, 0.7, 0.663, 0.306, 0.059, -0.432, -0.626, -0.593, -0.343, 0.027, 0.409, 0.573, 0.53, 0.0, -0.036, -0.313, -0.511, -0.514, -0.421], 0.1, 5.982], [1.02519, 3, -0.023952]], [[[-0.807, -0.576, -0.323, 0.0, 0.162, 0.376, 0.519, 0.606, 0.655, 0.637, 0.574, 0.47, 0.354, 0.208], 0.25, 1.125], [None, 1, None]], [[[-0.863, -0.84, 0.078, 0.953, 0.772, -0.328, -0.986, -0.52, 0.424, 0.993, 0.469, -0.551, -0.996, -0.407, 0.83, 0.938, -0.077, -0.783, -0.913, -0.226, 0.986, 0.792, 0.063, -0.881], 0.25, 4.354], [1.439286, 4, -0.002631]], [[[0.063, -0.94, -0.165, 0.815, 0.275, -0.695, -0.312, 0.524, 0.417, -0.508, -0.499, 0.459, 0.37, -0.378, -0.462, 0.219, 0.429, -0.014, -0.406, 0.139, 0.353, -0.11, -0.317, -0.119, 0.259, -0.044, -0.272, -0.173, 0.171], 0.25, 5.899], [1.055606, 7, -0.008939]], [[[0.877, 0.977, 0.997, 0.935, 0.796, 0.586, 0.338, 0.07, -0.221, -0.509, -0.724, -0.872, -0.984, -0.99, -0.943, -0.8, -0.569, -0.289, 0.003, 0.279, 0.533, 0.725, 0.872, 0.982, 0.999, 0.949], 0.05, 5.66], [None, 1, None]], [[[-0.425, -0.944, -0.194, 0.722, 0.59, -0.255, -0.74, -0.107, 0.57, 0.553, -0.097, -0.577, -0.147, 0.454], 0.25, 4.911], [1.2541, 3, -0.019783]]], [[[[0.836, 0.738, 0.627, 0.51, 0.387, 0.256, 0.128, 0.009, -0.112, -0.238, -0.32, -0.431, -0.502, -0.557], 0.1, 1.382], [None, 0, None]], [[[1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0], 0.25, 3.14159], [1.0, 2, -0.5]], [[[0.72, 0.954, 0.973, 0.757, 0.373, -0.099, -0.486, -0.855, -0.959, -0.851, -0.622, -0.085, 0.357, 0.714, 0.892, 0.91, 0.646, 0.434, 0.017, -0.452, -0.799, -0.899, -0.779, -0.589, -0.046, 0.178, 0.595, 0.869, 0.864, 0.591, 0.278, -0.036, -0.48, -0.729, -0.843, -0.667, -0.601, -0.299, 0.109], 0.1, 4.762], [1.327027, 3, 0.005748]], [[[-0.958, -0.915, -0.449, 0.251, 0.801, 0.969, 0.683, 0.131, -0.526, -0.913, -0.847, -0.422, 0.209, 0.666, 0.904, 0.594, 0.028, -0.59, -0.799, -0.804, -0.222, 0.054, 0.675, 0.839, 0.576, 0.287, -0.577, -0.769, -0.769, -0.464, 0.137, 0.597, 0.789, 0.47, 0.186, -0.526], 0.125, 5.507], [1.130442, 4, -0.009205]], [[[-0.511, 0.0, 0.015, 0.298, 0.543, 0.762, 0.911, 0.987, 0.99], 0.1, 2.751], [None, 1, None]], [[[0.912, 0.995, 0.892, 0.616, 0.241, -0.192, -0.525, -0.837, -0.958, -0.893, -0.667, -0.387, -0.005, 0.43, 0.763, 0.899, 0.903, 0.757, 0.333, 0.06, -0.328, -0.681, -0.854, -0.89, -0.78, -0.398, -0.043, 0.299, 0.625, 0.818, 0.858, 0.78], 0.1, 4.27], [1.411424, 2, -0.040808]], [[[0.432, 0.583, 0.718, 0.831, 0.92, 0.97, 0.999, 0.991, 0.957, 0.889, 0.789, 0.66, 0.526, 0.382, 0.202, 0.048, -0.121, -0.344, -0.46, -0.603, -0.751, -0.852, -0.953, -0.985, -1.0, -0.986, -0.918, -0.892, -0.787, -0.669, -0.494, -0.305, -0.213, 0.061, 0.215], 0.05, 3.504], [None, 1, None]], [[[-1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0], 0.25, 3.14159], [1.0, 2, -0.5]]], [[[[-0.648, -0.723, -0.79, -0.84, -0.886, -0.913, -0.927, -0.931, -0.921, -0.9, -0.871, -0.824], 0.05, 2.282], [None, 0, None]], [[[0.981, 0.896, 0.751, 0.561, 0.317, 0.084, -0.172, -0.41, -0.59], 0.1, 2.543], [None, 0, None]], [[[-0.99, -0.835, -0.27, 0.432, 0.933, 0.924, 0.426, -0.302, -0.851, -0.998, -0.569, 0.0, 0.659, 0.995, 0.801, 0.131, -0.48, -0.924, -0.901, -0.51, 0.414, 0.939, 0.984, 0.724, -0.13, -0.791, -0.997, -0.898, 0.029, 0.738, 0.869, 0.938, 0.438], 0.25, 2.87], [2.132008, 4, -0.026153]], [[[0.254, 0.123, -0.003, -0.132, -0.245, -0.349, -0.458, -0.531, 0.0, -0.671, -0.709, -0.744, -0.761, -0.765, -0.756, -0.733, -0.694, -0.659, -0.584, -0.533], 0.1, 1.299], [None, 1, None]], [[[0.878, 0.972, 0.748, 0.316, -0.198, -0.635, -0.84, -0.757, -0.471, 0.045, 0.393, 0.709, 0.736, 0.585, 0.178, -0.261, 0.0, -0.653, -0.539, -0.232, 0.046, 0.278, 0.563, 0.55], 0.125, 4.557], [0.682609, 3, -0.504925]], [[[-0.884, -0.978, -0.774, -0.365, 0.18, 0.586, 0.86, 0.832, 0.556, 0.178, -0.357, -0.626, -0.783, -0.661, -0.337, 0.061, 0.365, 0.638, 0.665, 0.465, 0.104, -0.097, -0.529, -0.614, -0.515, -0.336, 0.054, 0.357, 0.451, 0.555, 0.375, 0.311, -0.186, -0.412, -0.501, -0.494, -0.369, 0.046], 0.1, 5.519], [1.107314, 4, -0.027361]], [[[-0.539, 0.799, 0.69, -0.671, -0.784, 0.597, 0.906, -0.256, -0.907, 0.337, 0.964, -0.09, -0.999, -0.153, 0.988, 0.01], 0.25, 5.851], [1.060938, 4, -0.012038]], [[[0.569, -0.698, -0.69, 0.469, 0.749, -0.326, -0.728, -0.001, 0.664, 0.187, -0.554, -0.114, 0.502, 0.345, -0.356, -0.327, 0.355, 0.35, -0.212, -0.383, 0.115, 0.332, 0.168, -0.312, -0.105, 0.286, 0.063, -0.163, -0.232, 0.023, 0.117], 0.25, 5.706], [1.096436, 7, -0.004285]]], [[[[0.883, 0.471, -0.097, -0.625, -0.929, -0.935, -0.593, -0.109, 0.462, 0.84, 0.939, 0.7, 0.352, -0.231, -0.617, -0.887, 0.0, -0.497, 0.006, 0.386, 0.772, 0.874, 0.525, 0.312, -0.475, -0.783, -0.85, -0.745, -0.505, 0.159, 0.607, 0.748], 0.125, 4.611], [0.898735, 4, -0.340451]], [[[0.007, 0.246, 0.471, 0.664, 0.831, 0.933, 0.996, 0.992, 0.928, 0.816, 0.652, 0.452, 0.204, -0.009, -0.284, -0.466, -0.704, -0.83, -0.943, -0.995, -0.995, -0.934, -0.814, -0.624, -0.499, -0.137, 0.078, 0.213, 0.427, 0.742, 0.813, 0.915, 0.984, 0.988, 0.902, 0.766, 0.715, 0.381, 0.273, -0.061], 0.05, 4.784], [None, 1, None]], [[[-0.684, -0.772, -0.844, -0.901, -0.937, -0.961, -0.963, -0.95, -0.913, -0.86, -0.806, -0.728, -0.639, -0.544, -0.441, -0.33, -0.183, -0.069, 0.057], 0.125, 1.076], [None, 1, None]], [[[0.943, 0.983, 0.995, 0.979, 0.937, 0.868, 0.778, 0.65, 0.515, 0.392, 0.216, 0.046, -0.119, -0.23, -0.435, -0.568, -0.643, -0.761, -0.863, -0.899, -0.947, -0.948, -0.927, -0.869, -0.825, -0.707, 0.0, -0.454, -0.284, -0.16, 0.037, 0.186, 0.298, 0.483], 0.05, 3.3], [0.190609, 2, -0.89989]], [[[0.997, 0.978, 0.887, 0.747, 0.542, 0.31, 0.034, -0.217, -0.447, -0.639, -0.792, -0.907, -0.942, -0.917, -0.818, -0.648, 0.0, -0.248, -0.049, 0.262, 0.424, 0.622, 0.789], 0.1, 2.613], [0.215756, 2, -0.910273]], [[[0.119, -0.0, -0.116, -0.232, -0.347, -0.443, -0.555, -0.629, -0.718, -0.783, -0.847, -0.905, -0.934, -0.955, -0.965, -0.961, -0.939, -0.912, -0.876, -0.805, -0.75, -0.687, -0.596, -0.505, -0.366, -0.259, -0.201, -0.092], 0.05, 2.324], [None, 0, None]], [[[0.414, 0.018, -0.354, -0.664, -0.866, -0.905, -0.806, -0.556, -0.292, 0.109, 0.417, 0.655, 0.759, 0.76, 0.614, 0.44, 0.116, -0.162, -0.347, -0.556, -0.665, -0.626, -0.502, -0.289, -0.075, 0.21, 0.401, 0.52, 0.571, 0.494, 0.439, 0.174, -0.124, -0.238, -0.438, -0.442, -0.468], 0.1, 4.016], [1.553498, 2, -0.007057]], [[[-0.464, -0.88, -0.965, -0.698, -0.182, 0.41, 0.831, 0.906, 0.692, 0.171, -0.42, -0.774, -0.859, -0.664, -0.204, 0.283, 0.655, 0.808, 0.576, 0.047, -0.362, -0.725, -0.759, -0.508, -0.113, 0.319], 0.25, 2.463], [2.494268, 3, -0.02225]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("case %d" % i, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
case 0[1.193322, 3, -0.335839][1.789983, 3, -0.003759]Failed
case 1[1.051132, 5, -0.217237][1.313915, 5, -0.021546]Failed
case 2[None, 1, None][None, 1, None]Passed
case 3[0.644263, 2, -0.512638][1.288527, 2, -0.025277]Failed
case 4[0.993836, 4, -0.273507][1.325115, 4, -0.031343]Failed
case 5[None, 1, None][None, 1, None]Passed
case 6[1.593236, 3, -0.351111][2.389854, 3, -0.026666]Failed
case 7[None, 0, None][None, 0, None]Passed

SHA-256 / ead03ad4d4b86588ffcece14358c91420dec6c5b6be1ad72ef099566738d73c7

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(xs, dt, omega):
    ts = []
    for i in range(1, len(xs)):
        a, b = xs[i - 1], xs[i]
        if a < 0 <= b:
            frac = -a / (b - a)
            ts.append((i - 1 + frac) * dt)
    if len(ts) < 2:
        return [None, len(ts), None]
    period = (ts[1] - ts[0])
    ref = 2 * math.pi / omega
    return [round(period, 6), len(ts), round((period - ref) / ref, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[-0.203, -0.606, -0.892, -0.999, -0.918, -0.66, -0.263, 0.187, 0.585, 0.852, 0.994, 0.938, 0.636, 0.301, -0.21, -0.509, -0.829, -0.993, -0.968, -0.754, -0.46, 0.183, 0.476, 0.819, 0.993, 0.981, 0.804, 0.232, 0.076, -0.443, -0.756, -1.0, -0.978, -0.867, -0.507, -0.128, 0.443, 0.783, 0.999], 0.125, 3.497], [1.789983, 3, -0.003759]], [[[-0.85, -0.762, 0.233, 0.853, 0.374, -0.493, -0.726, -0.108, 0.577, 0.45, -0.097, -0.564, -0.318, 0.265, 0.458, -0.095, -0.426, -0.335, 0.18, 0.372, 0.243, -0.268, -0.328, 0.088, 0.301, 0.0, -0.112, -0.232], 0.25, 4.679], [1.313915, 5, -0.021546]], [[[-0.148, -0.034, 0.073, 0.174, 0.271, 0.365, 0.444, 0.518, 0.577, 0.645, 0.688], 0.1, 1.115], [None, 1, None]], [[[-0.986, -0.698, -0.174, 0.366, 0.774, 0.88, 0.684, 0.271, -0.252, -0.583, -0.779, -0.665, -0.319, 0.187, 0.441, 0.666, 0.619, 0.432, 0.018, -0.352, -0.591], 0.125, 4.753], [1.288527, 2, -0.025277]], [[[0.998, 0.325, -0.659, -0.774, -0.014, 0.738, 0.491, -0.305, -0.666, -0.273, 0.426, 0.518, 0.137, -0.453, 0.0, 0.02, 0.439, 0.135, -0.242, -0.368, 0.032, 0.282, 0.295], 0.25, 4.593], [1.325115, 4, -0.031343]], [[[0.939, 0.975, 0.882, 0.0, 0.367, 0.054, -0.24, -0.541, -0.725, -0.784, -0.763, -0.617, -0.445, -0.217, 0.142, 0.297, 0.546, 0.615, 0.635, 0.577, 0.381, 0.276, 0.016], 0.125, 2.926], [None, 1, None]], [[[-0.155, -0.709, -0.969, -0.826, -0.384, 0.203, 0.745, 0.916, 0.693, 0.23, -0.36, -0.715, -0.86, -0.596, -0.199, 0.41, 0.726, 0.806, 0.575, 0.185, -0.441, -0.755, -0.755, -0.378, 0.111, 0.488, 0.684], 0.25, 2.559], [2.389854, 3, -0.026666]], [[[0.782, 0.691, 0.589, 0.473, 0.353, 0.222, 0.091, -0.036, -0.144], 0.05, 2.608], [None, 0, None]]], [[[[-0.688, -0.879, -0.986, -0.988, -0.888, -0.715, -0.457, -0.143, 0.218, 0.448, 0.749, 0.913, 0.99, 0.984], 0.1, 3.159], [None, 1, None]], [[[-0.874, -0.975, -0.615, 0.046, 0.678, 0.965, 0.812, 0.27, -0.343, -0.878, -0.915, -0.538, 0.245, 0.739, 0.906, 0.637, -0.007, -0.408, -0.795, -0.789, -0.397, 0.182, 0.725, 0.853, 0.578, -0.108, -0.494, -0.757, -0.746, -0.405, 0.41, 0.638, 0.811, 0.6, -0.247, -0.675, -0.782], 0.125, 5.588], [1.106939, 4, -0.015536]], [[[-0.449, -0.864, -0.954, -0.699, -0.226, 0.308, 0.711, 0.869, 0.73, 0.325, -0.256, -0.615, -0.778, -0.698, -0.293, 0.102, 0.556, 0.7, 0.663, 0.306, 0.059, -0.432, -0.626, -0.593, -0.343, 0.027, 0.409, 0.573, 0.53, 0.0, -0.036, -0.313, -0.511, -0.514, -0.421], 0.1, 5.982], [1.02519, 3, -0.023952]], [[[-0.807, -0.576, -0.323, 0.0, 0.162, 0.376, 0.519, 0.606, 0.655, 0.637, 0.574, 0.47, 0.354, 0.208], 0.25, 1.125], [None, 1, None]], [[[-0.863, -0.84, 0.078, 0.953, 0.772, -0.328, -0.986, -0.52, 0.424, 0.993, 0.469, -0.551, -0.996, -0.407, 0.83, 0.938, -0.077, -0.783, -0.913, -0.226, 0.986, 0.792, 0.063, -0.881], 0.25, 4.354], [1.439286, 4, -0.002631]], [[[0.063, -0.94, -0.165, 0.815, 0.275, -0.695, -0.312, 0.524, 0.417, -0.508, -0.499, 0.459, 0.37, -0.378, -0.462, 0.219, 0.429, -0.014, -0.406, 0.139, 0.353, -0.11, -0.317, -0.119, 0.259, -0.044, -0.272, -0.173, 0.171], 0.25, 5.899], [1.055606, 7, -0.008939]], [[[0.877, 0.977, 0.997, 0.935, 0.796, 0.586, 0.338, 0.07, -0.221, -0.509, -0.724, -0.872, -0.984, -0.99, -0.943, -0.8, -0.569, -0.289, 0.003, 0.279, 0.533, 0.725, 0.872, 0.982, 0.999, 0.949], 0.05, 5.66], [None, 1, None]], [[[-0.425, -0.944, -0.194, 0.722, 0.59, -0.255, -0.74, -0.107, 0.57, 0.553, -0.097, -0.577, -0.147, 0.454], 0.25, 4.911], [1.2541, 3, -0.019783]]], [[[[0.836, 0.738, 0.627, 0.51, 0.387, 0.256, 0.128, 0.009, -0.112, -0.238, -0.32, -0.431, -0.502, -0.557], 0.1, 1.382], [None, 0, None]], [[[1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0], 0.25, 3.14159], [1.0, 2, -0.5]], [[[0.72, 0.954, 0.973, 0.757, 0.373, -0.099, -0.486, -0.855, -0.959, -0.851, -0.622, -0.085, 0.357, 0.714, 0.892, 0.91, 0.646, 0.434, 0.017, -0.452, -0.799, -0.899, -0.779, -0.589, -0.046, 0.178, 0.595, 0.869, 0.864, 0.591, 0.278, -0.036, -0.48, -0.729, -0.843, -0.667, -0.601, -0.299, 0.109], 0.1, 4.762], [1.327027, 3, 0.005748]], [[[-0.958, -0.915, -0.449, 0.251, 0.801, 0.969, 0.683, 0.131, -0.526, -0.913, -0.847, -0.422, 0.209, 0.666, 0.904, 0.594, 0.028, -0.59, -0.799, -0.804, -0.222, 0.054, 0.675, 0.839, 0.576, 0.287, -0.577, -0.769, -0.769, -0.464, 0.137, 0.597, 0.789, 0.47, 0.186, -0.526], 0.125, 5.507], [1.130442, 4, -0.009205]], [[[-0.511, 0.0, 0.015, 0.298, 0.543, 0.762, 0.911, 0.987, 0.99], 0.1, 2.751], [None, 1, None]], [[[0.912, 0.995, 0.892, 0.616, 0.241, -0.192, -0.525, -0.837, -0.958, -0.893, -0.667, -0.387, -0.005, 0.43, 0.763, 0.899, 0.903, 0.757, 0.333, 0.06, -0.328, -0.681, -0.854, -0.89, -0.78, -0.398, -0.043, 0.299, 0.625, 0.818, 0.858, 0.78], 0.1, 4.27], [1.411424, 2, -0.040808]], [[[0.432, 0.583, 0.718, 0.831, 0.92, 0.97, 0.999, 0.991, 0.957, 0.889, 0.789, 0.66, 0.526, 0.382, 0.202, 0.048, -0.121, -0.344, -0.46, -0.603, -0.751, -0.852, -0.953, -0.985, -1.0, -0.986, -0.918, -0.892, -0.787, -0.669, -0.494, -0.305, -0.213, 0.061, 0.215], 0.05, 3.504], [None, 1, None]], [[[-1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0], 0.25, 3.14159], [1.0, 2, -0.5]]], [[[[-0.648, -0.723, -0.79, -0.84, -0.886, -0.913, -0.927, -0.931, -0.921, -0.9, -0.871, -0.824], 0.05, 2.282], [None, 0, None]], [[[0.981, 0.896, 0.751, 0.561, 0.317, 0.084, -0.172, -0.41, -0.59], 0.1, 2.543], [None, 0, None]], [[[-0.99, -0.835, -0.27, 0.432, 0.933, 0.924, 0.426, -0.302, -0.851, -0.998, -0.569, 0.0, 0.659, 0.995, 0.801, 0.131, -0.48, -0.924, -0.901, -0.51, 0.414, 0.939, 0.984, 0.724, -0.13, -0.791, -0.997, -0.898, 0.029, 0.738, 0.869, 0.938, 0.438], 0.25, 2.87], [2.132008, 4, -0.026153]], [[[0.254, 0.123, -0.003, -0.132, -0.245, -0.349, -0.458, -0.531, 0.0, -0.671, -0.709, -0.744, -0.761, -0.765, -0.756, -0.733, -0.694, -0.659, -0.584, -0.533], 0.1, 1.299], [None, 1, None]], [[[0.878, 0.972, 0.748, 0.316, -0.198, -0.635, -0.84, -0.757, -0.471, 0.045, 0.393, 0.709, 0.736, 0.585, 0.178, -0.261, 0.0, -0.653, -0.539, -0.232, 0.046, 0.278, 0.563, 0.55], 0.125, 4.557], [0.682609, 3, -0.504925]], [[[-0.884, -0.978, -0.774, -0.365, 0.18, 0.586, 0.86, 0.832, 0.556, 0.178, -0.357, -0.626, -0.783, -0.661, -0.337, 0.061, 0.365, 0.638, 0.665, 0.465, 0.104, -0.097, -0.529, -0.614, -0.515, -0.336, 0.054, 0.357, 0.451, 0.555, 0.375, 0.311, -0.186, -0.412, -0.501, -0.494, -0.369, 0.046], 0.1, 5.519], [1.107314, 4, -0.027361]], [[[-0.539, 0.799, 0.69, -0.671, -0.784, 0.597, 0.906, -0.256, -0.907, 0.337, 0.964, -0.09, -0.999, -0.153, 0.988, 0.01], 0.25, 5.851], [1.060938, 4, -0.012038]], [[[0.569, -0.698, -0.69, 0.469, 0.749, -0.326, -0.728, -0.001, 0.664, 0.187, -0.554, -0.114, 0.502, 0.345, -0.356, -0.327, 0.355, 0.35, -0.212, -0.383, 0.115, 0.332, 0.168, -0.312, -0.105, 0.286, 0.063, -0.163, -0.232, 0.023, 0.117], 0.25, 5.706], [1.096436, 7, -0.004285]]], [[[[0.883, 0.471, -0.097, -0.625, -0.929, -0.935, -0.593, -0.109, 0.462, 0.84, 0.939, 0.7, 0.352, -0.231, -0.617, -0.887, 0.0, -0.497, 0.006, 0.386, 0.772, 0.874, 0.525, 0.312, -0.475, -0.783, -0.85, -0.745, -0.505, 0.159, 0.607, 0.748], 0.125, 4.611], [0.898735, 4, -0.340451]], [[[0.007, 0.246, 0.471, 0.664, 0.831, 0.933, 0.996, 0.992, 0.928, 0.816, 0.652, 0.452, 0.204, -0.009, -0.284, -0.466, -0.704, -0.83, -0.943, -0.995, -0.995, -0.934, -0.814, -0.624, -0.499, -0.137, 0.078, 0.213, 0.427, 0.742, 0.813, 0.915, 0.984, 0.988, 0.902, 0.766, 0.715, 0.381, 0.273, -0.061], 0.05, 4.784], [None, 1, None]], [[[-0.684, -0.772, -0.844, -0.901, -0.937, -0.961, -0.963, -0.95, -0.913, -0.86, -0.806, -0.728, -0.639, -0.544, -0.441, -0.33, -0.183, -0.069, 0.057], 0.125, 1.076], [None, 1, None]], [[[0.943, 0.983, 0.995, 0.979, 0.937, 0.868, 0.778, 0.65, 0.515, 0.392, 0.216, 0.046, -0.119, -0.23, -0.435, -0.568, -0.643, -0.761, -0.863, -0.899, -0.947, -0.948, -0.927, -0.869, -0.825, -0.707, 0.0, -0.454, -0.284, -0.16, 0.037, 0.186, 0.298, 0.483], 0.05, 3.3], [0.190609, 2, -0.89989]], [[[0.997, 0.978, 0.887, 0.747, 0.542, 0.31, 0.034, -0.217, -0.447, -0.639, -0.792, -0.907, -0.942, -0.917, -0.818, -0.648, 0.0, -0.248, -0.049, 0.262, 0.424, 0.622, 0.789], 0.1, 2.613], [0.215756, 2, -0.910273]], [[[0.119, -0.0, -0.116, -0.232, -0.347, -0.443, -0.555, -0.629, -0.718, -0.783, -0.847, -0.905, -0.934, -0.955, -0.965, -0.961, -0.939, -0.912, -0.876, -0.805, -0.75, -0.687, -0.596, -0.505, -0.366, -0.259, -0.201, -0.092], 0.05, 2.324], [None, 0, None]], [[[0.414, 0.018, -0.354, -0.664, -0.866, -0.905, -0.806, -0.556, -0.292, 0.109, 0.417, 0.655, 0.759, 0.76, 0.614, 0.44, 0.116, -0.162, -0.347, -0.556, -0.665, -0.626, -0.502, -0.289, -0.075, 0.21, 0.401, 0.52, 0.571, 0.494, 0.439, 0.174, -0.124, -0.238, -0.438, -0.442, -0.468], 0.1, 4.016], [1.553498, 2, -0.007057]], [[[-0.464, -0.88, -0.965, -0.698, -0.182, 0.41, 0.831, 0.906, 0.692, 0.171, -0.42, -0.774, -0.859, -0.664, -0.204, 0.283, 0.655, 0.808, 0.576, 0.047, -0.362, -0.725, -0.759, -0.508, -0.113, 0.319], 0.25, 2.463], [2.494268, 3, -0.02225]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("case %d" % i, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
case 0[1.766369, 3, -0.016901][1.789983, 3, -0.003759]Failed
case 1[1.347959, 5, 0.003806][1.313915, 5, -0.021546]Failed
case 2[None, 1, None][None, 1, None]Passed
case 3[1.288527, 2, -0.025277][1.288527, 2, -0.025277]Passed
case 4[1.342985, 4, -0.01828][1.325115, 4, -0.031343]Failed
case 5[None, 1, None][None, 1, None]Passed
case 6[2.418148, 3, -0.015143][2.389854, 3, -0.026666]Failed
case 7[None, 0, None][None, 0, None]Passed

SHA-256 / 648717c0461efe1e03858e38e45366b947d9652a5366679196b09a87077ce625

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(xs, dt, omega):
    ts = []
    for i in range(1, len(xs)):
        a, b = xs[i - 1], xs[i]
        if a < 0 <= b:
            frac = -a / (b - a)
            ts.append((i - 1 + frac) * dt)
    if len(ts) < 2:
        return [None, len(ts), None]
    period = (ts[-1] - ts[0]) / (len(ts) - 1)
    ref = 2 * math.pi / omega
    return [round(period, 6), len(ts), round((period - ref) / ref, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[[[[-0.203, -0.606, -0.892, -0.999, -0.918, -0.66, -0.263, 0.187, 0.585, 0.852, 0.994, 0.938, 0.636, 0.301, -0.21, -0.509, -0.829, -0.993, -0.968, -0.754, -0.46, 0.183, 0.476, 0.819, 0.993, 0.981, 0.804, 0.232, 0.076, -0.443, -0.756, -1.0, -0.978, -0.867, -0.507, -0.128, 0.443, 0.783, 0.999], 0.125, 3.497], [1.789983, 3, -0.003759]], [[[-0.85, -0.762, 0.233, 0.853, 0.374, -0.493, -0.726, -0.108, 0.577, 0.45, -0.097, -0.564, -0.318, 0.265, 0.458, -0.095, -0.426, -0.335, 0.18, 0.372, 0.243, -0.268, -0.328, 0.088, 0.301, 0.0, -0.112, -0.232], 0.25, 4.679], [1.313915, 5, -0.021546]], [[[-0.148, -0.034, 0.073, 0.174, 0.271, 0.365, 0.444, 0.518, 0.577, 0.645, 0.688], 0.1, 1.115], [None, 1, None]], [[[-0.986, -0.698, -0.174, 0.366, 0.774, 0.88, 0.684, 0.271, -0.252, -0.583, -0.779, -0.665, -0.319, 0.187, 0.441, 0.666, 0.619, 0.432, 0.018, -0.352, -0.591], 0.125, 4.753], [1.288527, 2, -0.025277]], [[[0.998, 0.325, -0.659, -0.774, -0.014, 0.738, 0.491, -0.305, -0.666, -0.273, 0.426, 0.518, 0.137, -0.453, 0.0, 0.02, 0.439, 0.135, -0.242, -0.368, 0.032, 0.282, 0.295], 0.25, 4.593], [1.325115, 4, -0.031343]], [[[0.939, 0.975, 0.882, 0.0, 0.367, 0.054, -0.24, -0.541, -0.725, -0.784, -0.763, -0.617, -0.445, -0.217, 0.142, 0.297, 0.546, 0.615, 0.635, 0.577, 0.381, 0.276, 0.016], 0.125, 2.926], [None, 1, None]], [[[-0.155, -0.709, -0.969, -0.826, -0.384, 0.203, 0.745, 0.916, 0.693, 0.23, -0.36, -0.715, -0.86, -0.596, -0.199, 0.41, 0.726, 0.806, 0.575, 0.185, -0.441, -0.755, -0.755, -0.378, 0.111, 0.488, 0.684], 0.25, 2.559], [2.389854, 3, -0.026666]], [[[0.782, 0.691, 0.589, 0.473, 0.353, 0.222, 0.091, -0.036, -0.144], 0.05, 2.608], [None, 0, None]]], [[[[-0.688, -0.879, -0.986, -0.988, -0.888, -0.715, -0.457, -0.143, 0.218, 0.448, 0.749, 0.913, 0.99, 0.984], 0.1, 3.159], [None, 1, None]], [[[-0.874, -0.975, -0.615, 0.046, 0.678, 0.965, 0.812, 0.27, -0.343, -0.878, -0.915, -0.538, 0.245, 0.739, 0.906, 0.637, -0.007, -0.408, -0.795, -0.789, -0.397, 0.182, 0.725, 0.853, 0.578, -0.108, -0.494, -0.757, -0.746, -0.405, 0.41, 0.638, 0.811, 0.6, -0.247, -0.675, -0.782], 0.125, 5.588], [1.106939, 4, -0.015536]], [[[-0.449, -0.864, -0.954, -0.699, -0.226, 0.308, 0.711, 0.869, 0.73, 0.325, -0.256, -0.615, -0.778, -0.698, -0.293, 0.102, 0.556, 0.7, 0.663, 0.306, 0.059, -0.432, -0.626, -0.593, -0.343, 0.027, 0.409, 0.573, 0.53, 0.0, -0.036, -0.313, -0.511, -0.514, -0.421], 0.1, 5.982], [1.02519, 3, -0.023952]], [[[-0.807, -0.576, -0.323, 0.0, 0.162, 0.376, 0.519, 0.606, 0.655, 0.637, 0.574, 0.47, 0.354, 0.208], 0.25, 1.125], [None, 1, None]], [[[-0.863, -0.84, 0.078, 0.953, 0.772, -0.328, -0.986, -0.52, 0.424, 0.993, 0.469, -0.551, -0.996, -0.407, 0.83, 0.938, -0.077, -0.783, -0.913, -0.226, 0.986, 0.792, 0.063, -0.881], 0.25, 4.354], [1.439286, 4, -0.002631]], [[[0.063, -0.94, -0.165, 0.815, 0.275, -0.695, -0.312, 0.524, 0.417, -0.508, -0.499, 0.459, 0.37, -0.378, -0.462, 0.219, 0.429, -0.014, -0.406, 0.139, 0.353, -0.11, -0.317, -0.119, 0.259, -0.044, -0.272, -0.173, 0.171], 0.25, 5.899], [1.055606, 7, -0.008939]], [[[0.877, 0.977, 0.997, 0.935, 0.796, 0.586, 0.338, 0.07, -0.221, -0.509, -0.724, -0.872, -0.984, -0.99, -0.943, -0.8, -0.569, -0.289, 0.003, 0.279, 0.533, 0.725, 0.872, 0.982, 0.999, 0.949], 0.05, 5.66], [None, 1, None]], [[[-0.425, -0.944, -0.194, 0.722, 0.59, -0.255, -0.74, -0.107, 0.57, 0.553, -0.097, -0.577, -0.147, 0.454], 0.25, 4.911], [1.2541, 3, -0.019783]]], [[[[0.836, 0.738, 0.627, 0.51, 0.387, 0.256, 0.128, 0.009, -0.112, -0.238, -0.32, -0.431, -0.502, -0.557], 0.1, 1.382], [None, 0, None]], [[[1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0], 0.25, 3.14159], [1.0, 2, -0.5]], [[[0.72, 0.954, 0.973, 0.757, 0.373, -0.099, -0.486, -0.855, -0.959, -0.851, -0.622, -0.085, 0.357, 0.714, 0.892, 0.91, 0.646, 0.434, 0.017, -0.452, -0.799, -0.899, -0.779, -0.589, -0.046, 0.178, 0.595, 0.869, 0.864, 0.591, 0.278, -0.036, -0.48, -0.729, -0.843, -0.667, -0.601, -0.299, 0.109], 0.1, 4.762], [1.327027, 3, 0.005748]], [[[-0.958, -0.915, -0.449, 0.251, 0.801, 0.969, 0.683, 0.131, -0.526, -0.913, -0.847, -0.422, 0.209, 0.666, 0.904, 0.594, 0.028, -0.59, -0.799, -0.804, -0.222, 0.054, 0.675, 0.839, 0.576, 0.287, -0.577, -0.769, -0.769, -0.464, 0.137, 0.597, 0.789, 0.47, 0.186, -0.526], 0.125, 5.507], [1.130442, 4, -0.009205]], [[[-0.511, 0.0, 0.015, 0.298, 0.543, 0.762, 0.911, 0.987, 0.99], 0.1, 2.751], [None, 1, None]], [[[0.912, 0.995, 0.892, 0.616, 0.241, -0.192, -0.525, -0.837, -0.958, -0.893, -0.667, -0.387, -0.005, 0.43, 0.763, 0.899, 0.903, 0.757, 0.333, 0.06, -0.328, -0.681, -0.854, -0.89, -0.78, -0.398, -0.043, 0.299, 0.625, 0.818, 0.858, 0.78], 0.1, 4.27], [1.411424, 2, -0.040808]], [[[0.432, 0.583, 0.718, 0.831, 0.92, 0.97, 0.999, 0.991, 0.957, 0.889, 0.789, 0.66, 0.526, 0.382, 0.202, 0.048, -0.121, -0.344, -0.46, -0.603, -0.751, -0.852, -0.953, -0.985, -1.0, -0.986, -0.918, -0.892, -0.787, -0.669, -0.494, -0.305, -0.213, 0.061, 0.215], 0.05, 3.504], [None, 1, None]], [[[-1.0, 0.0, 1.0, 0.0, -1.0, 0.0, 1.0, 0.0, -1.0], 0.25, 3.14159], [1.0, 2, -0.5]]], [[[[-0.648, -0.723, -0.79, -0.84, -0.886, -0.913, -0.927, -0.931, -0.921, -0.9, -0.871, -0.824], 0.05, 2.282], [None, 0, None]], [[[0.981, 0.896, 0.751, 0.561, 0.317, 0.084, -0.172, -0.41, -0.59], 0.1, 2.543], [None, 0, None]], [[[-0.99, -0.835, -0.27, 0.432, 0.933, 0.924, 0.426, -0.302, -0.851, -0.998, -0.569, 0.0, 0.659, 0.995, 0.801, 0.131, -0.48, -0.924, -0.901, -0.51, 0.414, 0.939, 0.984, 0.724, -0.13, -0.791, -0.997, -0.898, 0.029, 0.738, 0.869, 0.938, 0.438], 0.25, 2.87], [2.132008, 4, -0.026153]], [[[0.254, 0.123, -0.003, -0.132, -0.245, -0.349, -0.458, -0.531, 0.0, -0.671, -0.709, -0.744, -0.761, -0.765, -0.756, -0.733, -0.694, -0.659, -0.584, -0.533], 0.1, 1.299], [None, 1, None]], [[[0.878, 0.972, 0.748, 0.316, -0.198, -0.635, -0.84, -0.757, -0.471, 0.045, 0.393, 0.709, 0.736, 0.585, 0.178, -0.261, 0.0, -0.653, -0.539, -0.232, 0.046, 0.278, 0.563, 0.55], 0.125, 4.557], [0.682609, 3, -0.504925]], [[[-0.884, -0.978, -0.774, -0.365, 0.18, 0.586, 0.86, 0.832, 0.556, 0.178, -0.357, -0.626, -0.783, -0.661, -0.337, 0.061, 0.365, 0.638, 0.665, 0.465, 0.104, -0.097, -0.529, -0.614, -0.515, -0.336, 0.054, 0.357, 0.451, 0.555, 0.375, 0.311, -0.186, -0.412, -0.501, -0.494, -0.369, 0.046], 0.1, 5.519], [1.107314, 4, -0.027361]], [[[-0.539, 0.799, 0.69, -0.671, -0.784, 0.597, 0.906, -0.256, -0.907, 0.337, 0.964, -0.09, -0.999, -0.153, 0.988, 0.01], 0.25, 5.851], [1.060938, 4, -0.012038]], [[[0.569, -0.698, -0.69, 0.469, 0.749, -0.326, -0.728, -0.001, 0.664, 0.187, -0.554, -0.114, 0.502, 0.345, -0.356, -0.327, 0.355, 0.35, -0.212, -0.383, 0.115, 0.332, 0.168, -0.312, -0.105, 0.286, 0.063, -0.163, -0.232, 0.023, 0.117], 0.25, 5.706], [1.096436, 7, -0.004285]]], [[[[0.883, 0.471, -0.097, -0.625, -0.929, -0.935, -0.593, -0.109, 0.462, 0.84, 0.939, 0.7, 0.352, -0.231, -0.617, -0.887, 0.0, -0.497, 0.006, 0.386, 0.772, 0.874, 0.525, 0.312, -0.475, -0.783, -0.85, -0.745, -0.505, 0.159, 0.607, 0.748], 0.125, 4.611], [0.898735, 4, -0.340451]], [[[0.007, 0.246, 0.471, 0.664, 0.831, 0.933, 0.996, 0.992, 0.928, 0.816, 0.652, 0.452, 0.204, -0.009, -0.284, -0.466, -0.704, -0.83, -0.943, -0.995, -0.995, -0.934, -0.814, -0.624, -0.499, -0.137, 0.078, 0.213, 0.427, 0.742, 0.813, 0.915, 0.984, 0.988, 0.902, 0.766, 0.715, 0.381, 0.273, -0.061], 0.05, 4.784], [None, 1, None]], [[[-0.684, -0.772, -0.844, -0.901, -0.937, -0.961, -0.963, -0.95, -0.913, -0.86, -0.806, -0.728, -0.639, -0.544, -0.441, -0.33, -0.183, -0.069, 0.057], 0.125, 1.076], [None, 1, None]], [[[0.943, 0.983, 0.995, 0.979, 0.937, 0.868, 0.778, 0.65, 0.515, 0.392, 0.216, 0.046, -0.119, -0.23, -0.435, -0.568, -0.643, -0.761, -0.863, -0.899, -0.947, -0.948, -0.927, -0.869, -0.825, -0.707, 0.0, -0.454, -0.284, -0.16, 0.037, 0.186, 0.298, 0.483], 0.05, 3.3], [0.190609, 2, -0.89989]], [[[0.997, 0.978, 0.887, 0.747, 0.542, 0.31, 0.034, -0.217, -0.447, -0.639, -0.792, -0.907, -0.942, -0.917, -0.818, -0.648, 0.0, -0.248, -0.049, 0.262, 0.424, 0.622, 0.789], 0.1, 2.613], [0.215756, 2, -0.910273]], [[[0.119, -0.0, -0.116, -0.232, -0.347, -0.443, -0.555, -0.629, -0.718, -0.783, -0.847, -0.905, -0.934, -0.955, -0.965, -0.961, -0.939, -0.912, -0.876, -0.805, -0.75, -0.687, -0.596, -0.505, -0.366, -0.259, -0.201, -0.092], 0.05, 2.324], [None, 0, None]], [[[0.414, 0.018, -0.354, -0.664, -0.866, -0.905, -0.806, -0.556, -0.292, 0.109, 0.417, 0.655, 0.759, 0.76, 0.614, 0.44, 0.116, -0.162, -0.347, -0.556, -0.665, -0.626, -0.502, -0.289, -0.075, 0.21, 0.401, 0.52, 0.571, 0.494, 0.439, 0.174, -0.124, -0.238, -0.438, -0.442, -0.468], 0.1, 4.016], [1.553498, 2, -0.007057]], [[[-0.464, -0.88, -0.965, -0.698, -0.182, 0.41, 0.831, 0.906, 0.692, 0.171, -0.42, -0.774, -0.859, -0.664, -0.204, 0.283, 0.655, 0.808, 0.576, 0.047, -0.362, -0.725, -0.759, -0.508, -0.113, 0.319], 0.25, 2.463], [2.494268, 3, -0.02225]]]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("case %d" % i, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
case 0[1.789983, 3, -0.003759][1.789983, 3, -0.003759]Passed
case 1[1.313915, 5, -0.021546][1.313915, 5, -0.021546]Passed
case 2[None, 1, None][None, 1, None]Passed
case 3[1.288527, 2, -0.025277][1.288527, 2, -0.025277]Passed
case 4[1.325115, 4, -0.031343][1.325115, 4, -0.031343]Passed
case 5[None, 1, None][None, 1, None]Passed
case 6[2.389854, 3, -0.026666][2.389854, 3, -0.026666]Passed
case 7[None, 0, None][None, 0, None]Passed

SHA-256 / 3ef92e34d523a3b3341ce22baa14821f549fd7ca9a7d9708a9d081913266e962

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:50:57.305235+00:00.

Case digest / 9b00ca84ee4f495afbcc27fda39f35091d7ad9505c32b365fe72b0e80a181deb