{"abstract":"Normal-edge loan proof is reused on an unwind or cancellation edge.","category":"Borrow checking","checks":21,"contract":"Validate reuse of static borrow proof certificates. Cache entry belongs to same IR revision, same normalized place, same mutability, same lifetime substitution, same solver universe, same CFG edge kind and same target layout; negative results are invalidated when new outlives facts arrive; incomplete fixed-point results are never reusable; diagnostic reuse rebinds source spans to current lifetime occurrence mapping. Input is a fully explicit descriptor of the stated toy IR. Return rule identifiers in declaration order; absent optional obligations use the provided neutral defaults. No rule is an assertion about a production language.","evaluation_group":"s3-borrow-checking-borrow-proof-cache","failed_approach":"The partial repair uses if d['reused'] and d['edge']=='normal' and d['cached_edge']!='normal': errors.append('edge-kind-key'), which still violates the stipulated analysis contract.","family":"s3-borrow-checking-borrow-proof-cache-edge-kind-key","id":"FA-44266","implementations":{"attempt":{"sha256":"b4295fc61dcdf502a2c26647203b40e02afbc28a5fa58e5318384aa569fbd2c2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    errors=[]\n    if d['reused'] and d['cached_revision']!=d['revision']: errors.append('ir-revision')\n    if d['reused'] and d['cached_place']!=d['place']: errors.append('normalized-place-key')\n    if d['reused'] and d['cached_mut']!=d['mutable']: errors.append('permission-key')\n    if d['reused'] and d['cached_substitution']!=d['substitution']: errors.append('substitution-key')\n    if d['reused'] and d['cached_universe']!=d['universe']: errors.append('universe-key')\n    if d['reused'] and d['edge']=='normal' and d['cached_edge']!='normal': errors.append('edge-kind-key')\n    if d['reused'] and d['cached_layout']!=d['layout']: errors.append('layout-key')\n    if d['reused'] and d['negative'] and set(d['old_facts'])!=set(d['facts']): errors.append('negative-fact-invalidation')\n    if d['reused'] and not d['complete']: errors.append('provisional-result')\n    if d['reused'] and d['cached_spans']!=d['spans']: errors.append('diagnostic-span-rebind')\n    return errors\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nbase={'cached_revision': 0, 'revision': 0, 'cached_place': [], 'place': [], 'cached_mut': False, 'mutable': False, 'cached_substitution': {}, 'substitution': {}, 'cached_universe': 0, 'universe': 0, 'cached_edge': 'normal', 'edge': 'normal', 'cached_layout': [], 'layout': [], 'negative': False, 'old_facts': [], 'facts': [], 'complete': True, 'reused': False, 'cached_spans': {}, 'spans': {}}\ncheck('well formed empty obligations',solve(base),[])\ncheck('ir-revision regression 0', solve(dict(base, **({'reused':True,'cached_revision':N,'revision':N+1}))), ['ir-revision'])\ncheck('ir-revision regression 1', solve(dict(base, **({'reused':True,'cached_revision':N+1,'revision':N+2}))), ['ir-revision'])\ncheck('normalized-place-key regression 0', solve(dict(base, **({'reused':True,'cached_place':['r','a'],'place':['r','b']}))), ['normalized-place-key'])\ncheck('normalized-place-key regression 1', solve(dict(base, **({'reused':True,'cached_place':['r',N],'place':['r',N+1]}))), ['normalized-place-key'])\ncheck('permission-key regression 0', solve(dict(base, **({'reused':True,'cached_mut':False,'mutable':True}))), ['permission-key'])\ncheck('permission-key regression 1', solve(dict(base, **({'reused':True,'cached_mut':False,'mutable':True,'revision':N,'cached_revision':N}))), ['permission-key'])\ncheck('substitution-key regression 0', solve(dict(base, **({'reused':True,'cached_substitution':{'a':'x'},'substitution':{'a':'y'}}))), ['substitution-key'])\ncheck('substitution-key regression 1', solve(dict(base, **({'reused':True,'cached_substitution':{'a':N},'substitution':{'a':N+1}}))), ['substitution-key'])\ncheck('universe-key regression 0', solve(dict(base, **({'reused':True,'cached_universe':N,'universe':N+1}))), ['universe-key'])\ncheck('universe-key regression 1', solve(dict(base, **({'reused':True,'cached_universe':N+1,'universe':N+2}))), ['universe-key'])\ncheck('edge-kind-key regression 0', solve(dict(base, **({'reused':True,'cached_edge':'normal','edge':'unwind'}))), ['edge-kind-key'])\ncheck('edge-kind-key regression 1', solve(dict(base, **({'reused':True,'cached_edge':'normal','edge':'cancel','revision':N,'cached_revision':N}))), ['edge-kind-key'])\ncheck('layout-key regression 0', solve(dict(base, **({'reused':True,'cached_layout':[0,4],'layout':[0,8]}))), ['layout-key'])\ncheck('layout-key regression 1', solve(dict(base, **({'reused':True,'cached_layout':[0,N],'layout':[0,N+1]}))), ['layout-key'])\ncheck('negative-fact-invalidation regression 0', solve(dict(base, **({'reused':True,'negative':True,'old_facts':['a'],'facts':['a','b']}))), ['negative-fact-invalidation'])\ncheck('negative-fact-invalidation regression 1', solve(dict(base, **({'reused':True,'negative':True,'old_facts':[N],'facts':[N,N+1]}))), ['negative-fact-invalidation'])\ncheck('provisional-result regression 0', solve(dict(base, **({'reused':True,'complete':False}))), ['provisional-result'])\ncheck('provisional-result regression 1', solve(dict(base, **({'reused':True,'complete':False,'revision':N,'cached_revision':N}))), ['provisional-result'])\ncheck('diagnostic-span-rebind regression 0', solve(dict(base, **({'reused':True,'cached_spans':{'a':1},'spans':{'a':2}}))), ['diagnostic-span-rebind'])\ncheck('diagnostic-span-rebind regression 1', solve(dict(base, **({'reused':True,'cached_spans':{'a':N},'spans':{'a':N+1}}))), ['diagnostic-span-rebind'])\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":"31a89678c2874b033b1f5246582d2359b1851253c585c5ddcd00ac45bdab5d3f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    errors=[]\n    if d['reused'] and d['cached_revision']!=d['revision']: errors.append('ir-revision')\n    if d['reused'] and d['cached_place']!=d['place']: errors.append('normalized-place-key')\n    if d['reused'] and d['cached_mut']!=d['mutable']: errors.append('permission-key')\n    if d['reused'] and d['cached_substitution']!=d['substitution']: errors.append('substitution-key')\n    if d['reused'] and d['cached_universe']!=d['universe']: errors.append('universe-key')\n    if False: errors.append('edge-kind-key')\n    if d['reused'] and d['cached_layout']!=d['layout']: errors.append('layout-key')\n    if d['reused'] and d['negative'] and set(d['old_facts'])!=set(d['facts']): errors.append('negative-fact-invalidation')\n    if d['reused'] and not d['complete']: errors.append('provisional-result')\n    if d['reused'] and d['cached_spans']!=d['spans']: errors.append('diagnostic-span-rebind')\n    return errors\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nbase={'cached_revision': 0, 'revision': 0, 'cached_place': [], 'place': [], 'cached_mut': False, 'mutable': False, 'cached_substitution': {}, 'substitution': {}, 'cached_universe': 0, 'universe': 0, 'cached_edge': 'normal', 'edge': 'normal', 'cached_layout': [], 'layout': [], 'negative': False, 'old_facts': [], 'facts': [], 'complete': True, 'reused': False, 'cached_spans': {}, 'spans': {}}\ncheck('well formed empty obligations',solve(base),[])\ncheck('ir-revision regression 0', solve(dict(base, **({'reused':True,'cached_revision':N,'revision':N+1}))), ['ir-revision'])\ncheck('ir-revision regression 1', solve(dict(base, **({'reused':True,'cached_revision':N+1,'revision':N+2}))), ['ir-revision'])\ncheck('normalized-place-key regression 0', solve(dict(base, **({'reused':True,'cached_place':['r','a'],'place':['r','b']}))), ['normalized-place-key'])\ncheck('normalized-place-key regression 1', solve(dict(base, **({'reused':True,'cached_place':['r',N],'place':['r',N+1]}))), ['normalized-place-key'])\ncheck('permission-key regression 0', solve(dict(base, **({'reused':True,'cached_mut':False,'mutable':True}))), ['permission-key'])\ncheck('permission-key regression 1', solve(dict(base, **({'reused':True,'cached_mut':False,'mutable':True,'revision':N,'cached_revision':N}))), ['permission-key'])\ncheck('substitution-key regression 0', solve(dict(base, **({'reused':True,'cached_substitution':{'a':'x'},'substitution':{'a':'y'}}))), ['substitution-key'])\ncheck('substitution-key regression 1', solve(dict(base, **({'reused':True,'cached_substitution':{'a':N},'substitution':{'a':N+1}}))), ['substitution-key'])\ncheck('universe-key regression 0', solve(dict(base, **({'reused':True,'cached_universe':N,'universe':N+1}))), ['universe-key'])\ncheck('universe-key regression 1', solve(dict(base, **({'reused':True,'cached_universe':N+1,'universe':N+2}))), ['universe-key'])\ncheck('edge-kind-key regression 0', solve(dict(base, **({'reused':True,'cached_edge':'normal','edge':'unwind'}))), ['edge-kind-key'])\ncheck('edge-kind-key regression 1', solve(dict(base, **({'reused':True,'cached_edge':'normal','edge':'cancel','revision':N,'cached_revision':N}))), ['edge-kind-key'])\ncheck('layout-key regression 0', solve(dict(base, **({'reused':True,'cached_layout':[0,4],'layout':[0,8]}))), ['layout-key'])\ncheck('layout-key regression 1', solve(dict(base, **({'reused':True,'cached_layout':[0,N],'layout':[0,N+1]}))), ['layout-key'])\ncheck('negative-fact-invalidation regression 0', solve(dict(base, **({'reused':True,'negative':True,'old_facts':['a'],'facts':['a','b']}))), ['negative-fact-invalidation'])\ncheck('negative-fact-invalidation regression 1', solve(dict(base, **({'reused':True,'negative':True,'old_facts':[N],'facts':[N,N+1]}))), ['negative-fact-invalidation'])\ncheck('provisional-result regression 0', solve(dict(base, **({'reused':True,'complete':False}))), ['provisional-result'])\ncheck('provisional-result regression 1', solve(dict(base, **({'reused':True,'complete':False,'revision':N,'cached_revision':N}))), ['provisional-result'])\ncheck('diagnostic-span-rebind regression 0', solve(dict(base, **({'reused':True,'cached_spans':{'a':1},'spans':{'a':2}}))), ['diagnostic-span-rebind'])\ncheck('diagnostic-span-rebind regression 1', solve(dict(base, **({'reused':True,'cached_spans':{'a':N},'spans':{'a':N+1}}))), ['diagnostic-span-rebind'])\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":"e07a91d2c5d03114027bfb411d6f4a36c5eb2d58c1b59201804912fc1a0bfb29","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(d):\n    errors=[]\n    if d['reused'] and d['cached_revision']!=d['revision']: errors.append('ir-revision')\n    if d['reused'] and d['cached_place']!=d['place']: errors.append('normalized-place-key')\n    if d['reused'] and d['cached_mut']!=d['mutable']: errors.append('permission-key')\n    if d['reused'] and d['cached_substitution']!=d['substitution']: errors.append('substitution-key')\n    if d['reused'] and d['cached_universe']!=d['universe']: errors.append('universe-key')\n    if d['reused'] and d['cached_edge']!=d['edge']: errors.append('edge-kind-key')\n    if d['reused'] and d['cached_layout']!=d['layout']: errors.append('layout-key')\n    if d['reused'] and d['negative'] and set(d['old_facts'])!=set(d['facts']): errors.append('negative-fact-invalidation')\n    if d['reused'] and not d['complete']: errors.append('provisional-result')\n    if d['reused'] and d['cached_spans']!=d['spans']: errors.append('diagnostic-span-rebind')\n    return errors\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nbase={'cached_revision': 0, 'revision': 0, 'cached_place': [], 'place': [], 'cached_mut': False, 'mutable': False, 'cached_substitution': {}, 'substitution': {}, 'cached_universe': 0, 'universe': 0, 'cached_edge': 'normal', 'edge': 'normal', 'cached_layout': [], 'layout': [], 'negative': False, 'old_facts': [], 'facts': [], 'complete': True, 'reused': False, 'cached_spans': {}, 'spans': {}}\ncheck('well formed empty obligations',solve(base),[])\ncheck('ir-revision regression 0', solve(dict(base, **({'reused':True,'cached_revision':N,'revision':N+1}))), ['ir-revision'])\ncheck('ir-revision regression 1', solve(dict(base, **({'reused':True,'cached_revision':N+1,'revision':N+2}))), ['ir-revision'])\ncheck('normalized-place-key regression 0', solve(dict(base, **({'reused':True,'cached_place':['r','a'],'place':['r','b']}))), ['normalized-place-key'])\ncheck('normalized-place-key regression 1', solve(dict(base, **({'reused':True,'cached_place':['r',N],'place':['r',N+1]}))), ['normalized-place-key'])\ncheck('permission-key regression 0', solve(dict(base, **({'reused':True,'cached_mut':False,'mutable':True}))), ['permission-key'])\ncheck('permission-key regression 1', solve(dict(base, **({'reused':True,'cached_mut':False,'mutable':True,'revision':N,'cached_revision':N}))), ['permission-key'])\ncheck('substitution-key regression 0', solve(dict(base, **({'reused':True,'cached_substitution':{'a':'x'},'substitution':{'a':'y'}}))), ['substitution-key'])\ncheck('substitution-key regression 1', solve(dict(base, **({'reused':True,'cached_substitution':{'a':N},'substitution':{'a':N+1}}))), ['substitution-key'])\ncheck('universe-key regression 0', solve(dict(base, **({'reused':True,'cached_universe':N,'universe':N+1}))), ['universe-key'])\ncheck('universe-key regression 1', solve(dict(base, **({'reused':True,'cached_universe':N+1,'universe':N+2}))), ['universe-key'])\ncheck('edge-kind-key regression 0', solve(dict(base, **({'reused':True,'cached_edge':'normal','edge':'unwind'}))), ['edge-kind-key'])\ncheck('edge-kind-key regression 1', solve(dict(base, **({'reused':True,'cached_edge':'normal','edge':'cancel','revision':N,'cached_revision':N}))), ['edge-kind-key'])\ncheck('layout-key regression 0', solve(dict(base, **({'reused':True,'cached_layout':[0,4],'layout':[0,8]}))), ['layout-key'])\ncheck('layout-key regression 1', solve(dict(base, **({'reused':True,'cached_layout':[0,N],'layout':[0,N+1]}))), ['layout-key'])\ncheck('negative-fact-invalidation regression 0', solve(dict(base, **({'reused':True,'negative':True,'old_facts':['a'],'facts':['a','b']}))), ['negative-fact-invalidation'])\ncheck('negative-fact-invalidation regression 1', solve(dict(base, **({'reused':True,'negative':True,'old_facts':[N],'facts':[N,N+1]}))), ['negative-fact-invalidation'])\ncheck('provisional-result regression 0', solve(dict(base, **({'reused':True,'complete':False}))), ['provisional-result'])\ncheck('provisional-result regression 1', solve(dict(base, **({'reused':True,'complete':False,'revision':N,'cached_revision':N}))), ['provisional-result'])\ncheck('diagnostic-span-rebind regression 0', solve(dict(base, **({'reused':True,'cached_spans':{'a':1},'spans':{'a':2}}))), ['diagnostic-span-rebind'])\ncheck('diagnostic-span-rebind regression 1', solve(dict(base, **({'reused':True,'cached_spans':{'a':N},'spans':{'a':N+1}}))), ['diagnostic-span-rebind'])\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":"The explicitly stated toy language is the complete scope; this is not a production compiler or a claim about Rust semantics. 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-borrow-checking-borrow-proof-cache-edge-kind-key","generated_at":"2026-09-29T14:44:10.449319+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A finite offline static-analysis model of ownership and borrowing; it does not execute the analyzed program.","repair":"Apply the specified transfer or inference rule at this site: if d['reused'] and d['cached_edge']!=d['edge']: errors.append('edge-kind-key').","root_cause":"The static analyzer mishandles edge kind key: normal-edge loan proof is reused on an unwind or cancellation edge.","sha256":"fd595da2cd8043102c892fc5328508f878f2da8a68f3c3e274fd88571671b60a","title":"Normal-edge loan proof is reused on an unwind or cancellation edge · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.878,"exit_code":1,"observations":[{"actual":[],"check":"well formed empty obligations","expected":[],"passed":true},{"actual":["ir-revision"],"check":"ir-revision regression 0","expected":["ir-revision"],"passed":true},{"actual":["ir-revision"],"check":"ir-revision regression 1","expected":["ir-revision"],"passed":true},{"actual":["normalized-place-key"],"check":"normalized-place-key regression 0","expected":["normalized-place-key"],"passed":true},{"actual":["normalized-place-key"],"check":"normalized-place-key regression 1","expected":["normalized-place-key"],"passed":true},{"actual":["permission-key"],"check":"permission-key regression 0","expected":["permission-key"],"passed":true},{"actual":["permission-key"],"check":"permission-key regression 1","expected":["permission-key"],"passed":true},{"actual":["substitution-key"],"check":"substitution-key regression 0","expected":["substitution-key"],"passed":true},{"actual":["substitution-key"],"check":"substitution-key regression 1","expected":["substitution-key"],"passed":true},{"actual":["universe-key"],"check":"universe-key regression 0","expected":["universe-key"],"passed":true},{"actual":["universe-key"],"check":"universe-key regression 1","expected":["universe-key"],"passed":true},{"actual":[],"check":"edge-kind-key regression 0","expected":["edge-kind-key"],"passed":false},{"actual":[],"check":"edge-kind-key regression 1","expected":["edge-kind-key"],"passed":false},{"actual":["layout-key"],"check":"layout-key regression 0","expected":["layout-key"],"passed":true},{"actual":["layout-key"],"check":"layout-key regression 1","expected":["layout-key"],"passed":true},{"actual":["negative-fact-invalidation"],"check":"negative-fact-invalidation regression 0","expected":["negative-fact-invalidation"],"passed":true},{"actual":["negative-fact-invalidation"],"check":"negative-fact-invalidation regression 1","expected":["negative-fact-invalidation"],"passed":true},{"actual":["provisional-result"],"check":"provisional-result regression 0","expected":["provisional-result"],"passed":true},{"actual":["provisional-result"],"check":"provisional-result regression 1","expected":["provisional-result"],"passed":true},{"actual":["diagnostic-span-rebind"],"check":"diagnostic-span-rebind regression 0","expected":["diagnostic-span-rebind"],"passed":true},{"actual":["diagnostic-span-rebind"],"check":"diagnostic-span-rebind regression 1","expected":["diagnostic-span-rebind"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"well formed empty obligations\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"ir-revision regression 0\", \"actual\": [\"ir-revision\"], \"expected\": [\"ir-revision\"], \"passed\": true}, {\"check\": \"ir-revision regression 1\", \"actual\": [\"ir-revision\"], \"expected\": [\"ir-revision\"], \"passed\": true}, {\"check\": \"normalized-place-key regression 0\", \"actual\": [\"normalized-place-key\"], \"expected\": [\"normalized-place-key\"], \"passed\": true}, {\"check\": \"normalized-place-key regression 1\", \"actual\": [\"normalized-place-key\"], \"expected\": [\"normalized-place-key\"], \"passed\": true}, {\"check\": \"permission-key regression 0\", \"actual\": [\"permission-key\"], \"expected\": [\"permission-key\"], \"passed\": true}, {\"check\": \"permission-key regression 1\", \"actual\": [\"permission-key\"], \"expected\": [\"permission-key\"], \"passed\": true}, {\"check\": \"substitution-key regression 0\", \"actual\": [\"substitution-key\"], \"expected\": [\"substitution-key\"], \"passed\": true}, {\"check\": \"substitution-key regression 1\", \"actual\": [\"substitution-key\"], \"expected\": [\"substitution-key\"], \"passed\": true}, {\"check\": \"universe-key regression 0\", \"actual\": [\"universe-key\"], \"expected\": [\"universe-key\"], \"passed\": true}, {\"check\": \"universe-key regression 1\", \"actual\": [\"universe-key\"], \"expected\": [\"universe-key\"], \"passed\": true}, {\"check\": \"edge-kind-key regression 0\", \"actual\": [], \"expected\": [\"edge-kind-key\"], \"passed\": false}, {\"check\": \"edge-kind-key regression 1\", \"actual\": [], \"expected\": [\"edge-kind-key\"], \"passed\": false}, {\"check\": \"layout-key regression 0\", \"actual\": [\"layout-key\"], \"expected\": [\"layout-key\"], \"passed\": true}, {\"check\": \"layout-key regression 1\", \"actual\": [\"layout-key\"], \"expected\": [\"layout-key\"], \"passed\": true}, {\"check\": \"negative-fact-invalidation regression 0\", \"actual\": [\"negative-fact-invalidation\"], \"expected\": [\"negative-fact-invalidation\"], \"passed\": true}, {\"check\": \"negative-fact-invalidation regression 1\", \"actual\": [\"negative-fact-invalidation\"], \"expected\": [\"negative-fact-invalidation\"], \"passed\": true}, {\"check\": \"provisional-result regression 0\", \"actual\": [\"provisional-result\"], \"expected\": [\"provisional-result\"], \"passed\": true}, {\"check\": \"provisional-result regression 1\", \"actual\": [\"provisional-result\"], \"expected\": [\"provisional-result\"], \"passed\": true}, {\"check\": \"diagnostic-span-rebind regression 0\", \"actual\": [\"diagnostic-span-rebind\"], \"expected\": [\"diagnostic-span-rebind\"], \"passed\": true}, {\"check\": \"diagnostic-span-rebind regression 1\", \"actual\": [\"diagnostic-span-rebind\"], \"expected\": [\"diagnostic-span-rebind\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.913,"exit_code":1,"observations":[{"actual":[],"check":"well formed empty obligations","expected":[],"passed":true},{"actual":["ir-revision"],"check":"ir-revision regression 0","expected":["ir-revision"],"passed":true},{"actual":["ir-revision"],"check":"ir-revision regression 1","expected":["ir-revision"],"passed":true},{"actual":["normalized-place-key"],"check":"normalized-place-key regression 0","expected":["normalized-place-key"],"passed":true},{"actual":["normalized-place-key"],"check":"normalized-place-key regression 1","expected":["normalized-place-key"],"passed":true},{"actual":["permission-key"],"check":"permission-key regression 0","expected":["permission-key"],"passed":true},{"actual":["permission-key"],"check":"permission-key regression 1","expected":["permission-key"],"passed":true},{"actual":["substitution-key"],"check":"substitution-key regression 0","expected":["substitution-key"],"passed":true},{"actual":["substitution-key"],"check":"substitution-key regression 1","expected":["substitution-key"],"passed":true},{"actual":["universe-key"],"check":"universe-key regression 0","expected":["universe-key"],"passed":true},{"actual":["universe-key"],"check":"universe-key regression 1","expected":["universe-key"],"passed":true},{"actual":[],"check":"edge-kind-key regression 0","expected":["edge-kind-key"],"passed":false},{"actual":[],"check":"edge-kind-key regression 1","expected":["edge-kind-key"],"passed":false},{"actual":["layout-key"],"check":"layout-key regression 0","expected":["layout-key"],"passed":true},{"actual":["layout-key"],"check":"layout-key regression 1","expected":["layout-key"],"passed":true},{"actual":["negative-fact-invalidation"],"check":"negative-fact-invalidation regression 0","expected":["negative-fact-invalidation"],"passed":true},{"actual":["negative-fact-invalidation"],"check":"negative-fact-invalidation regression 1","expected":["negative-fact-invalidation"],"passed":true},{"actual":["provisional-result"],"check":"provisional-result regression 0","expected":["provisional-result"],"passed":true},{"actual":["provisional-result"],"check":"provisional-result regression 1","expected":["provisional-result"],"passed":true},{"actual":["diagnostic-span-rebind"],"check":"diagnostic-span-rebind regression 0","expected":["diagnostic-span-rebind"],"passed":true},{"actual":["diagnostic-span-rebind"],"check":"diagnostic-span-rebind regression 1","expected":["diagnostic-span-rebind"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"well formed empty obligations\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"ir-revision regression 0\", \"actual\": [\"ir-revision\"], \"expected\": [\"ir-revision\"], \"passed\": true}, {\"check\": \"ir-revision regression 1\", \"actual\": [\"ir-revision\"], \"expected\": [\"ir-revision\"], \"passed\": true}, {\"check\": \"normalized-place-key regression 0\", \"actual\": [\"normalized-place-key\"], \"expected\": [\"normalized-place-key\"], \"passed\": true}, {\"check\": \"normalized-place-key regression 1\", \"actual\": [\"normalized-place-key\"], \"expected\": [\"normalized-place-key\"], \"passed\": true}, {\"check\": \"permission-key regression 0\", \"actual\": [\"permission-key\"], \"expected\": [\"permission-key\"], \"passed\": true}, {\"check\": \"permission-key regression 1\", \"actual\": [\"permission-key\"], \"expected\": [\"permission-key\"], \"passed\": true}, {\"check\": \"substitution-key regression 0\", \"actual\": [\"substitution-key\"], \"expected\": [\"substitution-key\"], \"passed\": true}, {\"check\": \"substitution-key regression 1\", \"actual\": [\"substitution-key\"], \"expected\": [\"substitution-key\"], \"passed\": true}, {\"check\": \"universe-key regression 0\", \"actual\": [\"universe-key\"], \"expected\": [\"universe-key\"], \"passed\": true}, {\"check\": \"universe-key regression 1\", \"actual\": [\"universe-key\"], \"expected\": [\"universe-key\"], \"passed\": true}, {\"check\": \"edge-kind-key regression 0\", \"actual\": [], \"expected\": [\"edge-kind-key\"], \"passed\": false}, {\"check\": \"edge-kind-key regression 1\", \"actual\": [], \"expected\": [\"edge-kind-key\"], \"passed\": false}, {\"check\": \"layout-key regression 0\", \"actual\": [\"layout-key\"], \"expected\": [\"layout-key\"], \"passed\": true}, {\"check\": \"layout-key regression 1\", \"actual\": [\"layout-key\"], \"expected\": [\"layout-key\"], \"passed\": true}, {\"check\": \"negative-fact-invalidation regression 0\", \"actual\": [\"negative-fact-invalidation\"], \"expected\": [\"negative-fact-invalidation\"], \"passed\": true}, {\"check\": \"negative-fact-invalidation regression 1\", \"actual\": [\"negative-fact-invalidation\"], \"expected\": [\"negative-fact-invalidation\"], \"passed\": true}, {\"check\": \"provisional-result regression 0\", \"actual\": [\"provisional-result\"], \"expected\": [\"provisional-result\"], \"passed\": true}, {\"check\": \"provisional-result regression 1\", \"actual\": [\"provisional-result\"], \"expected\": [\"provisional-result\"], \"passed\": true}, {\"check\": \"diagnostic-span-rebind regression 0\", \"actual\": [\"diagnostic-span-rebind\"], \"expected\": [\"diagnostic-span-rebind\"], \"passed\": true}, {\"check\": \"diagnostic-span-rebind regression 1\", \"actual\": [\"diagnostic-span-rebind\"], \"expected\": [\"diagnostic-span-rebind\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":48.357,"exit_code":0,"observations":[{"actual":[],"check":"well formed empty obligations","expected":[],"passed":true},{"actual":["ir-revision"],"check":"ir-revision regression 0","expected":["ir-revision"],"passed":true},{"actual":["ir-revision"],"check":"ir-revision regression 1","expected":["ir-revision"],"passed":true},{"actual":["normalized-place-key"],"check":"normalized-place-key regression 0","expected":["normalized-place-key"],"passed":true},{"actual":["normalized-place-key"],"check":"normalized-place-key regression 1","expected":["normalized-place-key"],"passed":true},{"actual":["permission-key"],"check":"permission-key regression 0","expected":["permission-key"],"passed":true},{"actual":["permission-key"],"check":"permission-key regression 1","expected":["permission-key"],"passed":true},{"actual":["substitution-key"],"check":"substitution-key regression 0","expected":["substitution-key"],"passed":true},{"actual":["substitution-key"],"check":"substitution-key regression 1","expected":["substitution-key"],"passed":true},{"actual":["universe-key"],"check":"universe-key regression 0","expected":["universe-key"],"passed":true},{"actual":["universe-key"],"check":"universe-key regression 1","expected":["universe-key"],"passed":true},{"actual":["edge-kind-key"],"check":"edge-kind-key regression 0","expected":["edge-kind-key"],"passed":true},{"actual":["edge-kind-key"],"check":"edge-kind-key regression 1","expected":["edge-kind-key"],"passed":true},{"actual":["layout-key"],"check":"layout-key regression 0","expected":["layout-key"],"passed":true},{"actual":["layout-key"],"check":"layout-key regression 1","expected":["layout-key"],"passed":true},{"actual":["negative-fact-invalidation"],"check":"negative-fact-invalidation regression 0","expected":["negative-fact-invalidation"],"passed":true},{"actual":["negative-fact-invalidation"],"check":"negative-fact-invalidation regression 1","expected":["negative-fact-invalidation"],"passed":true},{"actual":["provisional-result"],"check":"provisional-result regression 0","expected":["provisional-result"],"passed":true},{"actual":["provisional-result"],"check":"provisional-result regression 1","expected":["provisional-result"],"passed":true},{"actual":["diagnostic-span-rebind"],"check":"diagnostic-span-rebind regression 0","expected":["diagnostic-span-rebind"],"passed":true},{"actual":["diagnostic-span-rebind"],"check":"diagnostic-span-rebind regression 1","expected":["diagnostic-span-rebind"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"well formed empty obligations\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"ir-revision regression 0\", \"actual\": [\"ir-revision\"], \"expected\": [\"ir-revision\"], \"passed\": true}, {\"check\": \"ir-revision regression 1\", \"actual\": [\"ir-revision\"], \"expected\": [\"ir-revision\"], \"passed\": true}, {\"check\": \"normalized-place-key regression 0\", \"actual\": [\"normalized-place-key\"], \"expected\": [\"normalized-place-key\"], \"passed\": true}, {\"check\": \"normalized-place-key regression 1\", \"actual\": [\"normalized-place-key\"], \"expected\": [\"normalized-place-key\"], \"passed\": true}, {\"check\": \"permission-key regression 0\", \"actual\": [\"permission-key\"], \"expected\": [\"permission-key\"], \"passed\": true}, {\"check\": \"permission-key regression 1\", \"actual\": [\"permission-key\"], \"expected\": [\"permission-key\"], \"passed\": true}, {\"check\": \"substitution-key regression 0\", \"actual\": [\"substitution-key\"], \"expected\": [\"substitution-key\"], \"passed\": true}, {\"check\": \"substitution-key regression 1\", \"actual\": [\"substitution-key\"], \"expected\": [\"substitution-key\"], \"passed\": true}, {\"check\": \"universe-key regression 0\", \"actual\": [\"universe-key\"], \"expected\": [\"universe-key\"], \"passed\": true}, {\"check\": \"universe-key regression 1\", \"actual\": [\"universe-key\"], \"expected\": [\"universe-key\"], \"passed\": true}, {\"check\": \"edge-kind-key regression 0\", \"actual\": [\"edge-kind-key\"], \"expected\": [\"edge-kind-key\"], \"passed\": true}, {\"check\": \"edge-kind-key regression 1\", \"actual\": [\"edge-kind-key\"], \"expected\": [\"edge-kind-key\"], \"passed\": true}, {\"check\": \"layout-key regression 0\", \"actual\": [\"layout-key\"], \"expected\": [\"layout-key\"], \"passed\": true}, {\"check\": \"layout-key regression 1\", \"actual\": [\"layout-key\"], \"expected\": [\"layout-key\"], \"passed\": true}, {\"check\": \"negative-fact-invalidation regression 0\", \"actual\": [\"negative-fact-invalidation\"], \"expected\": [\"negative-fact-invalidation\"], \"passed\": true}, {\"check\": \"negative-fact-invalidation regression 1\", \"actual\": [\"negative-fact-invalidation\"], \"expected\": [\"negative-fact-invalidation\"], \"passed\": true}, {\"check\": \"provisional-result regression 0\", \"actual\": [\"provisional-result\"], \"expected\": [\"provisional-result\"], \"passed\": true}, {\"check\": \"provisional-result regression 1\", \"actual\": [\"provisional-result\"], \"expected\": [\"provisional-result\"], \"passed\": true}, {\"check\": \"diagnostic-span-rebind regression 0\", \"actual\": [\"diagnostic-span-rebind\"], \"expected\": [\"diagnostic-span-rebind\"], \"passed\": true}, {\"check\": \"diagnostic-span-rebind regression 1\", \"actual\": [\"diagnostic-span-rebind\"], \"expected\": [\"diagnostic-span-rebind\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}