{"abstract":"Metric means are inflated because inactive exposed users are excluded.","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].","contract_signature":"events, exposures, window_days","evaluation_group":"w2-experiment-statistics-exposure-window","failed_approach":"Seeding only users with any event, even out of window, still drops fully silent users.","family":"w2-experiment-statistics-exposure-window-zero-activity-users","id":"FA-74551","implementations":{"attempt":{"sha256":"13879a0d363cd7eacea9a33bc41283186b3026d8ecf0cdb9b311ff9554bad1c4","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 if any(e[0] == u for e in events)}\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] = totals.get(user, 0) + 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  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\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  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 7',\n   [[['d', 4, 1], ['a', 5, 2], ['a', 10, 5], ['b', 3, 2], ['a', 3, 2], ['c', 0, 1]], {'b': 5, 'a': 5}, 3],\n   [['a', 2], ['b', 0]]),\n  ('event log sample 10', [[], {'b': 2, 'a': 4, 'c': 5}, 1], [['a', 0], ['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 14',\n   [[['d', 2, 2], ['d', 2, 1], ['b', 3, 2], ['a', 8, 2], ['d', 9, 1], ['d', 6, 2]], {'d': 0, 'c': 3}, 3],\n   [['c', 0], ['d', 3]]),\n  ('event log sample 19', [[['b', 3, 2], ['e', 1, 2], ['d', 8, 1], ['b', 4, 2]], {'c': 4}, 3], [['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 23',\n   [[['b', 1, 2], ['d', 11, 2], ['c', 10, 1], ['a', 10, 5], ['b', 5, 1]], {'c': 2}, 3],\n   [['c', 0]]),\n  ('event log sample 28',\n   [[['a', 10, 1], ['d', 9, 1], ['d', 3, 1], ['d', 6, 5]], {'b': 1, 'd': 0, 'c': 1}, 7],\n   [['b', 0], ['c', 0], ['d', 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 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 42',\n   [[['d', 8, 2], ['e', 10, 2]], {'d': 4, 'a': 0, 'b': 0}, 1],\n   [['a', 0], ['b', 0], ['d', 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":"f638e44f575c65b9fe4497391561aadd540ac0ff64b6dcacf391b52b1173e6ae","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events, exposures, window_days):\n    totals = {}\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] = totals.get(user, 0) + 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  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\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  ('unexposed users are dropped', [[['z', 1, 9]], {'a': 0}, 3], [['a', 0]]),\n  ('event log sample 7',\n   [[['d', 4, 1], ['a', 5, 2], ['a', 10, 5], ['b', 3, 2], ['a', 3, 2], ['c', 0, 1]], {'b': 5, 'a': 5}, 3],\n   [['a', 2], ['b', 0]]),\n  ('event log sample 10', [[], {'b': 2, 'a': 4, 'c': 5}, 1], [['a', 0], ['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 14',\n   [[['d', 2, 2], ['d', 2, 1], ['b', 3, 2], ['a', 8, 2], ['d', 9, 1], ['d', 6, 2]], {'d': 0, 'c': 3}, 3],\n   [['c', 0], ['d', 3]]),\n  ('event log sample 19', [[['b', 3, 2], ['e', 1, 2], ['d', 8, 1], ['b', 4, 2]], {'c': 4}, 3], [['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 23',\n   [[['b', 1, 2], ['d', 11, 2], ['c', 10, 1], ['a', 10, 5], ['b', 5, 1]], {'c': 2}, 3],\n   [['c', 0]]),\n  ('event log sample 28',\n   [[['a', 10, 1], ['d', 9, 1], ['d', 3, 1], ['d', 6, 5]], {'b': 1, 'd': 0, 'c': 1}, 7],\n   [['b', 0], ['c', 0], ['d', 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 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 42',\n   [[['d', 8, 2], ['e', 10, 2]], {'d': 4, 'a': 0, 'b': 0}, 1],\n   [['a', 0], ['b', 0], ['d', 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":"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-zero-activity-users","generated_at":"2026-09-29T14:48:57.863238+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.","root_cause":"Totals are created lazily when an event qualifies.","sha256":"1f0e53968fc4a98809d093c204b376c26d1f3d4d7b74f320294c55828c252ee3","title":"Post-exposure metric window: Exposed users without events disappear · 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.784,"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",2]],"check":"last day inside the window counts","expected":[["b",2]],"passed":true},{"actual":[["a",1]],"check":"exposed user with no events reports zero","expected":[["a",1],["b",0]],"passed":false},{"actual":[],"check":"unexposed users are dropped","expected":[["a",0]],"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]],"check":"event log sample 2","expected":[["c",0],["d",0]],"passed":false}],"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\", 2]], \"expected\": [[\"b\", 2]], \"passed\": true}, {\"check\": \"exposed user with no events reports zero\", \"actual\": [[\"a\", 1]], \"expected\": [[\"a\", 1], [\"b\", 0]], \"passed\": false}, {\"check\": \"unexposed users are dropped\", \"actual\": [], \"expected\": [[\"a\", 0]], \"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]], \"expected\": [[\"c\", 0], [\"d\", 0]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.426,"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",2]],"check":"last day inside the window counts","expected":[["b",2]],"passed":true},{"actual":[["a",1]],"check":"exposed user with no events reports zero","expected":[["a",1],["b",0]],"passed":false},{"actual":[],"check":"unexposed users are dropped","expected":[["a",0]],"passed":false},{"actual":[],"check":"event log sample 1","expected":[["a",0],["b",0],["c",0]],"passed":false},{"actual":[],"check":"event log sample 2","expected":[["c",0],["d",0]],"passed":false}],"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\", 2]], \"expected\": [[\"b\", 2]], \"passed\": true}, {\"check\": \"exposed user with no events reports zero\", \"actual\": [[\"a\", 1]], \"expected\": [[\"a\", 1], [\"b\", 0]], \"passed\": false}, {\"check\": \"unexposed users are dropped\", \"actual\": [], \"expected\": [[\"a\", 0]], \"passed\": false}, {\"check\": \"event log sample 1\", \"actual\": [], \"expected\": [[\"a\", 0], [\"b\", 0], [\"c\", 0]], \"passed\": false}, {\"check\": \"event log sample 2\", \"actual\": [], \"expected\": [[\"c\", 0], [\"d\", 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."}}