{"abstract":"A 7-day metric actually sums 8 days of activity.","category":"Experiment statistics","checks":8,"contract":"events are [user, day, value]; exposures maps user -> first exposure day. A user's metric sums values of their events with exposure_day <= day < exposure_day + window_days. Every exposed user appears, even with no qualifying events; unexposed users are dropped. Return sorted [user, total].","evaluation_group":"w2-experiment-statistics-exposure-window","failed_approach":"Shortening the window by one drops the legitimate last day.","family":"w2-experiment-statistics-exposure-window-window-end","id":"FA-74546","implementations":{"attempt":{"sha256":"aa95945c361c32b3c70219b03c700d48e8218626765d419ab7fe1e40c7cee314","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, exposures, window_days):\n    totals = {u: 0 for u in exposures}\n    for user, day, value in events:\n        if user not in exposures:\n            continue\n        start = exposures[user]\n        if start <= day < start + window_days - 1:\n            totals[user] += value\n    return sorted([u, t] for u, t in totals.items())\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('event log sample 1',\n   [[['a', 7, 1], ['b', 7, 1], ['d', 10, 1], ['e', 10, 1], ['b', 5, 1], ['c', 11, 1]],\n    {'c': 5, 'a': 0, 'b': 4},\n    1],\n   [['a', 0], ['b', 0], ['c', 0]]),\n  ('event log sample 2',\n   [[['c', 1, 1], ['a', 6, 2], ['a', 2, 5]], {'c': 3, 'd': 3}, 7],\n   [['c', 0], ['d', 0]])],\n [('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('event log sample 6',\n   [[['d', 1, 1], ['e', 8, 5], ['c', 5, 2], ['e', 1, 2], ['c', 9, 2], ['a', 1, 2]], {'d': 0}, 3],\n   [['d', 1]]),\n  ('event log sample 43',\n   [[['e', 7, 2], ['e', 1, 2], ['a', 3, 2], ['e', 3, 1]], {'b': 4, 'a': 3, 'd': 3}, 1],\n   [['a', 2], ['b', 0], ['d', 0]]),\n  ('event log sample 54',\n   [[['e', 4, 1], ['d', 6, 5], ['d', 3, 2], ['e', 5, 1], ['c', 0, 1], ['b', 11, 2], ['a', 6, 5], ['d', 3, 5]],\n    {'a': 0, 'c': 5, 'b': 4},\n    7],\n   [['a', 5], ['b', 0], ['c', 0]])],\n [('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 11', [[['c', 7, 2], ['b', 3, 1]], {'a': 4, 'd': 2}, 1], [['a', 0], ['d', 0]]),\n  ('event log sample 18',\n   [[['e', 3, 1], ['c', 7, 5], ['a', 5, 5], ['a', 4, 5], ['a', 2, 5], ['d', 1, 5], ['e', 3, 5], ['e', 2, 2]],\n    {'a': 2},\n    1],\n   [['a', 5]]),\n  ('event log sample 36',\n   [[['a', 5, 5], ['a', 5, 5], ['b', 2, 5], ['e', 8, 1], ['d', 5, 1], ['e', 7, 5]], {'c': 0, 'a': 2}, 3],\n   [['a', 0], ['c', 0]])],\n [('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 16',\n   [[['d', 0, 5], ['b', 3, 2], ['d', 1, 1], ['d', 2, 1]], {'c': 1, 'b': 5}, 1],\n   [['b', 0], ['c', 0]]),\n  ('event log sample 30',\n   [[['e', 7, 5],\n     ['a', 6, 5],\n     ['e', 3, 5],\n     ['a', 3, 5],\n     ['a', 3, 1],\n     ['c', 11, 2],\n     ['d', 8, 2],\n     ['b', 10, 1]],\n    {'d': 5},\n    3],\n   [['d', 0]]),\n  ('event log sample 59',\n   [[['a', 2, 2],\n     ['c', 5, 1],\n     ['d', 0, 2],\n     ['d', 11, 5],\n     ['e', 10, 1],\n     ['e', 1, 5],\n     ['c', 9, 5],\n     ['b', 4, 5]],\n    {'a': 1, 'b': 4, 'c': 3},\n    7],\n   [['a', 2], ['b', 5], ['c', 6]])],\n [('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 21', [[], {'d': 5, 'c': 2}, 7], [['c', 0], ['d', 0]]),\n  ('event log sample 24',\n   [[['c', 5, 5], ['c', 9, 2], ['c', 6, 5], ['c', 6, 5], ['b', 11, 1], ['e', 6, 5], ['c', 2, 2]],\n    {'c': 2, 'b': 3},\n    7],\n   [['b', 0], ['c', 17]]),\n  ('event log sample 40',\n   [[['a', 8, 2], ['c', 8, 1], ['b', 8, 1], ['d', 1, 2], ['a', 2, 5]], {'d': 1, 'b': 2}, 7],\n   [['b', 1], ['d', 2]])]]\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":"21f4fc8a95878180acbefa508a6d54f7a110df9ef7612c7fd47b9d05fb9dd2dc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, exposures, window_days):\n    totals = {u: 0 for u in exposures}\n    for user, day, value in events:\n        if user not in exposures:\n            continue\n        start = exposures[user]\n        if start <= day <= start + window_days:\n            totals[user] += value\n    return sorted([u, t] for u, t in totals.items())\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('event log sample 1',\n   [[['a', 7, 1], ['b', 7, 1], ['d', 10, 1], ['e', 10, 1], ['b', 5, 1], ['c', 11, 1]],\n    {'c': 5, 'a': 0, 'b': 4},\n    1],\n   [['a', 0], ['b', 0], ['c', 0]]),\n  ('event log sample 2',\n   [[['c', 1, 1], ['a', 6, 2], ['a', 2, 5]], {'c': 3, 'd': 3}, 7],\n   [['c', 0], ['d', 0]])],\n [('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('event log sample 6',\n   [[['d', 1, 1], ['e', 8, 5], ['c', 5, 2], ['e', 1, 2], ['c', 9, 2], ['a', 1, 2]], {'d': 0}, 3],\n   [['d', 1]]),\n  ('event log sample 43',\n   [[['e', 7, 2], ['e', 1, 2], ['a', 3, 2], ['e', 3, 1]], {'b': 4, 'a': 3, 'd': 3}, 1],\n   [['a', 2], ['b', 0], ['d', 0]]),\n  ('event log sample 54',\n   [[['e', 4, 1], ['d', 6, 5], ['d', 3, 2], ['e', 5, 1], ['c', 0, 1], ['b', 11, 2], ['a', 6, 5], ['d', 3, 5]],\n    {'a': 0, 'c': 5, 'b': 4},\n    7],\n   [['a', 5], ['b', 0], ['c', 0]])],\n [('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 11', [[['c', 7, 2], ['b', 3, 1]], {'a': 4, 'd': 2}, 1], [['a', 0], ['d', 0]]),\n  ('event log sample 18',\n   [[['e', 3, 1], ['c', 7, 5], ['a', 5, 5], ['a', 4, 5], ['a', 2, 5], ['d', 1, 5], ['e', 3, 5], ['e', 2, 2]],\n    {'a': 2},\n    1],\n   [['a', 5]]),\n  ('event log sample 36',\n   [[['a', 5, 5], ['a', 5, 5], ['b', 2, 5], ['e', 8, 1], ['d', 5, 1], ['e', 7, 5]], {'c': 0, 'a': 2}, 3],\n   [['a', 0], ['c', 0]])],\n [('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 16',\n   [[['d', 0, 5], ['b', 3, 2], ['d', 1, 1], ['d', 2, 1]], {'c': 1, 'b': 5}, 1],\n   [['b', 0], ['c', 0]]),\n  ('event log sample 30',\n   [[['e', 7, 5],\n     ['a', 6, 5],\n     ['e', 3, 5],\n     ['a', 3, 5],\n     ['a', 3, 1],\n     ['c', 11, 2],\n     ['d', 8, 2],\n     ['b', 10, 1]],\n    {'d': 5},\n    3],\n   [['d', 0]]),\n  ('event log sample 59',\n   [[['a', 2, 2],\n     ['c', 5, 1],\n     ['d', 0, 2],\n     ['d', 11, 5],\n     ['e', 10, 1],\n     ['e', 1, 5],\n     ['c', 9, 5],\n     ['b', 4, 5]],\n    {'a': 1, 'b': 4, 'c': 3},\n    7],\n   [['a', 2], ['b', 5], ['c', 6]])],\n [('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 21', [[], {'d': 5, 'c': 2}, 7], [['c', 0], ['d', 0]]),\n  ('event log sample 24',\n   [[['c', 5, 5], ['c', 9, 2], ['c', 6, 5], ['c', 6, 5], ['b', 11, 1], ['e', 6, 5], ['c', 2, 2]],\n    {'c': 2, 'b': 3},\n    7],\n   [['b', 0], ['c', 17]]),\n  ('event log sample 40',\n   [[['a', 8, 2], ['c', 8, 1], ['b', 8, 1], ['d', 1, 2], ['a', 2, 5]], {'d': 1, 'b': 2}, 7],\n   [['b', 1], ['d', 2]])]]\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":"9718b6d34df5332b55d2ed8d9cf74218b9ad0e851587a48a8a15808b27a7bcab","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, exposures, window_days):\n    totals = {u: 0 for u in exposures}\n    for user, day, value in events:\n        if user not in exposures:\n            continue\n        start = exposures[user]\n        if start <= day < start + window_days:\n            totals[user] += value\n    return sorted([u, t] for u, t in totals.items())\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('event log sample 1',\n   [[['a', 7, 1], ['b', 7, 1], ['d', 10, 1], ['e', 10, 1], ['b', 5, 1], ['c', 11, 1]],\n    {'c': 5, 'a': 0, 'b': 4},\n    1],\n   [['a', 0], ['b', 0], ['c', 0]]),\n  ('event log sample 2',\n   [[['c', 1, 1], ['a', 6, 2], ['a', 2, 5]], {'c': 3, 'd': 3}, 7],\n   [['c', 0], ['d', 0]])],\n [('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('event log sample 6',\n   [[['d', 1, 1], ['e', 8, 5], ['c', 5, 2], ['e', 1, 2], ['c', 9, 2], ['a', 1, 2]], {'d': 0}, 3],\n   [['d', 1]]),\n  ('event log sample 43',\n   [[['e', 7, 2], ['e', 1, 2], ['a', 3, 2], ['e', 3, 1]], {'b': 4, 'a': 3, 'd': 3}, 1],\n   [['a', 2], ['b', 0], ['d', 0]]),\n  ('event log sample 54',\n   [[['e', 4, 1], ['d', 6, 5], ['d', 3, 2], ['e', 5, 1], ['c', 0, 1], ['b', 11, 2], ['a', 6, 5], ['d', 3, 5]],\n    {'a': 0, 'c': 5, 'b': 4},\n    7],\n   [['a', 5], ['b', 0], ['c', 0]])],\n [('window end is exclusive', [[['a', 3, 1], ['a', 10, 9]], {'a': 3}, 7], [['a', 1]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 11', [[['c', 7, 2], ['b', 3, 1]], {'a': 4, 'd': 2}, 1], [['a', 0], ['d', 0]]),\n  ('event log sample 18',\n   [[['e', 3, 1], ['c', 7, 5], ['a', 5, 5], ['a', 4, 5], ['a', 2, 5], ['d', 1, 5], ['e', 3, 5], ['e', 2, 2]],\n    {'a': 2},\n    1],\n   [['a', 5]]),\n  ('event log sample 36',\n   [[['a', 5, 5], ['a', 5, 5], ['b', 2, 5], ['e', 8, 1], ['d', 5, 1], ['e', 7, 5]], {'c': 0, 'a': 2}, 3],\n   [['a', 0], ['c', 0]])],\n [('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('last day inside the window counts', [[['b', 9, 2]], {'b': 3}, 7], [['b', 2]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 16',\n   [[['d', 0, 5], ['b', 3, 2], ['d', 1, 1], ['d', 2, 1]], {'c': 1, 'b': 5}, 1],\n   [['b', 0], ['c', 0]]),\n  ('event log sample 30',\n   [[['e', 7, 5],\n     ['a', 6, 5],\n     ['e', 3, 5],\n     ['a', 3, 5],\n     ['a', 3, 1],\n     ['c', 11, 2],\n     ['d', 8, 2],\n     ['b', 10, 1]],\n    {'d': 5},\n    3],\n   [['d', 0]]),\n  ('event log sample 59',\n   [[['a', 2, 2],\n     ['c', 5, 1],\n     ['d', 0, 2],\n     ['d', 11, 5],\n     ['e', 10, 1],\n     ['e', 1, 5],\n     ['c', 9, 5],\n     ['b', 4, 5]],\n    {'a': 1, 'b': 4, 'c': 3},\n    7],\n   [['a', 2], ['b', 5], ['c', 6]])],\n [('pre-exposure activity is excluded', [[['a', 1, 5], ['a', 3, 2]], {'a': 3}, 7], [['a', 2]]),\n  ('exposure day itself counts', [[['a', 3, 4]], {'a': 3}, 7], [['a', 4]]),\n  ('exposed user with no events reports zero', [[['a', 3, 1]], {'a': 3, 'b': 4}, 7], [['a', 1], ['b', 0]]),\n  ('each user has their own window', [[['a', 2, 1], ['b', 8, 1]], {'a': 0, 'b': 6}, 3], [['a', 1], ['b', 1]]),\n  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 21', [[], {'d': 5, 'c': 2}, 7], [['c', 0], ['d', 0]]),\n  ('event log sample 24',\n   [[['c', 5, 5], ['c', 9, 2], ['c', 6, 5], ['c', 6, 5], ['b', 11, 1], ['e', 6, 5], ['c', 2, 2]],\n    {'c': 2, 'b': 3},\n    7],\n   [['b', 0], ['c', 17]]),\n  ('event log sample 40',\n   [[['a', 8, 2], ['c', 8, 1], ['b', 8, 1], ['d', 1, 2], ['a', 2, 5]], {'d': 1, 'b': 2}, 7],\n   [['b', 1], ['d', 2]])]]\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-exposure-window-window-end","generated_at":"2026-09-29T14:48:57.819975+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Counting pre-exposure activity dilutes effects; dropping silent users biases means upward.","repair":"Use a half-open window ending before start + window_days.","root_cause":"The end check uses day <= start + window_days.","sha256":"54f61997947e9710cd55d98e6dbffc82c9c8c5431ed53087fd21ac642716e852","title":"Post-exposure metric window: The analysis window includes one extra day · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.632,"exit_code":1,"observations":[{"actual":[["a",2]],"check":"pre-exposure activity is excluded","expected":[["a",2]],"passed":true},{"actual":[["a",4]],"check":"exposure day itself counts","expected":[["a",4]],"passed":true},{"actual":[["a",1]],"check":"window end is exclusive","expected":[["a",1]],"passed":true},{"actual":[["b",0]],"check":"last day inside the window counts","expected":[["b",2]],"passed":false},{"actual":[["a",1],["b",0]],"check":"exposed user with no events reports zero","expected":[["a",1],["b",0]],"passed":true},{"actual":[["a",0],["b",0]],"check":"each user has their own window","expected":[["a",1],["b",1]],"passed":false},{"actual":[["a",0],["b",0],["c",0]],"check":"event log sample 1","expected":[["a",0],["b",0],["c",0]],"passed":true},{"actual":[["c",0],["d",0]],"check":"event log sample 2","expected":[["c",0],["d",0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"pre-exposure activity is excluded\", \"actual\": [[\"a\", 2]], \"expected\": [[\"a\", 2]], \"passed\": true}, {\"check\": \"exposure day itself counts\", \"actual\": [[\"a\", 4]], \"expected\": [[\"a\", 4]], \"passed\": true}, {\"check\": \"window end is exclusive\", \"actual\": [[\"a\", 1]], \"expected\": [[\"a\", 1]], \"passed\": true}, {\"check\": \"last day inside the window counts\", \"actual\": [[\"b\", 0]], \"expected\": [[\"b\", 2]], \"passed\": false}, {\"check\": \"exposed user with no events reports zero\", \"actual\": [[\"a\", 1], [\"b\", 0]], \"expected\": [[\"a\", 1], [\"b\", 0]], \"passed\": true}, {\"check\": \"each user has their own window\", \"actual\": [[\"a\", 0], [\"b\", 0]], \"expected\": [[\"a\", 1], [\"b\", 1]], \"passed\": false}, {\"check\": \"event log sample 1\", \"actual\": [[\"a\", 0], [\"b\", 0], [\"c\", 0]], \"expected\": [[\"a\", 0], [\"b\", 0], [\"c\", 0]], \"passed\": true}, {\"check\": \"event log sample 2\", \"actual\": [[\"c\", 0], [\"d\", 0]], \"expected\": [[\"c\", 0], [\"d\", 0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.219,"exit_code":1,"observations":[{"actual":[["a",2]],"check":"pre-exposure activity is excluded","expected":[["a",2]],"passed":true},{"actual":[["a",4]],"check":"exposure day itself counts","expected":[["a",4]],"passed":true},{"actual":[["a",10]],"check":"window end is exclusive","expected":[["a",1]],"passed":false},{"actual":[["b",2]],"check":"last day inside the window counts","expected":[["b",2]],"passed":true},{"actual":[["a",1],["b",0]],"check":"exposed user with no events reports zero","expected":[["a",1],["b",0]],"passed":true},{"actual":[["a",1],["b",1]],"check":"each user has their own window","expected":[["a",1],["b",1]],"passed":true},{"actual":[["a",0],["b",1],["c",0]],"check":"event log sample 1","expected":[["a",0],["b",0],["c",0]],"passed":false},{"actual":[["c",0],["d",0]],"check":"event log sample 2","expected":[["c",0],["d",0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"pre-exposure activity is excluded\", \"actual\": [[\"a\", 2]], \"expected\": [[\"a\", 2]], \"passed\": true}, {\"check\": \"exposure day itself counts\", \"actual\": [[\"a\", 4]], \"expected\": [[\"a\", 4]], \"passed\": true}, {\"check\": \"window end is exclusive\", \"actual\": [[\"a\", 10]], \"expected\": [[\"a\", 1]], \"passed\": false}, {\"check\": \"last day inside the window counts\", \"actual\": [[\"b\", 2]], \"expected\": [[\"b\", 2]], \"passed\": true}, {\"check\": \"exposed user with no events reports zero\", \"actual\": [[\"a\", 1], [\"b\", 0]], \"expected\": [[\"a\", 1], [\"b\", 0]], \"passed\": true}, {\"check\": \"each user has their own window\", \"actual\": [[\"a\", 1], [\"b\", 1]], \"expected\": [[\"a\", 1], [\"b\", 1]], \"passed\": true}, {\"check\": \"event log sample 1\", \"actual\": [[\"a\", 0], [\"b\", 1], [\"c\", 0]], \"expected\": [[\"a\", 0], [\"b\", 0], [\"c\", 0]], \"passed\": false}, {\"check\": \"event log sample 2\", \"actual\": [[\"c\", 0], [\"d\", 0]], \"expected\": [[\"c\", 0], [\"d\", 0]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.932,"exit_code":0,"observations":[{"actual":[["a",2]],"check":"pre-exposure activity is excluded","expected":[["a",2]],"passed":true},{"actual":[["a",4]],"check":"exposure day itself counts","expected":[["a",4]],"passed":true},{"actual":[["a",1]],"check":"window end is exclusive","expected":[["a",1]],"passed":true},{"actual":[["b",2]],"check":"last day inside the window counts","expected":[["b",2]],"passed":true},{"actual":[["a",1],["b",0]],"check":"exposed user with no events reports zero","expected":[["a",1],["b",0]],"passed":true},{"actual":[["a",1],["b",1]],"check":"each user has their own window","expected":[["a",1],["b",1]],"passed":true},{"actual":[["a",0],["b",0],["c",0]],"check":"event log sample 1","expected":[["a",0],["b",0],["c",0]],"passed":true},{"actual":[["c",0],["d",0]],"check":"event log sample 2","expected":[["c",0],["d",0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"pre-exposure activity is excluded\", \"actual\": [[\"a\", 2]], \"expected\": [[\"a\", 2]], \"passed\": true}, {\"check\": \"exposure day itself counts\", \"actual\": [[\"a\", 4]], \"expected\": [[\"a\", 4]], \"passed\": true}, {\"check\": \"window end is exclusive\", \"actual\": [[\"a\", 1]], \"expected\": [[\"a\", 1]], \"passed\": true}, {\"check\": \"last day inside the window counts\", \"actual\": [[\"b\", 2]], \"expected\": [[\"b\", 2]], \"passed\": true}, {\"check\": \"exposed user with no events reports zero\", \"actual\": [[\"a\", 1], [\"b\", 0]], \"expected\": [[\"a\", 1], [\"b\", 0]], \"passed\": true}, {\"check\": \"each user has their own window\", \"actual\": [[\"a\", 1], [\"b\", 1]], \"expected\": [[\"a\", 1], [\"b\", 1]], \"passed\": true}, {\"check\": \"event log sample 1\", \"actual\": [[\"a\", 0], [\"b\", 0], [\"c\", 0]], \"expected\": [[\"a\", 0], [\"b\", 0], [\"c\", 0]], \"passed\": true}, {\"check\": \"event log sample 2\", \"actual\": [[\"c\", 0], [\"d\", 0]], \"expected\": [[\"c\", 0], [\"d\", 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}