{"id":"v001","input":{"ifov":"1.3 mrad","distance":"30 m"},"expect":{"result.footprint.value":39.0,"result.min_target.value":117.0,"ok":true},"source":"add-practitioner-essentials scenarios (solar panel: 39 mm footprint, 117 mm by the 3 x 3 rule)","sourceVersion":"2026","tolerance":{"result.footprint.value":{"rel":1e-09,"abs":1e-09},"result.min_target.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v002","input":{"ifov":"1.3 mrad","distance":"30 m","target_size":"150 mm"},"expect":{"result.footprint.value":39.0,"result.min_target.value":117.0,"result.max_distance.value":38.46153846153846,"ok":true},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{"result.footprint.value":{"rel":1e-09,"abs":1e-09},"result.min_target.value":{"rel":1e-09,"abs":1e-09},"result.max_distance.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v003","input":{"ifov":"0.68 mrad","distance":"60 m","target_size":"100 mm"},"expect":{"result.footprint.value":40.800000000000004,"result.min_target.value":122.4,"result.max_distance.value":49.01960784313725,"ok":true},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{"result.footprint.value":{"rel":1e-09,"abs":1e-09},"result.min_target.value":{"rel":1e-09,"abs":1e-09},"result.max_distance.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v004","input":{"ifov":"2.2 mrad","distance":"12 m","target_size":"40 mm"},"expect":{"result.footprint.value":26.4,"result.min_target.value":79.19999999999999,"result.max_distance.value":6.06060606060606,"ok":true},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{"result.footprint.value":{"rel":1e-09,"abs":1e-09},"result.min_target.value":{"rel":1e-09,"abs":1e-09},"result.max_distance.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v005","input":{"pixel_pitch":"12 um","focal_length":"9 mm","distance":"50 m","pixels":5},"expect":{"result.footprint.value":66.66666666666669,"result.min_target.value":333.33333333333337,"ok":true},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{"result.footprint.value":{"rel":1e-09,"abs":1e-09},"result.min_target.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v006","input":{"distance":"30 m"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"Worked by hand in Python (tools/vectors/gen_sensing.py)","sourceVersion":"2026","tolerance":{}}
