{"abstract":"Densely packed rows are reported as less shaded than sparse ones.","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].","contract_signature":"rot, proj, gcr","evaluation_group":"w2-solar_tracker_geometry-row-shade-fraction","failed_approach":"Dropping gcr models rows with no spacing at all.","family":"w2-solar_tracker_geometry-row-shade-fraction-coverage-ratio-placement","id":"FA-93551","implementations":{"attempt":{"sha256":"7bb96a35ea35a8309c9ebb96d623a4ee7a59e9767334e2c449a3891a0a5195ce","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)) / 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: coverage ratio placement', [-30, -80, 0.5], [0.4597, True]],\n  ['regression: coverage ratio placement (partial repair)', [45, 70, 0.5], [0.2452, True]],\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: coverage ratio placement', [0, -80, 0.5], [0.0, False]],\n  ['regression: coverage ratio placement (partial repair)', [-10, -70, 0.4], [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: coverage ratio placement', [0, -30, 0.5], [0.0, False]],\n  ['regression: coverage ratio placement (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: coverage ratio placement', [0, 70, 0.6], [0.0, False]],\n  ['regression: coverage ratio placement (partial repair)', [45, 70, 0.6], [0.371, True]],\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: coverage ratio placement', [-10, 45, 0.5], [0.0, False]],\n  ['regression: coverage ratio placement (partial repair)', [30, 60, 0.4], [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":"82ab7fb352e3b33940d696c9f123fa16ada93029fe0926c8d85822c5dade3eee","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: coverage ratio placement', [-30, -80, 0.5], [0.4597, True]],\n  ['regression: coverage ratio placement (partial repair)', [45, 70, 0.5], [0.2452, True]],\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: coverage ratio placement', [0, -80, 0.5], [0.0, False]],\n  ['regression: coverage ratio placement (partial repair)', [-10, -70, 0.4], [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: coverage ratio placement', [0, -30, 0.5], [0.0, False]],\n  ['regression: coverage ratio placement (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: coverage ratio placement', [0, 70, 0.6], [0.0, False]],\n  ['regression: coverage ratio placement (partial repair)', [45, 70, 0.6], [0.371, True]],\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: coverage ratio placement', [-10, 45, 0.5], [0.0, False]],\n  ['regression: coverage ratio placement (partial repair)', [30, 60, 0.4], [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-coverage-ratio-placement","generated_at":"2026-09-29T14:51:56.196096+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.","root_cause":"The coverage ratio multiplies the numerator instead of dividing it.","sha256":"bb88cf60b856f159bf4c331b6094e4322ab41a1600047b9aa68d8dc8daf770e8","title":"Tracker row-to-row shaded fraction: coverage ratio placement · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.148,"exit_code":1,"observations":[{"actual":[0.0,false],"check":"normal: rows facing the sun at noon","expected":[0.0,false],"passed":true},{"actual":[0.6527,true],"check":"boundary: steep morning sun","expected":[0.3054,true],"passed":false},{"actual":[1.0,true],"check":"boundary: sun below horizon","expected":[1.0,true],"passed":true},{"actual":[0.7299,true],"check":"regression: coverage ratio placement","expected":[0.4597,true],"passed":false},{"actual":[0.6226,true],"check":"regression: coverage ratio placement (partial repair)","expected":[0.2452,true],"passed":false},{"actual":[0.0,false],"check":"control 1","expected":[0.0,false],"passed":true},{"actual":[0.788,true],"check":"control 2","expected":[0.6467,true],"passed":false}],"passed":false,"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.6527, true], \"expected\": [0.3054, true], \"passed\": false}, {\"check\": \"boundary: sun below horizon\", \"actual\": [1.0, true], \"expected\": [1.0, true], \"passed\": true}, {\"check\": \"regression: coverage ratio placement\", \"actual\": [0.7299, true], \"expected\": [0.4597, true], \"passed\": false}, {\"check\": \"regression: coverage ratio placement (partial repair)\", \"actual\": [0.6226, true], \"expected\": [0.2452, true], \"passed\": false}, {\"check\": \"control 1\", \"actual\": [0.0, false], \"expected\": [0.0, false], \"passed\": true}, {\"check\": \"control 2\", \"actual\": [0.788, true], \"expected\": [0.6467, true], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.062,"exit_code":1,"observations":[{"actual":[0.6,true],"check":"normal: rows facing the sun at noon","expected":[0.0,false],"passed":false},{"actual":[0.8264,true],"check":"boundary: steep morning sun","expected":[0.3054,true],"passed":false},{"actual":[1.0,true],"check":"boundary: sun below horizon","expected":[1.0,true],"passed":true},{"actual":[0.8649,true],"check":"regression: coverage ratio placement","expected":[0.4597,true],"passed":false},{"actual":[0.8113,true],"check":"regression: coverage ratio placement (partial repair)","expected":[0.2452,true],"passed":false},{"actual":[0.0,false],"check":"control 1","expected":[0.0,false],"passed":true},{"actual":[0.8728,true],"check":"control 2","expected":[0.6467,true],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"normal: rows facing the sun at noon\", \"actual\": [0.6, true], \"expected\": [0.0, false], \"passed\": false}, {\"check\": \"boundary: steep morning sun\", \"actual\": [0.8264, true], \"expected\": [0.3054, true], \"passed\": false}, {\"check\": \"boundary: sun below horizon\", \"actual\": [1.0, true], \"expected\": [1.0, true], \"passed\": true}, {\"check\": \"regression: coverage ratio placement\", \"actual\": [0.8649, true], \"expected\": [0.4597, true], \"passed\": false}, {\"check\": \"regression: coverage ratio placement (partial repair)\", \"actual\": [0.8113, true], \"expected\": [0.2452, true], \"passed\": false}, {\"check\": \"control 1\", \"actual\": [0.0, false], \"expected\": [0.0, false], \"passed\": true}, {\"check\": \"control 2\", \"actual\": [0.8728, true], \"expected\": [0.6467, true], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}