{"id":"v001","input":{"grade_elevation":"100.0 ft","half_width":"16.0 ft","ground":[{"offset":"0.0 ft","elevation":"102.0 ft"},{"offset":"60.0 ft","elevation":"108.0 ft"}],"cut_slope":2,"fill_slope":3,"side":"right"},"expect":{"result.catch_offset.value":25.0,"result.cut_fill.value":4.5,"result.stake":"C 4.5 / 25.0 R","ok":true},"source":"add-survey-suite scenarios","sourceVersion":"2026","tolerance":{"result.catch_offset.value":{"rel":1e-06,"abs":1e-09},"result.cut_fill.value":{"rel":1e-06,"abs":1e-09}}}
{"id":"v002","input":{"grade_elevation":"100.0 ft","half_width":"16.0 ft","ground":[{"offset":"0.0 ft","elevation":"98.0 ft"},{"offset":"80.0 ft","elevation":"90.0 ft"}],"cut_slope":2,"fill_slope":3,"side":"left"},"expect":{"result.catch_offset.value":31.428571428571413,"result.cut_fill.value":5.142857142857139,"result.stake":"F 5.1 / 31.4 L","ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.catch_offset.value":{"rel":1e-06,"abs":1e-09},"result.cut_fill.value":{"rel":1e-06,"abs":1e-09}}}
{"id":"v003","input":{"grade_elevation":"250.0 ft","half_width":"12.0 ft","ground":[{"offset":"0.0 ft","elevation":"251.0 ft"},{"offset":"20.0 ft","elevation":"252.5 ft"},{"offset":"50.0 ft","elevation":"260.0 ft"}],"cut_slope":2,"fill_slope":3,"side":"right"},"expect":{"result.catch_offset.value":16.47058823529412,"result.cut_fill.value":2.235294117647072,"result.stake":"C 2.2 / 16.5 R","ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.catch_offset.value":{"rel":1e-06,"abs":1e-09},"result.cut_fill.value":{"rel":1e-06,"abs":1e-09}}}
{"id":"v004","input":{"grade_elevation":"50.0 ft","half_width":"20.0 ft","ground":[{"offset":"0.0 ft","elevation":"49.0 ft"},{"offset":"30.0 ft","elevation":"47.3 ft"},{"offset":"90.0 ft","elevation":"40.0 ft"}],"cut_slope":2,"fill_slope":3,"side":"right"},"expect":{"result.catch_offset.value":27.71084337349398,"result.cut_fill.value":2.5702811244979955,"result.stake":"F 2.6 / 27.7 R","ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.catch_offset.value":{"rel":1e-06,"abs":1e-09},"result.cut_fill.value":{"rel":1e-06,"abs":1e-09}}}
{"id":"v005","input":{"grade_elevation":"100 ft","half_width":"16 ft","ground":[{"offset":"0.0 ft","elevation":"102.0 ft"},{"offset":"30.0 ft","elevation":"140.0 ft"}],"cut_slope":2},"expect":{"ok":false,"error.code":"DID_NOT_CONVERGE"},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{}}
{"id":"v006","input":{"grade_elevation":"100 ft","half_width":"16 ft","ground":[{"offset":"0.0 ft","elevation":"98.0 ft"},{"offset":"60.0 ft","elevation":"90.0 ft"}],"cut_slope":2},"expect":{"ok":false,"error.code":"INVALID_INPUT","error.field":"/fill_slope"},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{}}
