FAILURE MAP
← Case archive

FA-66076 / Aviation weight and balance / Open access

Fuel in unlisted tanks dropped from the aircraft · case 01

A full tip tank that is not in the burn order disappears from the CG trajectory.

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

ROOT CAUSE

Starting weight and moment sum only tanks in the burn order, treating unusable fuel as absent.

VERIFIED REPAIR

Include every tank in the starting weight and moment; only the burn sequence is limited to listed tanks.

Unsuccessful approach: Including unlisted fuel in weight but not in moment leaves it at the zero-fuel arm.

Case contract

Input {'zfw','zfm','tanks':[[name,arm,gal]],'order':[names],'step','density'}. Fuel burns in 'order', one step (or the tank remainder, no carry) at a time; a tank listed again after being emptied burns nothing; unlisted tanks are unusable but their fuel stays on board. CG is sampled at start and after each step. Return [start CG, min CG, max CG, final CG] rounded 2.

Why this case matters

Tank burn sequence determines the CG trajectory in flight; the extreme CG can occur mid-sequence rather than at takeoff or landing.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    dens = x['density']
    tanks = {n: [arm, g] for n, arm, g in x['tanks']}
    w = x['zfw'] + sum(tanks[n][1] for n in set(x['order'])) * dens
    m = x['zfm'] + sum(tanks[n][0] * tanks[n][1] for n in set(x['order'])) * dens
    cgs = [m / w]
    for name in x['order']:
        arm, g = tanks[name]
        while g > 1e-9:
            b = min(x['step'], g)
            g -= b
            w -= b * dens
            m -= b * dens * arm
            cgs.append(m / w)
        tanks[name][1] = 0.0
    return [round(cgs[0], 2), round(min(cgs), 2), round(max(cgs), 2), round(cgs[-1], 2)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 11.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.22, 41.0, 42.22, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 13.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [42.86, 41.71, 42.86, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 8.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [40.97, 40.35, 40.97, 40.35]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 7.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.4, 43.0, 43.51, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 7.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.1}, [41.98, 41.0, 43.24, 41.0]], ['sampled case 1', {'zfw': 2390.0, 'zfm': 102338.1, 'tanks': [['t0', 30.0, 8.6], ['t1', 25.3, 26.3], ['t2', 19.3, 27.1], ['t3', 41.2, 29.3]], 'order': ['t0', 't1', 't2'], 'step': 2.5, 'density': 6.0}, [40.25, 40.25, 42.71, 42.71]], ['sampled case 2', {'zfw': 2251.0, 'zfm': 88635.6, 'tanks': [['t0', 37.2, 28.4]], 'order': ['t0', 't0'], 'step': 7.0, 'density': 6.7}, [39.21, 39.21, 39.38, 39.38]], ['sampled case 3', {'zfw': 1718.0, 'zfm': 65994.7, 'tanks': [['t0', 43.9, 20.5], ['t1', 28.5, 13.0], ['t2', 50.3, 2.9]], 'order': ['t2', 't1'], 'step': 5.0, 'density': 6.0}, [38.47, 38.36, 38.78, 38.78]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 12.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.26, 41.0, 42.26, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 14.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [42.94, 41.71, 42.94, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 16.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.27, 40.69, 41.27, 40.69]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 8.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.47, 43.0, 43.58, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 8.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.2}, [41.99, 41.0, 43.28, 41.0]], ['sampled case 1', {'zfw': 1572.0, 'zfm': 63301.9, 'tanks': [['t0', 26.3, 24.8], ['t1', 70.0, 13.1], ['t2', 26.6, 28.2]], 'order': ['t1', 't0', 't2', 't0'], 'step': 4.0, 'density': 6.0}, [39.22, 37.95, 40.27, 40.27]], ['sampled case 2', {'zfw': 1505.0, 'zfm': 66323.5, 'tanks': [['t0', 43.2, 6.6], ['t1', 61.6, 21.6]], 'order': ['t1', 't0'], 'step': 2.5, 'density': 6.7}, [45.54, 44.04, 45.54, 44.07]], ['sampled case 3', {'zfw': 1742.0, 'zfm': 73409.0, 'tanks': [['t0', 75.9, 19.7]], 'order': ['t0', 't0'], 'step': 2.5, 'density': 6.7}, [44.52, 42.14, 44.52, 42.14]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 13.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.31, 41.0, 42.31, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 15.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.03, 41.71, 43.03, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 24.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.55, 41.01, 41.55, 41.01]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 9.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.53, 43.0, 43.65, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 9.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.3}, [42.01, 41.0, 43.31, 41.0]], ['sampled case 1', {'zfw': 1563.0, 'zfm': 63987.5, 'tanks': [['t0', 86.2, 17.0], ['t1', 83.0, 7.5]], 'order': ['t1', 't1', 't0'], 'step': 7.0, 'density': 6.7}, [45.15, 40.94, 45.15, 40.94]], ['sampled case 2', {'zfw': 2463.0, 'zfm': 110534.3, 'tanks': [['t0', 20.1, 13.6], ['t1', 43.8, 5.9]], 'order': ['t0', 't1'], 'step': 5.0, 'density': 6.0}, [44.08, 44.08, 44.88, 44.88]], ['sampled case 3', {'zfw': 2219.0, 'zfm': 96894.2, 'tanks': [['t0', 66.8, 24.2], ['t1', 79.8, 16.2], ['t2', 19.7, 18.1], ['t3', 64.6, 8.8]], 'order': ['t0', 't2', 't3'], 'step': 4.0, 'density': 6.0}, [45.71, 44.48, 45.71, 45.18]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 14.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.35, 41.0, 42.35, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 16.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.11, 41.71, 43.11, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 32.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.82, 41.31, 41.82, 41.31]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 10.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.6, 43.0, 43.72, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 10.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.4}, [42.02, 41.0, 43.35, 41.0]], ['sampled case 1', {'zfw': 1686.0, 'zfm': 77019.4, 'tanks': [['t0', 89.3, 21.9]], 'order': ['t0'], 'step': 7.0, 'density': 6.7}, [49.17, 45.68, 49.17, 45.68]], ['sampled case 2', {'zfw': 2549.0, 'zfm': 101649.7, 'tanks': [['t0', 77.4, 9.3], ['t1', 16.9, 7.4]], 'order': ['t1', 't0', 't0'], 'step': 7.0, 'density': 6.7}, [40.33, 39.88, 40.77, 39.88]], ['sampled case 3', {'zfw': 2318.0, 'zfm': 101663.0, 'tanks': [['t0', 62.5, 5.6]], 'order': ['t0'], 'step': 7.0, 'density': 6.0}, [44.12, 43.86, 44.12, 43.86]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 15.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.4, 41.0, 42.4, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 17.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.2, 41.71, 43.2, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 40.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [42.08, 41.61, 42.08, 41.61]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 11.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.67, 43.0, 43.79, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 11.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.5}, [42.04, 41.0, 43.38, 41.0]], ['sampled case 1', {'zfw': 1752.0, 'zfm': 71508.9, 'tanks': [['t0', 30.0, 3.5], ['t1', 48.3, 29.7], ['t2', 16.7, 5.0]], 'order': ['t2', 't0'], 'step': 3.0, 'density': 6.0}, [41.01, 41.01, 41.51, 41.51]], ['sampled case 2', {'zfw': 2729.0, 'zfm': 113724.7, 'tanks': [['t0', 32.5, 27.5], ['t1', 78.7, 2.4], ['t2', 67.9, 21.9], ['t3', 49.7, 3.0]], 'order': ['t1'], 'step': 2.5, 'density': 6.0}, [42.53, 42.36, 42.53, 42.36]], ['sampled case 3', {'zfw': 1720.0, 'zfm': 69515.4, 'tanks': [['t0', 81.4, 24.5], ['t1', 86.0, 17.1], ['t2', 24.8, 14.0], ['t3', 24.3, 8.3]], 'order': ['t3', 't2', 't1', 't0'], 'step': 3.0, 'density': 6.7}, [44.88, 40.42, 46.39, 40.42]]]]
