FA-66101 / Aviation weight and balance / Open access
Reduced moment scaled by one hundred · case 01
The reduced moment read off the loading graph is ten times too large.
ROOT CAUSE
The reduction divides by 100 instead of the documented 1000.
VERIFIED REPAIR
Report the moment divided by 1000.
Unsuccessful approach: Reporting the unreduced moment breaks every chart lookup that expects moment/1000.
Case contract
Input [[quantity, 'kg'|'lb', arm, 'in'|'cm'|'mm']]. Convert to lb (1 kg = 2.20462 lb) and inches (2.54 cm, 25.4 mm per inch); other units -> 'ERR_UNIT'; total weight <= 0 -> 'ERR_WEIGHT'. Return [weight lb r1, reduced moment (lb-in/1000) r2, CG in r2 computed from the unreduced moment].
Why this case matters
Imported aircraft documentation mixes metric and imperial units; reduced moments (moment/1000) are a charting convenience and must not feed the CG division.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
wf = {'kg': 2.20462, 'lb': 1.0}
af = {'in': 1.0, 'cm': 1 / 2.54, 'mm': 1 / 25.4}
w = 0.0
m = 0.0
for q, wu, arm, au in x:
if wu not in wf or au not in af: return 'ERR_UNIT'
lb = q * wf[wu]
w += lb
m += lb * arm * af[au]
if w <= 0: return 'ERR_WEIGHT'
return [round(w, 1), round(m / 100, 2), round(m / w, 2)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['mixed kg and cm', [[81.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [348.6, 12.97, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3510.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 498.38, 150.71]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [120.0, 'lb', 48.0, 'in']], [2110.0, 83.02, 39.35]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[10.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 251.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 560.51, 97.91]], ['sampled case 1', [[1412.5, 'kg', 3138.2, 'cm'], [645.7, 'lb', 3313.7, 'cm'], [780.8, 'lb', 1136.3, 'cm'], [548.1, 'kg', 3196.1, 'cm'], [708.5, 'kg', 4627.1, 'in']], [7310.9, 13786.98, 1885.82]], ['sampled case 2', [[446.5, 'lb', 1614.2, 'cm'], [1166.3, 'lb', 934.4, 'mm'], [1321.5, 'lb', 2983.7, 'in'], [1133.4, 'lb', 4571.3, 'mm']], [4067.7, 4473.6, 1099.79]], ['sampled case 3', [[880.0, 'kg', 2334.3, 'mm']], [1940.1, 178.3, 91.9]]], [['mixed kg and cm', [[82.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [350.8, 13.05, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3520.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 499.42, 151.02]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [240.0, 'lb', 48.0, 'in']], [2230.0, 88.78, 39.81]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[20.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 252.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 562.68, 98.28]], ['sampled case 1', [[451.1, 'lb', 2563.5, 'mm'], [525.2, 'kg', 1580.7, 'in'], [1447.9, 'kg', 4822.5, 'cm'], [324.3, 'kg', 4534.3, 'in']], [5516.0, 11178.14, 2026.5]], ['sampled case 2', [[741.8, 'lb', 489.9, 'mm']], [741.8, 14.31, 19.29]], ['sampled case 3', [[65.8, 'lb', 769.9, 'cm'], [1474.8, 'kg', 2706.1, 'mm'], [1498.3, 'kg', 2769.1, 'cm']], [6620.4, 3967.46, 599.28]]], [['mixed kg and cm', [[83.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [353.0, 13.13, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3530.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 500.47, 151.34]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [360.0, 'lb', 48.0, 'in']], [2350.0, 94.54, 40.23]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[30.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 253.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 564.85, 98.66]], ['sampled case 1', [[587.7, 'lb', 751.0, 'in'], [1481.3, 'kg', 2071.3, 'mm'], [1260.8, 'lb', 3264.1, 'in']], [5114.2, 4823.05, 943.07]], ['sampled case 2', [[1420.4, 'lb', 62.7, 'in'], [744.7, 'lb', 3096.0, 'cm'], [1460.6, 'lb', 2357.4, 'in'], [784.7, 'kg', 1562.0, 'mm']], [5355.7, 4546.38, 848.89]], ['sampled case 3', [[927.8, 'lb', 3339.6, 'mm'], [96.5, 'lb', 2857.2, 'in']], [1024.3, 397.71, 388.27]]], [['mixed kg and cm', [[84.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [355.2, 13.22, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3540.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 501.51, 151.65]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [480.0, 'lb', 48.0, 'in']], [2470.0, 100.3, 40.61]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[40.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 254.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 567.02, 99.04]], ['sampled case 1', [[845.6, 'lb', 549.1, 'mm'], [706.7, 'lb', 4259.5, 'cm'], [418.1, 'lb', 941.4, 'in'], [300.5, 'lb', 701.4, 'in']], [2270.9, 1807.76, 796.06]], ['sampled case 2', [[672.3, 'lb', 4546.6, 'cm'], [811.4, 'kg', 2178.7, 'mm'], [1336.5, 'kg', 2678.4, 'cm'], [437.9, 'lb', 3587.0, 'in']], [5845.5, 6034.62, 1032.35]], ['sampled case 3', [[932.7, 'lb', 1924.2, 'in'], [707.5, 'lb', 1732.9, 'cm']], [1640.2, 2277.39, 1388.48]]], [['mixed kg and cm', [[85.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [357.4, 13.3, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3550.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 502.55, 151.97]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [600.0, 'lb', 48.0, 'in']], [2590.0, 106.06, 40.95]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[50.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 255.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 569.19, 99.42]], ['sampled case 1', [[443.4, 'lb', 3757.6, 'mm'], [1247.8, 'lb', 3883.6, 'cm'], [863.0, 'kg', 1577.0, 'in']], [3593.8, 4973.83, 1384.01]], ['sampled case 2', [[1022.3, 'kg', 4134.6, 'cm'], [1227.6, 'kg', 1189.8, 'mm']], [4960.2, 3795.47, 765.19]], ['sampled case 3', [[516.4, 'kg', 3268.8, 'in'], [1320.8, 'kg', 2685.1, 'cm'], [1128.7, 'kg', 3910.9, 'cm'], [295.8, 'kg', 1659.2, 'cm'], [1025.6, 'lb', 579.9, 'cm']], [8216.4, 11291.14, 1374.22]]]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| mixed kg and cm | [348.6, 129.69, 37.21] | [348.6, 12.97, 37.21] | Failed |
| millimetre arms | [3306.9, 4983.83, 150.71] | [3306.9, 498.38, 150.71] | Failed |
| all imperial | [2110.0, 830.2, 39.35] | [2110.0, 83.02, 39.35] | Failed |
| unknown weight unit | ERR_UNIT | ERR_UNIT | Passed |
| unknown arm unit | ERR_UNIT | ERR_UNIT | Passed |
| removal leaves nothing | ERR_WEIGHT | ERR_WEIGHT | Passed |
| heavy kg load | [5725.0, 5605.06, 97.91] | [5725.0, 560.51, 97.91] | Failed |
| sampled case 1 | [7310.9, 137869.85, 1885.82] | [7310.9, 13786.98, 1885.82] | Failed |
| sampled case 2 | [4067.7, 44736.01, 1099.79] | [4067.7, 4473.6, 1099.79] | Failed |
| sampled case 3 | [1940.1, 1782.95, 91.9] | [1940.1, 178.3, 91.9] | Failed |
SHA-256 / f9071c976c32de70d6f427c4edc991ea8de874c7d297bce740445dc558698297
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
wf = {'kg': 2.20462, 'lb': 1.0}
af = {'in': 1.0, 'cm': 1 / 2.54, 'mm': 1 / 25.4}
w = 0.0
m = 0.0
for q, wu, arm, au in x:
if wu not in wf or au not in af: return 'ERR_UNIT'
lb = q * wf[wu]
w += lb
m += lb * arm * af[au]
if w <= 0: return 'ERR_WEIGHT'
return [round(w, 1), round(m, 2), round(m / w, 2)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['mixed kg and cm', [[81.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [348.6, 12.97, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3510.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 498.38, 150.71]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [120.0, 'lb', 48.0, 'in']], [2110.0, 83.02, 39.35]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[10.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 251.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 560.51, 97.91]], ['sampled case 1', [[1412.5, 'kg', 3138.2, 'cm'], [645.7, 'lb', 3313.7, 'cm'], [780.8, 'lb', 1136.3, 'cm'], [548.1, 'kg', 3196.1, 'cm'], [708.5, 'kg', 4627.1, 'in']], [7310.9, 13786.98, 1885.82]], ['sampled case 2', [[446.5, 'lb', 1614.2, 'cm'], [1166.3, 'lb', 934.4, 'mm'], [1321.5, 'lb', 2983.7, 'in'], [1133.4, 'lb', 4571.3, 'mm']], [4067.7, 4473.6, 1099.79]], ['sampled case 3', [[880.0, 'kg', 2334.3, 'mm']], [1940.1, 178.3, 91.9]]], [['mixed kg and cm', [[82.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [350.8, 13.05, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3520.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 499.42, 151.02]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [240.0, 'lb', 48.0, 'in']], [2230.0, 88.78, 39.81]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[20.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 252.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 562.68, 98.28]], ['sampled case 1', [[451.1, 'lb', 2563.5, 'mm'], [525.2, 'kg', 1580.7, 'in'], [1447.9, 'kg', 4822.5, 'cm'], [324.3, 'kg', 4534.3, 'in']], [5516.0, 11178.14, 2026.5]], ['sampled case 2', [[741.8, 'lb', 489.9, 'mm']], [741.8, 14.31, 19.29]], ['sampled case 3', [[65.8, 'lb', 769.9, 'cm'], [1474.8, 'kg', 2706.1, 'mm'], [1498.3, 'kg', 2769.1, 'cm']], [6620.4, 3967.46, 599.28]]], [['mixed kg and cm', [[83.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [353.0, 13.13, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3530.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 500.47, 151.34]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [360.0, 'lb', 48.0, 'in']], [2350.0, 94.54, 40.23]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[30.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 253.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 564.85, 98.66]], ['sampled case 1', [[587.7, 'lb', 751.0, 'in'], [1481.3, 'kg', 2071.3, 'mm'], [1260.8, 'lb', 3264.1, 'in']], [5114.2, 4823.05, 943.07]], ['sampled case 2', [[1420.4, 'lb', 62.7, 'in'], [744.7, 'lb', 3096.0, 'cm'], [1460.6, 'lb', 2357.4, 'in'], [784.7, 'kg', 1562.0, 'mm']], [5355.7, 4546.38, 848.89]], ['sampled case 3', [[927.8, 'lb', 3339.6, 'mm'], [96.5, 'lb', 2857.2, 'in']], [1024.3, 397.71, 388.27]]], [['mixed kg and cm', [[84.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [355.2, 13.22, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3540.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 501.51, 151.65]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [480.0, 'lb', 48.0, 'in']], [2470.0, 100.3, 40.61]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[40.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 254.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 567.02, 99.04]], ['sampled case 1', [[845.6, 'lb', 549.1, 'mm'], [706.7, 'lb', 4259.5, 'cm'], [418.1, 'lb', 941.4, 'in'], [300.5, 'lb', 701.4, 'in']], [2270.9, 1807.76, 796.06]], ['sampled case 2', [[672.3, 'lb', 4546.6, 'cm'], [811.4, 'kg', 2178.7, 'mm'], [1336.5, 'kg', 2678.4, 'cm'], [437.9, 'lb', 3587.0, 'in']], [5845.5, 6034.62, 1032.35]], ['sampled case 3', [[932.7, 'lb', 1924.2, 'in'], [707.5, 'lb', 1732.9, 'cm']], [1640.2, 2277.39, 1388.48]]], [['mixed kg and cm', [[85.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [357.4, 13.3, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3550.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 502.55, 151.97]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [600.0, 'lb', 48.0, 'in']], [2590.0, 106.06, 40.95]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[50.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 255.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 569.19, 99.42]], ['sampled case 1', [[443.4, 'lb', 3757.6, 'mm'], [1247.8, 'lb', 3883.6, 'cm'], [863.0, 'kg', 1577.0, 'in']], [3593.8, 4973.83, 1384.01]], ['sampled case 2', [[1022.3, 'kg', 4134.6, 'cm'], [1227.6, 'kg', 1189.8, 'mm']], [4960.2, 3795.47, 765.19]], ['sampled case 3', [[516.4, 'kg', 3268.8, 'in'], [1320.8, 'kg', 2685.1, 'cm'], [1128.7, 'kg', 3910.9, 'cm'], [295.8, 'kg', 1659.2, 'cm'], [1025.6, 'lb', 579.9, 'cm']], [8216.4, 11291.14, 1374.22]]]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| mixed kg and cm | [348.6, 12968.96, 37.21] | [348.6, 12.97, 37.21] | Failed |
| millimetre arms | [3306.9, 498382.99, 150.71] | [3306.9, 498.38, 150.71] | Failed |
| all imperial | [2110.0, 83020.0, 39.35] | [2110.0, 83.02, 39.35] | Failed |
| unknown weight unit | ERR_UNIT | ERR_UNIT | Passed |
| unknown arm unit | ERR_UNIT | ERR_UNIT | Passed |
| removal leaves nothing | ERR_WEIGHT | ERR_WEIGHT | Passed |
| heavy kg load | [5725.0, 560506.26, 97.91] | [5725.0, 560.51, 97.91] | Failed |
| sampled case 1 | [7310.9, 13786984.97, 1885.82] | [7310.9, 13786.98, 1885.82] | Failed |
| sampled case 2 | [4067.7, 4473601.48, 1099.79] | [4067.7, 4473.6, 1099.79] | Failed |
| sampled case 3 | [1940.1, 178295.08, 91.9] | [1940.1, 178.3, 91.9] | Failed |
SHA-256 / c261e60543d854a2548910ad500ed002b000ddf013a38f259a6a83a8d3a41028
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
wf = {'kg': 2.20462, 'lb': 1.0}
af = {'in': 1.0, 'cm': 1 / 2.54, 'mm': 1 / 25.4}
w = 0.0
m = 0.0
for q, wu, arm, au in x:
if wu not in wf or au not in af: return 'ERR_UNIT'
lb = q * wf[wu]
w += lb
m += lb * arm * af[au]
if w <= 0: return 'ERR_WEIGHT'
return [round(w, 1), round(m / 1000, 2), round(m / w, 2)]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['mixed kg and cm', [[81.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [348.6, 12.97, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3510.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 498.38, 150.71]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [120.0, 'lb', 48.0, 'in']], [2110.0, 83.02, 39.35]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[10.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 251.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 560.51, 97.91]], ['sampled case 1', [[1412.5, 'kg', 3138.2, 'cm'], [645.7, 'lb', 3313.7, 'cm'], [780.8, 'lb', 1136.3, 'cm'], [548.1, 'kg', 3196.1, 'cm'], [708.5, 'kg', 4627.1, 'in']], [7310.9, 13786.98, 1885.82]], ['sampled case 2', [[446.5, 'lb', 1614.2, 'cm'], [1166.3, 'lb', 934.4, 'mm'], [1321.5, 'lb', 2983.7, 'in'], [1133.4, 'lb', 4571.3, 'mm']], [4067.7, 4473.6, 1099.79]], ['sampled case 3', [[880.0, 'kg', 2334.3, 'mm']], [1940.1, 178.3, 91.9]]], [['mixed kg and cm', [[82.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [350.8, 13.05, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3520.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 499.42, 151.02]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [240.0, 'lb', 48.0, 'in']], [2230.0, 88.78, 39.81]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[20.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 252.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 562.68, 98.28]], ['sampled case 1', [[451.1, 'lb', 2563.5, 'mm'], [525.2, 'kg', 1580.7, 'in'], [1447.9, 'kg', 4822.5, 'cm'], [324.3, 'kg', 4534.3, 'in']], [5516.0, 11178.14, 2026.5]], ['sampled case 2', [[741.8, 'lb', 489.9, 'mm']], [741.8, 14.31, 19.29]], ['sampled case 3', [[65.8, 'lb', 769.9, 'cm'], [1474.8, 'kg', 2706.1, 'mm'], [1498.3, 'kg', 2769.1, 'cm']], [6620.4, 3967.46, 599.28]]], [['mixed kg and cm', [[83.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [353.0, 13.13, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3530.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 500.47, 151.34]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [360.0, 'lb', 48.0, 'in']], [2350.0, 94.54, 40.23]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[30.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 253.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 564.85, 98.66]], ['sampled case 1', [[587.7, 'lb', 751.0, 'in'], [1481.3, 'kg', 2071.3, 'mm'], [1260.8, 'lb', 3264.1, 'in']], [5114.2, 4823.05, 943.07]], ['sampled case 2', [[1420.4, 'lb', 62.7, 'in'], [744.7, 'lb', 3096.0, 'cm'], [1460.6, 'lb', 2357.4, 'in'], [784.7, 'kg', 1562.0, 'mm']], [5355.7, 4546.38, 848.89]], ['sampled case 3', [[927.8, 'lb', 3339.6, 'mm'], [96.5, 'lb', 2857.2, 'in']], [1024.3, 397.71, 388.27]]], [['mixed kg and cm', [[84.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [355.2, 13.22, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3540.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 501.51, 151.65]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [480.0, 'lb', 48.0, 'in']], [2470.0, 100.3, 40.61]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[40.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 254.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 567.02, 99.04]], ['sampled case 1', [[845.6, 'lb', 549.1, 'mm'], [706.7, 'lb', 4259.5, 'cm'], [418.1, 'lb', 941.4, 'in'], [300.5, 'lb', 701.4, 'in']], [2270.9, 1807.76, 796.06]], ['sampled case 2', [[672.3, 'lb', 4546.6, 'cm'], [811.4, 'kg', 2178.7, 'mm'], [1336.5, 'kg', 2678.4, 'cm'], [437.9, 'lb', 3587.0, 'in']], [5845.5, 6034.62, 1032.35]], ['sampled case 3', [[932.7, 'lb', 1924.2, 'in'], [707.5, 'lb', 1732.9, 'cm']], [1640.2, 2277.39, 1388.48]]], [['mixed kg and cm', [[85.0, 'kg', 95.0, 'cm'], [170.0, 'lb', 37.0, 'in']], [357.4, 13.3, 37.21]], ['millimetre arms', [[1200.0, 'kg', 3550.0, 'mm'], [300.0, 'kg', 5100.0, 'mm']], [3306.9, 502.55, 151.97]], ['all imperial', [[1650.0, 'lb', 39.2, 'in'], [340.0, 'lb', 37.0, 'in'], [600.0, 'lb', 48.0, 'in']], [2590.0, 106.06, 40.95]], ['unknown weight unit', [[10.0, 'st', 50.0, 'in']], 'ERR_UNIT'], ['unknown arm unit', [[50.0, 'kg', 2.0, 'm']], 'ERR_UNIT'], ['removal leaves nothing', [[20.0, 'kg', 100.0, 'cm'], [-50.0, 'lb', 39.37, 'in']], 'ERR_WEIGHT'], ['heavy kg load', [[2500.0, 'kg', 255.0, 'cm'], [90.0, 'kg', 180.0, 'cm'], [15.0, 'lb', 120.0, 'in']], [5725.0, 569.19, 99.42]], ['sampled case 1', [[443.4, 'lb', 3757.6, 'mm'], [1247.8, 'lb', 3883.6, 'cm'], [863.0, 'kg', 1577.0, 'in']], [3593.8, 4973.83, 1384.01]], ['sampled case 2', [[1022.3, 'kg', 4134.6, 'cm'], [1227.6, 'kg', 1189.8, 'mm']], [4960.2, 3795.47, 765.19]], ['sampled case 3', [[516.4, 'kg', 3268.8, 'in'], [1320.8, 'kg', 2685.1, 'cm'], [1128.7, 'kg', 3910.9, 'cm'], [295.8, 'kg', 1659.2, 'cm'], [1025.6, 'lb', 579.9, 'cm']], [8216.4, 11291.14, 1374.22]]]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| mixed kg and cm | [348.6, 12.97, 37.21] | [348.6, 12.97, 37.21] | Passed |
| millimetre arms | [3306.9, 498.38, 150.71] | [3306.9, 498.38, 150.71] | Passed |
| all imperial | [2110.0, 83.02, 39.35] | [2110.0, 83.02, 39.35] | Passed |
| unknown weight unit | ERR_UNIT | ERR_UNIT | Passed |
| unknown arm unit | ERR_UNIT | ERR_UNIT | Passed |
| removal leaves nothing | ERR_WEIGHT | ERR_WEIGHT | Passed |
| heavy kg load | [5725.0, 560.51, 97.91] | [5725.0, 560.51, 97.91] | Passed |
| sampled case 1 | [7310.9, 13786.98, 1885.82] | [7310.9, 13786.98, 1885.82] | Passed |
| sampled case 2 | [4067.7, 4473.6, 1099.79] | [4067.7, 4473.6, 1099.79] | Passed |
| sampled case 3 | [1940.1, 178.3, 91.9] | [1940.1, 178.3, 91.9] | Passed |
SHA-256 / 4e14ae7e89aefa37cfb0d9d7235ff7ca416b7a80f8833a83d24c0df3daa99026
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.931861+00:00.
Case digest / e0e4a0daec43bdc7af526e52ef42971c8cb0e9bca93a1c3e7c6052e2dcb08a24