{"abstract":"A variant switched off with weight zero still receives remainder traffic, and negative weights shrink totals.","category":"Feature flag rollout bucketing","checks":8,"contract":"variants is an ordered list of [name, weight percent with at most two decimals]; bucket is an integer in [0, 10000). Walk variants in declared order, skipping non-positive weights, adding round(weight * 100) to a running total, and return the first variant whose total exceeds the bucket. Buckets beyond the total go to the last positively weighted variant; with none, None.","evaluation_group":"w2-feature-flag-rollout-bucketing-weighted-variant-split","failed_approach":"Skipping only negative weights still lets a zero-weight arm become the remainder fallback.","family":"w2-feature-flag-rollout-bucketing-weighted-variant-split-nonpositive-weight-skip","id":"FA-73871","implementations":{"attempt":{"sha256":"bdeab895952dd33aa50fe6841f05ecd429d90d01488da119da12193e177c2fc2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(variants, bucket):\n    acc = 0\n    last = None\n    for name, weight in variants:\n        if weight < 0:\n            continue\n        last = name\n        acc += round(weight * 100)\n        if bucket < acc:\n            return name\n    return last\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('bucket at first cumulative edge goes to second arm',\n   [[['control', 50], ['treatment', 50]], 5000],\n   'treatment'),\n  ('bucket just below first edge stays in first arm',\n   [[['control', 50], ['treatment', 50]], 4999],\n   'control'),\n  ('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 1', [[['green', 1.15], ['holdout', 0], ['alpha', 1.15], ['blue', 50]], 1135], 'blue'),\n  ('weight table sample 2', [[['blue', 50], ['treatment', 10]], 2986], 'blue')],\n [('bucket just below first edge stays in first arm',\n   [[['control', 50], ['treatment', 50]], 4999],\n   'control'),\n  ('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 6',\n   [[['alpha', 0.29], ['holdout', 12.5], ['blue', 0.57], ['treatment', 0]], 204],\n   'holdout'),\n  ('weight table sample 48', [[['treatment', 0], ['green', -5], ['blue', 0]], 0], None)],\n [('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 11', [[['holdout', 12.5], ['blue', 12.5], ['alpha', 0.57]], 2500], 'alpha'),\n  ('weight table sample 12', [[['blue', 12.5], ['holdout', 0]], 1249], 'blue'),\n  ('weight table sample 27',\n   [[['green', 33.33], ['holdout', 0], ['control', 0], ['alpha', -5]], 3333],\n   'green')],\n [('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('three way split middle arm', [[['a', 33.33], ['b', 33.33], ['c', 33.34]], 5000], 'b'),\n  ('weight table sample 16', [[['green', 0.57], ['alpha', 12.5], ['control', 25]], 1307], 'control'),\n  ('weight table sample 17', [[['treatment', 1.15], ['control', 0.29], ['blue', 0.29]], 2597], 'blue'),\n  ('weight table sample 18', [[['blue', 33.34], ['alpha', 0.29], ['green', 4.35]], 2889], 'blue')],\n [('bucket at first cumulative edge goes to second arm',\n   [[['control', 50], ['treatment', 50]], 5000],\n   'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('three way split middle arm', [[['a', 33.33], ['b', 33.33], ['c', 33.34]], 5000], 'b'),\n  ('weight table sample 21', [[['green', 33.33], ['treatment', 0]], 0], 'green'),\n  ('weight table sample 22', [[['alpha', 0], ['control', 4.35], ['blue', 1.15]], 9182], 'blue')]]\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":"6b63a5feecb44b9860149705ddc53acd9ac96ca4ead290218d20804b7506809d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(variants, bucket):\n    acc = 0\n    last = None\n    for name, weight in variants:\n        last = name\n        acc += round(weight * 100)\n        if bucket < acc:\n            return name\n    return last\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('bucket at first cumulative edge goes to second arm',\n   [[['control', 50], ['treatment', 50]], 5000],\n   'treatment'),\n  ('bucket just below first edge stays in first arm',\n   [[['control', 50], ['treatment', 50]], 4999],\n   'control'),\n  ('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 1', [[['green', 1.15], ['holdout', 0], ['alpha', 1.15], ['blue', 50]], 1135], 'blue'),\n  ('weight table sample 2', [[['blue', 50], ['treatment', 10]], 2986], 'blue')],\n [('bucket just below first edge stays in first arm',\n   [[['control', 50], ['treatment', 50]], 4999],\n   'control'),\n  ('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 6',\n   [[['alpha', 0.29], ['holdout', 12.5], ['blue', 0.57], ['treatment', 0]], 204],\n   'holdout'),\n  ('weight table sample 48', [[['treatment', 0], ['green', -5], ['blue', 0]], 0], None)],\n [('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 11', [[['holdout', 12.5], ['blue', 12.5], ['alpha', 0.57]], 2500], 'alpha'),\n  ('weight table sample 12', [[['blue', 12.5], ['holdout', 0]], 1249], 'blue'),\n  ('weight table sample 27',\n   [[['green', 33.33], ['holdout', 0], ['control', 0], ['alpha', -5]], 3333],\n   'green')],\n [('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('three way split middle arm', [[['a', 33.33], ['b', 33.33], ['c', 33.34]], 5000], 'b'),\n  ('weight table sample 16', [[['green', 0.57], ['alpha', 12.5], ['control', 25]], 1307], 'control'),\n  ('weight table sample 17', [[['treatment', 1.15], ['control', 0.29], ['blue', 0.29]], 2597], 'blue'),\n  ('weight table sample 18', [[['blue', 33.34], ['alpha', 0.29], ['green', 4.35]], 2889], 'blue')],\n [('bucket at first cumulative edge goes to second arm',\n   [[['control', 50], ['treatment', 50]], 5000],\n   'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('three way split middle arm', [[['a', 33.33], ['b', 33.33], ['c', 33.34]], 5000], 'b'),\n  ('weight table sample 21', [[['green', 33.33], ['treatment', 0]], 0], 'green'),\n  ('weight table sample 22', [[['alpha', 0], ['control', 4.35], ['blue', 1.15]], 9182], 'blue')]]\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":"c25a99c1f8f45ba0c8b7b5a8f16f96080788a1add434bde03902357568bbdb02","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(variants, bucket):\n    acc = 0\n    last = None\n    for name, weight in variants:\n        if weight <= 0:\n            continue\n        last = name\n        acc += round(weight * 100)\n        if bucket < acc:\n            return name\n    return last\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('bucket at first cumulative edge goes to second arm',\n   [[['control', 50], ['treatment', 50]], 5000],\n   'treatment'),\n  ('bucket just below first edge stays in first arm',\n   [[['control', 50], ['treatment', 50]], 4999],\n   'control'),\n  ('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 1', [[['green', 1.15], ['holdout', 0], ['alpha', 1.15], ['blue', 50]], 1135], 'blue'),\n  ('weight table sample 2', [[['blue', 50], ['treatment', 10]], 2986], 'blue')],\n [('bucket just below first edge stays in first arm',\n   [[['control', 50], ['treatment', 50]], 4999],\n   'control'),\n  ('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 6',\n   [[['alpha', 0.29], ['holdout', 12.5], ['blue', 0.57], ['treatment', 0]], 204],\n   'holdout'),\n  ('weight table sample 48', [[['treatment', 0], ['green', -5], ['blue', 0]], 0], None)],\n [('zero weight arm is never selected', [[['control', 0], ['treatment', 100]], 0], 'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('weight table sample 11', [[['holdout', 12.5], ['blue', 12.5], ['alpha', 0.57]], 2500], 'alpha'),\n  ('weight table sample 12', [[['blue', 12.5], ['holdout', 0]], 1249], 'blue'),\n  ('weight table sample 27',\n   [[['green', 33.33], ['holdout', 0], ['control', 0], ['alpha', -5]], 3333],\n   'green')],\n [('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('three way split middle arm', [[['a', 33.33], ['b', 33.33], ['c', 33.34]], 5000], 'b'),\n  ('weight table sample 16', [[['green', 0.57], ['alpha', 12.5], ['control', 25]], 1307], 'control'),\n  ('weight table sample 17', [[['treatment', 1.15], ['control', 0.29], ['blue', 0.29]], 2597], 'blue'),\n  ('weight table sample 18', [[['blue', 33.34], ['alpha', 0.29], ['green', 4.35]], 2889], 'blue')],\n [('bucket at first cumulative edge goes to second arm',\n   [[['control', 50], ['treatment', 50]], 5000],\n   'treatment'),\n  ('trailing zero weight arm does not absorb remainder',\n   [[['control', 40], ['treatment', 40], ['off', 0]], 9000],\n   'treatment'),\n  ('declared order beats alphabetical order', [[['zeta', 10], ['alpha', 90]], 500], 'zeta'),\n  ('fractional weight 0.29 covers 29 buckets', [[['tiny', 0.29], ['rest', 99.71]], 28], 'tiny'),\n  ('no positive weights yields None', [[['a', 0], ['b', 0]], 10], None),\n  ('three way split middle arm', [[['a', 33.33], ['b', 33.33], ['c', 33.34]], 5000], 'b'),\n  ('weight table sample 21', [[['green', 33.33], ['treatment', 0]], 0], 'green'),\n  ('weight table sample 22', [[['alpha', 0], ['control', 4.35], ['blue', 1.15]], 9182], 'blue')]]\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 flag-evaluation model with a stipulated contract; it does not reproduce any vendor SDK byte for byte. 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-feature-flag-rollout-bucketing-weighted-variant-split-nonpositive-weight-skip","generated_at":"2026-09-29T14:48:51.439375+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Variant splits decide which arm of a flag a user receives and must honour declared weights exactly.","repair":"Skip every variant with weight <= 0 before touching the running total or the fallback.","root_cause":"The loop no longer skips variants whose weight is not positive.","sha256":"e02acf8cde2f700ad35d32bcb0fc3a8277e88acd7769a84a67f8c78f6935e439","title":"Weighted variant allocation: Zero-weight arms participate in allocation · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.4,"exit_code":1,"observations":[{"actual":"treatment","check":"bucket at first cumulative edge goes to second arm","expected":"treatment","passed":true},{"actual":"control","check":"bucket just below first edge stays in first arm","expected":"control","passed":true},{"actual":"treatment","check":"zero weight arm is never selected","expected":"treatment","passed":true},{"actual":"off","check":"trailing zero weight arm does not absorb remainder","expected":"treatment","passed":false},{"actual":"zeta","check":"declared order beats alphabetical order","expected":"zeta","passed":true},{"actual":"b","check":"no positive weights yields None","expected":null,"passed":false},{"actual":"blue","check":"weight table sample 1","expected":"blue","passed":true},{"actual":"blue","check":"weight table sample 2","expected":"blue","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"bucket at first cumulative edge goes to second arm\", \"actual\": \"treatment\", \"expected\": \"treatment\", \"passed\": true}, {\"check\": \"bucket just below first edge stays in first arm\", \"actual\": \"control\", \"expected\": \"control\", \"passed\": true}, {\"check\": \"zero weight arm is never selected\", \"actual\": \"treatment\", \"expected\": \"treatment\", \"passed\": true}, {\"check\": \"trailing zero weight arm does not absorb remainder\", \"actual\": \"off\", \"expected\": \"treatment\", \"passed\": false}, {\"check\": \"declared order beats alphabetical order\", \"actual\": \"zeta\", \"expected\": \"zeta\", \"passed\": true}, {\"check\": \"no positive weights yields None\", \"actual\": \"b\", \"expected\": null, \"passed\": false}, {\"check\": \"weight table sample 1\", \"actual\": \"blue\", \"expected\": \"blue\", \"passed\": true}, {\"check\": \"weight table sample 2\", \"actual\": \"blue\", \"expected\": \"blue\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.692,"exit_code":1,"observations":[{"actual":"treatment","check":"bucket at first cumulative edge goes to second arm","expected":"treatment","passed":true},{"actual":"control","check":"bucket just below first edge stays in first arm","expected":"control","passed":true},{"actual":"treatment","check":"zero weight arm is never selected","expected":"treatment","passed":true},{"actual":"off","check":"trailing zero weight arm does not absorb remainder","expected":"treatment","passed":false},{"actual":"zeta","check":"declared order beats alphabetical order","expected":"zeta","passed":true},{"actual":"b","check":"no positive weights yields None","expected":null,"passed":false},{"actual":"blue","check":"weight table sample 1","expected":"blue","passed":true},{"actual":"blue","check":"weight table sample 2","expected":"blue","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"bucket at first cumulative edge goes to second arm\", \"actual\": \"treatment\", \"expected\": \"treatment\", \"passed\": true}, {\"check\": \"bucket just below first edge stays in first arm\", \"actual\": \"control\", \"expected\": \"control\", \"passed\": true}, {\"check\": \"zero weight arm is never selected\", \"actual\": \"treatment\", \"expected\": \"treatment\", \"passed\": true}, {\"check\": \"trailing zero weight arm does not absorb remainder\", \"actual\": \"off\", \"expected\": \"treatment\", \"passed\": false}, {\"check\": \"declared order beats alphabetical order\", \"actual\": \"zeta\", \"expected\": \"zeta\", \"passed\": true}, {\"check\": \"no positive weights yields None\", \"actual\": \"b\", \"expected\": null, \"passed\": false}, {\"check\": \"weight table sample 1\", \"actual\": \"blue\", \"expected\": \"blue\", \"passed\": true}, {\"check\": \"weight table sample 2\", \"actual\": \"blue\", \"expected\": \"blue\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.132,"exit_code":0,"observations":[{"actual":"treatment","check":"bucket at first cumulative edge goes to second arm","expected":"treatment","passed":true},{"actual":"control","check":"bucket just below first edge stays in first arm","expected":"control","passed":true},{"actual":"treatment","check":"zero weight arm is never selected","expected":"treatment","passed":true},{"actual":"treatment","check":"trailing zero weight arm does not absorb remainder","expected":"treatment","passed":true},{"actual":"zeta","check":"declared order beats alphabetical order","expected":"zeta","passed":true},{"actual":null,"check":"no positive weights yields None","expected":null,"passed":true},{"actual":"blue","check":"weight table sample 1","expected":"blue","passed":true},{"actual":"blue","check":"weight table sample 2","expected":"blue","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"bucket at first cumulative edge goes to second arm\", \"actual\": \"treatment\", \"expected\": \"treatment\", \"passed\": true}, {\"check\": \"bucket just below first edge stays in first arm\", \"actual\": \"control\", \"expected\": \"control\", \"passed\": true}, {\"check\": \"zero weight arm is never selected\", \"actual\": \"treatment\", \"expected\": \"treatment\", \"passed\": true}, {\"check\": \"trailing zero weight arm does not absorb remainder\", \"actual\": \"treatment\", \"expected\": \"treatment\", \"passed\": true}, {\"check\": \"declared order beats alphabetical order\", \"actual\": \"zeta\", \"expected\": \"zeta\", \"passed\": true}, {\"check\": \"no positive weights yields None\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"weight table sample 1\", \"actual\": \"blue\", \"expected\": \"blue\", \"passed\": true}, {\"check\": \"weight table sample 2\", \"actual\": \"blue\", \"expected\": \"blue\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}