for label, args, expected in fixtures[N-1]:
    check(label, 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
aux then mains[42.22, 41.0, 42.22, 41.0][42.22, 41.0, 42.22, 41.0]Passed
uneven step remainder[42.86, 41.71, 42.86, 42.0][42.86, 41.71, 42.86, 42.0]Passed
unusable tank left[40.66, 40.0, 40.66, 40.0][40.97, 40.35, 40.97, 40.35]Failed
tank listed twice[43.4, 43.0, 43.51, 43.0][43.4, 43.0, 43.51, 43.0]Passed
single tank forward burn[42.86, 42.86, 44.0, 44.0][42.86, 42.86, 44.0, 44.0]Passed
CG excursion mid-sequence[41.98, 41.0, 43.24, 41.0][41.98, 41.0, 43.24, 41.0]Passed
sampled case 1[40.19, 40.19, 42.82, 42.82][40.25, 40.25, 42.71, 42.71]Failed
sampled case 2[39.21, 39.21, 39.38, 39.38][39.21, 39.21, 39.38, 39.38]Passed
sampled case 3[38.1, 37.98, 38.41, 38.41][38.47, 38.36, 38.78, 38.78]Failed

SHA-256 / f4ba76ed1d49c1e4268c29c1721211eecdb9ebaa53b7397f6efc75fbde0e2275

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    dens = x['density']
    tanks = {n: [arm, g] for n, arm, g in x['tanks']}
    w = x['zfw'] + sum(g for _, g in tanks.values()) * dens
    m = x['zfm'] + sum(tanks[n][0] * tanks[n][1] for n in set(x['order'])) * dens
    cgs = [m / w]
    for name in x['order']:
        arm, g = tanks[name]
        while g > 1e-9:
            b = min(x['step'], g)
            g -= b
            w -= b * dens
            m -= b * dens * arm
            cgs.append(m / w)
        tanks[name][1] = 0.0
    return [round(cgs[0], 2), round(min(cgs), 2), round(max(cgs), 2), round(cgs[-1], 2)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 11.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.22, 41.0, 42.22, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 13.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [42.86, 41.71, 42.86, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 8.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [40.97, 40.35, 40.97, 40.35]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 7.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.4, 43.0, 43.51, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 7.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.1}, [41.98, 41.0, 43.24, 41.0]], ['sampled case 1', {'zfw': 2390.0, 'zfm': 102338.1, 'tanks': [['t0', 30.0, 8.6], ['t1', 25.3, 26.3], ['t2', 19.3, 27.1], ['t3', 41.2, 29.3]], 'order': ['t0', 't1', 't2'], 'step': 2.5, 'density': 6.0}, [40.25, 40.25, 42.71, 42.71]], ['sampled case 2', {'zfw': 2251.0, 'zfm': 88635.6, 'tanks': [['t0', 37.2, 28.4]], 'order': ['t0', 't0'], 'step': 7.0, 'density': 6.7}, [39.21, 39.21, 39.38, 39.38]], ['sampled case 3', {'zfw': 1718.0, 'zfm': 65994.7, 'tanks': [['t0', 43.9, 20.5], ['t1', 28.5, 13.0], ['t2', 50.3, 2.9]], 'order': ['t2', 't1'], 'step': 5.0, 'density': 6.0}, [38.47, 38.36, 38.78, 38.78]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 12.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.26, 41.0, 42.26, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 14.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [42.94, 41.71, 42.94, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 16.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.27, 40.69, 41.27, 40.69]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 8.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.47, 43.0, 43.58, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 8.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.2}, [41.99, 41.0, 43.28, 41.0]], ['sampled case 1', {'zfw': 1572.0, 'zfm': 63301.9, 'tanks': [['t0', 26.3, 24.8], ['t1', 70.0, 13.1], ['t2', 26.6, 28.2]], 'order': ['t1', 't0', 't2', 't0'], 'step': 4.0, 'density': 6.0}, [39.22, 37.95, 40.27, 40.27]], ['sampled case 2', {'zfw': 1505.0, 'zfm': 66323.5, 'tanks': [['t0', 43.2, 6.6], ['t1', 61.6, 21.6]], 'order': ['t1', 't0'], 'step': 2.5, 'density': 6.7}, [45.54, 44.04, 45.54, 44.07]], ['sampled case 3', {'zfw': 1742.0, 'zfm': 73409.0, 'tanks': [['t0', 75.9, 19.7]], 'order': ['t0', 't0'], 'step': 2.5, 'density': 6.7}, [44.52, 42.14, 44.52, 42.14]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 13.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.31, 41.0, 42.31, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 15.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.03, 41.71, 43.03, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 24.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.55, 41.01, 41.55, 41.01]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 9.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.53, 43.0, 43.65, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 9.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.3}, [42.01, 41.0, 43.31, 41.0]], ['sampled case 1', {'zfw': 1563.0, 'zfm': 63987.5, 'tanks': [['t0', 86.2, 17.0], ['t1', 83.0, 7.5]], 'order': ['t1', 't1', 't0'], 'step': 7.0, 'density': 6.7}, [45.15, 40.94, 45.15, 40.94]], ['sampled case 2', {'zfw': 2463.0, 'zfm': 110534.3, 'tanks': [['t0', 20.1, 13.6], ['t1', 43.8, 5.9]], 'order': ['t0', 't1'], 'step': 5.0, 'density': 6.0}, [44.08, 44.08, 44.88, 44.88]], ['sampled case 3', {'zfw': 2219.0, 'zfm': 96894.2, 'tanks': [['t0', 66.8, 24.2], ['t1', 79.8, 16.2], ['t2', 19.7, 18.1], ['t3', 64.6, 8.8]], 'order': ['t0', 't2', 't3'], 'step': 4.0, 'density': 6.0}, [45.71, 44.48, 45.71, 45.18]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 14.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.35, 41.0, 42.35, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 16.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.11, 41.71, 43.11, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 32.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.82, 41.31, 41.82, 41.31]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 10.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.6, 43.0, 43.72, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 10.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.4}, [42.02, 41.0, 43.35, 41.0]], ['sampled case 1', {'zfw': 1686.0, 'zfm': 77019.4, 'tanks': [['t0', 89.3, 21.9]], 'order': ['t0'], 'step': 7.0, 'density': 6.7}, [49.17, 45.68, 49.17, 45.68]], ['sampled case 2', {'zfw': 2549.0, 'zfm': 101649.7, 'tanks': [['t0', 77.4, 9.3], ['t1', 16.9, 7.4]], 'order': ['t1', 't0', 't0'], 'step': 7.0, 'density': 6.7}, [40.33, 39.88, 40.77, 39.88]], ['sampled case 3', {'zfw': 2318.0, 'zfm': 101663.0, 'tanks': [['t0', 62.5, 5.6]], 'order': ['t0'], 'step': 7.0, 'density': 6.0}, [44.12, 43.86, 44.12, 43.86]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 15.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.4, 41.0, 42.4, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 17.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.2, 41.71, 43.2, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 40.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [42.08, 41.61, 42.08, 41.61]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 11.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.67, 43.0, 43.79, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 11.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.5}, [42.04, 41.0, 43.38, 41.0]], ['sampled case 1', {'zfw': 1752.0, 'zfm': 71508.9, 'tanks': [['t0', 30.0, 3.5], ['t1', 48.3, 29.7], ['t2', 16.7, 5.0]], 'order': ['t2', 't0'], 'step': 3.0, 'density': 6.0}, [41.01, 41.01, 41.51, 41.51]], ['sampled case 2', {'zfw': 2729.0, 'zfm': 113724.7, 'tanks': [['t0', 32.5, 27.5], ['t1', 78.7, 2.4], ['t2', 67.9, 21.9], ['t3', 49.7, 3.0]], 'order': ['t1'], 'step': 2.5, 'density': 6.0}, [42.53, 42.36, 42.53, 42.36]], ['sampled case 3', {'zfw': 1720.0, 'zfm': 69515.4, 'tanks': [['t0', 81.4, 24.5], ['t1', 86.0, 17.1], ['t2', 24.8, 14.0], ['t3', 24.3, 8.3]], 'order': ['t3', 't2', 't1', 't0'], 'step': 3.0, 'density': 6.7}, [44.88, 40.42, 46.39, 40.42]]]]
