{"abstract":"Temporal enrichment skips tombstones and revives older dimension values.","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].","evaluation_group":"s3-data-systems-temporal-dimension-lookup","failed_approach":"Filtering null payload tombstones before selecting a version likewise resurrects history.","family":"s3-data-systems-temporal-dimension-lookup-tombstone-fallback","id":"FA-45736","implementations":{"attempt":{"sha256":"d7e070c0a396371f96e966ac2368717d7811df66baf51c84c3d3fe7bbd78b509","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 and r[3] is not None]\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":"3ab7a1775462fa77542f95a28e58d43ea9df142a6a28e4ca20cec348f40f8bf2","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 and not r[4]]\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"},"fixed":{"sha256":"a1a05f3bfda2c86083022adb1dac1aefe34ae9e687c4dfd4e7afa571b1d6cf77","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"}},"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-tombstone-fallback","generated_at":"2026-09-29T14:44:25.160225+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.","repair":"Preserve the stated physical representation and operation order: 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].","root_cause":"temporal-dimension-lookup: Temporal enrichment skips tombstones and revives older dimension values.","sha256":"067b7e9625ca735d5e7b8f90e57211905c6400c2aa6772ee788fbc9c23232e27","title":"Temporal enrichment skips tombstones and revives older dimension values · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.777,"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,"new"]],"check":"revision precedence","expected":[[10,"new"]],"passed":true},{"actual":[[10,"old"]],"check":"tombstone blocks old","expected":[[10,null]],"passed":false},{"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, \"new\"]], \"expected\": [[10, \"new\"]], \"passed\": true}, {\"check\": \"tombstone blocks old\", \"actual\": [[10, \"old\"]], \"expected\": [[10, null]], \"passed\": false}, {\"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.18,"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,"new"]],"check":"revision precedence","expected":[[10,"new"]],"passed":true},{"actual":[[10,"old"]],"check":"tombstone blocks old","expected":[[10,null]],"passed":false},{"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, \"new\"]], \"expected\": [[10, \"new\"]], \"passed\": true}, {\"check\": \"tombstone blocks old\", \"actual\": [[10, \"old\"]], \"expected\": [[10, null]], \"passed\": false}, {\"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"},"fixed":{"elapsed_ms":42.54,"exit_code":0,"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,"new"]],"check":"revision precedence","expected":[[10,"new"]],"passed":true},{"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":true,"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, \"new\"]], \"expected\": [[10, \"new\"]], \"passed\": true}, {\"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\": true}\n"}},"verified":true,"visibility":"public"}