{"id":"v001","input":{"legs":[{"time":"1.5 h","burn":"9.5 gph"},{"time":"0.75 h","burn":"9 gph"}],"reserve":"vfr-night","taxi":"1.4 gal","usable_fuel":"53 gal"},"expect":{"result.total.value":29.15,"result.trip.value":21.0,"result.reserve_fuel.value":6.75,"result.reserve_time.value":45,"result.margin.value":23.85,"result.endurance.value":5.733333333333333,"result.legs.0.fuel.value":14.25,"result.legs.1.fuel.value":6.75,"result.reserve_rule":"14 CFR 91.151(a)(2) minimum, rules as of 2026-09-22; operators may require more. Not legal advice: https://www.ecfr.gov/current/title-14/chapter-I/subchapter-F/part-91/subpart-C/section-91.151","ok":true},"source":"add-aviation-suite fuel scenarios (VFR night: 45 minutes at the cruise burn, cited to 14 CFR 91.151(a)(2))","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.margin.value":{"rel":0,"abs":1e-09},"result.endurance.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09},"result.legs.1.fuel.value":{"rel":0,"abs":1e-09}},"supersededBy":"v013","reason":"The 14 CFR 91.151 link pointed at subpart C; the section is in subpart B."}
{"id":"v002","input":{"legs":[{"time":"1.2 h","burn":"25 gph"}],"reserve":"vfr-day","category":"rotorcraft"},"expect":{"result.total.value":38.33333333333333,"result.trip.value":30.0,"result.reserve_fuel.value":8.333333333333332,"result.reserve_time.value":20,"result.legs.0.fuel.value":30.0,"ok":true},"source":"add-aviation-suite fuel scenarios (rotorcraft VFR: 20 minutes, 14 CFR 91.151(b))","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09}}}
{"id":"v003","input":{"legs":[{"time":"2 h","burn":"12 gph"}],"reserve":"ifr","alternate_time":"40 min","cruise_burn":"11 gph","climb":"2 gal","usable_fuel":"40 gal"},"expect":{"result.total.value":41.583333333333336,"result.trip.value":24,"result.reserve_fuel.value":8.25,"result.reserve_time.value":45,"result.alternate_fuel.value":7.333333333333333,"result.margin.value":-1.5833333333333357,"result.endurance.value":3.6363636363636362,"result.legs.0.fuel.value":24,"ok":true},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.alternate_fuel.value":{"rel":0,"abs":1e-09},"result.margin.value":{"rel":0,"abs":1e-09},"result.endurance.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09}}}
{"id":"v004","input":{"legs":[{"time":"2 h","burn":"12 gph"}],"reserve":"ifr","category":"rotorcraft","alternate_time":"20 min"},"expect":{"result.total.value":34.0,"result.trip.value":24,"result.reserve_fuel.value":6.0,"result.reserve_time.value":30,"result.alternate_fuel.value":4.0,"result.legs.0.fuel.value":24,"ok":true},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.alternate_fuel.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09}}}
{"id":"v005","input":{"legs":[{"time":"0.5 h","burn":"8 gph"},{"time":"1 h","burn":"8.5 gph"},{"time":"0.25 h","burn":"7 gph"}],"reserve":"vfr-day","usable_fuel":"10 gal"},"expect":{"result.total.value":17.75,"result.trip.value":14.25,"result.reserve_fuel.value":3.5,"result.reserve_time.value":30,"result.margin.value":-7.75,"result.endurance.value":1.4285714285714286,"result.legs.0.fuel.value":4.0,"result.legs.1.fuel.value":8.5,"result.legs.2.fuel.value":1.75,"ok":true},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.margin.value":{"rel":0,"abs":1e-09},"result.endurance.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09},"result.legs.1.fuel.value":{"rel":0,"abs":1e-09},"result.legs.2.fuel.value":{"rel":0,"abs":1e-09}}}
{"id":"v006","input":{"legs":[{"time":"0.5 h","burn":"8 gph"},{"time":"1 h","burn":"8.5 gph"},{"time":"0.25 h","burn":"7 gph"}],"reserve":"custom","custom_reserve":"60 min","cruise_burn":"8 gph"},"expect":{"result.total.value":22.25,"result.trip.value":14.25,"result.reserve_fuel.value":8.0,"result.reserve_time.value":60,"result.legs.0.fuel.value":4.0,"result.legs.1.fuel.value":8.5,"result.legs.2.fuel.value":1.75,"ok":true},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09},"result.legs.1.fuel.value":{"rel":0,"abs":1e-09},"result.legs.2.fuel.value":{"rel":0,"abs":1e-09}}}
{"id":"v007","input":{"legs":[{"time":"1 h","burn":"9 gph"}],"reserve":"none"},"expect":{"result.total.value":9.0,"result.trip.value":9,"result.reserve_fuel.value":0.0,"result.reserve_time.value":0,"result.legs.0.fuel.value":9,"ok":true},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09}}}
{"id":"v008","input":{"legs":[{"time":"2 h","burn":"40 L/h"}],"reserve":"vfr-day"},"expect":{"result.total.value":26.41720523581484,"result.trip.value":21.133764188651874,"result.reserve_fuel.value":5.2834410471629685,"result.reserve_time.value":30,"result.legs.0.fuel.value":21.133764188651874,"ok":true},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09}}}
{"id":"v009","input":{"legs":[{"time":"0.5 h","burn":"8 gph"},{"time":"1 h","burn":"8.5 gph"},{"time":"0.25 h","burn":"7 gph"}],"reserve":"custom"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v010","input":{"legs":[{"time":"0.5 h","burn":"8 gph"},{"time":"1 h","burn":"8.5 gph"},{"time":"0.25 h","burn":"7 gph"}],"reserve":"vfr-day","taxi":"-1 gal"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v011","input":{"legs":[{"time":"1 h","burn":"0 gph"}],"reserve":"vfr-day"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v012","input":{"legs":[{"time":"0.5 h","burn":"8 gph"},{"time":"1 h","burn":"8.5 gph"},{"time":"0.25 h","burn":"7 gph"}],"reserve":"vfr-day","custom_reserve":"60 min"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Fuel arithmetic worked in Python (tools/vectors/gen_fuel.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v013","input":{"legs":[{"time":"1.5 h","burn":"9.5 gph"},{"time":"0.75 h","burn":"9 gph"}],"reserve":"vfr-night","taxi":"1.4 gal","usable_fuel":"53 gal"},"expect":{"result.total.value":29.15,"result.trip.value":21.0,"result.reserve_fuel.value":6.75,"result.reserve_time.value":45,"result.margin.value":23.85,"result.endurance.value":5.733333333333333,"result.legs.0.fuel.value":14.25,"result.legs.1.fuel.value":6.75,"result.reserve_rule":"14 CFR 91.151(a)(2) minimum, rules as of 2026-09-22; operators may require more. Not legal advice: https://www.ecfr.gov/current/title-14/chapter-I/subchapter-F/part-91/subpart-B/subject-group-ECFR4d5279ba676bedc/section-91.151","ok":true},"source":"add-aviation-suite fuel scenarios (VFR night: 45 minutes at the cruise burn, cited to 14 CFR 91.151(a)(2))","sourceVersion":"2026","tolerance":{"result.total.value":{"rel":0,"abs":1e-09},"result.trip.value":{"rel":0,"abs":1e-09},"result.reserve_fuel.value":{"rel":0,"abs":1e-09},"result.reserve_time.value":{"rel":0,"abs":1e-09},"result.margin.value":{"rel":0,"abs":1e-09},"result.endurance.value":{"rel":0,"abs":1e-09},"result.legs.0.fuel.value":{"rel":0,"abs":1e-09},"result.legs.1.fuel.value":{"rel":0,"abs":1e-09}}}
