{"abstract":"Cancel overrides upload status.","category":"Client state","checks":80,"contract":"This local upload view tracks parts and blob preview ownership, not a wire protocol. Accepted parts alone advance durable progress; cancellation aborts unaccepted sends; zero-byte parts still require acknowledgment; detached previews are released. Operation cancel-overrides-upload-status has the six explicit input/output oracles below.","evaluation_group":"s3-client-state-upload-view","failed_approach":"The partial repair `'cancelled' if cancelled and not sent else status` still violates the explicit fixture contract.","family":"s3-client-state-upload-view-cancel-overrides-upload-status","id":"FA-24256","implementations":{"attempt":{"sha256":"1dde49ed07ccb7e7ccb49fc8552da075a069bf32a309b851a4c7efb547d14fce","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    sizes, accepted, sent, cancelled, status, preview, attached = s\n    if operation == 'accepted-progress-not-sent':\n        return sum(sizes[i] for i in accepted)\n    if operation == 'remaining-local-parts':\n        return [i for i in range(len(sizes)) if i not in accepted]\n    if operation == 'cancel-overrides-upload-status':\n        return 'cancelled' if cancelled and not sent else status\n    if operation == 'preview-revoke-on-detach':\n        return preview if not attached and preview is not None else None\n    if operation == 'zero-size-part-completion':\n        return len(accepted)==len(sizes)\n    if operation == 'inflight-abort-handles':\n        return [i for i in sent if i not in accepted] if cancelled else []\n    if operation == 'retry-eligible-parts':\n        return [i for i in range(len(sizes)) if i not in accepted] if status=='failed' and not cancelled else []\n    if operation == 'sent-vs-accepted-indicator':\n        return len(sent)-len(accepted)\n    if operation == 'terminal-task-retention':\n        return attached or status not in ('done','failed') and not cancelled\n    if operation == 'preview-while-incomplete':\n        return preview if attached else 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('accepted-progress-not-sent scenario 1', solve('accepted-progress-not-sent', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), N)\ncheck('accepted-progress-not-sent scenario 2', solve('accepted-progress-not-sent', ([],[],[],False,'done',None,False)), 0)\ncheck('accepted-progress-not-sent scenario 3', solve('accepted-progress-not-sent', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 2)\ncheck('accepted-progress-not-sent scenario 4', solve('accepted-progress-not-sent', ([2,3],[],[0],True,'uploading','blob:c',False)), 0)\ncheck('accepted-progress-not-sent scenario 5', solve('accepted-progress-not-sent', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 3)\ncheck('accepted-progress-not-sent scenario 6', solve('accepted-progress-not-sent', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 5)\ncheck('remaining-local-parts scenario 1', solve('remaining-local-parts', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [1,2])\ncheck('remaining-local-parts scenario 2', solve('remaining-local-parts', ([],[],[],False,'done',None,False)), [])\ncheck('remaining-local-parts scenario 3', solve('remaining-local-parts', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('remaining-local-parts scenario 4', solve('remaining-local-parts', ([2,3],[],[0],True,'uploading','blob:c',False)), [0,1])\ncheck('remaining-local-parts scenario 5', solve('remaining-local-parts', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [0])\ncheck('remaining-local-parts scenario 6', solve('remaining-local-parts', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('cancel-overrides-upload-status scenario 1', solve('cancel-overrides-upload-status', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 'uploading')\ncheck('cancel-overrides-upload-status scenario 2', solve('cancel-overrides-upload-status', ([],[],[],False,'done',None,False)), 'done')\ncheck('cancel-overrides-upload-status scenario 3', solve('cancel-overrides-upload-status', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 'done')\ncheck('cancel-overrides-upload-status scenario 4', solve('cancel-overrides-upload-status', ([2,3],[],[0],True,'uploading','blob:c',False)), 'cancelled')\ncheck('cancel-overrides-upload-status scenario 5', solve('cancel-overrides-upload-status', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 'failed')\ncheck('cancel-overrides-upload-status scenario 6', solve('cancel-overrides-upload-status', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 'done')\ncheck('preview-revoke-on-detach scenario 1', solve('preview-revoke-on-detach', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), None)\ncheck('preview-revoke-on-detach scenario 2', solve('preview-revoke-on-detach', ([],[],[],False,'done',None,False)), None)\ncheck('preview-revoke-on-detach scenario 3', solve('preview-revoke-on-detach', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), None)\ncheck('preview-revoke-on-detach scenario 4', solve('preview-revoke-on-detach', ([2,3],[],[0],True,'uploading','blob:c',False)), 'blob:c')\ncheck('preview-revoke-on-detach scenario 5', solve('preview-revoke-on-detach', ([2,3],[1],[0,1],False,'failed','blob:d',True)), None)\ncheck('preview-revoke-on-detach scenario 6', solve('preview-revoke-on-detach', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 'blob:e')\ncheck('zero-size-part-completion scenario 1', solve('zero-size-part-completion', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), False)\ncheck('zero-size-part-completion scenario 2', solve('zero-size-part-completion', ([],[],[],False,'done',None,False)), True)\ncheck('zero-size-part-completion scenario 3', solve('zero-size-part-completion', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), True)\ncheck('zero-size-part-completion scenario 4', solve('zero-size-part-completion', ([2,3],[],[0],True,'uploading','blob:c',False)), False)\ncheck('zero-size-part-completion scenario 5', solve('zero-size-part-completion', ([2,3],[1],[0,1],False,'failed','blob:d',True)), False)\ncheck('zero-size-part-completion scenario 6', solve('zero-size-part-completion', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), True)\ncheck('inflight-abort-handles scenario 1', solve('inflight-abort-handles', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [])\ncheck('inflight-abort-handles scenario 2', solve('inflight-abort-handles', ([],[],[],False,'done',None,False)), [])\ncheck('inflight-abort-handles scenario 3', solve('inflight-abort-handles', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('inflight-abort-handles scenario 4', solve('inflight-abort-handles', ([2,3],[],[0],True,'uploading','blob:c',False)), [0])\ncheck('inflight-abort-handles scenario 5', solve('inflight-abort-handles', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [])\ncheck('inflight-abort-handles scenario 6', solve('inflight-abort-handles', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('retry-eligible-parts scenario 1', solve('retry-eligible-parts', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [])\ncheck('retry-eligible-parts scenario 2', solve('retry-eligible-parts', ([],[],[],False,'done',None,False)), [])\ncheck('retry-eligible-parts scenario 3', solve('retry-eligible-parts', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('retry-eligible-parts scenario 4', solve('retry-eligible-parts', ([2,3],[],[0],True,'uploading','blob:c',False)), [])\ncheck('retry-eligible-parts scenario 5', solve('retry-eligible-parts', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [0])\ncheck('retry-eligible-parts scenario 6', solve('retry-eligible-parts', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('sent-vs-accepted-indicator scenario 1', solve('sent-vs-accepted-indicator', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 1)\ncheck('sent-vs-accepted-indicator scenario 2', solve('sent-vs-accepted-indicator', ([],[],[],False,'done',None,False)), 0)\ncheck('sent-vs-accepted-indicator scenario 3', solve('sent-vs-accepted-indicator', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 0)\ncheck('sent-vs-accepted-indicator scenario 4', solve('sent-vs-accepted-indicator', ([2,3],[],[0],True,'uploading','blob:c',False)), 1)\ncheck('sent-vs-accepted-indicator scenario 5', solve('sent-vs-accepted-indicator', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 1)\ncheck('sent-vs-accepted-indicator scenario 6', solve('sent-vs-accepted-indicator', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 0)\ncheck('terminal-task-retention scenario 1', solve('terminal-task-retention', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), True)\ncheck('terminal-task-retention scenario 2', solve('terminal-task-retention', ([],[],[],False,'done',None,False)), False)\ncheck('terminal-task-retention scenario 3', solve('terminal-task-retention', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), True)\ncheck('terminal-task-retention scenario 4', solve('terminal-task-retention', ([2,3],[],[0],True,'uploading','blob:c',False)), False)\ncheck('terminal-task-retention scenario 5', solve('terminal-task-retention', ([2,3],[1],[0,1],False,'failed','blob:d',True)), True)\ncheck('terminal-task-retention scenario 6', solve('terminal-task-retention', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), False)\ncheck('preview-while-incomplete scenario 1', solve('preview-while-incomplete', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 'blob:a')\ncheck('preview-while-incomplete scenario 2', solve('preview-while-incomplete', ([],[],[],False,'done',None,False)), None)\ncheck('preview-while-incomplete scenario 3', solve('preview-while-incomplete', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 'blob:b')\ncheck('preview-while-incomplete scenario 4', solve('preview-while-incomplete', ([2,3],[],[0],True,'uploading','blob:c',False)), None)\ncheck('preview-while-incomplete scenario 5', solve('preview-while-incomplete', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 'blob:d')\ncheck('preview-while-incomplete scenario 6', solve('preview-while-incomplete', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), None)\ncheck('cancel after one accepted and two inflight parts: accepted-progress-not-sent', solve('accepted-progress-not-sent', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 2)\ncheck('cancel after one accepted and two inflight parts: remaining-local-parts', solve('remaining-local-parts', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [1,2])\ncheck('cancel after one accepted and two inflight parts: cancel-overrides-upload-status', solve('cancel-overrides-upload-status', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 'cancelled')\ncheck('cancel after one accepted and two inflight parts: preview-revoke-on-detach', solve('preview-revoke-on-detach', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 'blob:z')\ncheck('cancel after one accepted and two inflight parts: zero-size-part-completion', solve('zero-size-part-completion', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), False)\ncheck('cancel after one accepted and two inflight parts: inflight-abort-handles', solve('inflight-abort-handles', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [1,2])\ncheck('cancel after one accepted and two inflight parts: retry-eligible-parts', solve('retry-eligible-parts', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [])\ncheck('cancel after one accepted and two inflight parts: sent-vs-accepted-indicator', solve('sent-vs-accepted-indicator', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 2)\ncheck('cancel after one accepted and two inflight parts: terminal-task-retention', solve('terminal-task-retention', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), False)\ncheck('cancel after one accepted and two inflight parts: preview-while-incomplete', solve('preview-while-incomplete', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), None)\ncheck('background upload survives detached preview: accepted-progress-not-sent', solve('accepted-progress-not-sent', ([N],[],[],False,'uploading',None,False)), 0)\ncheck('background upload survives detached preview: remaining-local-parts', solve('remaining-local-parts', ([N],[],[],False,'uploading',None,False)), [0])\ncheck('background upload survives detached preview: cancel-overrides-upload-status', solve('cancel-overrides-upload-status', ([N],[],[],False,'uploading',None,False)), 'uploading')\ncheck('background upload survives detached preview: preview-revoke-on-detach', solve('preview-revoke-on-detach', ([N],[],[],False,'uploading',None,False)), None)\ncheck('background upload survives detached preview: zero-size-part-completion', solve('zero-size-part-completion', ([N],[],[],False,'uploading',None,False)), False)\ncheck('background upload survives detached preview: inflight-abort-handles', solve('inflight-abort-handles', ([N],[],[],False,'uploading',None,False)), [])\ncheck('background upload survives detached preview: retry-eligible-parts', solve('retry-eligible-parts', ([N],[],[],False,'uploading',None,False)), [])\ncheck('background upload survives detached preview: sent-vs-accepted-indicator', solve('sent-vs-accepted-indicator', ([N],[],[],False,'uploading',None,False)), 0)\ncheck('background upload survives detached preview: terminal-task-retention', solve('terminal-task-retention', ([N],[],[],False,'uploading',None,False)), True)\ncheck('background upload survives detached preview: preview-while-incomplete', solve('preview-while-incomplete', ([N],[],[],False,'uploading',None,False)), None)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"8c6a9a6789712679d7489c48bb577d5fcee760ca53f7ee6d4a6e33c2cf7f285c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    sizes, accepted, sent, cancelled, status, preview, attached = s\n    if operation == 'accepted-progress-not-sent':\n        return sum(sizes[i] for i in accepted)\n    if operation == 'remaining-local-parts':\n        return [i for i in range(len(sizes)) if i not in accepted]\n    if operation == 'cancel-overrides-upload-status':\n        return status\n    if operation == 'preview-revoke-on-detach':\n        return preview if not attached and preview is not None else None\n    if operation == 'zero-size-part-completion':\n        return len(accepted)==len(sizes)\n    if operation == 'inflight-abort-handles':\n        return [i for i in sent if i not in accepted] if cancelled else []\n    if operation == 'retry-eligible-parts':\n        return [i for i in range(len(sizes)) if i not in accepted] if status=='failed' and not cancelled else []\n    if operation == 'sent-vs-accepted-indicator':\n        return len(sent)-len(accepted)\n    if operation == 'terminal-task-retention':\n        return attached or status not in ('done','failed') and not cancelled\n    if operation == 'preview-while-incomplete':\n        return preview if attached else 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('accepted-progress-not-sent scenario 1', solve('accepted-progress-not-sent', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), N)\ncheck('accepted-progress-not-sent scenario 2', solve('accepted-progress-not-sent', ([],[],[],False,'done',None,False)), 0)\ncheck('accepted-progress-not-sent scenario 3', solve('accepted-progress-not-sent', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 2)\ncheck('accepted-progress-not-sent scenario 4', solve('accepted-progress-not-sent', ([2,3],[],[0],True,'uploading','blob:c',False)), 0)\ncheck('accepted-progress-not-sent scenario 5', solve('accepted-progress-not-sent', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 3)\ncheck('accepted-progress-not-sent scenario 6', solve('accepted-progress-not-sent', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 5)\ncheck('remaining-local-parts scenario 1', solve('remaining-local-parts', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [1,2])\ncheck('remaining-local-parts scenario 2', solve('remaining-local-parts', ([],[],[],False,'done',None,False)), [])\ncheck('remaining-local-parts scenario 3', solve('remaining-local-parts', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('remaining-local-parts scenario 4', solve('remaining-local-parts', ([2,3],[],[0],True,'uploading','blob:c',False)), [0,1])\ncheck('remaining-local-parts scenario 5', solve('remaining-local-parts', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [0])\ncheck('remaining-local-parts scenario 6', solve('remaining-local-parts', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('cancel-overrides-upload-status scenario 1', solve('cancel-overrides-upload-status', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 'uploading')\ncheck('cancel-overrides-upload-status scenario 2', solve('cancel-overrides-upload-status', ([],[],[],False,'done',None,False)), 'done')\ncheck('cancel-overrides-upload-status scenario 3', solve('cancel-overrides-upload-status', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 'done')\ncheck('cancel-overrides-upload-status scenario 4', solve('cancel-overrides-upload-status', ([2,3],[],[0],True,'uploading','blob:c',False)), 'cancelled')\ncheck('cancel-overrides-upload-status scenario 5', solve('cancel-overrides-upload-status', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 'failed')\ncheck('cancel-overrides-upload-status scenario 6', solve('cancel-overrides-upload-status', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 'done')\ncheck('preview-revoke-on-detach scenario 1', solve('preview-revoke-on-detach', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), None)\ncheck('preview-revoke-on-detach scenario 2', solve('preview-revoke-on-detach', ([],[],[],False,'done',None,False)), None)\ncheck('preview-revoke-on-detach scenario 3', solve('preview-revoke-on-detach', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), None)\ncheck('preview-revoke-on-detach scenario 4', solve('preview-revoke-on-detach', ([2,3],[],[0],True,'uploading','blob:c',False)), 'blob:c')\ncheck('preview-revoke-on-detach scenario 5', solve('preview-revoke-on-detach', ([2,3],[1],[0,1],False,'failed','blob:d',True)), None)\ncheck('preview-revoke-on-detach scenario 6', solve('preview-revoke-on-detach', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 'blob:e')\ncheck('zero-size-part-completion scenario 1', solve('zero-size-part-completion', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), False)\ncheck('zero-size-part-completion scenario 2', solve('zero-size-part-completion', ([],[],[],False,'done',None,False)), True)\ncheck('zero-size-part-completion scenario 3', solve('zero-size-part-completion', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), True)\ncheck('zero-size-part-completion scenario 4', solve('zero-size-part-completion', ([2,3],[],[0],True,'uploading','blob:c',False)), False)\ncheck('zero-size-part-completion scenario 5', solve('zero-size-part-completion', ([2,3],[1],[0,1],False,'failed','blob:d',True)), False)\ncheck('zero-size-part-completion scenario 6', solve('zero-size-part-completion', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), True)\ncheck('inflight-abort-handles scenario 1', solve('inflight-abort-handles', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [])\ncheck('inflight-abort-handles scenario 2', solve('inflight-abort-handles', ([],[],[],False,'done',None,False)), [])\ncheck('inflight-abort-handles scenario 3', solve('inflight-abort-handles', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('inflight-abort-handles scenario 4', solve('inflight-abort-handles', ([2,3],[],[0],True,'uploading','blob:c',False)), [0])\ncheck('inflight-abort-handles scenario 5', solve('inflight-abort-handles', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [])\ncheck('inflight-abort-handles scenario 6', solve('inflight-abort-handles', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('retry-eligible-parts scenario 1', solve('retry-eligible-parts', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [])\ncheck('retry-eligible-parts scenario 2', solve('retry-eligible-parts', ([],[],[],False,'done',None,False)), [])\ncheck('retry-eligible-parts scenario 3', solve('retry-eligible-parts', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('retry-eligible-parts scenario 4', solve('retry-eligible-parts', ([2,3],[],[0],True,'uploading','blob:c',False)), [])\ncheck('retry-eligible-parts scenario 5', solve('retry-eligible-parts', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [0])\ncheck('retry-eligible-parts scenario 6', solve('retry-eligible-parts', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('sent-vs-accepted-indicator scenario 1', solve('sent-vs-accepted-indicator', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 1)\ncheck('sent-vs-accepted-indicator scenario 2', solve('sent-vs-accepted-indicator', ([],[],[],False,'done',None,False)), 0)\ncheck('sent-vs-accepted-indicator scenario 3', solve('sent-vs-accepted-indicator', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 0)\ncheck('sent-vs-accepted-indicator scenario 4', solve('sent-vs-accepted-indicator', ([2,3],[],[0],True,'uploading','blob:c',False)), 1)\ncheck('sent-vs-accepted-indicator scenario 5', solve('sent-vs-accepted-indicator', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 1)\ncheck('sent-vs-accepted-indicator scenario 6', solve('sent-vs-accepted-indicator', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 0)\ncheck('terminal-task-retention scenario 1', solve('terminal-task-retention', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), True)\ncheck('terminal-task-retention scenario 2', solve('terminal-task-retention', ([],[],[],False,'done',None,False)), False)\ncheck('terminal-task-retention scenario 3', solve('terminal-task-retention', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), True)\ncheck('terminal-task-retention scenario 4', solve('terminal-task-retention', ([2,3],[],[0],True,'uploading','blob:c',False)), False)\ncheck('terminal-task-retention scenario 5', solve('terminal-task-retention', ([2,3],[1],[0,1],False,'failed','blob:d',True)), True)\ncheck('terminal-task-retention scenario 6', solve('terminal-task-retention', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), False)\ncheck('preview-while-incomplete scenario 1', solve('preview-while-incomplete', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 'blob:a')\ncheck('preview-while-incomplete scenario 2', solve('preview-while-incomplete', ([],[],[],False,'done',None,False)), None)\ncheck('preview-while-incomplete scenario 3', solve('preview-while-incomplete', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 'blob:b')\ncheck('preview-while-incomplete scenario 4', solve('preview-while-incomplete', ([2,3],[],[0],True,'uploading','blob:c',False)), None)\ncheck('preview-while-incomplete scenario 5', solve('preview-while-incomplete', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 'blob:d')\ncheck('preview-while-incomplete scenario 6', solve('preview-while-incomplete', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), None)\ncheck('cancel after one accepted and two inflight parts: accepted-progress-not-sent', solve('accepted-progress-not-sent', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 2)\ncheck('cancel after one accepted and two inflight parts: remaining-local-parts', solve('remaining-local-parts', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [1,2])\ncheck('cancel after one accepted and two inflight parts: cancel-overrides-upload-status', solve('cancel-overrides-upload-status', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 'cancelled')\ncheck('cancel after one accepted and two inflight parts: preview-revoke-on-detach', solve('preview-revoke-on-detach', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 'blob:z')\ncheck('cancel after one accepted and two inflight parts: zero-size-part-completion', solve('zero-size-part-completion', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), False)\ncheck('cancel after one accepted and two inflight parts: inflight-abort-handles', solve('inflight-abort-handles', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [1,2])\ncheck('cancel after one accepted and two inflight parts: retry-eligible-parts', solve('retry-eligible-parts', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [])\ncheck('cancel after one accepted and two inflight parts: sent-vs-accepted-indicator', solve('sent-vs-accepted-indicator', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 2)\ncheck('cancel after one accepted and two inflight parts: terminal-task-retention', solve('terminal-task-retention', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), False)\ncheck('cancel after one accepted and two inflight parts: preview-while-incomplete', solve('preview-while-incomplete', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), None)\ncheck('background upload survives detached preview: accepted-progress-not-sent', solve('accepted-progress-not-sent', ([N],[],[],False,'uploading',None,False)), 0)\ncheck('background upload survives detached preview: remaining-local-parts', solve('remaining-local-parts', ([N],[],[],False,'uploading',None,False)), [0])\ncheck('background upload survives detached preview: cancel-overrides-upload-status', solve('cancel-overrides-upload-status', ([N],[],[],False,'uploading',None,False)), 'uploading')\ncheck('background upload survives detached preview: preview-revoke-on-detach', solve('preview-revoke-on-detach', ([N],[],[],False,'uploading',None,False)), None)\ncheck('background upload survives detached preview: zero-size-part-completion', solve('zero-size-part-completion', ([N],[],[],False,'uploading',None,False)), False)\ncheck('background upload survives detached preview: inflight-abort-handles', solve('inflight-abort-handles', ([N],[],[],False,'uploading',None,False)), [])\ncheck('background upload survives detached preview: retry-eligible-parts', solve('retry-eligible-parts', ([N],[],[],False,'uploading',None,False)), [])\ncheck('background upload survives detached preview: sent-vs-accepted-indicator', solve('sent-vs-accepted-indicator', ([N],[],[],False,'uploading',None,False)), 0)\ncheck('background upload survives detached preview: terminal-task-retention', solve('terminal-task-retention', ([N],[],[],False,'uploading',None,False)), True)\ncheck('background upload survives detached preview: preview-while-incomplete', solve('preview-while-incomplete', ([N],[],[],False,'uploading',None,False)), None)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"e4420e3cd08513bf22768a773bad5a61cba11925402c2e8392c08c9e850fab85","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(operation, s):\n    sizes, accepted, sent, cancelled, status, preview, attached = s\n    if operation == 'accepted-progress-not-sent':\n        return sum(sizes[i] for i in accepted)\n    if operation == 'remaining-local-parts':\n        return [i for i in range(len(sizes)) if i not in accepted]\n    if operation == 'cancel-overrides-upload-status':\n        return 'cancelled' if cancelled else status\n    if operation == 'preview-revoke-on-detach':\n        return preview if not attached and preview is not None else None\n    if operation == 'zero-size-part-completion':\n        return len(accepted)==len(sizes)\n    if operation == 'inflight-abort-handles':\n        return [i for i in sent if i not in accepted] if cancelled else []\n    if operation == 'retry-eligible-parts':\n        return [i for i in range(len(sizes)) if i not in accepted] if status=='failed' and not cancelled else []\n    if operation == 'sent-vs-accepted-indicator':\n        return len(sent)-len(accepted)\n    if operation == 'terminal-task-retention':\n        return attached or status not in ('done','failed') and not cancelled\n    if operation == 'preview-while-incomplete':\n        return preview if attached else 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('accepted-progress-not-sent scenario 1', solve('accepted-progress-not-sent', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), N)\ncheck('accepted-progress-not-sent scenario 2', solve('accepted-progress-not-sent', ([],[],[],False,'done',None,False)), 0)\ncheck('accepted-progress-not-sent scenario 3', solve('accepted-progress-not-sent', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 2)\ncheck('accepted-progress-not-sent scenario 4', solve('accepted-progress-not-sent', ([2,3],[],[0],True,'uploading','blob:c',False)), 0)\ncheck('accepted-progress-not-sent scenario 5', solve('accepted-progress-not-sent', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 3)\ncheck('accepted-progress-not-sent scenario 6', solve('accepted-progress-not-sent', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 5)\ncheck('remaining-local-parts scenario 1', solve('remaining-local-parts', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [1,2])\ncheck('remaining-local-parts scenario 2', solve('remaining-local-parts', ([],[],[],False,'done',None,False)), [])\ncheck('remaining-local-parts scenario 3', solve('remaining-local-parts', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('remaining-local-parts scenario 4', solve('remaining-local-parts', ([2,3],[],[0],True,'uploading','blob:c',False)), [0,1])\ncheck('remaining-local-parts scenario 5', solve('remaining-local-parts', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [0])\ncheck('remaining-local-parts scenario 6', solve('remaining-local-parts', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('cancel-overrides-upload-status scenario 1', solve('cancel-overrides-upload-status', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 'uploading')\ncheck('cancel-overrides-upload-status scenario 2', solve('cancel-overrides-upload-status', ([],[],[],False,'done',None,False)), 'done')\ncheck('cancel-overrides-upload-status scenario 3', solve('cancel-overrides-upload-status', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 'done')\ncheck('cancel-overrides-upload-status scenario 4', solve('cancel-overrides-upload-status', ([2,3],[],[0],True,'uploading','blob:c',False)), 'cancelled')\ncheck('cancel-overrides-upload-status scenario 5', solve('cancel-overrides-upload-status', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 'failed')\ncheck('cancel-overrides-upload-status scenario 6', solve('cancel-overrides-upload-status', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 'done')\ncheck('preview-revoke-on-detach scenario 1', solve('preview-revoke-on-detach', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), None)\ncheck('preview-revoke-on-detach scenario 2', solve('preview-revoke-on-detach', ([],[],[],False,'done',None,False)), None)\ncheck('preview-revoke-on-detach scenario 3', solve('preview-revoke-on-detach', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), None)\ncheck('preview-revoke-on-detach scenario 4', solve('preview-revoke-on-detach', ([2,3],[],[0],True,'uploading','blob:c',False)), 'blob:c')\ncheck('preview-revoke-on-detach scenario 5', solve('preview-revoke-on-detach', ([2,3],[1],[0,1],False,'failed','blob:d',True)), None)\ncheck('preview-revoke-on-detach scenario 6', solve('preview-revoke-on-detach', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 'blob:e')\ncheck('zero-size-part-completion scenario 1', solve('zero-size-part-completion', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), False)\ncheck('zero-size-part-completion scenario 2', solve('zero-size-part-completion', ([],[],[],False,'done',None,False)), True)\ncheck('zero-size-part-completion scenario 3', solve('zero-size-part-completion', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), True)\ncheck('zero-size-part-completion scenario 4', solve('zero-size-part-completion', ([2,3],[],[0],True,'uploading','blob:c',False)), False)\ncheck('zero-size-part-completion scenario 5', solve('zero-size-part-completion', ([2,3],[1],[0,1],False,'failed','blob:d',True)), False)\ncheck('zero-size-part-completion scenario 6', solve('zero-size-part-completion', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), True)\ncheck('inflight-abort-handles scenario 1', solve('inflight-abort-handles', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [])\ncheck('inflight-abort-handles scenario 2', solve('inflight-abort-handles', ([],[],[],False,'done',None,False)), [])\ncheck('inflight-abort-handles scenario 3', solve('inflight-abort-handles', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('inflight-abort-handles scenario 4', solve('inflight-abort-handles', ([2,3],[],[0],True,'uploading','blob:c',False)), [0])\ncheck('inflight-abort-handles scenario 5', solve('inflight-abort-handles', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [])\ncheck('inflight-abort-handles scenario 6', solve('inflight-abort-handles', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('retry-eligible-parts scenario 1', solve('retry-eligible-parts', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), [])\ncheck('retry-eligible-parts scenario 2', solve('retry-eligible-parts', ([],[],[],False,'done',None,False)), [])\ncheck('retry-eligible-parts scenario 3', solve('retry-eligible-parts', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), [])\ncheck('retry-eligible-parts scenario 4', solve('retry-eligible-parts', ([2,3],[],[0],True,'uploading','blob:c',False)), [])\ncheck('retry-eligible-parts scenario 5', solve('retry-eligible-parts', ([2,3],[1],[0,1],False,'failed','blob:d',True)), [0])\ncheck('retry-eligible-parts scenario 6', solve('retry-eligible-parts', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), [])\ncheck('sent-vs-accepted-indicator scenario 1', solve('sent-vs-accepted-indicator', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 1)\ncheck('sent-vs-accepted-indicator scenario 2', solve('sent-vs-accepted-indicator', ([],[],[],False,'done',None,False)), 0)\ncheck('sent-vs-accepted-indicator scenario 3', solve('sent-vs-accepted-indicator', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 0)\ncheck('sent-vs-accepted-indicator scenario 4', solve('sent-vs-accepted-indicator', ([2,3],[],[0],True,'uploading','blob:c',False)), 1)\ncheck('sent-vs-accepted-indicator scenario 5', solve('sent-vs-accepted-indicator', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 1)\ncheck('sent-vs-accepted-indicator scenario 6', solve('sent-vs-accepted-indicator', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), 0)\ncheck('terminal-task-retention scenario 1', solve('terminal-task-retention', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), True)\ncheck('terminal-task-retention scenario 2', solve('terminal-task-retention', ([],[],[],False,'done',None,False)), False)\ncheck('terminal-task-retention scenario 3', solve('terminal-task-retention', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), True)\ncheck('terminal-task-retention scenario 4', solve('terminal-task-retention', ([2,3],[],[0],True,'uploading','blob:c',False)), False)\ncheck('terminal-task-retention scenario 5', solve('terminal-task-retention', ([2,3],[1],[0,1],False,'failed','blob:d',True)), True)\ncheck('terminal-task-retention scenario 6', solve('terminal-task-retention', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), False)\ncheck('preview-while-incomplete scenario 1', solve('preview-while-incomplete', ([N,2,3],[0],[0,1],False,'uploading','blob:a',True)), 'blob:a')\ncheck('preview-while-incomplete scenario 2', solve('preview-while-incomplete', ([],[],[],False,'done',None,False)), None)\ncheck('preview-while-incomplete scenario 3', solve('preview-while-incomplete', ([2,0],[0,1],[0,1],False,'done','blob:b',True)), 'blob:b')\ncheck('preview-while-incomplete scenario 4', solve('preview-while-incomplete', ([2,3],[],[0],True,'uploading','blob:c',False)), None)\ncheck('preview-while-incomplete scenario 5', solve('preview-while-incomplete', ([2,3],[1],[0,1],False,'failed','blob:d',True)), 'blob:d')\ncheck('preview-while-incomplete scenario 6', solve('preview-while-incomplete', ([2,3],[0,1],[0,1],False,'done','blob:e',False)), None)\ncheck('cancel after one accepted and two inflight parts: accepted-progress-not-sent', solve('accepted-progress-not-sent', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 2)\ncheck('cancel after one accepted and two inflight parts: remaining-local-parts', solve('remaining-local-parts', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [1,2])\ncheck('cancel after one accepted and two inflight parts: cancel-overrides-upload-status', solve('cancel-overrides-upload-status', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 'cancelled')\ncheck('cancel after one accepted and two inflight parts: preview-revoke-on-detach', solve('preview-revoke-on-detach', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 'blob:z')\ncheck('cancel after one accepted and two inflight parts: zero-size-part-completion', solve('zero-size-part-completion', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), False)\ncheck('cancel after one accepted and two inflight parts: inflight-abort-handles', solve('inflight-abort-handles', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [1,2])\ncheck('cancel after one accepted and two inflight parts: retry-eligible-parts', solve('retry-eligible-parts', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), [])\ncheck('cancel after one accepted and two inflight parts: sent-vs-accepted-indicator', solve('sent-vs-accepted-indicator', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), 2)\ncheck('cancel after one accepted and two inflight parts: terminal-task-retention', solve('terminal-task-retention', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), False)\ncheck('cancel after one accepted and two inflight parts: preview-while-incomplete', solve('preview-while-incomplete', ([2,3,4],[0],[0,1,2],True,'uploading','blob:z',False)), None)\ncheck('background upload survives detached preview: accepted-progress-not-sent', solve('accepted-progress-not-sent', ([N],[],[],False,'uploading',None,False)), 0)\ncheck('background upload survives detached preview: remaining-local-parts', solve('remaining-local-parts', ([N],[],[],False,'uploading',None,False)), [0])\ncheck('background upload survives detached preview: cancel-overrides-upload-status', solve('cancel-overrides-upload-status', ([N],[],[],False,'uploading',None,False)), 'uploading')\ncheck('background upload survives detached preview: preview-revoke-on-detach', solve('preview-revoke-on-detach', ([N],[],[],False,'uploading',None,False)), None)\ncheck('background upload survives detached preview: zero-size-part-completion', solve('zero-size-part-completion', ([N],[],[],False,'uploading',None,False)), False)\ncheck('background upload survives detached preview: inflight-abort-handles', solve('inflight-abort-handles', ([N],[],[],False,'uploading',None,False)), [])\ncheck('background upload survives detached preview: retry-eligible-parts', solve('retry-eligible-parts', ([N],[],[],False,'uploading',None,False)), [])\ncheck('background upload survives detached preview: sent-vs-accepted-indicator', solve('sent-vs-accepted-indicator', ([N],[],[],False,'uploading',None,False)), 0)\ncheck('background upload survives detached preview: terminal-task-retention', solve('terminal-task-retention', ([N],[],[],False,'uploading',None,False)), True)\ncheck('background upload survives detached preview: preview-while-incomplete', solve('preview-while-incomplete', ([N],[],[],False,'uploading',None,False)), None)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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-upload-view-cancel-overrides-upload-status","generated_at":"2026-09-29T14:40:55.539892+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 cancel-overrides-upload-status rule: `'cancelled' if cancelled else status`.","root_cause":"The cancel-overrides-upload-status client decision evaluates `status` instead of `'cancelled' if cancelled else status`.","sha256":"e0b2dd64f36c1d28e18e0ef6f4766bd088048aaa43858bdd3989f213729b4f80","title":"Local upload task presentation: Cancel overrides upload status · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.499,"exit_code":1,"observations":[{"actual":1,"check":"accepted-progress-not-sent scenario 1","expected":1,"passed":true},{"actual":0,"check":"accepted-progress-not-sent scenario 2","expected":0,"passed":true},{"actual":2,"check":"accepted-progress-not-sent scenario 3","expected":2,"passed":true},{"actual":0,"check":"accepted-progress-not-sent scenario 4","expected":0,"passed":true},{"actual":3,"check":"accepted-progress-not-sent scenario 5","expected":3,"passed":true},{"actual":5,"check":"accepted-progress-not-sent scenario 6","expected":5,"passed":true},{"actual":[1,2],"check":"remaining-local-parts scenario 1","expected":[1,2],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 2","expected":[],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 3","expected":[],"passed":true},{"actual":[0,1],"check":"remaining-local-parts scenario 4","expected":[0,1],"passed":true},{"actual":[0],"check":"remaining-local-parts scenario 5","expected":[0],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 6","expected":[],"passed":true},{"actual":"uploading","check":"cancel-overrides-upload-status scenario 1","expected":"uploading","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 2","expected":"done","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 3","expected":"done","passed":true},{"actual":"uploading","check":"cancel-overrides-upload-status scenario 4","expected":"cancelled","passed":false},{"actual":"failed","check":"cancel-overrides-upload-status scenario 5","expected":"failed","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 6","expected":"done","passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 1","expected":null,"passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 2","expected":null,"passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 3","expected":null,"passed":true},{"actual":"blob:c","check":"preview-revoke-on-detach scenario 4","expected":"blob:c","passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 5","expected":null,"passed":true},{"actual":"blob:e","check":"preview-revoke-on-detach scenario 6","expected":"blob:e","passed":true},{"actual":false,"check":"zero-size-part-completion scenario 1","expected":false,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 2","expected":true,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 3","expected":true,"passed":true},{"actual":false,"check":"zero-size-part-completion scenario 4","expected":false,"passed":true},{"actual":false,"check":"zero-size-part-completion scenario 5","expected":false,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 6","expected":true,"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 1","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 2","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 3","expected":[],"passed":true},{"actual":[0],"check":"inflight-abort-handles scenario 4","expected":[0],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 5","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 6","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 1","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 2","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 3","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 4","expected":[],"passed":true},{"actual":[0],"check":"retry-eligible-parts scenario 5","expected":[0],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 6","expected":[],"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 1","expected":1,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 2","expected":0,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 3","expected":0,"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 4","expected":1,"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 5","expected":1,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 6","expected":0,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 1","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 2","expected":false,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 3","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 4","expected":false,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 5","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 6","expected":false,"passed":true},{"actual":"blob:a","check":"preview-while-incomplete scenario 1","expected":"blob:a","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 2","expected":null,"passed":true},{"actual":"blob:b","check":"preview-while-incomplete scenario 3","expected":"blob:b","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 4","expected":null,"passed":true},{"actual":"blob:d","check":"preview-while-incomplete scenario 5","expected":"blob:d","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 6","expected":null,"passed":true},{"actual":2,"check":"cancel after one accepted and two inflight parts: accepted-progress-not-sent","expected":2,"passed":true},{"actual":[1,2],"check":"cancel after one accepted and two inflight parts: remaining-local-parts","expected":[1,2],"passed":true},{"actual":"uploading","check":"cancel after one accepted and two inflight parts: cancel-overrides-upload-status","expected":"cancelled","passed":false},{"actual":"blob:z","check":"cancel after one accepted and two inflight parts: preview-revoke-on-detach","expected":"blob:z","passed":true},{"actual":false,"check":"cancel after one accepted and two inflight parts: zero-size-part-completion","expected":false,"passed":true},{"actual":[1,2],"check":"cancel after one accepted and two inflight parts: inflight-abort-handles","expected":[1,2],"passed":true},{"actual":[],"check":"cancel after one accepted and two inflight parts: retry-eligible-parts","expected":[],"passed":true},{"actual":2,"check":"cancel after one accepted and two inflight parts: sent-vs-accepted-indicator","expected":2,"passed":true},{"actual":false,"check":"cancel after one accepted and two inflight parts: terminal-task-retention","expected":false,"passed":true},{"actual":null,"check":"cancel after one accepted and two inflight parts: preview-while-incomplete","expected":null,"passed":true},{"actual":0,"check":"background upload survives detached preview: accepted-progress-not-sent","expected":0,"passed":true},{"actual":[0],"check":"background upload survives detached preview: remaining-local-parts","expected":[0],"passed":true},{"actual":"uploading","check":"background upload survives detached preview: cancel-overrides-upload-status","expected":"uploading","passed":true},{"actual":null,"check":"background upload survives detached preview: preview-revoke-on-detach","expected":null,"passed":true},{"actual":false,"check":"background upload survives detached preview: zero-size-part-completion","expected":false,"passed":true},{"actual":[],"check":"background upload survives detached preview: inflight-abort-handles","expected":[],"passed":true},{"actual":[],"check":"background upload survives detached preview: retry-eligible-parts","expected":[],"passed":true},{"actual":0,"check":"background upload survives detached preview: sent-vs-accepted-indicator","expected":0,"passed":true},{"actual":true,"check":"background upload survives detached preview: terminal-task-retention","expected":true,"passed":true},{"actual":null,"check":"background upload survives detached preview: preview-while-incomplete","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"accepted-progress-not-sent scenario 1\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 3\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 4\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 5\", \"actual\": 3, \"expected\": 3, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 6\", \"actual\": 5, \"expected\": 5, \"passed\": true}, {\"check\": \"remaining-local-parts scenario 1\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 4\", \"actual\": [0, 1], \"expected\": [0, 1], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 5\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 1\", \"actual\": \"uploading\", \"expected\": \"uploading\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 2\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 3\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 4\", \"actual\": \"uploading\", \"expected\": \"cancelled\", \"passed\": false}, {\"check\": \"cancel-overrides-upload-status scenario 5\", \"actual\": \"failed\", \"expected\": \"failed\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 6\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 1\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 3\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 4\", \"actual\": \"blob:c\", \"expected\": \"blob:c\", \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 6\", \"actual\": \"blob:e\", \"expected\": \"blob:e\", \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 2\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 4\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 5\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 1\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 3\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 4\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 6\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 6\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 1\", \"actual\": \"blob:a\", \"expected\": \"blob:a\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 3\", \"actual\": \"blob:b\", \"expected\": \"blob:b\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 5\", \"actual\": \"blob:d\", \"expected\": \"blob:d\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: accepted-progress-not-sent\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: remaining-local-parts\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: cancel-overrides-upload-status\", \"actual\": \"uploading\", \"expected\": \"cancelled\", \"passed\": false}, {\"check\": \"cancel after one accepted and two inflight parts: preview-revoke-on-detach\", \"actual\": \"blob:z\", \"expected\": \"blob:z\", \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: zero-size-part-completion\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: inflight-abort-handles\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: retry-eligible-parts\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: sent-vs-accepted-indicator\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: terminal-task-retention\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: preview-while-incomplete\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"background upload survives detached preview: accepted-progress-not-sent\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"background upload survives detached preview: remaining-local-parts\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"background upload survives detached preview: cancel-overrides-upload-status\", \"actual\": \"uploading\", \"expected\": \"uploading\", \"passed\": true}, {\"check\": \"background upload survives detached preview: preview-revoke-on-detach\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"background upload survives detached preview: zero-size-part-completion\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"background upload survives detached preview: inflight-abort-handles\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"background upload survives detached preview: retry-eligible-parts\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"background upload survives detached preview: sent-vs-accepted-indicator\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"background upload survives detached preview: terminal-task-retention\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"background upload survives detached preview: preview-while-incomplete\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.619,"exit_code":1,"observations":[{"actual":1,"check":"accepted-progress-not-sent scenario 1","expected":1,"passed":true},{"actual":0,"check":"accepted-progress-not-sent scenario 2","expected":0,"passed":true},{"actual":2,"check":"accepted-progress-not-sent scenario 3","expected":2,"passed":true},{"actual":0,"check":"accepted-progress-not-sent scenario 4","expected":0,"passed":true},{"actual":3,"check":"accepted-progress-not-sent scenario 5","expected":3,"passed":true},{"actual":5,"check":"accepted-progress-not-sent scenario 6","expected":5,"passed":true},{"actual":[1,2],"check":"remaining-local-parts scenario 1","expected":[1,2],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 2","expected":[],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 3","expected":[],"passed":true},{"actual":[0,1],"check":"remaining-local-parts scenario 4","expected":[0,1],"passed":true},{"actual":[0],"check":"remaining-local-parts scenario 5","expected":[0],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 6","expected":[],"passed":true},{"actual":"uploading","check":"cancel-overrides-upload-status scenario 1","expected":"uploading","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 2","expected":"done","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 3","expected":"done","passed":true},{"actual":"uploading","check":"cancel-overrides-upload-status scenario 4","expected":"cancelled","passed":false},{"actual":"failed","check":"cancel-overrides-upload-status scenario 5","expected":"failed","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 6","expected":"done","passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 1","expected":null,"passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 2","expected":null,"passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 3","expected":null,"passed":true},{"actual":"blob:c","check":"preview-revoke-on-detach scenario 4","expected":"blob:c","passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 5","expected":null,"passed":true},{"actual":"blob:e","check":"preview-revoke-on-detach scenario 6","expected":"blob:e","passed":true},{"actual":false,"check":"zero-size-part-completion scenario 1","expected":false,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 2","expected":true,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 3","expected":true,"passed":true},{"actual":false,"check":"zero-size-part-completion scenario 4","expected":false,"passed":true},{"actual":false,"check":"zero-size-part-completion scenario 5","expected":false,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 6","expected":true,"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 1","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 2","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 3","expected":[],"passed":true},{"actual":[0],"check":"inflight-abort-handles scenario 4","expected":[0],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 5","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 6","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 1","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 2","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 3","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 4","expected":[],"passed":true},{"actual":[0],"check":"retry-eligible-parts scenario 5","expected":[0],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 6","expected":[],"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 1","expected":1,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 2","expected":0,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 3","expected":0,"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 4","expected":1,"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 5","expected":1,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 6","expected":0,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 1","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 2","expected":false,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 3","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 4","expected":false,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 5","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 6","expected":false,"passed":true},{"actual":"blob:a","check":"preview-while-incomplete scenario 1","expected":"blob:a","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 2","expected":null,"passed":true},{"actual":"blob:b","check":"preview-while-incomplete scenario 3","expected":"blob:b","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 4","expected":null,"passed":true},{"actual":"blob:d","check":"preview-while-incomplete scenario 5","expected":"blob:d","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 6","expected":null,"passed":true},{"actual":2,"check":"cancel after one accepted and two inflight parts: accepted-progress-not-sent","expected":2,"passed":true},{"actual":[1,2],"check":"cancel after one accepted and two inflight parts: remaining-local-parts","expected":[1,2],"passed":true},{"actual":"uploading","check":"cancel after one accepted and two inflight parts: cancel-overrides-upload-status","expected":"cancelled","passed":false},{"actual":"blob:z","check":"cancel after one accepted and two inflight parts: preview-revoke-on-detach","expected":"blob:z","passed":true},{"actual":false,"check":"cancel after one accepted and two inflight parts: zero-size-part-completion","expected":false,"passed":true},{"actual":[1,2],"check":"cancel after one accepted and two inflight parts: inflight-abort-handles","expected":[1,2],"passed":true},{"actual":[],"check":"cancel after one accepted and two inflight parts: retry-eligible-parts","expected":[],"passed":true},{"actual":2,"check":"cancel after one accepted and two inflight parts: sent-vs-accepted-indicator","expected":2,"passed":true},{"actual":false,"check":"cancel after one accepted and two inflight parts: terminal-task-retention","expected":false,"passed":true},{"actual":null,"check":"cancel after one accepted and two inflight parts: preview-while-incomplete","expected":null,"passed":true},{"actual":0,"check":"background upload survives detached preview: accepted-progress-not-sent","expected":0,"passed":true},{"actual":[0],"check":"background upload survives detached preview: remaining-local-parts","expected":[0],"passed":true},{"actual":"uploading","check":"background upload survives detached preview: cancel-overrides-upload-status","expected":"uploading","passed":true},{"actual":null,"check":"background upload survives detached preview: preview-revoke-on-detach","expected":null,"passed":true},{"actual":false,"check":"background upload survives detached preview: zero-size-part-completion","expected":false,"passed":true},{"actual":[],"check":"background upload survives detached preview: inflight-abort-handles","expected":[],"passed":true},{"actual":[],"check":"background upload survives detached preview: retry-eligible-parts","expected":[],"passed":true},{"actual":0,"check":"background upload survives detached preview: sent-vs-accepted-indicator","expected":0,"passed":true},{"actual":true,"check":"background upload survives detached preview: terminal-task-retention","expected":true,"passed":true},{"actual":null,"check":"background upload survives detached preview: preview-while-incomplete","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"accepted-progress-not-sent scenario 1\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 3\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 4\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 5\", \"actual\": 3, \"expected\": 3, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 6\", \"actual\": 5, \"expected\": 5, \"passed\": true}, {\"check\": \"remaining-local-parts scenario 1\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 4\", \"actual\": [0, 1], \"expected\": [0, 1], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 5\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 1\", \"actual\": \"uploading\", \"expected\": \"uploading\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 2\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 3\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 4\", \"actual\": \"uploading\", \"expected\": \"cancelled\", \"passed\": false}, {\"check\": \"cancel-overrides-upload-status scenario 5\", \"actual\": \"failed\", \"expected\": \"failed\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 6\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 1\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 3\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 4\", \"actual\": \"blob:c\", \"expected\": \"blob:c\", \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 6\", \"actual\": \"blob:e\", \"expected\": \"blob:e\", \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 2\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 4\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 5\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 1\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 3\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 4\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 6\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 6\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 1\", \"actual\": \"blob:a\", \"expected\": \"blob:a\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 3\", \"actual\": \"blob:b\", \"expected\": \"blob:b\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 5\", \"actual\": \"blob:d\", \"expected\": \"blob:d\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: accepted-progress-not-sent\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: remaining-local-parts\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: cancel-overrides-upload-status\", \"actual\": \"uploading\", \"expected\": \"cancelled\", \"passed\": false}, {\"check\": \"cancel after one accepted and two inflight parts: preview-revoke-on-detach\", \"actual\": \"blob:z\", \"expected\": \"blob:z\", \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: zero-size-part-completion\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: inflight-abort-handles\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: retry-eligible-parts\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: sent-vs-accepted-indicator\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: terminal-task-retention\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: preview-while-incomplete\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"background upload survives detached preview: accepted-progress-not-sent\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"background upload survives detached preview: remaining-local-parts\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"background upload survives detached preview: cancel-overrides-upload-status\", \"actual\": \"uploading\", \"expected\": \"uploading\", \"passed\": true}, {\"check\": \"background upload survives detached preview: preview-revoke-on-detach\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"background upload survives detached preview: zero-size-part-completion\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"background upload survives detached preview: inflight-abort-handles\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"background upload survives detached preview: retry-eligible-parts\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"background upload survives detached preview: sent-vs-accepted-indicator\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"background upload survives detached preview: terminal-task-retention\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"background upload survives detached preview: preview-while-incomplete\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.085,"exit_code":0,"observations":[{"actual":1,"check":"accepted-progress-not-sent scenario 1","expected":1,"passed":true},{"actual":0,"check":"accepted-progress-not-sent scenario 2","expected":0,"passed":true},{"actual":2,"check":"accepted-progress-not-sent scenario 3","expected":2,"passed":true},{"actual":0,"check":"accepted-progress-not-sent scenario 4","expected":0,"passed":true},{"actual":3,"check":"accepted-progress-not-sent scenario 5","expected":3,"passed":true},{"actual":5,"check":"accepted-progress-not-sent scenario 6","expected":5,"passed":true},{"actual":[1,2],"check":"remaining-local-parts scenario 1","expected":[1,2],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 2","expected":[],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 3","expected":[],"passed":true},{"actual":[0,1],"check":"remaining-local-parts scenario 4","expected":[0,1],"passed":true},{"actual":[0],"check":"remaining-local-parts scenario 5","expected":[0],"passed":true},{"actual":[],"check":"remaining-local-parts scenario 6","expected":[],"passed":true},{"actual":"uploading","check":"cancel-overrides-upload-status scenario 1","expected":"uploading","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 2","expected":"done","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 3","expected":"done","passed":true},{"actual":"cancelled","check":"cancel-overrides-upload-status scenario 4","expected":"cancelled","passed":true},{"actual":"failed","check":"cancel-overrides-upload-status scenario 5","expected":"failed","passed":true},{"actual":"done","check":"cancel-overrides-upload-status scenario 6","expected":"done","passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 1","expected":null,"passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 2","expected":null,"passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 3","expected":null,"passed":true},{"actual":"blob:c","check":"preview-revoke-on-detach scenario 4","expected":"blob:c","passed":true},{"actual":null,"check":"preview-revoke-on-detach scenario 5","expected":null,"passed":true},{"actual":"blob:e","check":"preview-revoke-on-detach scenario 6","expected":"blob:e","passed":true},{"actual":false,"check":"zero-size-part-completion scenario 1","expected":false,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 2","expected":true,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 3","expected":true,"passed":true},{"actual":false,"check":"zero-size-part-completion scenario 4","expected":false,"passed":true},{"actual":false,"check":"zero-size-part-completion scenario 5","expected":false,"passed":true},{"actual":true,"check":"zero-size-part-completion scenario 6","expected":true,"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 1","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 2","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 3","expected":[],"passed":true},{"actual":[0],"check":"inflight-abort-handles scenario 4","expected":[0],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 5","expected":[],"passed":true},{"actual":[],"check":"inflight-abort-handles scenario 6","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 1","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 2","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 3","expected":[],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 4","expected":[],"passed":true},{"actual":[0],"check":"retry-eligible-parts scenario 5","expected":[0],"passed":true},{"actual":[],"check":"retry-eligible-parts scenario 6","expected":[],"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 1","expected":1,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 2","expected":0,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 3","expected":0,"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 4","expected":1,"passed":true},{"actual":1,"check":"sent-vs-accepted-indicator scenario 5","expected":1,"passed":true},{"actual":0,"check":"sent-vs-accepted-indicator scenario 6","expected":0,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 1","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 2","expected":false,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 3","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 4","expected":false,"passed":true},{"actual":true,"check":"terminal-task-retention scenario 5","expected":true,"passed":true},{"actual":false,"check":"terminal-task-retention scenario 6","expected":false,"passed":true},{"actual":"blob:a","check":"preview-while-incomplete scenario 1","expected":"blob:a","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 2","expected":null,"passed":true},{"actual":"blob:b","check":"preview-while-incomplete scenario 3","expected":"blob:b","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 4","expected":null,"passed":true},{"actual":"blob:d","check":"preview-while-incomplete scenario 5","expected":"blob:d","passed":true},{"actual":null,"check":"preview-while-incomplete scenario 6","expected":null,"passed":true},{"actual":2,"check":"cancel after one accepted and two inflight parts: accepted-progress-not-sent","expected":2,"passed":true},{"actual":[1,2],"check":"cancel after one accepted and two inflight parts: remaining-local-parts","expected":[1,2],"passed":true},{"actual":"cancelled","check":"cancel after one accepted and two inflight parts: cancel-overrides-upload-status","expected":"cancelled","passed":true},{"actual":"blob:z","check":"cancel after one accepted and two inflight parts: preview-revoke-on-detach","expected":"blob:z","passed":true},{"actual":false,"check":"cancel after one accepted and two inflight parts: zero-size-part-completion","expected":false,"passed":true},{"actual":[1,2],"check":"cancel after one accepted and two inflight parts: inflight-abort-handles","expected":[1,2],"passed":true},{"actual":[],"check":"cancel after one accepted and two inflight parts: retry-eligible-parts","expected":[],"passed":true},{"actual":2,"check":"cancel after one accepted and two inflight parts: sent-vs-accepted-indicator","expected":2,"passed":true},{"actual":false,"check":"cancel after one accepted and two inflight parts: terminal-task-retention","expected":false,"passed":true},{"actual":null,"check":"cancel after one accepted and two inflight parts: preview-while-incomplete","expected":null,"passed":true},{"actual":0,"check":"background upload survives detached preview: accepted-progress-not-sent","expected":0,"passed":true},{"actual":[0],"check":"background upload survives detached preview: remaining-local-parts","expected":[0],"passed":true},{"actual":"uploading","check":"background upload survives detached preview: cancel-overrides-upload-status","expected":"uploading","passed":true},{"actual":null,"check":"background upload survives detached preview: preview-revoke-on-detach","expected":null,"passed":true},{"actual":false,"check":"background upload survives detached preview: zero-size-part-completion","expected":false,"passed":true},{"actual":[],"check":"background upload survives detached preview: inflight-abort-handles","expected":[],"passed":true},{"actual":[],"check":"background upload survives detached preview: retry-eligible-parts","expected":[],"passed":true},{"actual":0,"check":"background upload survives detached preview: sent-vs-accepted-indicator","expected":0,"passed":true},{"actual":true,"check":"background upload survives detached preview: terminal-task-retention","expected":true,"passed":true},{"actual":null,"check":"background upload survives detached preview: preview-while-incomplete","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"accepted-progress-not-sent scenario 1\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 3\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 4\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 5\", \"actual\": 3, \"expected\": 3, \"passed\": true}, {\"check\": \"accepted-progress-not-sent scenario 6\", \"actual\": 5, \"expected\": 5, \"passed\": true}, {\"check\": \"remaining-local-parts scenario 1\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 4\", \"actual\": [0, 1], \"expected\": [0, 1], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 5\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"remaining-local-parts scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 1\", \"actual\": \"uploading\", \"expected\": \"uploading\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 2\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 3\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 4\", \"actual\": \"cancelled\", \"expected\": \"cancelled\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 5\", \"actual\": \"failed\", \"expected\": \"failed\", \"passed\": true}, {\"check\": \"cancel-overrides-upload-status scenario 6\", \"actual\": \"done\", \"expected\": \"done\", \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 1\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 3\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 4\", \"actual\": \"blob:c\", \"expected\": \"blob:c\", \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 5\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-revoke-on-detach scenario 6\", \"actual\": \"blob:e\", \"expected\": \"blob:e\", \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 1\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 2\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 5\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"zero-size-part-completion scenario 6\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 4\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 5\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"inflight-abort-handles scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 1\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 2\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 3\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 4\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 5\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"retry-eligible-parts scenario 6\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 1\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 2\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 3\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 4\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 5\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"sent-vs-accepted-indicator scenario 6\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 1\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 3\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 5\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"terminal-task-retention scenario 6\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 1\", \"actual\": \"blob:a\", \"expected\": \"blob:a\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 2\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 3\", \"actual\": \"blob:b\", \"expected\": \"blob:b\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 4\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 5\", \"actual\": \"blob:d\", \"expected\": \"blob:d\", \"passed\": true}, {\"check\": \"preview-while-incomplete scenario 6\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: accepted-progress-not-sent\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: remaining-local-parts\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: cancel-overrides-upload-status\", \"actual\": \"cancelled\", \"expected\": \"cancelled\", \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: preview-revoke-on-detach\", \"actual\": \"blob:z\", \"expected\": \"blob:z\", \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: zero-size-part-completion\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: inflight-abort-handles\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: retry-eligible-parts\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: sent-vs-accepted-indicator\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: terminal-task-retention\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"cancel after one accepted and two inflight parts: preview-while-incomplete\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"background upload survives detached preview: accepted-progress-not-sent\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"background upload survives detached preview: remaining-local-parts\", \"actual\": [0], \"expected\": [0], \"passed\": true}, {\"check\": \"background upload survives detached preview: cancel-overrides-upload-status\", \"actual\": \"uploading\", \"expected\": \"uploading\", \"passed\": true}, {\"check\": \"background upload survives detached preview: preview-revoke-on-detach\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"background upload survives detached preview: zero-size-part-completion\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"background upload survives detached preview: inflight-abort-handles\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"background upload survives detached preview: retry-eligible-parts\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"background upload survives detached preview: sent-vs-accepted-indicator\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"background upload survives detached preview: terminal-task-retention\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"background upload survives detached preview: preview-while-incomplete\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}