{"abstract":"Dispersal creates individuals.","category":"Ecological population dynamics","checks":7,"contract":"Each year each patch grows by its lambda and is capped at its own ceiling, then fraction disperse of each post-growth patch moves to the other simultaneously; return yearly [N1, N2] rounded 4.","contract_signature":"n0s, lambdas, caps, disperse, years","evaluation_group":"w2-ecopop-source-sink","failed_approach":"Swapping the flows sends emigrants back to their own patch.","family":"w2-ecopop-source-sink-dispersal-conservation","id":"FA-65706","implementations":{"attempt":{"sha256":"1215e592f79a3c8774527a16e5cdb3b96ad87f28b7af0b07cf033c43734088b4","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(n0s, lambdas, caps, disperse, years):\n    n = [float(x) for x in n0s]\n    traj = []\n    for _ in range(years):\n        grown = [min(n[j] * lambdas[j], caps[j]) for j in range(2)]\n        out = [grown[j] * disperse for j in range(2)]\n        n = [grown[0] - out[1] + out[0], grown[1] - out[0] + out[1]]\n        traj.append([round(x, 4) for x in n])\n    return traj\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])],\n [('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])],\n [('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])],\n [('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])],\n [('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])]]\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":"7f11cebdff53e88612bde8d3690bcfd9cba82cf73ead39908c8481d683164f60","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(n0s, lambdas, caps, disperse, years):\n    n = [float(x) for x in n0s]\n    traj = []\n    for _ in range(years):\n        grown = [min(n[j] * lambdas[j], caps[j]) for j in range(2)]\n        out = [grown[j] * disperse for j in range(2)]\n        n = [grown[0] + out[1], grown[1] + out[0]]\n        traj.append([round(x, 4) for x in n])\n    return traj\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])],\n [('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])],\n [('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])],\n [('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])],\n [('regression: meadow source woodland sink',\n   ([100, 20], [1.5, 0.7], [200, 200], 0.2, 5),\n   [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]]),\n  ('regression: ceiling binding in source',\n   ([180, 10], [1.4, 0.8], [200, 50], 0.1, 4),\n   [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]]),\n  ('control: no dispersal',\n   ([50, 50], [1.2, 0.9], [100, 100], 0.0, 3),\n   [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]]),\n  ('regression: full exchange',\n   ([60, 0], [1.1, 0.5], [100, 100], 1.0, 3),\n   [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]]),\n  ('regression: both sinks',\n   ([100, 100], [0.8, 0.6], [150, 150], 0.3, 4),\n   [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]]),\n  ('regression: sink ceiling binding',\n   ([10, 120], [1.3, 1.2], [300, 100], 0.25, 4),\n   [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]]),\n  ('regression: unequal ceilings',\n   ([90, 40], [2.0, 1.5], [120, 60], 0.05, 5),\n   [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]])]]\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 bounded teaching model with a stipulated contract; not a validated scientific or public-health modelling library. 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-ecopop-source-sink-dispersal-conservation","generated_at":"2026-09-29T14:47:36.598542+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Population projections set harvest quotas, conservation status and pest-control timing; a wrong update order, boundary or rate conversion silently changes management advice.","root_cause":"Emigrants are added to the destination but not removed from the origin.","sha256":"e65ba51e311ace3b1f5b5a999c259d58b0ded5fa5c675dca620664fc511bc966","title":"Two-patch source-sink dispersal with ceilings: dispersal conservation · 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":40.774,"exit_code":1,"observations":[{"actual":[[177.2,-13.2],[241.848,-51.088],[247.1523,-82.9139],[251.6079,-109.6477],[255.3507,-132.1041]],"check":"regression: meadow source woodland sink","expected":[[122.8,41.2],[153.128,59.912],[168.3877,73.5507],[170.2971,81.1884],[171.3664,85.4655]],"passed":false},{"actual":[[219.2,-11.2],[220.896,-29.856],[222.3885,-46.2733],[223.7019,-60.7205]],"check":"regression: ceiling binding in source","expected":[[180.8,27.2],[182.176,39.584],[183.1667,48.5005],[183.88,54.9203]],"passed":false},{"actual":[[60.0,45.0],[72.0,40.5],[86.4,36.45]],"check":"control: no dispersal","expected":[[60.0,45.0],[72.0,40.5],[86.4,36.45]],"passed":true},{"actual":[[132.0,-66.0],[233.0,-166.0],[283.0,-266.0]],"check":"regression: full exchange","expected":[[0.0,66.0],[33.0,0.0],[0.0,36.3]],"passed":false},{"actual":[[86.0,54.0],[79.72,21.48],[79.0424,-2.3784],[82.6322,-20.8253]],"check":"regression: both sinks","expected":[[74.0,66.0],[53.32,45.48],[38.0456,31.8984],[27.0472,22.5283]],"passed":false},{"actual":[[-8.75,121.75],[-39.2188,127.8438],[-88.7305,137.7461],[-169.187,153.8374]],"check":"regression: sink ceiling binding","expected":[[34.75,78.25],[57.3563,81.7188],[80.438,92.1877],[103.427,101.1423]],"passed":false},{"actual":[[123.0,57.0],[123.0,57.0],[123.0,57.0],[123.0,57.0],[123.0,57.0]],"check":"regression: unequal ceilings","expected":[[117.0,63.0],[117.0,63.0],[117.0,63.0],[117.0,63.0],[117.0,63.0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: meadow source woodland sink\", \"actual\": [[177.2, -13.2], [241.848, -51.088], [247.1523, -82.9139], [251.6079, -109.6477], [255.3507, -132.1041]], \"expected\": [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]], \"passed\": false}, {\"check\": \"regression: ceiling binding in source\", \"actual\": [[219.2, -11.2], [220.896, -29.856], [222.3885, -46.2733], [223.7019, -60.7205]], \"expected\": [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]], \"passed\": false}, {\"check\": \"control: no dispersal\", \"actual\": [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]], \"expected\": [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]], \"passed\": true}, {\"check\": \"regression: full exchange\", \"actual\": [[132.0, -66.0], [233.0, -166.0], [283.0, -266.0]], \"expected\": [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]], \"passed\": false}, {\"check\": \"regression: both sinks\", \"actual\": [[86.0, 54.0], [79.72, 21.48], [79.0424, -2.3784], [82.6322, -20.8253]], \"expected\": [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]], \"passed\": false}, {\"check\": \"regression: sink ceiling binding\", \"actual\": [[-8.75, 121.75], [-39.2188, 127.8438], [-88.7305, 137.7461], [-169.187, 153.8374]], \"expected\": [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]], \"passed\": false}, {\"check\": \"regression: unequal ceilings\", \"actual\": [[123.0, 57.0], [123.0, 57.0], [123.0, 57.0], [123.0, 57.0], [123.0, 57.0]], \"expected\": [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.081,"exit_code":1,"observations":[{"actual":[[152.8,44.0],[206.16,70.8],[209.912,89.56],[212.5384,102.692],[214.3769,111.8844]],"check":"regression: meadow source woodland sink","expected":[[122.8,41.2],[153.128,59.912],[168.3877,73.5507],[170.2971,81.1884],[171.3664,85.4655]],"passed":false},{"actual":[[200.8,28.0],[202.24,42.4],[203.392,53.92],[204.3136,63.136]],"check":"regression: ceiling binding in source","expected":[[180.8,27.2],[182.176,39.584],[183.1667,48.5005],[183.88,54.9203]],"passed":false},{"actual":[[60.0,45.0],[72.0,40.5],[86.4,36.45]],"check":"control: no dispersal","expected":[[60.0,45.0],[72.0,40.5],[86.4,36.45]],"passed":true},{"actual":[[66.0,66.0],[105.6,105.6],[152.8,152.8]],"check":"regression: full exchange","expected":[[0.0,66.0],[33.0,0.0],[0.0,36.3]],"passed":false},{"actual":[[98.0,84.0],[93.52,73.92],[88.1216,66.7968],[82.5207,61.2273]],"check":"regression: both sinks","expected":[[74.0,66.0],[53.32,45.48],[38.0456,31.8984],[27.0472,22.5283]],"passed":false},{"actual":[[38.0,103.25],[74.4,112.35],[121.72,124.18],[183.236,139.559]],"check":"regression: sink ceiling binding","expected":[[34.75,78.25],[57.3563,81.7188],[80.438,92.1877],[103.427,101.1423]],"passed":false},{"actual":[[123.0,66.0],[123.0,66.0],[123.0,66.0],[123.0,66.0],[123.0,66.0]],"check":"regression: unequal ceilings","expected":[[117.0,63.0],[117.0,63.0],[117.0,63.0],[117.0,63.0],[117.0,63.0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: meadow source woodland sink\", \"actual\": [[152.8, 44.0], [206.16, 70.8], [209.912, 89.56], [212.5384, 102.692], [214.3769, 111.8844]], \"expected\": [[122.8, 41.2], [153.128, 59.912], [168.3877, 73.5507], [170.2971, 81.1884], [171.3664, 85.4655]], \"passed\": false}, {\"check\": \"regression: ceiling binding in source\", \"actual\": [[200.8, 28.0], [202.24, 42.4], [203.392, 53.92], [204.3136, 63.136]], \"expected\": [[180.8, 27.2], [182.176, 39.584], [183.1667, 48.5005], [183.88, 54.9203]], \"passed\": false}, {\"check\": \"control: no dispersal\", \"actual\": [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]], \"expected\": [[60.0, 45.0], [72.0, 40.5], [86.4, 36.45]], \"passed\": true}, {\"check\": \"regression: full exchange\", \"actual\": [[66.0, 66.0], [105.6, 105.6], [152.8, 152.8]], \"expected\": [[0.0, 66.0], [33.0, 0.0], [0.0, 36.3]], \"passed\": false}, {\"check\": \"regression: both sinks\", \"actual\": [[98.0, 84.0], [93.52, 73.92], [88.1216, 66.7968], [82.5207, 61.2273]], \"expected\": [[74.0, 66.0], [53.32, 45.48], [38.0456, 31.8984], [27.0472, 22.5283]], \"passed\": false}, {\"check\": \"regression: sink ceiling binding\", \"actual\": [[38.0, 103.25], [74.4, 112.35], [121.72, 124.18], [183.236, 139.559]], \"expected\": [[34.75, 78.25], [57.3563, 81.7188], [80.438, 92.1877], [103.427, 101.1423]], \"passed\": false}, {\"check\": \"regression: unequal ceilings\", \"actual\": [[123.0, 66.0], [123.0, 66.0], [123.0, 66.0], [123.0, 66.0], [123.0, 66.0]], \"expected\": [[117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0], [117.0, 63.0]], \"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."}}