{"abstract":"Temporal enrichment ignores revisions at equal effective time.","category":"Data systems","checks":7,"contract":"Enrich facts [id,key,event-time] from versioned dimension rows [key,valid-from,revision,payload,tombstone]. For matching non-null key, use the greatest (valid-from,revision) no later than fact time. A selected tombstone yields None and blocks fallback to older versions. Emit [fact-id,payload-or-None].","contract_signature":"d","evaluation_group":"s3-data-systems-temporal-dimension-lookup","failed_approach":"Choosing the lowest revision explicitly still selects stale data.","family":"s3-data-systems-temporal-dimension-lookup-revision-tie","id":"FA-45731","implementations":{"attempt":{"sha256":"180a9722e90d8e24b6d803fc73c474ff38bdff70c5255133663c6bc2a07ce293","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        facts,versions=d\n        out=[]\n        for ident,key,time in facts:\n            candidates=[r for r in versions if key is not None and r[0]==key and r[1]<=time]\n            if not candidates: out.append([ident,None]); continue\n            chosen=max(candidates,key=lambda r:(r[1],-r[2]))\n            out.append([ident,None if chosen[4] else chosen[3]])\n        return out\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('future ignored', solve([[[10, 'a', 2]], [['a', 1, 1, 'old', False], ['a', 3, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 1]], [['a', 1, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 1]], [['a', 1, 1, 'old', False], ['a', 1, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 2]], [['a', 1, 1, 'old', False], ['a', 2, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 1]], [['a', 1, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 2]], [['a', 1, 1, 'right', False], ['b', 2, 1, 'wrong', False], [None, 2, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 1]], []]), [[10, None]])\nelif N == 2:\n    check('future ignored', solve([[[10, 'a', 3]], [['a', 2, 1, 'old', False], ['a', 4, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 2]], [['a', 2, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 2]], [['a', 2, 1, 'old', False], ['a', 2, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 3]], [['a', 2, 1, 'old', False], ['a', 3, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 2]], [['a', 2, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 3]], [['a', 2, 1, 'right', False], ['b', 3, 1, 'wrong', False], [None, 3, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 2]], []]), [[10, None]])\nelif N == 3:\n    check('future ignored', solve([[[10, 'a', 4]], [['a', 3, 1, 'old', False], ['a', 5, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 3]], [['a', 3, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 3]], [['a', 3, 1, 'old', False], ['a', 3, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 4]], [['a', 3, 1, 'old', False], ['a', 4, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 3]], [['a', 3, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 4]], [['a', 3, 1, 'right', False], ['b', 4, 1, 'wrong', False], [None, 4, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 3]], []]), [[10, None]])\nelif N == 4:\n    check('future ignored', solve([[[10, 'a', 5]], [['a', 4, 1, 'old', False], ['a', 6, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 4]], [['a', 4, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 4]], [['a', 4, 1, 'old', False], ['a', 4, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 5]], [['a', 4, 1, 'old', False], ['a', 5, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 4]], [['a', 4, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 5]], [['a', 4, 1, 'right', False], ['b', 5, 1, 'wrong', False], [None, 5, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 4]], []]), [[10, None]])\nelif N == 5:\n    check('future ignored', solve([[[10, 'a', 6]], [['a', 5, 1, 'old', False], ['a', 7, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 5]], [['a', 5, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 5]], [['a', 5, 1, 'old', False], ['a', 5, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 6]], [['a', 5, 1, 'old', False], ['a', 6, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 5]], [['a', 5, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 6]], [['a', 5, 1, 'right', False], ['b', 6, 1, 'wrong', False], [None, 6, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 5]], []]), [[10, None]])\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":"77c461730a8ac0f56115361ace4fb4ce990835c03d679cfec1c0c27fa3dd7002","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    try:\n        facts,versions=d\n        out=[]\n        for ident,key,time in facts:\n            candidates=[r for r in versions if key is not None and r[0]==key and r[1]<=time]\n            if not candidates: out.append([ident,None]); continue\n            chosen=max(candidates,key=lambda r:r[1])\n            out.append([ident,None if chosen[4] else chosen[3]])\n        return out\n    except (IndexError, KeyError, ValueError, StopIteration) as exc:\n        return {\"representation_error\": type(exc).__name__}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nif N == 1:\n    check('future ignored', solve([[[10, 'a', 2]], [['a', 1, 1, 'old', False], ['a', 3, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 1]], [['a', 1, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 1]], [['a', 1, 1, 'old', False], ['a', 1, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 2]], [['a', 1, 1, 'old', False], ['a', 2, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 1]], [['a', 1, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 2]], [['a', 1, 1, 'right', False], ['b', 2, 1, 'wrong', False], [None, 2, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 1]], []]), [[10, None]])\nelif N == 2:\n    check('future ignored', solve([[[10, 'a', 3]], [['a', 2, 1, 'old', False], ['a', 4, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 2]], [['a', 2, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 2]], [['a', 2, 1, 'old', False], ['a', 2, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 3]], [['a', 2, 1, 'old', False], ['a', 3, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 2]], [['a', 2, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 3]], [['a', 2, 1, 'right', False], ['b', 3, 1, 'wrong', False], [None, 3, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 2]], []]), [[10, None]])\nelif N == 3:\n    check('future ignored', solve([[[10, 'a', 4]], [['a', 3, 1, 'old', False], ['a', 5, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 3]], [['a', 3, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 3]], [['a', 3, 1, 'old', False], ['a', 3, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 4]], [['a', 3, 1, 'old', False], ['a', 4, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 3]], [['a', 3, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 4]], [['a', 3, 1, 'right', False], ['b', 4, 1, 'wrong', False], [None, 4, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 3]], []]), [[10, None]])\nelif N == 4:\n    check('future ignored', solve([[[10, 'a', 5]], [['a', 4, 1, 'old', False], ['a', 6, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 4]], [['a', 4, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 4]], [['a', 4, 1, 'old', False], ['a', 4, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 5]], [['a', 4, 1, 'old', False], ['a', 5, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 4]], [['a', 4, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 5]], [['a', 4, 1, 'right', False], ['b', 5, 1, 'wrong', False], [None, 5, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 4]], []]), [[10, None]])\nelif N == 5:\n    check('future ignored', solve([[[10, 'a', 6]], [['a', 5, 1, 'old', False], ['a', 7, 1, 'future', False]]]), [[10, 'old']])\n    check('exact effective time', solve([[[10, 'a', 5]], [['a', 5, 1, 'current', False]]]), [[10, 'current']])\n    check('revision precedence', solve([[[10, 'a', 5]], [['a', 5, 1, 'old', False], ['a', 5, 2, 'new', False]]]), [[10, 'new']])\n    check('tombstone blocks old', solve([[[10, 'a', 6]], [['a', 5, 1, 'old', False], ['a', 6, 1, None, True]]]), [[10, None]])\n    check('tombstone hidden payload', solve([[[10, 'a', 5]], [['a', 5, 1, 'hidden', True]]]), [[10, None]])\n    check('other key', solve([[[10, 'a', 6]], [['a', 5, 1, 'right', False], ['b', 6, 1, 'wrong', False], [None, 6, 2, 'wildcard', False]]]), [[10, 'right']])\n    check('absent dimension', solve([[[10, 'a', 5]], []]), [[10, None]])\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":"Offline stipulated semantics over valid small inputs; no performance, concurrency, or production-engine conformance claim. 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":"s3-data-systems-temporal-dimension-lookup-revision-tie","generated_at":"2026-09-29T14:44:25.320112+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A bounded deterministic data engine model makes representation and changelog faults reproducible.","root_cause":"temporal-dimension-lookup: Temporal enrichment ignores revisions at equal effective time.","sha256":"f71278162147c355173272d9a1c4a764b04cb0899cd85d7c02acbf1429340123","title":"Temporal enrichment ignores revisions at equal effective time · 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":46.069,"exit_code":1,"observations":[{"actual":[[10,"old"]],"check":"future ignored","expected":[[10,"old"]],"passed":true},{"actual":[[10,"current"]],"check":"exact effective time","expected":[[10,"current"]],"passed":true},{"actual":[[10,"old"]],"check":"revision precedence","expected":[[10,"new"]],"passed":false},{"actual":[[10,null]],"check":"tombstone blocks old","expected":[[10,null]],"passed":true},{"actual":[[10,null]],"check":"tombstone hidden payload","expected":[[10,null]],"passed":true},{"actual":[[10,"right"]],"check":"other key","expected":[[10,"right"]],"passed":true},{"actual":[[10,null]],"check":"absent dimension","expected":[[10,null]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"future ignored\", \"actual\": [[10, \"old\"]], \"expected\": [[10, \"old\"]], \"passed\": true}, {\"check\": \"exact effective time\", \"actual\": [[10, \"current\"]], \"expected\": [[10, \"current\"]], \"passed\": true}, {\"check\": \"revision precedence\", \"actual\": [[10, \"old\"]], \"expected\": [[10, \"new\"]], \"passed\": false}, {\"check\": \"tombstone blocks old\", \"actual\": [[10, null]], \"expected\": [[10, null]], \"passed\": true}, {\"check\": \"tombstone hidden payload\", \"actual\": [[10, null]], \"expected\": [[10, null]], \"passed\": true}, {\"check\": \"other key\", \"actual\": [[10, \"right\"]], \"expected\": [[10, \"right\"]], \"passed\": true}, {\"check\": \"absent dimension\", \"actual\": [[10, null]], \"expected\": [[10, null]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":46.163,"exit_code":1,"observations":[{"actual":[[10,"old"]],"check":"future ignored","expected":[[10,"old"]],"passed":true},{"actual":[[10,"current"]],"check":"exact effective time","expected":[[10,"current"]],"passed":true},{"actual":[[10,"old"]],"check":"revision precedence","expected":[[10,"new"]],"passed":false},{"actual":[[10,null]],"check":"tombstone blocks old","expected":[[10,null]],"passed":true},{"actual":[[10,null]],"check":"tombstone hidden payload","expected":[[10,null]],"passed":true},{"actual":[[10,"right"]],"check":"other key","expected":[[10,"right"]],"passed":true},{"actual":[[10,null]],"check":"absent dimension","expected":[[10,null]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"future ignored\", \"actual\": [[10, \"old\"]], \"expected\": [[10, \"old\"]], \"passed\": true}, {\"check\": \"exact effective time\", \"actual\": [[10, \"current\"]], \"expected\": [[10, \"current\"]], \"passed\": true}, {\"check\": \"revision precedence\", \"actual\": [[10, \"old\"]], \"expected\": [[10, \"new\"]], \"passed\": false}, {\"check\": \"tombstone blocks old\", \"actual\": [[10, null]], \"expected\": [[10, null]], \"passed\": true}, {\"check\": \"tombstone hidden payload\", \"actual\": [[10, null]], \"expected\": [[10, null]], \"passed\": true}, {\"check\": \"other key\", \"actual\": [[10, \"right\"]], \"expected\": [[10, \"right\"]], \"passed\": true}, {\"check\": \"absent dimension\", \"actual\": [[10, null]], \"expected\": [[10, null]], \"passed\": true}], \"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."}}