{"abstract":"A user attribute true compares as 1 ms after the epoch and matches \"before\" clauses.","category":"Feature flag rollout bucketing","checks":8,"contract":"Values are epoch milliseconds (int or float) or UTC strings exactly \"YYYY-MM-DDTHH:MM:SSZ\" converted to milliseconds; booleans, other strings and invalid dates are unusable and make the clause false. op before means user < clause, after means user > clause (strict); other ops are false.","evaluation_group":"w2-feature-flag-rollout-bucketing-date-clause","failed_approach":"Rejecting only True still accepts False as the epoch.","family":"w2-feature-flag-rollout-bucketing-date-clause-boolean-timestamp","id":"FA-74291","implementations":{"attempt":{"sha256":"eda4a0ff44e23dd41600f5410173ab60dd4cb8d582a26bc863df00516a9b65f6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(user_value, op, clause_value):\n    def ms(v):\n        if v is True:\n            return None\n        if isinstance(v, (int, float)):\n            return v\n        if isinstance(v, str) and len(v) == 20 and v.endswith('Z'):\n            try:\n                d = datetime.datetime.strptime(v, '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=datetime.timezone.utc)\n            except ValueError:\n                return None\n            return int(d.timestamp()) * 1000\n        return None\n    a, b = ms(user_value), ms(clause_value)\n    if a is None or b is None:\n        return False\n    if op == 'before':\n        return a < b\n    if op == 'after':\n        return a > b\n    return False\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ISO clause converts to milliseconds', [1700000000001, 'after', '2023-11-14T22:13:20Z'], True),\n  ('boolean user value is unusable', [True, 'after', 0], False),\n  ('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('timestamp pair sample 1', ['2023-11-14T23:13:20+01:00', 'on', True], False),\n  ('timestamp pair sample 2', [0, 'before', 1700000000000], True),\n  ('timestamp pair sample 3', [1700000000, 'after', 1700000000001], False)],\n [('boolean user value is unusable', [True, 'after', 0], False),\n  ('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('timestamp pair sample 6', [True, 'after', 1700000000001], False),\n  ('timestamp pair sample 25', [False, 'before', '2023-11-14T22:13:20Z'], False),\n  ('timestamp pair sample 54', [False, 'before', '2023-11-14T22:13:20Z'], False)],\n [('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('timestamp pair sample 11', ['soon', 'after', 1700000000001], False),\n  ('timestamp pair sample 48', [False, 'before', 1699999999999], False),\n  ('timestamp pair sample 54', [False, 'before', '2023-11-14T22:13:20Z'], False)],\n [('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('invalid calendar date is unusable', ['2023-02-30T00:00:00Z', 'before', 1800000000000], False),\n  ('timestamp pair sample 4', [1700000000001, 'after', False], False),\n  ('timestamp pair sample 16', ['2023-11-14T22:13:20Z', 'before', True], False),\n  ('timestamp pair sample 44', [True, 'before', '2023-11-14T22:13:20Z'], False)],\n [('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('invalid calendar date is unusable', ['2023-02-30T00:00:00Z', 'before', 1800000000000], False),\n  ('seconds epoch compared as milliseconds', [1700000000, 'before', '2023-11-14T22:13:20Z'], True),\n  ('timestamp pair sample 21', ['soon', 'after', '2023-11-14T22:13:20Z'], False),\n  ('timestamp pair sample 28', [True, 'before', 1700000000001], False),\n  ('timestamp pair sample 48', [False, 'before', 1699999999999], False)]]\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":"a6fe3601324ae1ea72e69e6965a037b336188651fca7e69f4b6950a8c6711ce6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(user_value, op, clause_value):\n    def ms(v):\n        if isinstance(v, (int, float)):\n            return v\n        if isinstance(v, str) and len(v) == 20 and v.endswith('Z'):\n            try:\n                d = datetime.datetime.strptime(v, '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=datetime.timezone.utc)\n            except ValueError:\n                return None\n            return int(d.timestamp()) * 1000\n        return None\n    a, b = ms(user_value), ms(clause_value)\n    if a is None or b is None:\n        return False\n    if op == 'before':\n        return a < b\n    if op == 'after':\n        return a > b\n    return False\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ISO clause converts to milliseconds', [1700000000001, 'after', '2023-11-14T22:13:20Z'], True),\n  ('boolean user value is unusable', [True, 'after', 0], False),\n  ('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('timestamp pair sample 1', ['2023-11-14T23:13:20+01:00', 'on', True], False),\n  ('timestamp pair sample 2', [0, 'before', 1700000000000], True),\n  ('timestamp pair sample 3', [1700000000, 'after', 1700000000001], False)],\n [('boolean user value is unusable', [True, 'after', 0], False),\n  ('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('timestamp pair sample 6', [True, 'after', 1700000000001], False),\n  ('timestamp pair sample 25', [False, 'before', '2023-11-14T22:13:20Z'], False),\n  ('timestamp pair sample 54', [False, 'before', '2023-11-14T22:13:20Z'], False)],\n [('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('timestamp pair sample 11', ['soon', 'after', 1700000000001], False),\n  ('timestamp pair sample 48', [False, 'before', 1699999999999], False),\n  ('timestamp pair sample 54', [False, 'before', '2023-11-14T22:13:20Z'], False)],\n [('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('invalid calendar date is unusable', ['2023-02-30T00:00:00Z', 'before', 1800000000000], False),\n  ('timestamp pair sample 4', [1700000000001, 'after', False], False),\n  ('timestamp pair sample 16', ['2023-11-14T22:13:20Z', 'before', True], False),\n  ('timestamp pair sample 44', [True, 'before', '2023-11-14T22:13:20Z'], False)],\n [('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('invalid calendar date is unusable', ['2023-02-30T00:00:00Z', 'before', 1800000000000], False),\n  ('seconds epoch compared as milliseconds', [1700000000, 'before', '2023-11-14T22:13:20Z'], True),\n  ('timestamp pair sample 21', ['soon', 'after', '2023-11-14T22:13:20Z'], False),\n  ('timestamp pair sample 28', [True, 'before', 1700000000001], False),\n  ('timestamp pair sample 48', [False, 'before', 1699999999999], False)]]\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":"ff03827e82c048645a5049dacc27b5ade6c4527b8cddaf9eb8cdad4b0d4f8fb9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport datetime\nN = 1\nobservations = []\ndef solve(user_value, op, clause_value):\n    def ms(v):\n        if isinstance(v, bool):\n            return None\n        if isinstance(v, (int, float)):\n            return v\n        if isinstance(v, str) and len(v) == 20 and v.endswith('Z'):\n            try:\n                d = datetime.datetime.strptime(v, '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=datetime.timezone.utc)\n            except ValueError:\n                return None\n            return int(d.timestamp()) * 1000\n        return None\n    a, b = ms(user_value), ms(clause_value)\n    if a is None or b is None:\n        return False\n    if op == 'before':\n        return a < b\n    if op == 'after':\n        return a > b\n    return False\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('ISO clause converts to milliseconds', [1700000000001, 'after', '2023-11-14T22:13:20Z'], True),\n  ('boolean user value is unusable', [True, 'after', 0], False),\n  ('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('timestamp pair sample 1', ['2023-11-14T23:13:20+01:00', 'on', True], False),\n  ('timestamp pair sample 2', [0, 'before', 1700000000000], True),\n  ('timestamp pair sample 3', [1700000000, 'after', 1700000000001], False)],\n [('boolean user value is unusable', [True, 'after', 0], False),\n  ('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('timestamp pair sample 6', [True, 'after', 1700000000001], False),\n  ('timestamp pair sample 25', [False, 'before', '2023-11-14T22:13:20Z'], False),\n  ('timestamp pair sample 54', [False, 'before', '2023-11-14T22:13:20Z'], False)],\n [('false user value is unusable', [False, 'before', 1], False),\n  ('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('timestamp pair sample 11', ['soon', 'after', 1700000000001], False),\n  ('timestamp pair sample 48', [False, 'before', 1699999999999], False),\n  ('timestamp pair sample 54', [False, 'before', '2023-11-14T22:13:20Z'], False)],\n [('equal timestamps are not before', [1700000000000, 'before', '2023-11-14T22:13:20Z'], False),\n  ('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('invalid calendar date is unusable', ['2023-02-30T00:00:00Z', 'before', 1800000000000], False),\n  ('timestamp pair sample 4', [1700000000001, 'after', False], False),\n  ('timestamp pair sample 16', ['2023-11-14T22:13:20Z', 'before', True], False),\n  ('timestamp pair sample 44', [True, 'before', '2023-11-14T22:13:20Z'], False)],\n [('one millisecond earlier is before', [1699999999999, 'before', 1700000000000], True),\n  ('offset string is unusable', ['2023-11-14T23:13:20+01:00', 'before', '2023-11-14T22:13:21Z'], False),\n  ('explicit UTC offset spelling is unusable', ['2023-11-14T22:13:20+00:00', 'before', 1800000000000], False),\n  ('invalid calendar date is unusable', ['2023-02-30T00:00:00Z', 'before', 1800000000000], False),\n  ('seconds epoch compared as milliseconds', [1700000000, 'before', '2023-11-14T22:13:20Z'], True),\n  ('timestamp pair sample 21', ['soon', 'after', '2023-11-14T22:13:20Z'], False),\n  ('timestamp pair sample 28', [True, 'before', 1700000000001], False),\n  ('timestamp pair sample 48', [False, 'before', 1699999999999], False)]]\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-date-clause-boolean-timestamp","generated_at":"2026-09-29T14:48:55.232364+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Date clauses schedule launches and trials; unit and timezone slips shift them by days or years.","repair":"Reject booleans before numeric handling.","root_cause":"bool values pass the int/float check because bool subclasses int.","sha256":"e6a12e85924f67f4639e9a465562df155195e125106249b1b6cb735e4d2058c7","title":"Timestamp targeting clause: Booleans are treated as epoch milliseconds · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.665,"exit_code":1,"observations":[{"actual":true,"check":"ISO clause converts to milliseconds","expected":true,"passed":true},{"actual":false,"check":"boolean user value is unusable","expected":false,"passed":true},{"actual":true,"check":"false user value is unusable","expected":false,"passed":false},{"actual":false,"check":"equal timestamps are not before","expected":false,"passed":true},{"actual":true,"check":"one millisecond earlier is before","expected":true,"passed":true},{"actual":false,"check":"timestamp pair sample 1","expected":false,"passed":true},{"actual":true,"check":"timestamp pair sample 2","expected":true,"passed":true},{"actual":false,"check":"timestamp pair sample 3","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ISO clause converts to milliseconds\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"boolean user value is unusable\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"false user value is unusable\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"equal timestamps are not before\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"one millisecond earlier is before\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"timestamp pair sample 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"timestamp pair sample 2\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"timestamp pair sample 3\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.03,"exit_code":1,"observations":[{"actual":true,"check":"ISO clause converts to milliseconds","expected":true,"passed":true},{"actual":true,"check":"boolean user value is unusable","expected":false,"passed":false},{"actual":true,"check":"false user value is unusable","expected":false,"passed":false},{"actual":false,"check":"equal timestamps are not before","expected":false,"passed":true},{"actual":true,"check":"one millisecond earlier is before","expected":true,"passed":true},{"actual":false,"check":"timestamp pair sample 1","expected":false,"passed":true},{"actual":true,"check":"timestamp pair sample 2","expected":true,"passed":true},{"actual":false,"check":"timestamp pair sample 3","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ISO clause converts to milliseconds\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"boolean user value is unusable\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"false user value is unusable\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"equal timestamps are not before\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"one millisecond earlier is before\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"timestamp pair sample 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"timestamp pair sample 2\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"timestamp pair sample 3\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.638,"exit_code":0,"observations":[{"actual":true,"check":"ISO clause converts to milliseconds","expected":true,"passed":true},{"actual":false,"check":"boolean user value is unusable","expected":false,"passed":true},{"actual":false,"check":"false user value is unusable","expected":false,"passed":true},{"actual":false,"check":"equal timestamps are not before","expected":false,"passed":true},{"actual":true,"check":"one millisecond earlier is before","expected":true,"passed":true},{"actual":false,"check":"timestamp pair sample 1","expected":false,"passed":true},{"actual":true,"check":"timestamp pair sample 2","expected":true,"passed":true},{"actual":false,"check":"timestamp pair sample 3","expected":false,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"ISO clause converts to milliseconds\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"boolean user value is unusable\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"false user value is unusable\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"equal timestamps are not before\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"one millisecond earlier is before\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"timestamp pair sample 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"timestamp pair sample 2\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"timestamp pair sample 3\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}