{"abstract":"File basenames become fallback accessible labels.","category":"Accessibility interaction semantics","checks":9,"contract":"Input [decorative,interactive,alt,title,caption,ocr,ocr_consent,filename,loaded,broken]. None alt means absent; empty alt is intentional. Interactive decorative images retain semantics. Source priority is explicit alt (even empty), nonempty caption, title, consented OCR when loaded and not broken; filename is never spoken. Decorative noninteractive images return None. Return [text,source,status] where status is broken, loading, ready with broken highest priority. Normalization strips only surrounding ASCII spaces; OCR is marked inferred.","evaluation_group":"s3-accessibility-image-alternative","failed_approach":"The local repair substitutes return [filename.rsplit('/',1)[-1],None,status] but still mishandles the regression fixtures.","family":"s3-accessibility-image-alternative-filename-privacy","id":"FA-53701","implementations":{"attempt":{"sha256":"81bed7617b0ff05a78f876912961367b2935a8c3081f97945da3fd2e21817718","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    decorative,interactive,alt,title,caption,ocr,consent,filename,loaded,broken = data\n    if decorative and not interactive: return None\n    status = 'broken' if broken else ('ready' if loaded else 'loading')\n    if alt is not None: return [alt.strip(' '),'alt',status]\n    if caption: return [caption.strip(' '),'caption',status]\n    if title: return [title.strip(' '),'title',status]\n    if consent and loaded and not broken and ocr: return [ocr.strip(' '),'inferred',status]\n    return [filename.rsplit('/',1)[-1],None,status]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('decorative inert', solve([True,False,None,'title','caption','ocr',True,'file',True,False],), None)\ncheck('decorative interactive', solve([True,True,' Label '+str(N)+' ','title','caption','ocr',True,'file',True,False],), ['Label '+str(N),'alt','ready'])\ncheck('intentional empty', solve([False,False,'','title','caption','ocr',True,'file',True,False],), ['','alt','ready'])\ncheck('caption precedence', solve([False,False,None,'title',' caption ','ocr',True,'file',True,False],), ['caption','caption','ready'])\ncheck('title only', solve([False,False,None,' title ','','ocr',True,'file',False,False],), ['title','title','loading'])\ncheck('OCR inferred', solve([False,False,None,'','',' OCR '+str(N)+' ',True,'file',True,False],), ['OCR '+str(N),'inferred','ready'])\ncheck('unconsented OCR', solve([False,False,None,'','','ocr',False,'file',True,False],), ['',None,'ready'])\ncheck('loading OCR', solve([False,False,None,'','','ocr',True,'file',False,False],), ['',None,'loading'])\ncheck('broken OCR', solve([False,False,None,'','','ocr',True,'file',True,True],), ['',None,'broken'])\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":"f44df3931d202f976f1287c1ee678e5dae077e6c0dfc0defae955214a4607cde","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    decorative,interactive,alt,title,caption,ocr,consent,filename,loaded,broken = data\n    if decorative and not interactive: return None\n    status = 'broken' if broken else ('ready' if loaded else 'loading')\n    if alt is not None: return [alt.strip(' '),'alt',status]\n    if caption: return [caption.strip(' '),'caption',status]\n    if title: return [title.strip(' '),'title',status]\n    if consent and loaded and not broken and ocr: return [ocr.strip(' '),'inferred',status]\n    return [filename,'filename',status]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('decorative inert', solve([True,False,None,'title','caption','ocr',True,'file',True,False],), None)\ncheck('decorative interactive', solve([True,True,' Label '+str(N)+' ','title','caption','ocr',True,'file',True,False],), ['Label '+str(N),'alt','ready'])\ncheck('intentional empty', solve([False,False,'','title','caption','ocr',True,'file',True,False],), ['','alt','ready'])\ncheck('caption precedence', solve([False,False,None,'title',' caption ','ocr',True,'file',True,False],), ['caption','caption','ready'])\ncheck('title only', solve([False,False,None,' title ','','ocr',True,'file',False,False],), ['title','title','loading'])\ncheck('OCR inferred', solve([False,False,None,'','',' OCR '+str(N)+' ',True,'file',True,False],), ['OCR '+str(N),'inferred','ready'])\ncheck('unconsented OCR', solve([False,False,None,'','','ocr',False,'file',True,False],), ['',None,'ready'])\ncheck('loading OCR', solve([False,False,None,'','','ocr',True,'file',False,False],), ['',None,'loading'])\ncheck('broken OCR', solve([False,False,None,'','','ocr',True,'file',True,True],), ['',None,'broken'])\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":"4a3a0b6358cafdc59ac1ed787bc5ac36978c5f0b74fe66a599ef6f48a95f4639","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(data):\n    decorative,interactive,alt,title,caption,ocr,consent,filename,loaded,broken = data\n    if decorative and not interactive: return None\n    status = 'broken' if broken else ('ready' if loaded else 'loading')\n    if alt is not None: return [alt.strip(' '),'alt',status]\n    if caption: return [caption.strip(' '),'caption',status]\n    if title: return [title.strip(' '),'title',status]\n    if consent and loaded and not broken and ocr: return [ocr.strip(' '),'inferred',status]\n    return ['',None,status]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('decorative inert', solve([True,False,None,'title','caption','ocr',True,'file',True,False],), None)\ncheck('decorative interactive', solve([True,True,' Label '+str(N)+' ','title','caption','ocr',True,'file',True,False],), ['Label '+str(N),'alt','ready'])\ncheck('intentional empty', solve([False,False,'','title','caption','ocr',True,'file',True,False],), ['','alt','ready'])\ncheck('caption precedence', solve([False,False,None,'title',' caption ','ocr',True,'file',True,False],), ['caption','caption','ready'])\ncheck('title only', solve([False,False,None,' title ','','ocr',True,'file',False,False],), ['title','title','loading'])\ncheck('OCR inferred', solve([False,False,None,'','',' OCR '+str(N)+' ',True,'file',True,False],), ['OCR '+str(N),'inferred','ready'])\ncheck('unconsented OCR', solve([False,False,None,'','','ocr',False,'file',True,False],), ['',None,'ready'])\ncheck('loading OCR', solve([False,False,None,'','','ocr',True,'file',False,False],), ['',None,'loading'])\ncheck('broken OCR', solve([False,False,None,'','','ocr',True,'file',True,True],), ['',None,'broken'])\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":"Stipulated finite adapter contract, not a claim of platform accessibility or ARIA conformance. 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-accessibility-image-alternative-filename-privacy","generated_at":"2026-09-29T14:45:41.410638+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline accessibility bridge model with explicit policy; useful for testing semantic API adapters independently of browser implementations.","repair":"Apply the exact contract at the filename privacy decision: return ['',None,status]","root_cause":"The filename privacy decision in the image alternative adapter violates its declared contract.","sha256":"507c655aa3ba1966ff189f86c4d2c08f55f2a5f1912480c7316e6af06e3208d9","title":"File basenames become fallback accessible labels · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.601,"exit_code":1,"observations":[{"actual":null,"check":"decorative inert","expected":null,"passed":true},{"actual":["Label 1","alt","ready"],"check":"decorative interactive","expected":["Label 1","alt","ready"],"passed":true},{"actual":["","alt","ready"],"check":"intentional empty","expected":["","alt","ready"],"passed":true},{"actual":["caption","caption","ready"],"check":"caption precedence","expected":["caption","caption","ready"],"passed":true},{"actual":["title","title","loading"],"check":"title only","expected":["title","title","loading"],"passed":true},{"actual":["OCR 1","inferred","ready"],"check":"OCR inferred","expected":["OCR 1","inferred","ready"],"passed":true},{"actual":["file",null,"ready"],"check":"unconsented OCR","expected":["",null,"ready"],"passed":false},{"actual":["file",null,"loading"],"check":"loading OCR","expected":["",null,"loading"],"passed":false},{"actual":["file",null,"broken"],"check":"broken OCR","expected":["",null,"broken"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"decorative inert\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"decorative interactive\", \"actual\": [\"Label 1\", \"alt\", \"ready\"], \"expected\": [\"Label 1\", \"alt\", \"ready\"], \"passed\": true}, {\"check\": \"intentional empty\", \"actual\": [\"\", \"alt\", \"ready\"], \"expected\": [\"\", \"alt\", \"ready\"], \"passed\": true}, {\"check\": \"caption precedence\", \"actual\": [\"caption\", \"caption\", \"ready\"], \"expected\": [\"caption\", \"caption\", \"ready\"], \"passed\": true}, {\"check\": \"title only\", \"actual\": [\"title\", \"title\", \"loading\"], \"expected\": [\"title\", \"title\", \"loading\"], \"passed\": true}, {\"check\": \"OCR inferred\", \"actual\": [\"OCR 1\", \"inferred\", \"ready\"], \"expected\": [\"OCR 1\", \"inferred\", \"ready\"], \"passed\": true}, {\"check\": \"unconsented OCR\", \"actual\": [\"file\", null, \"ready\"], \"expected\": [\"\", null, \"ready\"], \"passed\": false}, {\"check\": \"loading OCR\", \"actual\": [\"file\", null, \"loading\"], \"expected\": [\"\", null, \"loading\"], \"passed\": false}, {\"check\": \"broken OCR\", \"actual\": [\"file\", null, \"broken\"], \"expected\": [\"\", null, \"broken\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.766,"exit_code":1,"observations":[{"actual":null,"check":"decorative inert","expected":null,"passed":true},{"actual":["Label 1","alt","ready"],"check":"decorative interactive","expected":["Label 1","alt","ready"],"passed":true},{"actual":["","alt","ready"],"check":"intentional empty","expected":["","alt","ready"],"passed":true},{"actual":["caption","caption","ready"],"check":"caption precedence","expected":["caption","caption","ready"],"passed":true},{"actual":["title","title","loading"],"check":"title only","expected":["title","title","loading"],"passed":true},{"actual":["OCR 1","inferred","ready"],"check":"OCR inferred","expected":["OCR 1","inferred","ready"],"passed":true},{"actual":["file","filename","ready"],"check":"unconsented OCR","expected":["",null,"ready"],"passed":false},{"actual":["file","filename","loading"],"check":"loading OCR","expected":["",null,"loading"],"passed":false},{"actual":["file","filename","broken"],"check":"broken OCR","expected":["",null,"broken"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"decorative inert\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"decorative interactive\", \"actual\": [\"Label 1\", \"alt\", \"ready\"], \"expected\": [\"Label 1\", \"alt\", \"ready\"], \"passed\": true}, {\"check\": \"intentional empty\", \"actual\": [\"\", \"alt\", \"ready\"], \"expected\": [\"\", \"alt\", \"ready\"], \"passed\": true}, {\"check\": \"caption precedence\", \"actual\": [\"caption\", \"caption\", \"ready\"], \"expected\": [\"caption\", \"caption\", \"ready\"], \"passed\": true}, {\"check\": \"title only\", \"actual\": [\"title\", \"title\", \"loading\"], \"expected\": [\"title\", \"title\", \"loading\"], \"passed\": true}, {\"check\": \"OCR inferred\", \"actual\": [\"OCR 1\", \"inferred\", \"ready\"], \"expected\": [\"OCR 1\", \"inferred\", \"ready\"], \"passed\": true}, {\"check\": \"unconsented OCR\", \"actual\": [\"file\", \"filename\", \"ready\"], \"expected\": [\"\", null, \"ready\"], \"passed\": false}, {\"check\": \"loading OCR\", \"actual\": [\"file\", \"filename\", \"loading\"], \"expected\": [\"\", null, \"loading\"], \"passed\": false}, {\"check\": \"broken OCR\", \"actual\": [\"file\", \"filename\", \"broken\"], \"expected\": [\"\", null, \"broken\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.435,"exit_code":0,"observations":[{"actual":null,"check":"decorative inert","expected":null,"passed":true},{"actual":["Label 1","alt","ready"],"check":"decorative interactive","expected":["Label 1","alt","ready"],"passed":true},{"actual":["","alt","ready"],"check":"intentional empty","expected":["","alt","ready"],"passed":true},{"actual":["caption","caption","ready"],"check":"caption precedence","expected":["caption","caption","ready"],"passed":true},{"actual":["title","title","loading"],"check":"title only","expected":["title","title","loading"],"passed":true},{"actual":["OCR 1","inferred","ready"],"check":"OCR inferred","expected":["OCR 1","inferred","ready"],"passed":true},{"actual":["",null,"ready"],"check":"unconsented OCR","expected":["",null,"ready"],"passed":true},{"actual":["",null,"loading"],"check":"loading OCR","expected":["",null,"loading"],"passed":true},{"actual":["",null,"broken"],"check":"broken OCR","expected":["",null,"broken"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"decorative inert\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"decorative interactive\", \"actual\": [\"Label 1\", \"alt\", \"ready\"], \"expected\": [\"Label 1\", \"alt\", \"ready\"], \"passed\": true}, {\"check\": \"intentional empty\", \"actual\": [\"\", \"alt\", \"ready\"], \"expected\": [\"\", \"alt\", \"ready\"], \"passed\": true}, {\"check\": \"caption precedence\", \"actual\": [\"caption\", \"caption\", \"ready\"], \"expected\": [\"caption\", \"caption\", \"ready\"], \"passed\": true}, {\"check\": \"title only\", \"actual\": [\"title\", \"title\", \"loading\"], \"expected\": [\"title\", \"title\", \"loading\"], \"passed\": true}, {\"check\": \"OCR inferred\", \"actual\": [\"OCR 1\", \"inferred\", \"ready\"], \"expected\": [\"OCR 1\", \"inferred\", \"ready\"], \"passed\": true}, {\"check\": \"unconsented OCR\", \"actual\": [\"\", null, \"ready\"], \"expected\": [\"\", null, \"ready\"], \"passed\": true}, {\"check\": \"loading OCR\", \"actual\": [\"\", null, \"loading\"], \"expected\": [\"\", null, \"loading\"], \"passed\": true}, {\"check\": \"broken OCR\", \"actual\": [\"\", null, \"broken\"], \"expected\": [\"\", null, \"broken\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}