{"abstract":"The statistic depends on arbitrary ordering of tied values and favours whichever arm sorts first.","category":"Experiment statistics","checks":8,"contract":"Pool a (control) and b (treatment), assign mid-ranks to ties (1-based). U = R_b - n_b(n_b + 1)/2. Tie-corrected variance = n_a n_b / 12 * ((N + 1) - sum(t^3 - t) / (N(N - 1))); z = (U - n_a n_b / 2) / sqrt(variance) without continuity correction; zero variance gives z = 0. Empty arm -> None. Return [U, round(z, 6)].","evaluation_group":"w2-experiment-statistics-mann-whitney","failed_approach":"Integer division truncates half-integer midranks.","family":"w2-experiment-statistics-mann-whitney-midrank","id":"FA-74671","implementations":{"attempt":{"sha256":"ec4d40e6e9504a38bb4610b8856018df2c65134308bb09929f5d1f6466078440","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(a, b):\n    na, nb = len(a), len(b)\n    if na == 0 or nb == 0:\n        return None\n    pooled = sorted([(v, 0) for v in a] + [(v, 1) for v in b])\n    N = na + nb\n    ranks = [0.0] * N\n    ties = 0\n    i = 0\n    while i < N:\n        j = i\n        while j + 1 < N and pooled[j + 1][0] == pooled[i][0]:\n            j += 1\n        mid = (i + j) // 2 + 1\n        for k in range(i, j + 1):\n            ranks[k] = mid\n        t = j - i + 1\n        ties += t ** 3 - t\n        i = j + 1\n    rb = sum(r for r, (v, g) in zip(ranks, pooled) if g == 1)\n    u = rb - nb * (nb + 1) / 2\n    var = na * nb / 12 * ((N + 1) - ties / (N * (N - 1))) if N > 1 else 0.0\n    if var <= 0:\n        return [u, 0.0]\n    return [u, round((u - na * nb / 2) / math.sqrt(var), 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 1', [[1, 3, 2], [7]], [3.0, 1.341641]),\n  ('rank sample 2', [[3, 1, 2, 2, 4], [7, 3, 1, 1, 5, 3]], [18.0, 0.559282])],\n [('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 4', [[4], [3, 4, 2, 7, 2, 3]], [1.5, -0.770934]),\n  ('rank sample 16', [[4, 0, 3, 3, 1], [4, 1]], [6.0, 0.398109])],\n [('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 11', [[1, 1, 2, 3, 4], [2]], [2.5, 0.0]),\n  ('rank sample 14', [[5], [1, 1, 4, 7]], [1.0, -0.725476]),\n  ('rank sample 28', [[0, 4, 0, 0, 3], [6, 4, 5]], [14.5, 2.152028])],\n [('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 16', [[4, 0, 3, 3, 1], [4, 1]], [6.0, 0.398109]),\n  ('rank sample 23', [[3, 4], [0, 4, 6]], [3.5, 0.296174]),\n  ('rank sample 37', [[1, 3, 3], [4, 6, 2, 1, 2, 2]], [9.5, 0.132453])],\n [('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 21', [[4, 4, 3, 1, 2], [4, 7, 7, 7, 6, 5]], [29.0, 2.603819]),\n  ('rank sample 32', [[3, 2, 4, 5, 1], [6, 3, 3, 7, 6, 3]], [22.5, 1.404879]),\n  ('rank sample 50', [[0, 2, 2, 2, 4], [4]], [4.5, 1.264911])]]\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":"86b1b3a03ce95c17bc2635cff1226c735f3c00a5b3010aaca0aebe77d94cab09","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(a, b):\n    na, nb = len(a), len(b)\n    if na == 0 or nb == 0:\n        return None\n    pooled = sorted([(v, 0) for v in a] + [(v, 1) for v in b])\n    N = na + nb\n    ranks = [0.0] * N\n    ties = 0\n    i = 0\n    while i < N:\n        j = i\n        while j + 1 < N and pooled[j + 1][0] == pooled[i][0]:\n            j += 1\n        mid = i + 1\n        for k in range(i, j + 1):\n            ranks[k] = mid\n        t = j - i + 1\n        ties += t ** 3 - t\n        i = j + 1\n    rb = sum(r for r, (v, g) in zip(ranks, pooled) if g == 1)\n    u = rb - nb * (nb + 1) / 2\n    var = na * nb / 12 * ((N + 1) - ties / (N * (N - 1))) if N > 1 else 0.0\n    if var <= 0:\n        return [u, 0.0]\n    return [u, round((u - na * nb / 2) / math.sqrt(var), 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 1', [[1, 3, 2], [7]], [3.0, 1.341641]),\n  ('rank sample 2', [[3, 1, 2, 2, 4], [7, 3, 1, 1, 5, 3]], [18.0, 0.559282])],\n [('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 4', [[4], [3, 4, 2, 7, 2, 3]], [1.5, -0.770934]),\n  ('rank sample 16', [[4, 0, 3, 3, 1], [4, 1]], [6.0, 0.398109])],\n [('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 11', [[1, 1, 2, 3, 4], [2]], [2.5, 0.0]),\n  ('rank sample 14', [[5], [1, 1, 4, 7]], [1.0, -0.725476]),\n  ('rank sample 28', [[0, 4, 0, 0, 3], [6, 4, 5]], [14.5, 2.152028])],\n [('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 16', [[4, 0, 3, 3, 1], [4, 1]], [6.0, 0.398109]),\n  ('rank sample 23', [[3, 4], [0, 4, 6]], [3.5, 0.296174]),\n  ('rank sample 37', [[1, 3, 3], [4, 6, 2, 1, 2, 2]], [9.5, 0.132453])],\n [('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 21', [[4, 4, 3, 1, 2], [4, 7, 7, 7, 6, 5]], [29.0, 2.603819]),\n  ('rank sample 32', [[3, 2, 4, 5, 1], [6, 3, 3, 7, 6, 3]], [22.5, 1.404879]),\n  ('rank sample 50', [[0, 2, 2, 2, 4], [4]], [4.5, 1.264911])]]\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":"3254fff0a031bc03bfea6577d5e2896295f7a4814d31136102e065a4511583d0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nN = 1\nobservations = []\ndef solve(a, b):\n    na, nb = len(a), len(b)\n    if na == 0 or nb == 0:\n        return None\n    pooled = sorted([(v, 0) for v in a] + [(v, 1) for v in b])\n    N = na + nb\n    ranks = [0.0] * N\n    ties = 0\n    i = 0\n    while i < N:\n        j = i\n        while j + 1 < N and pooled[j + 1][0] == pooled[i][0]:\n            j += 1\n        mid = (i + j) / 2 + 1\n        for k in range(i, j + 1):\n            ranks[k] = mid\n        t = j - i + 1\n        ties += t ** 3 - t\n        i = j + 1\n    rb = sum(r for r, (v, g) in zip(ranks, pooled) if g == 1)\n    u = rb - nb * (nb + 1) / 2\n    var = na * nb / 12 * ((N + 1) - ties / (N * (N - 1))) if N > 1 else 0.0\n    if var <= 0:\n        return [u, 0.0]\n    return [u, round((u - na * nb / 2) / math.sqrt(var), 6)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 1', [[1, 3, 2], [7]], [3.0, 1.341641]),\n  ('rank sample 2', [[3, 1, 2, 2, 4], [7, 3, 1, 1, 5, 3]], [18.0, 0.559282])],\n [('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 4', [[4], [3, 4, 2, 7, 2, 3]], [1.5, -0.770934]),\n  ('rank sample 16', [[4, 0, 3, 3, 1], [4, 1]], [6.0, 0.398109])],\n [('three-way tie with treatment', [[5, 5], [5, 6]], [3.0, 1.0]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 11', [[1, 1, 2, 3, 4], [2]], [2.5, 0.0]),\n  ('rank sample 14', [[5], [1, 1, 4, 7]], [1.0, -0.725476]),\n  ('rank sample 28', [[0, 4, 0, 0, 3], [6, 4, 5]], [14.5, 2.152028])],\n [('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('no ties', [[1, 3, 5], [2, 4, 6, 8]], [9.0, 1.06066]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 16', [[4, 0, 3, 3, 1], [4, 1]], [6.0, 0.398109]),\n  ('rank sample 23', [[3, 4], [0, 4, 6]], [3.5, 0.296174]),\n  ('rank sample 37', [[1, 3, 3], [4, 6, 2, 1, 2, 2]], [9.5, 0.132453])],\n [('ties get average ranks', [[1, 2, 2], [2, 3, 4]], [8.0, 1.623086]),\n  ('two-way tie across arms', [[1, 2], [2, 3]], [3.5, 1.224745]),\n  ('complete separation', [[1, 2], [3, 4, 5]], [6.0, 1.732051]),\n  ('all values tied', [[2, 2], [2, 2, 2]], [3.0, 0.0]),\n  ('unequal arm sizes', [[0, 1, 1, 4], [1, 2]], [5.0, 0.491869]),\n  ('rank sample 21', [[4, 4, 3, 1, 2], [4, 7, 7, 7, 6, 5]], [29.0, 2.603819]),\n  ('rank sample 32', [[3, 2, 4, 5, 1], [6, 3, 3, 7, 6, 3]], [22.5, 1.404879]),\n  ('rank sample 50', [[0, 2, 2, 2, 4], [4]], [4.5, 1.264911])]]\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":"A deterministic toy experiment-analysis model with a stipulated contract; results are rounded and are not a substitute for a validated statistics package. 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-experiment-statistics-mann-whitney-midrank","generated_at":"2026-09-29T14:48:58.986513+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Rank tests are used for heavy-tailed metrics such as latency; ties are common in bucketed data.","repair":"Assign every member of a tie group the average of its positions.","root_cause":"Each tie group is given the rank of its first position.","sha256":"eed79e57cb8e4a7f1998d9b3bf7736b6fe8838b2dfcd9180da32f2ca30f290b4","title":"Rank-sum test with ties: Tied values receive ordinal ranks · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.117,"exit_code":1,"observations":[{"actual":[8.0,1.623086],"check":"ties get average ranks","expected":[8.0,1.623086],"passed":true},{"actual":[3.0,0.816497],"check":"two-way tie across arms","expected":[3.5,1.224745],"passed":false},{"actual":[3.0,1.0],"check":"three-way tie with treatment","expected":[3.0,1.0],"passed":true},{"actual":[9.0,1.06066],"check":"no ties","expected":[9.0,1.06066],"passed":true},{"actual":[6.0,1.732051],"check":"complete separation","expected":[6.0,1.732051],"passed":true},{"actual":[5.0,0.491869],"check":"unequal arm sizes","expected":[5.0,0.491869],"passed":true},{"actual":[3.0,1.341641],"check":"rank sample 1","expected":[3.0,1.341641],"passed":true},{"actual":[18.0,0.559282],"check":"rank sample 2","expected":[18.0,0.559282],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ties get average ranks\", \"actual\": [8.0, 1.623086], \"expected\": [8.0, 1.623086], \"passed\": true}, {\"check\": \"two-way tie across arms\", \"actual\": [3.0, 0.816497], \"expected\": [3.5, 1.224745], \"passed\": false}, {\"check\": \"three-way tie with treatment\", \"actual\": [3.0, 1.0], \"expected\": [3.0, 1.0], \"passed\": true}, {\"check\": \"no ties\", \"actual\": [9.0, 1.06066], \"expected\": [9.0, 1.06066], \"passed\": true}, {\"check\": \"complete separation\", \"actual\": [6.0, 1.732051], \"expected\": [6.0, 1.732051], \"passed\": true}, {\"check\": \"unequal arm sizes\", \"actual\": [5.0, 0.491869], \"expected\": [5.0, 0.491869], \"passed\": true}, {\"check\": \"rank sample 1\", \"actual\": [3.0, 1.341641], \"expected\": [3.0, 1.341641], \"passed\": true}, {\"check\": \"rank sample 2\", \"actual\": [18.0, 0.559282], \"expected\": [18.0, 0.559282], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.411,"exit_code":1,"observations":[{"actual":[7.0,1.159347],"check":"ties get average ranks","expected":[8.0,1.623086],"passed":false},{"actual":[3.0,0.816497],"check":"two-way tie across arms","expected":[3.5,1.224745],"passed":false},{"actual":[2.0,0.0],"check":"three-way tie with treatment","expected":[3.0,1.0],"passed":false},{"actual":[9.0,1.06066],"check":"no ties","expected":[9.0,1.06066],"passed":true},{"actual":[6.0,1.732051],"check":"complete separation","expected":[6.0,1.732051],"passed":true},{"actual":[4.0,0.0],"check":"unequal arm sizes","expected":[5.0,0.491869],"passed":false},{"actual":[3.0,1.341641],"check":"rank sample 1","expected":[3.0,1.341641],"passed":true},{"actual":[14.0,-0.186427],"check":"rank sample 2","expected":[18.0,0.559282],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ties get average ranks\", \"actual\": [7.0, 1.159347], \"expected\": [8.0, 1.623086], \"passed\": false}, {\"check\": \"two-way tie across arms\", \"actual\": [3.0, 0.816497], \"expected\": [3.5, 1.224745], \"passed\": false}, {\"check\": \"three-way tie with treatment\", \"actual\": [2.0, 0.0], \"expected\": [3.0, 1.0], \"passed\": false}, {\"check\": \"no ties\", \"actual\": [9.0, 1.06066], \"expected\": [9.0, 1.06066], \"passed\": true}, {\"check\": \"complete separation\", \"actual\": [6.0, 1.732051], \"expected\": [6.0, 1.732051], \"passed\": true}, {\"check\": \"unequal arm sizes\", \"actual\": [4.0, 0.0], \"expected\": [5.0, 0.491869], \"passed\": false}, {\"check\": \"rank sample 1\", \"actual\": [3.0, 1.341641], \"expected\": [3.0, 1.341641], \"passed\": true}, {\"check\": \"rank sample 2\", \"actual\": [14.0, -0.186427], \"expected\": [18.0, 0.559282], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.997,"exit_code":0,"observations":[{"actual":[8.0,1.623086],"check":"ties get average ranks","expected":[8.0,1.623086],"passed":true},{"actual":[3.5,1.224745],"check":"two-way tie across arms","expected":[3.5,1.224745],"passed":true},{"actual":[3.0,1.0],"check":"three-way tie with treatment","expected":[3.0,1.0],"passed":true},{"actual":[9.0,1.06066],"check":"no ties","expected":[9.0,1.06066],"passed":true},{"actual":[6.0,1.732051],"check":"complete separation","expected":[6.0,1.732051],"passed":true},{"actual":[5.0,0.491869],"check":"unequal arm sizes","expected":[5.0,0.491869],"passed":true},{"actual":[3.0,1.341641],"check":"rank sample 1","expected":[3.0,1.341641],"passed":true},{"actual":[18.0,0.559282],"check":"rank sample 2","expected":[18.0,0.559282],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ties get average ranks\", \"actual\": [8.0, 1.623086], \"expected\": [8.0, 1.623086], \"passed\": true}, {\"check\": \"two-way tie across arms\", \"actual\": [3.5, 1.224745], \"expected\": [3.5, 1.224745], \"passed\": true}, {\"check\": \"three-way tie with treatment\", \"actual\": [3.0, 1.0], \"expected\": [3.0, 1.0], \"passed\": true}, {\"check\": \"no ties\", \"actual\": [9.0, 1.06066], \"expected\": [9.0, 1.06066], \"passed\": true}, {\"check\": \"complete separation\", \"actual\": [6.0, 1.732051], \"expected\": [6.0, 1.732051], \"passed\": true}, {\"check\": \"unequal arm sizes\", \"actual\": [5.0, 0.491869], \"expected\": [5.0, 0.491869], \"passed\": true}, {\"check\": \"rank sample 1\", \"actual\": [3.0, 1.341641], \"expected\": [3.0, 1.341641], \"passed\": true}, {\"check\": \"rank sample 2\", \"actual\": [18.0, 0.559282], \"expected\": [18.0, 0.559282], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}