for label, args, expected in fixtures[N-1]:
    check(label, 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
aux then mains[42.22, 41.0, 42.22, 41.0][42.22, 41.0, 42.22, 41.0]Passed
uneven step remainder[42.86, 41.71, 42.86, 42.0][42.86, 41.71, 42.86, 42.0]Passed
unusable tank left[39.78, 39.06, 39.78, 39.06][40.97, 40.35, 40.97, 40.35]Failed
tank listed twice[43.4, 43.0, 43.51, 43.0][43.4, 43.0, 43.51, 43.0]Passed
single tank forward burn[42.86, 42.86, 44.0, 44.0][42.86, 42.86, 44.0, 44.0]Passed
CG excursion mid-sequence[41.98, 41.0, 43.24, 41.0][41.98, 41.0, 43.24, 41.0]Passed
sampled case 1[37.79, 37.79, 39.89, 39.89][40.25, 40.25, 42.71, 42.71]Failed
sampled case 2[39.21, 39.21, 39.38, 39.38][39.21, 39.21, 39.38, 39.38]Passed
sampled case 3[35.68, 35.55, 35.85, 35.85][38.47, 38.36, 38.78, 38.78]Failed

SHA-256 / 360d8400657d0eb7c19f9f57631f64c5e3a9bed6504ad9a388bef4f1457ed1fe

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    dens = x['density']
    tanks = {n: [arm, g] for n, arm, g in x['tanks']}
    w = x['zfw'] + sum(g for _, g in tanks.values()) * dens
    m = x['zfm'] + sum(a * g for a, g in tanks.values()) * dens
    cgs = [m / w]
    for name in x['order']:
        arm, g = tanks[name]
        while g > 1e-9:
            b = min(x['step'], g)
            g -= b
            w -= b * dens
            m -= b * dens * arm
            cgs.append(m / w)
        tanks[name][1] = 0.0
    return [round(cgs[0], 2), round(min(cgs), 2), round(max(cgs), 2), round(cgs[-1], 2)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 11.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.22, 41.0, 42.22, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 13.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [42.86, 41.71, 42.86, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 8.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [40.97, 40.35, 40.97, 40.35]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 7.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.4, 43.0, 43.51, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 7.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.1}, [41.98, 41.0, 43.24, 41.0]], ['sampled case 1', {'zfw': 2390.0, 'zfm': 102338.1, 'tanks': [['t0', 30.0, 8.6], ['t1', 25.3, 26.3], ['t2', 19.3, 27.1], ['t3', 41.2, 29.3]], 'order': ['t0', 't1', 't2'], 'step': 2.5, 'density': 6.0}, [40.25, 40.25, 42.71, 42.71]], ['sampled case 2', {'zfw': 2251.0, 'zfm': 88635.6, 'tanks': [['t0', 37.2, 28.4]], 'order': ['t0', 't0'], 'step': 7.0, 'density': 6.7}, [39.21, 39.21, 39.38, 39.38]], ['sampled case 3', {'zfw': 1718.0, 'zfm': 65994.7, 'tanks': [['t0', 43.9, 20.5], ['t1', 28.5, 13.0], ['t2', 50.3, 2.9]], 'order': ['t2', 't1'], 'step': 5.0, 'density': 6.0}, [38.47, 38.36, 38.78, 38.78]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 12.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.26, 41.0, 42.26, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 14.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [42.94, 41.71, 42.94, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 16.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.27, 40.69, 41.27, 40.69]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 8.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.47, 43.0, 43.58, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 8.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.2}, [41.99, 41.0, 43.28, 41.0]], ['sampled case 1', {'zfw': 1572.0, 'zfm': 63301.9, 'tanks': [['t0', 26.3, 24.8], ['t1', 70.0, 13.1], ['t2', 26.6, 28.2]], 'order': ['t1', 't0', 't2', 't0'], 'step': 4.0, 'density': 6.0}, [39.22, 37.95, 40.27, 40.27]], ['sampled case 2', {'zfw': 1505.0, 'zfm': 66323.5, 'tanks': [['t0', 43.2, 6.6], ['t1', 61.6, 21.6]], 'order': ['t1', 't0'], 'step': 2.5, 'density': 6.7}, [45.54, 44.04, 45.54, 44.07]], ['sampled case 3', {'zfw': 1742.0, 'zfm': 73409.0, 'tanks': [['t0', 75.9, 19.7]], 'order': ['t0', 't0'], 'step': 2.5, 'density': 6.7}, [44.52, 42.14, 44.52, 42.14]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 13.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.31, 41.0, 42.31, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 15.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.03, 41.71, 43.03, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 24.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.55, 41.01, 41.55, 41.01]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 9.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.53, 43.0, 43.65, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 9.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.3}, [42.01, 41.0, 43.31, 41.0]], ['sampled case 1', {'zfw': 1563.0, 'zfm': 63987.5, 'tanks': [['t0', 86.2, 17.0], ['t1', 83.0, 7.5]], 'order': ['t1', 't1', 't0'], 'step': 7.0, 'density': 6.7}, [45.15, 40.94, 45.15, 40.94]], ['sampled case 2', {'zfw': 2463.0, 'zfm': 110534.3, 'tanks': [['t0', 20.1, 13.6], ['t1', 43.8, 5.9]], 'order': ['t0', 't1'], 'step': 5.0, 'density': 6.0}, [44.08, 44.08, 44.88, 44.88]], ['sampled case 3', {'zfw': 2219.0, 'zfm': 96894.2, 'tanks': [['t0', 66.8, 24.2], ['t1', 79.8, 16.2], ['t2', 19.7, 18.1], ['t3', 64.6, 8.8]], 'order': ['t0', 't2', 't3'], 'step': 4.0, 'density': 6.0}, [45.71, 44.48, 45.71, 45.18]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 14.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.35, 41.0, 42.35, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 16.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.11, 41.71, 43.11, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 32.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [41.82, 41.31, 41.82, 41.31]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 10.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.6, 43.0, 43.72, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 10.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.4}, [42.02, 41.0, 43.35, 41.0]], ['sampled case 1', {'zfw': 1686.0, 'zfm': 77019.4, 'tanks': [['t0', 89.3, 21.9]], 'order': ['t0'], 'step': 7.0, 'density': 6.7}, [49.17, 45.68, 49.17, 45.68]], ['sampled case 2', {'zfw': 2549.0, 'zfm': 101649.7, 'tanks': [['t0', 77.4, 9.3], ['t1', 16.9, 7.4]], 'order': ['t1', 't0', 't0'], 'step': 7.0, 'density': 6.7}, [40.33, 39.88, 40.77, 39.88]], ['sampled case 3', {'zfw': 2318.0, 'zfm': 101663.0, 'tanks': [['t0', 62.5, 5.6]], 'order': ['t0'], 'step': 7.0, 'density': 6.0}, [44.12, 43.86, 44.12, 43.86]]], [['aux then mains', {'zfw': 2100.0, 'zfm': 86100.0, 'tanks': [['aux', 60.0, 15.0], ['left', 48.0, 20.0], ['right', 48.0, 20.0]], 'order': ['aux', 'left', 'right'], 'step': 5.0, 'density': 6.0}, [42.4, 41.0, 42.4, 41.0]], ['uneven step remainder', {'zfw': 2000.0, 'zfm': 84000.0, 'tanks': [['fwd', 30.0, 7.5], ['aft', 70.0, 17.0]], 'order': ['aft', 'fwd'], 'step': 5.0, 'density': 6.7}, [43.2, 41.71, 43.2, 42.0]], ['unusable tank left', {'zfw': 2000.0, 'zfm': 80000.0, 'tanks': [['main', 48.0, 30.0], ['tip', 55.0, 40.0]], 'order': ['main'], 'step': 10.0, 'density': 6.0}, [42.08, 41.61, 42.08, 41.61]], ['tank listed twice', {'zfw': 2200.0, 'zfm': 94600.0, 'tanks': [['a', 40.0, 12.0], ['b', 70.0, 11.0]], 'order': ['a', 'b', 'a'], 'step': 4.0, 'density': 6.0}, [43.67, 43.0, 43.79, 43.0]], ['single tank forward burn', {'zfw': 1800.0, 'zfm': 79200.0, 'tanks': [['nose', 20.0, 15.0]], 'order': ['nose'], 'step': 11.0, 'density': 6.0}, [42.86, 42.86, 44.0, 44.0]], ['CG excursion mid-sequence', {'zfw': 2000.0, 'zfm': 82000.0, 'tanks': [['fwd', 20.0, 20.0], ['aft', 80.0, 20.0]], 'order': ['fwd', 'aft'], 'step': 5.0, 'density': 6.5}, [42.04, 41.0, 43.38, 41.0]], ['sampled case 1', {'zfw': 1752.0, 'zfm': 71508.9, 'tanks': [['t0', 30.0, 3.5], ['t1', 48.3, 29.7], ['t2', 16.7, 5.0]], 'order': ['t2', 't0'], 'step': 3.0, 'density': 6.0}, [41.01, 41.01, 41.51, 41.51]], ['sampled case 2', {'zfw': 2729.0, 'zfm': 113724.7, 'tanks': [['t0', 32.5, 27.5], ['t1', 78.7, 2.4], ['t2', 67.9, 21.9], ['t3', 49.7, 3.0]], 'order': ['t1'], 'step': 2.5, 'density': 6.0}, [42.53, 42.36, 42.53, 42.36]], ['sampled case 3', {'zfw': 1720.0, 'zfm': 69515.4, 'tanks': [['t0', 81.4, 24.5], ['t1', 86.0, 17.1], ['t2', 24.8, 14.0], ['t3', 24.3, 8.3]], 'order': ['t3', 't2', 't1', 't0'], 'step': 3.0, 'density': 6.7}, [44.88, 40.42, 46.39, 40.42]]]]
