{"id":"v001","input":{"flown":"60 NM","off_course":"4 NM","remaining":"60 NM"},"expect":{"result.track_error.value":3.8140748342903543,"result.closing_angle.value":3.8140748342903543,"result.to_destination.value":7.628149668580709,"result.track_error_rule.value":4.0,"result.closing_angle_rule.value":4.0,"result.to_destination_rule.value":8.0,"ok":true},"source":"add-aviation-suite 1-in-60 scenario (3.81° and 7.63° exact; 4° and 8° by the rule)","sourceVersion":"2026","tolerance":{"result.track_error.value":{"rel":0,"abs":1e-09},"result.closing_angle.value":{"rel":0,"abs":1e-09},"result.to_destination.value":{"rel":0,"abs":1e-09},"result.track_error_rule.value":{"rel":0,"abs":1e-09},"result.closing_angle_rule.value":{"rel":0,"abs":1e-09},"result.to_destination_rule.value":{"rel":0,"abs":1e-09}}}
{"id":"v002","input":{"flown":"30 NM","off_course":"2 NM","remaining":"90 NM"},"expect":{"result.track_error.value":3.8140748342903543,"result.closing_angle.value":1.2730300200567113,"result.to_destination.value":5.087104854347066,"result.track_error_rule.value":4.0,"result.closing_angle_rule.value":1.3333333333333333,"result.to_destination_rule.value":5.333333333333333,"ok":true},"source":"Flat-plane off-course geometry worked in Python (tools/vectors/gen_offcourse.py)","sourceVersion":"2026","tolerance":{"result.track_error.value":{"rel":0,"abs":1e-09},"result.closing_angle.value":{"rel":0,"abs":1e-09},"result.to_destination.value":{"rel":0,"abs":1e-09},"result.track_error_rule.value":{"rel":0,"abs":1e-09},"result.closing_angle_rule.value":{"rel":0,"abs":1e-09},"result.to_destination_rule.value":{"rel":0,"abs":1e-09}}}
{"id":"v003","input":{"flown":"100 NM","off_course":"5 NM","remaining":"50 NM"},"expect":{"result.track_error.value":2.862405226111748,"result.closing_angle.value":5.710593137499643,"result.to_destination.value":8.57299836361139,"result.track_error_rule.value":3.0,"result.closing_angle_rule.value":6.0,"result.to_destination_rule.value":9.0,"ok":true},"source":"Flat-plane off-course geometry worked in Python (tools/vectors/gen_offcourse.py)","sourceVersion":"2026","tolerance":{"result.track_error.value":{"rel":0,"abs":1e-09},"result.closing_angle.value":{"rel":0,"abs":1e-09},"result.to_destination.value":{"rel":0,"abs":1e-09},"result.track_error_rule.value":{"rel":0,"abs":1e-09},"result.closing_angle_rule.value":{"rel":0,"abs":1e-09},"result.to_destination_rule.value":{"rel":0,"abs":1e-09}}}
{"id":"v004","input":{"flown":"45 NM","off_course":"0 NM","remaining":"15 NM"},"expect":{"result.track_error.value":0.0,"result.closing_angle.value":0.0,"result.to_destination.value":0.0,"result.track_error_rule.value":0.0,"result.closing_angle_rule.value":0.0,"result.to_destination_rule.value":0.0,"ok":true},"source":"Flat-plane off-course geometry worked in Python (tools/vectors/gen_offcourse.py)","sourceVersion":"2026","tolerance":{"result.track_error.value":{"rel":0,"abs":1e-09},"result.closing_angle.value":{"rel":0,"abs":1e-09},"result.to_destination.value":{"rel":0,"abs":1e-09},"result.track_error_rule.value":{"rel":0,"abs":1e-09},"result.closing_angle_rule.value":{"rel":0,"abs":1e-09},"result.to_destination_rule.value":{"rel":0,"abs":1e-09}}}
{"id":"v005","input":{"flown":"20 NM","off_course":"10 NM","remaining":"20 NM"},"expect":{"result.track_error.value":26.565051177077994,"result.closing_angle.value":26.565051177077994,"result.to_destination.value":53.13010235415599,"result.track_error_rule.value":30.0,"result.closing_angle_rule.value":30.0,"result.to_destination_rule.value":60.0,"ok":true},"source":"Flat-plane off-course geometry worked in Python (tools/vectors/gen_offcourse.py)","sourceVersion":"2026","tolerance":{"result.track_error.value":{"rel":0,"abs":1e-09},"result.closing_angle.value":{"rel":0,"abs":1e-09},"result.to_destination.value":{"rel":0,"abs":1e-09},"result.track_error_rule.value":{"rel":0,"abs":1e-09},"result.closing_angle_rule.value":{"rel":0,"abs":1e-09},"result.to_destination_rule.value":{"rel":0,"abs":1e-09}}}
{"id":"v006","input":{"flown":"120 NM","off_course":"3 NM","remaining":"180 NM"},"expect":{"result.track_error.value":1.4320961841646465,"result.closing_angle.value":0.9548412538721887,"result.to_destination.value":2.386937438036835,"result.track_error_rule.value":1.5,"result.closing_angle_rule.value":1.0,"result.to_destination_rule.value":2.5,"ok":true},"source":"Flat-plane off-course geometry worked in Python (tools/vectors/gen_offcourse.py)","sourceVersion":"2026","tolerance":{"result.track_error.value":{"rel":0,"abs":1e-09},"result.closing_angle.value":{"rel":0,"abs":1e-09},"result.to_destination.value":{"rel":0,"abs":1e-09},"result.track_error_rule.value":{"rel":0,"abs":1e-09},"result.closing_angle_rule.value":{"rel":0,"abs":1e-09},"result.to_destination_rule.value":{"rel":0,"abs":1e-09}}}
{"id":"v007","input":{"flown":"0 NM","off_course":"4 NM","remaining":"60 NM"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Flat-plane off-course geometry worked in Python (tools/vectors/gen_offcourse.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v008","input":{"flown":"60 NM","off_course":"-4 NM","remaining":"60 NM"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Flat-plane off-course geometry worked in Python (tools/vectors/gen_offcourse.py)","sourceVersion":"2026","tolerance":{}}
