{"abstract":"Unshaded rows report negative shading and the shaded flag is wrong.","category":"Solar tracker geometry","checks":7,"contract":"rot is the row rotation and proj the sun zenith projected on the plane perpendicular to the axis, both signed degrees. |proj| >= 90 or cos(rot - proj) <= 0 means no direct light: [1.0, True]. Otherwise shaded fraction = clip(1 - cos(proj)/(gcr*cos(rot - proj)), 0, 1). Return [fraction rounded 4, fraction > 0].","evaluation_group":"w2-solar_tracker_geometry-row-shade-fraction","failed_approach":"Taking the absolute value turns large clearances into shading.","family":"w2-solar_tracker_geometry-row-shade-fraction-shaded-fraction-lower-clip","id":"FA-93556","implementations":{"attempt":{"sha256":"16e768a5aa6f0c58ea444fa7c84c67703778c3041f21ebdb20d0864fe90eb7ab","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(rot, proj, gcr):\n    if abs(proj) >= 90:\n        return [1.0, True]\n    c = math.cos(math.radians(rot - proj))\n    if c <= 0:\n        return [1.0, True]\n    fs = 1 - math.cos(math.radians(proj)) / (gcr * c)\n    fs = min(1.0, abs(fs))\n    return [round(fs, 4), fs > 0]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [-10, 45, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [0, -45, 0.3], [0.0, False]],\n  ['control 1', [45, -45, 0.5], [0.0, False]], ['control 2', [45, 80, 0.6], [0.6467, True]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, -80, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-45, 45, 0.5], [0.0, False]],\n  ['control 1', [-10, -45, 0.6], [0.0, False]], ['control 2', [30, 45, 0.5], [0.0, False]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, -30, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, -30, 0.3], [0.0, False]],\n  ['control 1', [-30, 0, 0.5], [0.0, False]], ['control 2', [30, -80, 0.6], [1.0, True]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, 70, 0.6], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, -70, 0.4], [0.0, False]],\n  ['control 1', [-45, -30, 0.6], [0.0, False]], ['control 2', [-20, 45, 0.6], [0.0, False]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [-30, 60, 0.4], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, 45, 0.5], [0.0, False]],\n  ['control 1', [0, -95, 0.5], [1.0, True]], ['control 2', [-10, -70, 0.4], [0.0, False]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"6e035a23d4d0b09025cb655145b64bf98cb5d1e24e6e49b44626250b020b86fe","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(rot, proj, gcr):\n    if abs(proj) >= 90:\n        return [1.0, True]\n    c = math.cos(math.radians(rot - proj))\n    if c <= 0:\n        return [1.0, True]\n    fs = 1 - math.cos(math.radians(proj)) / (gcr * c)\n    fs = min(1.0, fs)\n    return [round(fs, 4), fs > 0]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [-10, 45, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [0, -45, 0.3], [0.0, False]],\n  ['control 1', [45, -45, 0.5], [0.0, False]], ['control 2', [45, 80, 0.6], [0.6467, True]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, -80, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-45, 45, 0.5], [0.0, False]],\n  ['control 1', [-10, -45, 0.6], [0.0, False]], ['control 2', [30, 45, 0.5], [0.0, False]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, -30, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, -30, 0.3], [0.0, False]],\n  ['control 1', [-30, 0, 0.5], [0.0, False]], ['control 2', [30, -80, 0.6], [1.0, True]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, 70, 0.6], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, -70, 0.4], [0.0, False]],\n  ['control 1', [-45, -30, 0.6], [0.0, False]], ['control 2', [-20, 45, 0.6], [0.0, False]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [-30, 60, 0.4], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, 45, 0.5], [0.0, False]],\n  ['control 1', [0, -95, 0.5], [1.0, True]], ['control 2', [-10, -70, 0.4], [0.0, False]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"ea7fa99692baaa155c196426fbbf2fd6d79da0bf722ba9af5fecbe02bdf7d4ab","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(rot, proj, gcr):\n    if abs(proj) >= 90:\n        return [1.0, True]\n    c = math.cos(math.radians(rot - proj))\n    if c <= 0:\n        return [1.0, True]\n    fs = 1 - math.cos(math.radians(proj)) / (gcr * c)\n    fs = min(1.0, max(0.0, fs))\n    return [round(fs, 4), fs > 0]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [-10, 45, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [0, -45, 0.3], [0.0, False]],\n  ['control 1', [45, -45, 0.5], [0.0, False]], ['control 2', [45, 80, 0.6], [0.6467, True]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, -80, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-45, 45, 0.5], [0.0, False]],\n  ['control 1', [-10, -45, 0.6], [0.0, False]], ['control 2', [30, 45, 0.5], [0.0, False]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, -30, 0.5], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, -30, 0.3], [0.0, False]],\n  ['control 1', [-30, 0, 0.5], [0.0, False]], ['control 2', [30, -80, 0.6], [1.0, True]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [0, 70, 0.6], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, -70, 0.4], [0.0, False]],\n  ['control 1', [-45, -30, 0.6], [0.0, False]], ['control 2', [-20, 45, 0.6], [0.0, False]]],\n [['normal: rows facing the sun at noon', [0, 0, 0.4], [0.0, False]],\n  ['boundary: steep morning sun', [-60, -70, 0.5], [0.3054, True]],\n  ['boundary: sun below horizon', [0, 95, 0.4], [1.0, True]],\n  ['regression: shaded fraction lower clip', [-30, 60, 0.4], [0.0, False]],\n  ['regression: shaded fraction lower clip (partial repair)', [-10, 45, 0.5], [0.0, False]],\n  ['control 1', [0, -95, 0.5], [1.0, True]], ['control 2', [-10, -70, 0.4], [0.0, False]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Deterministic stipulated toy contract for teaching; no claim of conformance with any standard, vendor protocol or production controller. 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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-solar_tracker_geometry-row-shade-fraction-shaded-fraction-lower-clip","generated_at":"2026-09-29T14:51:56.205182+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Single-axis and dual-axis solar trackers turn a sun direction into actuator commands; a sign, frame or limit mistake points a whole plant away from the sun or into a mechanical stop.","repair":"Clip the fraction to [0, 1].","root_cause":"The fraction is not clipped at zero.","sha256":"f0557331a4e9358557faef8a6a35642b671d035f2d61bef4943367638fd9b6fc","title":"Tracker row-to-row shaded fraction: shaded fraction lower clip · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.534,"exit_code":1,"observations":[{"actual":[1.0,true],"check":"normal: rows facing the sun at noon","expected":[0.0,false],"passed":false},{"actual":[0.3054,true],"check":"boundary: steep morning sun","expected":[0.3054,true],"passed":true},{"actual":[1.0,true],"check":"boundary: sun below horizon","expected":[1.0,true],"passed":true},{"actual":[1.0,true],"check":"regression: shaded fraction lower clip","expected":[0.0,false],"passed":false},{"actual":[1.0,true],"check":"regression: shaded fraction lower clip (partial repair)","expected":[0.0,false],"passed":false},{"actual":[1.0,true],"check":"control 1","expected":[0.0,false],"passed":false},{"actual":[0.6467,true],"check":"control 2","expected":[0.6467,true],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"normal: rows facing the sun at noon\", \"actual\": [1.0, true], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"boundary: steep morning sun\", \"actual\": [0.3054, true], \"expected\": [0.3054, true], \"passed\": true}, {\"check\": \"boundary: sun below horizon\", \"actual\": [1.0, true], \"expected\": [1.0, true], \"passed\": true}, {\"check\": \"regression: shaded fraction lower clip\", \"actual\": [1.0, true], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"regression: shaded fraction lower clip (partial repair)\", \"actual\": [1.0, true], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"control 1\", \"actual\": [1.0, true], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"control 2\", \"actual\": [0.6467, true], \"expected\": [0.6467, true], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.12,"exit_code":1,"observations":[{"actual":[-1.5,false],"check":"normal: rows facing the sun at noon","expected":[0.0,false],"passed":false},{"actual":[0.3054,true],"check":"boundary: steep morning sun","expected":[0.3054,true],"passed":true},{"actual":[1.0,true],"check":"boundary: sun below horizon","expected":[1.0,true],"passed":true},{"actual":[-1.4656,false],"check":"regression: shaded fraction lower clip","expected":[0.0,false],"passed":false},{"actual":[-2.3333,false],"check":"regression: shaded fraction lower clip (partial repair)","expected":[0.0,false],"passed":false},{"actual":[-2.3095860183650104e+16,false],"check":"control 1","expected":[0.0,false],"passed":false},{"actual":[0.6467,true],"check":"control 2","expected":[0.6467,true],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"normal: rows facing the sun at noon\", \"actual\": [-1.5, false], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"boundary: steep morning sun\", \"actual\": [0.3054, true], \"expected\": [0.3054, true], \"passed\": true}, {\"check\": \"boundary: sun below horizon\", \"actual\": [1.0, true], \"expected\": [1.0, true], \"passed\": true}, {\"check\": \"regression: shaded fraction lower clip\", \"actual\": [-1.4656, false], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"regression: shaded fraction lower clip (partial repair)\", \"actual\": [-2.3333, false], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"control 1\", \"actual\": [-2.3095860183650104e+16, false], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"control 2\", \"actual\": [0.6467, true], \"expected\": [0.6467, true], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.848,"exit_code":0,"observations":[{"actual":[0.0,false],"check":"normal: rows facing the sun at noon","expected":[0.0,false],"passed":true},{"actual":[0.3054,true],"check":"boundary: steep morning sun","expected":[0.3054,true],"passed":true},{"actual":[1.0,true],"check":"boundary: sun below horizon","expected":[1.0,true],"passed":true},{"actual":[0.0,false],"check":"regression: shaded fraction lower clip","expected":[0.0,false],"passed":true},{"actual":[0.0,false],"check":"regression: shaded fraction lower clip (partial repair)","expected":[0.0,false],"passed":true},{"actual":[0.0,false],"check":"control 1","expected":[0.0,false],"passed":true},{"actual":[0.6467,true],"check":"control 2","expected":[0.6467,true],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"normal: rows facing the sun at noon\", \"actual\": [0.0, false], \"expected\": [0.0, false], \"passed\": true}, {\"check\": \"boundary: steep morning sun\", \"actual\": [0.3054, true], \"expected\": [0.3054, true], \"passed\": true}, {\"check\": \"boundary: sun below horizon\", \"actual\": [1.0, true], \"expected\": [1.0, true], \"passed\": true}, {\"check\": \"regression: shaded fraction lower clip\", \"actual\": [0.0, false], \"expected\": [0.0, false], \"passed\": true}, {\"check\": \"regression: shaded fraction lower clip (partial repair)\", \"actual\": [0.0, false], \"expected\": [0.0, false], \"passed\": true}, {\"check\": \"control 1\", \"actual\": [0.0, false], \"expected\": [0.0, false], \"passed\": true}, {\"check\": \"control 2\", \"actual\": [0.6467, true], \"expected\": [0.6467, true], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}