for label, args, expected in fixtures[N-1]:
    check(label, 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
aux then mains[42.22, 41.0, 42.22, 41.0][42.22, 41.0, 42.22, 41.0]Passed
uneven step remainder[42.86, 41.71, 42.86, 42.0][42.86, 41.71, 42.86, 42.0]Passed
unusable tank left[40.97, 40.35, 40.97, 40.35][40.97, 40.35, 40.97, 40.35]Passed
tank listed twice[43.4, 43.0, 43.51, 43.0][43.4, 43.0, 43.51, 43.0]Passed
single tank forward burn[42.86, 42.86, 44.0, 44.0][42.86, 42.86, 44.0, 44.0]Passed
CG excursion mid-sequence[41.98, 41.0, 43.24, 41.0][41.98, 41.0, 43.24, 41.0]Passed
sampled case 1[40.25, 40.25, 42.71, 42.71][40.25, 40.25, 42.71, 42.71]Passed
sampled case 2[39.21, 39.21, 39.38, 39.38][39.21, 39.21, 39.38, 39.38]Passed
sampled case 3[38.47, 38.36, 38.78, 38.78][38.47, 38.36, 38.78, 38.78]Passed

SHA-256 / 41f510c5dc18ee31864f4acdc8f2b3077ce62773c821d11dc9e8e6ea7c44c433

Verification & scope

A deterministic toy loading model with stipulated constants; it is not an approved aircraft flight manual procedure and makes no claim of regulatory conformance. 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:47:39.807987+00:00.

Case digest / e6a83d18c317a6fc152e9e1cd95c58687d46e1570dbb6996f6050abb0f9099da