{"abstract":"Missing host no implicit root.","category":"Client state","checks":60,"contract":"Portal event ownership follows the logical root rather than its physical host. Root disposal removes only that root and its owned portals; event paths are deduplicated in order and missing containers do not create roots implicitly. Operation missing-host-no-implicit-root has the six explicit input/output oracles below.","evaluation_group":"s3-client-state-root-ownership","failed_approach":"The partial repair `next(iter(roots),None)` still violates the explicit fixture contract.","family":"s3-client-state-root-ownership-missing-host-no-implicit-root","id":"FA-24676","implementations":{"attempt":{"sha256":"fb11b6dd8b43d588953eb059aaadc99104e1b51289f009f59d87eb97963659e6","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    roots, owner, target, portals, event_path, disposed = s\n    if operation == 'portal-logical-owner':\n        return portals.get(event_path[0]) if event_path and event_path[0] in portals else next((r for r,nodes in roots.items() if event_path and event_path[0] in nodes),None)\n    if operation == 'root-disposal-isolation':\n        return {r:nodes for r,nodes in roots.items() if r not in disposed}\n    if operation == 'owned-portal-cleanup':\n        return [p for p,r in portals.items() if r in disposed]\n    if operation == 'physical-container-membership':\n        return target in roots.get(owner,[])\n    if operation == 'event-path-deduplication':\n        return list(dict.fromkeys(event_path))\n    if operation == 'disposed-owner-no-delivery':\n        return owner in roots and owner not in disposed\n    if operation == 'portal-host-root-distinction':\n        return [p for p,r in portals.items() if r==owner]\n    if operation == 'unrelated-roots-retention':\n        return [r for r in roots if r!=owner]\n    if operation == 'root-local-node-count':\n        return len(roots.get(owner,[]))\n    if operation == 'missing-host-no-implicit-root':\n        return next(iter(roots),None)\n    raise ValueError('unknown modeled operation')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('portal-logical-owner scenario 1', solve('portal-logical-owner', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 'r1')\ncheck('portal-logical-owner scenario 2', solve('portal-logical-owner', ({},'r1','a',{},[],[],)), None)\ncheck('portal-logical-owner scenario 3', solve('portal-logical-owner', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 'r1')\ncheck('portal-logical-owner scenario 4', solve('portal-logical-owner', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 'r2')\ncheck('portal-logical-owner scenario 5', solve('portal-logical-owner', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), 'r1')\ncheck('portal-logical-owner scenario 6', solve('portal-logical-owner', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), 'r1')\ncheck('root-disposal-isolation scenario 1', solve('root-disposal-isolation', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), {'r1':['a','b'],'r2':['c']})\ncheck('root-disposal-isolation scenario 2', solve('root-disposal-isolation', ({},'r1','a',{},[],[],)), {})\ncheck('root-disposal-isolation scenario 3', solve('root-disposal-isolation', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), {})\ncheck('root-disposal-isolation scenario 4', solve('root-disposal-isolation', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), {'r1':['a'],'r2':['b']})\ncheck('root-disposal-isolation scenario 5', solve('root-disposal-isolation', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), {'r1':['a']})\ncheck('root-disposal-isolation scenario 6', solve('root-disposal-isolation', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), {'r1':['a']*N})\ncheck('owned-portal-cleanup scenario 1', solve('owned-portal-cleanup', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), [])\ncheck('owned-portal-cleanup scenario 2', solve('owned-portal-cleanup', ({},'r1','a',{},[],[],)), [])\ncheck('owned-portal-cleanup scenario 3', solve('owned-portal-cleanup', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['p'])\ncheck('owned-portal-cleanup scenario 4', solve('owned-portal-cleanup', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), [])\ncheck('owned-portal-cleanup scenario 5', solve('owned-portal-cleanup', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), [])\ncheck('owned-portal-cleanup scenario 6', solve('owned-portal-cleanup', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('physical-container-membership scenario 1', solve('physical-container-membership', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), False)\ncheck('physical-container-membership scenario 2', solve('physical-container-membership', ({},'r1','a',{},[],[],)), False)\ncheck('physical-container-membership scenario 3', solve('physical-container-membership', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), True)\ncheck('physical-container-membership scenario 4', solve('physical-container-membership', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), True)\ncheck('physical-container-membership scenario 5', solve('physical-container-membership', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), False)\ncheck('physical-container-membership scenario 6', solve('physical-container-membership', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), True)\ncheck('event-path-deduplication scenario 1', solve('event-path-deduplication', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['p','c'])\ncheck('event-path-deduplication scenario 2', solve('event-path-deduplication', ({},'r1','a',{},[],[],)), [])\ncheck('event-path-deduplication scenario 3', solve('event-path-deduplication', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['a'])\ncheck('event-path-deduplication scenario 4', solve('event-path-deduplication', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['q','b'])\ncheck('event-path-deduplication scenario 5', solve('event-path-deduplication', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), ['p'])\ncheck('event-path-deduplication scenario 6', solve('event-path-deduplication', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), ['a'])\ncheck('disposed-owner-no-delivery scenario 1', solve('disposed-owner-no-delivery', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 2', solve('disposed-owner-no-delivery', ({},'r1','a',{},[],[],)), False)\ncheck('disposed-owner-no-delivery scenario 3', solve('disposed-owner-no-delivery', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), False)\ncheck('disposed-owner-no-delivery scenario 4', solve('disposed-owner-no-delivery', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 5', solve('disposed-owner-no-delivery', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 6', solve('disposed-owner-no-delivery', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), True)\ncheck('portal-host-root-distinction scenario 1', solve('portal-host-root-distinction', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['p'])\ncheck('portal-host-root-distinction scenario 2', solve('portal-host-root-distinction', ({},'r1','a',{},[],[],)), [])\ncheck('portal-host-root-distinction scenario 3', solve('portal-host-root-distinction', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['p'])\ncheck('portal-host-root-distinction scenario 4', solve('portal-host-root-distinction', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['q'])\ncheck('portal-host-root-distinction scenario 5', solve('portal-host-root-distinction', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), ['p'])\ncheck('portal-host-root-distinction scenario 6', solve('portal-host-root-distinction', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('unrelated-roots-retention scenario 1', solve('unrelated-roots-retention', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['r2'])\ncheck('unrelated-roots-retention scenario 2', solve('unrelated-roots-retention', ({},'r1','a',{},[],[],)), [])\ncheck('unrelated-roots-retention scenario 3', solve('unrelated-roots-retention', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), [])\ncheck('unrelated-roots-retention scenario 4', solve('unrelated-roots-retention', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['r1'])\ncheck('unrelated-roots-retention scenario 5', solve('unrelated-roots-retention', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), [])\ncheck('unrelated-roots-retention scenario 6', solve('unrelated-roots-retention', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('root-local-node-count scenario 1', solve('root-local-node-count', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 2)\ncheck('root-local-node-count scenario 2', solve('root-local-node-count', ({},'r1','a',{},[],[],)), 0)\ncheck('root-local-node-count scenario 3', solve('root-local-node-count', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 1)\ncheck('root-local-node-count scenario 4', solve('root-local-node-count', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 1)\ncheck('root-local-node-count scenario 5', solve('root-local-node-count', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), 1)\ncheck('root-local-node-count scenario 6', solve('root-local-node-count', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), N)\ncheck('missing-host-no-implicit-root scenario 1', solve('missing-host-no-implicit-root', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 'r2')\ncheck('missing-host-no-implicit-root scenario 2', solve('missing-host-no-implicit-root', ({},'r1','a',{},[],[],)), None)\ncheck('missing-host-no-implicit-root scenario 3', solve('missing-host-no-implicit-root', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 'r1')\ncheck('missing-host-no-implicit-root scenario 4', solve('missing-host-no-implicit-root', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 'r2')\ncheck('missing-host-no-implicit-root scenario 5', solve('missing-host-no-implicit-root', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), None)\ncheck('missing-host-no-implicit-root scenario 6', solve('missing-host-no-implicit-root', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), 'r1')\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":"f5c6d52bc7476e50c80e3da573907526250410a4e15b2d1573848624bcdb252a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    roots, owner, target, portals, event_path, disposed = s\n    if operation == 'portal-logical-owner':\n        return portals.get(event_path[0]) if event_path and event_path[0] in portals else next((r for r,nodes in roots.items() if event_path and event_path[0] in nodes),None)\n    if operation == 'root-disposal-isolation':\n        return {r:nodes for r,nodes in roots.items() if r not in disposed}\n    if operation == 'owned-portal-cleanup':\n        return [p for p,r in portals.items() if r in disposed]\n    if operation == 'physical-container-membership':\n        return target in roots.get(owner,[])\n    if operation == 'event-path-deduplication':\n        return list(dict.fromkeys(event_path))\n    if operation == 'disposed-owner-no-delivery':\n        return owner in roots and owner not in disposed\n    if operation == 'portal-host-root-distinction':\n        return [p for p,r in portals.items() if r==owner]\n    if operation == 'unrelated-roots-retention':\n        return [r for r in roots if r!=owner]\n    if operation == 'root-local-node-count':\n        return len(roots.get(owner,[]))\n    if operation == 'missing-host-no-implicit-root':\n        return owner\n    raise ValueError('unknown modeled operation')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('portal-logical-owner scenario 1', solve('portal-logical-owner', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 'r1')\ncheck('portal-logical-owner scenario 2', solve('portal-logical-owner', ({},'r1','a',{},[],[],)), None)\ncheck('portal-logical-owner scenario 3', solve('portal-logical-owner', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 'r1')\ncheck('portal-logical-owner scenario 4', solve('portal-logical-owner', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 'r2')\ncheck('portal-logical-owner scenario 5', solve('portal-logical-owner', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), 'r1')\ncheck('portal-logical-owner scenario 6', solve('portal-logical-owner', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), 'r1')\ncheck('root-disposal-isolation scenario 1', solve('root-disposal-isolation', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), {'r1':['a','b'],'r2':['c']})\ncheck('root-disposal-isolation scenario 2', solve('root-disposal-isolation', ({},'r1','a',{},[],[],)), {})\ncheck('root-disposal-isolation scenario 3', solve('root-disposal-isolation', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), {})\ncheck('root-disposal-isolation scenario 4', solve('root-disposal-isolation', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), {'r1':['a'],'r2':['b']})\ncheck('root-disposal-isolation scenario 5', solve('root-disposal-isolation', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), {'r1':['a']})\ncheck('root-disposal-isolation scenario 6', solve('root-disposal-isolation', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), {'r1':['a']*N})\ncheck('owned-portal-cleanup scenario 1', solve('owned-portal-cleanup', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), [])\ncheck('owned-portal-cleanup scenario 2', solve('owned-portal-cleanup', ({},'r1','a',{},[],[],)), [])\ncheck('owned-portal-cleanup scenario 3', solve('owned-portal-cleanup', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['p'])\ncheck('owned-portal-cleanup scenario 4', solve('owned-portal-cleanup', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), [])\ncheck('owned-portal-cleanup scenario 5', solve('owned-portal-cleanup', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), [])\ncheck('owned-portal-cleanup scenario 6', solve('owned-portal-cleanup', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('physical-container-membership scenario 1', solve('physical-container-membership', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), False)\ncheck('physical-container-membership scenario 2', solve('physical-container-membership', ({},'r1','a',{},[],[],)), False)\ncheck('physical-container-membership scenario 3', solve('physical-container-membership', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), True)\ncheck('physical-container-membership scenario 4', solve('physical-container-membership', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), True)\ncheck('physical-container-membership scenario 5', solve('physical-container-membership', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), False)\ncheck('physical-container-membership scenario 6', solve('physical-container-membership', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), True)\ncheck('event-path-deduplication scenario 1', solve('event-path-deduplication', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['p','c'])\ncheck('event-path-deduplication scenario 2', solve('event-path-deduplication', ({},'r1','a',{},[],[],)), [])\ncheck('event-path-deduplication scenario 3', solve('event-path-deduplication', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['a'])\ncheck('event-path-deduplication scenario 4', solve('event-path-deduplication', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['q','b'])\ncheck('event-path-deduplication scenario 5', solve('event-path-deduplication', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), ['p'])\ncheck('event-path-deduplication scenario 6', solve('event-path-deduplication', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), ['a'])\ncheck('disposed-owner-no-delivery scenario 1', solve('disposed-owner-no-delivery', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 2', solve('disposed-owner-no-delivery', ({},'r1','a',{},[],[],)), False)\ncheck('disposed-owner-no-delivery scenario 3', solve('disposed-owner-no-delivery', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), False)\ncheck('disposed-owner-no-delivery scenario 4', solve('disposed-owner-no-delivery', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 5', solve('disposed-owner-no-delivery', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 6', solve('disposed-owner-no-delivery', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), True)\ncheck('portal-host-root-distinction scenario 1', solve('portal-host-root-distinction', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['p'])\ncheck('portal-host-root-distinction scenario 2', solve('portal-host-root-distinction', ({},'r1','a',{},[],[],)), [])\ncheck('portal-host-root-distinction scenario 3', solve('portal-host-root-distinction', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['p'])\ncheck('portal-host-root-distinction scenario 4', solve('portal-host-root-distinction', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['q'])\ncheck('portal-host-root-distinction scenario 5', solve('portal-host-root-distinction', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), ['p'])\ncheck('portal-host-root-distinction scenario 6', solve('portal-host-root-distinction', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('unrelated-roots-retention scenario 1', solve('unrelated-roots-retention', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['r2'])\ncheck('unrelated-roots-retention scenario 2', solve('unrelated-roots-retention', ({},'r1','a',{},[],[],)), [])\ncheck('unrelated-roots-retention scenario 3', solve('unrelated-roots-retention', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), [])\ncheck('unrelated-roots-retention scenario 4', solve('unrelated-roots-retention', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['r1'])\ncheck('unrelated-roots-retention scenario 5', solve('unrelated-roots-retention', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), [])\ncheck('unrelated-roots-retention scenario 6', solve('unrelated-roots-retention', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('root-local-node-count scenario 1', solve('root-local-node-count', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 2)\ncheck('root-local-node-count scenario 2', solve('root-local-node-count', ({},'r1','a',{},[],[],)), 0)\ncheck('root-local-node-count scenario 3', solve('root-local-node-count', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 1)\ncheck('root-local-node-count scenario 4', solve('root-local-node-count', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 1)\ncheck('root-local-node-count scenario 5', solve('root-local-node-count', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), 1)\ncheck('root-local-node-count scenario 6', solve('root-local-node-count', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), N)\ncheck('missing-host-no-implicit-root scenario 1', solve('missing-host-no-implicit-root', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 'r2')\ncheck('missing-host-no-implicit-root scenario 2', solve('missing-host-no-implicit-root', ({},'r1','a',{},[],[],)), None)\ncheck('missing-host-no-implicit-root scenario 3', solve('missing-host-no-implicit-root', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 'r1')\ncheck('missing-host-no-implicit-root scenario 4', solve('missing-host-no-implicit-root', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 'r2')\ncheck('missing-host-no-implicit-root scenario 5', solve('missing-host-no-implicit-root', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), None)\ncheck('missing-host-no-implicit-root scenario 6', solve('missing-host-no-implicit-root', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), 'r1')\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":"dd6d76a9d8c52555eb8bdca83c6f719f2432ec6929da0dfb331c653e334ea2e1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    roots, owner, target, portals, event_path, disposed = s\n    if operation == 'portal-logical-owner':\n        return portals.get(event_path[0]) if event_path and event_path[0] in portals else next((r for r,nodes in roots.items() if event_path and event_path[0] in nodes),None)\n    if operation == 'root-disposal-isolation':\n        return {r:nodes for r,nodes in roots.items() if r not in disposed}\n    if operation == 'owned-portal-cleanup':\n        return [p for p,r in portals.items() if r in disposed]\n    if operation == 'physical-container-membership':\n        return target in roots.get(owner,[])\n    if operation == 'event-path-deduplication':\n        return list(dict.fromkeys(event_path))\n    if operation == 'disposed-owner-no-delivery':\n        return owner in roots and owner not in disposed\n    if operation == 'portal-host-root-distinction':\n        return [p for p,r in portals.items() if r==owner]\n    if operation == 'unrelated-roots-retention':\n        return [r for r in roots if r!=owner]\n    if operation == 'root-local-node-count':\n        return len(roots.get(owner,[]))\n    if operation == 'missing-host-no-implicit-root':\n        return next((r for r,nodes in roots.items() if target in nodes),None)\n    raise ValueError('unknown modeled operation')\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('portal-logical-owner scenario 1', solve('portal-logical-owner', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 'r1')\ncheck('portal-logical-owner scenario 2', solve('portal-logical-owner', ({},'r1','a',{},[],[],)), None)\ncheck('portal-logical-owner scenario 3', solve('portal-logical-owner', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 'r1')\ncheck('portal-logical-owner scenario 4', solve('portal-logical-owner', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 'r2')\ncheck('portal-logical-owner scenario 5', solve('portal-logical-owner', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), 'r1')\ncheck('portal-logical-owner scenario 6', solve('portal-logical-owner', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), 'r1')\ncheck('root-disposal-isolation scenario 1', solve('root-disposal-isolation', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), {'r1':['a','b'],'r2':['c']})\ncheck('root-disposal-isolation scenario 2', solve('root-disposal-isolation', ({},'r1','a',{},[],[],)), {})\ncheck('root-disposal-isolation scenario 3', solve('root-disposal-isolation', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), {})\ncheck('root-disposal-isolation scenario 4', solve('root-disposal-isolation', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), {'r1':['a'],'r2':['b']})\ncheck('root-disposal-isolation scenario 5', solve('root-disposal-isolation', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), {'r1':['a']})\ncheck('root-disposal-isolation scenario 6', solve('root-disposal-isolation', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), {'r1':['a']*N})\ncheck('owned-portal-cleanup scenario 1', solve('owned-portal-cleanup', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), [])\ncheck('owned-portal-cleanup scenario 2', solve('owned-portal-cleanup', ({},'r1','a',{},[],[],)), [])\ncheck('owned-portal-cleanup scenario 3', solve('owned-portal-cleanup', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['p'])\ncheck('owned-portal-cleanup scenario 4', solve('owned-portal-cleanup', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), [])\ncheck('owned-portal-cleanup scenario 5', solve('owned-portal-cleanup', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), [])\ncheck('owned-portal-cleanup scenario 6', solve('owned-portal-cleanup', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('physical-container-membership scenario 1', solve('physical-container-membership', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), False)\ncheck('physical-container-membership scenario 2', solve('physical-container-membership', ({},'r1','a',{},[],[],)), False)\ncheck('physical-container-membership scenario 3', solve('physical-container-membership', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), True)\ncheck('physical-container-membership scenario 4', solve('physical-container-membership', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), True)\ncheck('physical-container-membership scenario 5', solve('physical-container-membership', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), False)\ncheck('physical-container-membership scenario 6', solve('physical-container-membership', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), True)\ncheck('event-path-deduplication scenario 1', solve('event-path-deduplication', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['p','c'])\ncheck('event-path-deduplication scenario 2', solve('event-path-deduplication', ({},'r1','a',{},[],[],)), [])\ncheck('event-path-deduplication scenario 3', solve('event-path-deduplication', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['a'])\ncheck('event-path-deduplication scenario 4', solve('event-path-deduplication', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['q','b'])\ncheck('event-path-deduplication scenario 5', solve('event-path-deduplication', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), ['p'])\ncheck('event-path-deduplication scenario 6', solve('event-path-deduplication', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), ['a'])\ncheck('disposed-owner-no-delivery scenario 1', solve('disposed-owner-no-delivery', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 2', solve('disposed-owner-no-delivery', ({},'r1','a',{},[],[],)), False)\ncheck('disposed-owner-no-delivery scenario 3', solve('disposed-owner-no-delivery', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), False)\ncheck('disposed-owner-no-delivery scenario 4', solve('disposed-owner-no-delivery', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 5', solve('disposed-owner-no-delivery', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), True)\ncheck('disposed-owner-no-delivery scenario 6', solve('disposed-owner-no-delivery', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), True)\ncheck('portal-host-root-distinction scenario 1', solve('portal-host-root-distinction', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['p'])\ncheck('portal-host-root-distinction scenario 2', solve('portal-host-root-distinction', ({},'r1','a',{},[],[],)), [])\ncheck('portal-host-root-distinction scenario 3', solve('portal-host-root-distinction', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), ['p'])\ncheck('portal-host-root-distinction scenario 4', solve('portal-host-root-distinction', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['q'])\ncheck('portal-host-root-distinction scenario 5', solve('portal-host-root-distinction', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), ['p'])\ncheck('portal-host-root-distinction scenario 6', solve('portal-host-root-distinction', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('unrelated-roots-retention scenario 1', solve('unrelated-roots-retention', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), ['r2'])\ncheck('unrelated-roots-retention scenario 2', solve('unrelated-roots-retention', ({},'r1','a',{},[],[],)), [])\ncheck('unrelated-roots-retention scenario 3', solve('unrelated-roots-retention', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), [])\ncheck('unrelated-roots-retention scenario 4', solve('unrelated-roots-retention', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), ['r1'])\ncheck('unrelated-roots-retention scenario 5', solve('unrelated-roots-retention', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), [])\ncheck('unrelated-roots-retention scenario 6', solve('unrelated-roots-retention', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), [])\ncheck('root-local-node-count scenario 1', solve('root-local-node-count', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 2)\ncheck('root-local-node-count scenario 2', solve('root-local-node-count', ({},'r1','a',{},[],[],)), 0)\ncheck('root-local-node-count scenario 3', solve('root-local-node-count', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 1)\ncheck('root-local-node-count scenario 4', solve('root-local-node-count', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 1)\ncheck('root-local-node-count scenario 5', solve('root-local-node-count', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), 1)\ncheck('root-local-node-count scenario 6', solve('root-local-node-count', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), N)\ncheck('missing-host-no-implicit-root scenario 1', solve('missing-host-no-implicit-root', ({'r1':['a','b'],'r2':['c']},'r1','c',{'p':'r1'},['p','c'],[],)), 'r2')\ncheck('missing-host-no-implicit-root scenario 2', solve('missing-host-no-implicit-root', ({},'r1','a',{},[],[],)), None)\ncheck('missing-host-no-implicit-root scenario 3', solve('missing-host-no-implicit-root', ({'r1':['a']},'r1','a',{'p':'r1'},['a'],['r1'],)), 'r1')\ncheck('missing-host-no-implicit-root scenario 4', solve('missing-host-no-implicit-root', ({'r1':['a'],'r2':['b']},'r2','b',{'p':'r1','q':'r2'},['q','b'],[],)), 'r2')\ncheck('missing-host-no-implicit-root scenario 5', solve('missing-host-no-implicit-root', ({'r1':['a']},'r1','missing',{'p':'r1'},['p'],[],)), None)\ncheck('missing-host-no-implicit-root scenario 6', solve('missing-host-no-implicit-root', ({'r1':['a']*N},'r1','a',{},['a','a'],[],)), 'r1')\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":"Only the explicitly specified operations and finite deterministic records are modeled; no browser or framework conformance is claimed. 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-client-state-root-ownership-missing-host-no-implicit-root","generated_at":"2026-09-29T14:40:59.674609+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline client lifecycle model that isolates a state-management defect without DOM rendering or network services.","repair":"Apply the modeled missing-host-no-implicit-root rule: `next((r for r,nodes in roots.items() if target in nodes),None)`.","root_cause":"The missing-host-no-implicit-root client decision evaluates `owner` instead of `next((r for r,nodes in roots.items() if target in nodes),None)`.","sha256":"c1a83ab68d0a7c85d517167b475ffc827190c8ff367c565b60b1b64f0f75f514","title":"Multiple client roots and portals: Missing host no implicit root · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.444,"exit_code":1,"observations":[{"actual":"r1","check":"portal-logical-owner scenario 1","expected":"r1","passed":true},{"actual":null,"check":"portal-logical-owner scenario 2","expected":null,"passed":true},{"actual":"r1","check":"portal-logical-owner scenario 3","expected":"r1","passed":true},{"actual":"r2","check":"portal-logical-owner scenario 4","expected":"r2","passed":true},{"actual":"r1","check":"portal-logical-owner scenario 5","expected":"r1","passed":true},{"actual":"r1","check":"portal-logical-owner scenario 6","expected":"r1","passed":true},{"actual":{"r1":["a","b"],"r2":["c"]},"check":"root-disposal-isolation scenario 1","expected":{"r1":["a","b"],"r2":["c"]},"passed":true},{"actual":{},"check":"root-disposal-isolation scenario 2","expected":{},"passed":true},{"actual":{},"check":"root-disposal-isolation scenario 3","expected":{},"passed":true},{"actual":{"r1":["a"],"r2":["b"]},"check":"root-disposal-isolation scenario 4","expected":{"r1":["a"],"r2":["b"]},"passed":true},{"actual":{"r1":["a"]},"check":"root-disposal-isolation scenario 5","expected":{"r1":["a"]},"passed":true},{"actual":{"r1":["a"]},"check":"root-disposal-isolation scenario 6","expected":{"r1":["a"]},"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 1","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 2","expected":[],"passed":true},{"actual":["p"],"check":"owned-portal-cleanup scenario 3","expected":["p"],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 4","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 5","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 6","expected":[],"passed":true},{"actual":false,"check":"physical-container-membership scenario 1","expected":false,"passed":true},{"actual":false,"check":"physical-container-membership scenario 2","expected":false,"passed":true},{"actual":true,"check":"physical-container-membership scenario 3","expected":true,"passed":true},{"actual":true,"check":"physical-container-membership scenario 4","expected":true,"passed":true},{"actual":false,"check":"physical-container-membership scenario 5","expected":false,"passed":true},{"actual":true,"check":"physical-container-membership scenario 6","expected":true,"passed":true},{"actual":["p","c"],"check":"event-path-deduplication scenario 1","expected":["p","c"],"passed":true},{"actual":[],"check":"event-path-deduplication scenario 2","expected":[],"passed":true},{"actual":["a"],"check":"event-path-deduplication scenario 3","expected":["a"],"passed":true},{"actual":["q","b"],"check":"event-path-deduplication scenario 4","expected":["q","b"],"passed":true},{"actual":["p"],"check":"event-path-deduplication scenario 5","expected":["p"],"passed":true},{"actual":["a"],"check":"event-path-deduplication scenario 6","expected":["a"],"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 1","expected":true,"passed":true},{"actual":false,"check":"disposed-owner-no-delivery scenario 2","expected":false,"passed":true},{"actual":false,"check":"disposed-owner-no-delivery scenario 3","expected":false,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 4","expected":true,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 5","expected":true,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 6","expected":true,"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 1","expected":["p"],"passed":true},{"actual":[],"check":"portal-host-root-distinction scenario 2","expected":[],"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 3","expected":["p"],"passed":true},{"actual":["q"],"check":"portal-host-root-distinction scenario 4","expected":["q"],"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 5","expected":["p"],"passed":true},{"actual":[],"check":"portal-host-root-distinction scenario 6","expected":[],"passed":true},{"actual":["r2"],"check":"unrelated-roots-retention scenario 1","expected":["r2"],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 2","expected":[],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 3","expected":[],"passed":true},{"actual":["r1"],"check":"unrelated-roots-retention scenario 4","expected":["r1"],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 5","expected":[],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 6","expected":[],"passed":true},{"actual":2,"check":"root-local-node-count scenario 1","expected":2,"passed":true},{"actual":0,"check":"root-local-node-count scenario 2","expected":0,"passed":true},{"actual":1,"check":"root-local-node-count scenario 3","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 4","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 5","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 6","expected":1,"passed":true},{"actual":"r1","check":"missing-host-no-implicit-root scenario 1","expected":"r2","passed":false},{"actual":null,"check":"missing-host-no-implicit-root scenario 2","expected":null,"passed":true},{"actual":"r1","check":"missing-host-no-implicit-root scenario 3","expected":"r1","passed":true},{"actual":"r1","check":"missing-host-no-implicit-root scenario 4","expected":"r2","passed":false},{"actual":"r1","check":"missing-host-no-implicit-root scenario 5","expected":null,"passed":false},{"actual":"r1","check":"missing-host-no-implicit-root scenario 6","expected":"r1","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"portal-logical-owner scenario 1\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"portal-logical-owner scenario 3\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 4\", \"actual\": \"r2\", \"expected\": \"r2\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 5\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 6\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 1\", \"actual\": {\"r1\": [\"a\", \"b\"], \"r2\": [\"c\"]}, \"expected\": {\"r1\": [\"a\", \"b\"], \"r2\": [\"c\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 2\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 3\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 4\", \"actual\": {\"r1\": [\"a\"], \"r2\": [\"b\"]}, \"expected\": {\"r1\": [\"a\"], \"r2\": [\"b\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 5\", \"actual\": {\"r1\": [\"a\"]}, \"expected\": {\"r1\": [\"a\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 6\", \"actual\": {\"r1\": [\"a\"]}, \"expected\": {\"r1\": [\"a\"]}, \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 3\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"physical-container-membership scenario 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"physical-container-membership scenario 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"physical-container-membership scenario 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"event-path-deduplication scenario 1\", \"actual\": [\"p\", \"c\"], \"expected\": [\"p\", \"c\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 4\", \"actual\": [\"q\", \"b\"], \"expected\": [\"q\", \"b\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 5\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 6\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 3\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 1\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 3\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 4\", \"actual\": [\"q\"], \"expected\": [\"q\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 5\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 1\", \"actual\": [\"r2\"], \"expected\": [\"r2\"], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 4\", \"actual\": [\"r1\"], \"expected\": [\"r1\"], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"root-local-node-count scenario 1\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"root-local-node-count scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"root-local-node-count scenario 3\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 4\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 6\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 1\", \"actual\": \"r1\", \"expected\": \"r2\", \"passed\": false}, {\"check\": \"missing-host-no-implicit-root scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 3\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 4\", \"actual\": \"r1\", \"expected\": \"r2\", \"passed\": false}, {\"check\": \"missing-host-no-implicit-root scenario 5\", \"actual\": \"r1\", \"expected\": null, \"passed\": false}, {\"check\": \"missing-host-no-implicit-root scenario 6\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.986,"exit_code":1,"observations":[{"actual":"r1","check":"portal-logical-owner scenario 1","expected":"r1","passed":true},{"actual":null,"check":"portal-logical-owner scenario 2","expected":null,"passed":true},{"actual":"r1","check":"portal-logical-owner scenario 3","expected":"r1","passed":true},{"actual":"r2","check":"portal-logical-owner scenario 4","expected":"r2","passed":true},{"actual":"r1","check":"portal-logical-owner scenario 5","expected":"r1","passed":true},{"actual":"r1","check":"portal-logical-owner scenario 6","expected":"r1","passed":true},{"actual":{"r1":["a","b"],"r2":["c"]},"check":"root-disposal-isolation scenario 1","expected":{"r1":["a","b"],"r2":["c"]},"passed":true},{"actual":{},"check":"root-disposal-isolation scenario 2","expected":{},"passed":true},{"actual":{},"check":"root-disposal-isolation scenario 3","expected":{},"passed":true},{"actual":{"r1":["a"],"r2":["b"]},"check":"root-disposal-isolation scenario 4","expected":{"r1":["a"],"r2":["b"]},"passed":true},{"actual":{"r1":["a"]},"check":"root-disposal-isolation scenario 5","expected":{"r1":["a"]},"passed":true},{"actual":{"r1":["a"]},"check":"root-disposal-isolation scenario 6","expected":{"r1":["a"]},"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 1","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 2","expected":[],"passed":true},{"actual":["p"],"check":"owned-portal-cleanup scenario 3","expected":["p"],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 4","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 5","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 6","expected":[],"passed":true},{"actual":false,"check":"physical-container-membership scenario 1","expected":false,"passed":true},{"actual":false,"check":"physical-container-membership scenario 2","expected":false,"passed":true},{"actual":true,"check":"physical-container-membership scenario 3","expected":true,"passed":true},{"actual":true,"check":"physical-container-membership scenario 4","expected":true,"passed":true},{"actual":false,"check":"physical-container-membership scenario 5","expected":false,"passed":true},{"actual":true,"check":"physical-container-membership scenario 6","expected":true,"passed":true},{"actual":["p","c"],"check":"event-path-deduplication scenario 1","expected":["p","c"],"passed":true},{"actual":[],"check":"event-path-deduplication scenario 2","expected":[],"passed":true},{"actual":["a"],"check":"event-path-deduplication scenario 3","expected":["a"],"passed":true},{"actual":["q","b"],"check":"event-path-deduplication scenario 4","expected":["q","b"],"passed":true},{"actual":["p"],"check":"event-path-deduplication scenario 5","expected":["p"],"passed":true},{"actual":["a"],"check":"event-path-deduplication scenario 6","expected":["a"],"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 1","expected":true,"passed":true},{"actual":false,"check":"disposed-owner-no-delivery scenario 2","expected":false,"passed":true},{"actual":false,"check":"disposed-owner-no-delivery scenario 3","expected":false,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 4","expected":true,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 5","expected":true,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 6","expected":true,"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 1","expected":["p"],"passed":true},{"actual":[],"check":"portal-host-root-distinction scenario 2","expected":[],"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 3","expected":["p"],"passed":true},{"actual":["q"],"check":"portal-host-root-distinction scenario 4","expected":["q"],"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 5","expected":["p"],"passed":true},{"actual":[],"check":"portal-host-root-distinction scenario 6","expected":[],"passed":true},{"actual":["r2"],"check":"unrelated-roots-retention scenario 1","expected":["r2"],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 2","expected":[],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 3","expected":[],"passed":true},{"actual":["r1"],"check":"unrelated-roots-retention scenario 4","expected":["r1"],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 5","expected":[],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 6","expected":[],"passed":true},{"actual":2,"check":"root-local-node-count scenario 1","expected":2,"passed":true},{"actual":0,"check":"root-local-node-count scenario 2","expected":0,"passed":true},{"actual":1,"check":"root-local-node-count scenario 3","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 4","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 5","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 6","expected":1,"passed":true},{"actual":"r1","check":"missing-host-no-implicit-root scenario 1","expected":"r2","passed":false},{"actual":"r1","check":"missing-host-no-implicit-root scenario 2","expected":null,"passed":false},{"actual":"r1","check":"missing-host-no-implicit-root scenario 3","expected":"r1","passed":true},{"actual":"r2","check":"missing-host-no-implicit-root scenario 4","expected":"r2","passed":true},{"actual":"r1","check":"missing-host-no-implicit-root scenario 5","expected":null,"passed":false},{"actual":"r1","check":"missing-host-no-implicit-root scenario 6","expected":"r1","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"portal-logical-owner scenario 1\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"portal-logical-owner scenario 3\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 4\", \"actual\": \"r2\", \"expected\": \"r2\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 5\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 6\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 1\", \"actual\": {\"r1\": [\"a\", \"b\"], \"r2\": [\"c\"]}, \"expected\": {\"r1\": [\"a\", \"b\"], \"r2\": [\"c\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 2\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 3\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 4\", \"actual\": {\"r1\": [\"a\"], \"r2\": [\"b\"]}, \"expected\": {\"r1\": [\"a\"], \"r2\": [\"b\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 5\", \"actual\": {\"r1\": [\"a\"]}, \"expected\": {\"r1\": [\"a\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 6\", \"actual\": {\"r1\": [\"a\"]}, \"expected\": {\"r1\": [\"a\"]}, \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 3\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"physical-container-membership scenario 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"physical-container-membership scenario 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"physical-container-membership scenario 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"event-path-deduplication scenario 1\", \"actual\": [\"p\", \"c\"], \"expected\": [\"p\", \"c\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 4\", \"actual\": [\"q\", \"b\"], \"expected\": [\"q\", \"b\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 5\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 6\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 3\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 1\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 3\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 4\", \"actual\": [\"q\"], \"expected\": [\"q\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 5\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 1\", \"actual\": [\"r2\"], \"expected\": [\"r2\"], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 4\", \"actual\": [\"r1\"], \"expected\": [\"r1\"], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"root-local-node-count scenario 1\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"root-local-node-count scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"root-local-node-count scenario 3\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 4\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 6\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 1\", \"actual\": \"r1\", \"expected\": \"r2\", \"passed\": false}, {\"check\": \"missing-host-no-implicit-root scenario 2\", \"actual\": \"r1\", \"expected\": null, \"passed\": false}, {\"check\": \"missing-host-no-implicit-root scenario 3\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 4\", \"actual\": \"r2\", \"expected\": \"r2\", \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 5\", \"actual\": \"r1\", \"expected\": null, \"passed\": false}, {\"check\": \"missing-host-no-implicit-root scenario 6\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.318,"exit_code":0,"observations":[{"actual":"r1","check":"portal-logical-owner scenario 1","expected":"r1","passed":true},{"actual":null,"check":"portal-logical-owner scenario 2","expected":null,"passed":true},{"actual":"r1","check":"portal-logical-owner scenario 3","expected":"r1","passed":true},{"actual":"r2","check":"portal-logical-owner scenario 4","expected":"r2","passed":true},{"actual":"r1","check":"portal-logical-owner scenario 5","expected":"r1","passed":true},{"actual":"r1","check":"portal-logical-owner scenario 6","expected":"r1","passed":true},{"actual":{"r1":["a","b"],"r2":["c"]},"check":"root-disposal-isolation scenario 1","expected":{"r1":["a","b"],"r2":["c"]},"passed":true},{"actual":{},"check":"root-disposal-isolation scenario 2","expected":{},"passed":true},{"actual":{},"check":"root-disposal-isolation scenario 3","expected":{},"passed":true},{"actual":{"r1":["a"],"r2":["b"]},"check":"root-disposal-isolation scenario 4","expected":{"r1":["a"],"r2":["b"]},"passed":true},{"actual":{"r1":["a"]},"check":"root-disposal-isolation scenario 5","expected":{"r1":["a"]},"passed":true},{"actual":{"r1":["a"]},"check":"root-disposal-isolation scenario 6","expected":{"r1":["a"]},"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 1","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 2","expected":[],"passed":true},{"actual":["p"],"check":"owned-portal-cleanup scenario 3","expected":["p"],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 4","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 5","expected":[],"passed":true},{"actual":[],"check":"owned-portal-cleanup scenario 6","expected":[],"passed":true},{"actual":false,"check":"physical-container-membership scenario 1","expected":false,"passed":true},{"actual":false,"check":"physical-container-membership scenario 2","expected":false,"passed":true},{"actual":true,"check":"physical-container-membership scenario 3","expected":true,"passed":true},{"actual":true,"check":"physical-container-membership scenario 4","expected":true,"passed":true},{"actual":false,"check":"physical-container-membership scenario 5","expected":false,"passed":true},{"actual":true,"check":"physical-container-membership scenario 6","expected":true,"passed":true},{"actual":["p","c"],"check":"event-path-deduplication scenario 1","expected":["p","c"],"passed":true},{"actual":[],"check":"event-path-deduplication scenario 2","expected":[],"passed":true},{"actual":["a"],"check":"event-path-deduplication scenario 3","expected":["a"],"passed":true},{"actual":["q","b"],"check":"event-path-deduplication scenario 4","expected":["q","b"],"passed":true},{"actual":["p"],"check":"event-path-deduplication scenario 5","expected":["p"],"passed":true},{"actual":["a"],"check":"event-path-deduplication scenario 6","expected":["a"],"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 1","expected":true,"passed":true},{"actual":false,"check":"disposed-owner-no-delivery scenario 2","expected":false,"passed":true},{"actual":false,"check":"disposed-owner-no-delivery scenario 3","expected":false,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 4","expected":true,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 5","expected":true,"passed":true},{"actual":true,"check":"disposed-owner-no-delivery scenario 6","expected":true,"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 1","expected":["p"],"passed":true},{"actual":[],"check":"portal-host-root-distinction scenario 2","expected":[],"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 3","expected":["p"],"passed":true},{"actual":["q"],"check":"portal-host-root-distinction scenario 4","expected":["q"],"passed":true},{"actual":["p"],"check":"portal-host-root-distinction scenario 5","expected":["p"],"passed":true},{"actual":[],"check":"portal-host-root-distinction scenario 6","expected":[],"passed":true},{"actual":["r2"],"check":"unrelated-roots-retention scenario 1","expected":["r2"],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 2","expected":[],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 3","expected":[],"passed":true},{"actual":["r1"],"check":"unrelated-roots-retention scenario 4","expected":["r1"],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 5","expected":[],"passed":true},{"actual":[],"check":"unrelated-roots-retention scenario 6","expected":[],"passed":true},{"actual":2,"check":"root-local-node-count scenario 1","expected":2,"passed":true},{"actual":0,"check":"root-local-node-count scenario 2","expected":0,"passed":true},{"actual":1,"check":"root-local-node-count scenario 3","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 4","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 5","expected":1,"passed":true},{"actual":1,"check":"root-local-node-count scenario 6","expected":1,"passed":true},{"actual":"r2","check":"missing-host-no-implicit-root scenario 1","expected":"r2","passed":true},{"actual":null,"check":"missing-host-no-implicit-root scenario 2","expected":null,"passed":true},{"actual":"r1","check":"missing-host-no-implicit-root scenario 3","expected":"r1","passed":true},{"actual":"r2","check":"missing-host-no-implicit-root scenario 4","expected":"r2","passed":true},{"actual":null,"check":"missing-host-no-implicit-root scenario 5","expected":null,"passed":true},{"actual":"r1","check":"missing-host-no-implicit-root scenario 6","expected":"r1","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"portal-logical-owner scenario 1\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"portal-logical-owner scenario 3\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 4\", \"actual\": \"r2\", \"expected\": \"r2\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 5\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"portal-logical-owner scenario 6\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 1\", \"actual\": {\"r1\": [\"a\", \"b\"], \"r2\": [\"c\"]}, \"expected\": {\"r1\": [\"a\", \"b\"], \"r2\": [\"c\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 2\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 3\", \"actual\": {}, \"expected\": {}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 4\", \"actual\": {\"r1\": [\"a\"], \"r2\": [\"b\"]}, \"expected\": {\"r1\": [\"a\"], \"r2\": [\"b\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 5\", \"actual\": {\"r1\": [\"a\"]}, \"expected\": {\"r1\": [\"a\"]}, \"passed\": true}, {\"check\": \"root-disposal-isolation scenario 6\", \"actual\": {\"r1\": [\"a\"]}, \"expected\": {\"r1\": [\"a\"]}, \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 3\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"owned-portal-cleanup scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"physical-container-membership scenario 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"physical-container-membership scenario 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"physical-container-membership scenario 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"physical-container-membership scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"event-path-deduplication scenario 1\", \"actual\": [\"p\", \"c\"], \"expected\": [\"p\", \"c\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 3\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 4\", \"actual\": [\"q\", \"b\"], \"expected\": [\"q\", \"b\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 5\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"event-path-deduplication scenario 6\", \"actual\": [\"a\"], \"expected\": [\"a\"], \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 3\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 4\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"disposed-owner-no-delivery scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 1\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 3\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 4\", \"actual\": [\"q\"], \"expected\": [\"q\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 5\", \"actual\": [\"p\"], \"expected\": [\"p\"], \"passed\": true}, {\"check\": \"portal-host-root-distinction scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 1\", \"actual\": [\"r2\"], \"expected\": [\"r2\"], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 4\", \"actual\": [\"r1\"], \"expected\": [\"r1\"], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unrelated-roots-retention scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"root-local-node-count scenario 1\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"root-local-node-count scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"root-local-node-count scenario 3\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 4\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"root-local-node-count scenario 6\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 1\", \"actual\": \"r2\", \"expected\": \"r2\", \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 3\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 4\", \"actual\": \"r2\", \"expected\": \"r2\", \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"missing-host-no-implicit-root scenario 6\", \"actual\": \"r1\", \"expected\": \"r1\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}