{"abstract":"The tab workspace reports an incorrect visible origin.","category":"Tab interfaces","checks":7,"contract":"Reveal a tab in a horizontally scrolled strip using its full bounds; account for pinned strip width and clamp to content scroll limits.","contract_signature":"x","evaluation_group":"s3-tabs-strip-reveal","failed_approach":"The partial repair x['pinned'] still violates a workspace boundary or normal case.","family":"s3-tab-interfaces-strip-reveal-visible-origin","id":"FA-35581","implementations":{"attempt":{"sha256":"b735720fd0c8a6f504d797f080368deaa3b0b02f7d92256d9b0da1ae4498d9ab","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = x['pinned']\n    r1 = x['scroll']+x['viewport']\n    r2 = x['left']<x['scroll']+x['pinned']\n    r3 = x['right']>x['scroll']+x['viewport']\n    r4 = max(0,x['total']-x['viewport'])\n    r5 = max(0,min(x['total']-x['viewport'], x['left']-x['pinned'] if x['left']<x['scroll']+x['pinned'] else max(x['scroll'],x['right']-x['viewport'])))\n    return [r0,r1,r2,r3,r4,r5]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = {1: [({'left': 130, 'right': 210, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, False, True, 300, 110]), ({'left': 80, 'right': 110, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, True, False, 300, 60]), ({'left': 110, 'right': 140, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, True, False, 300, 90]), ({'left': 0, 'right': 30, 'scroll': 0, 'viewport': 100, 'pinned': 20, 'total': 400}, [20, 100, True, False, 300, 0]), ({'left': 350, 'right': 400, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, False, True, 300, 300]), ({'left': 130, 'right': 210, 'scroll': 100, 'viewport': 100, 'pinned': 0, 'total': 400}, [100, 200, False, True, 300, 110]), ({'left': 120, 'right': 200, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, False, False, 300, 100])], 2: [({'left': 260, 'right': 420, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, False, True, 600, 220]), ({'left': 160, 'right': 220, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, True, False, 600, 120]), ({'left': 220, 'right': 280, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, True, False, 600, 180]), ({'left': 0, 'right': 60, 'scroll': 0, 'viewport': 200, 'pinned': 40, 'total': 800}, [40, 200, True, False, 600, 0]), ({'left': 700, 'right': 800, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, False, True, 600, 600]), ({'left': 260, 'right': 420, 'scroll': 200, 'viewport': 200, 'pinned': 0, 'total': 800}, [200, 400, False, True, 600, 220]), ({'left': 240, 'right': 400, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, False, False, 600, 200])], 3: [({'left': 390, 'right': 630, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, False, True, 900, 330]), ({'left': 240, 'right': 330, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, True, False, 900, 180]), ({'left': 330, 'right': 420, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, True, False, 900, 270]), ({'left': 0, 'right': 90, 'scroll': 0, 'viewport': 300, 'pinned': 60, 'total': 1200}, [60, 300, True, False, 900, 0]), ({'left': 1050, 'right': 1200, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, False, True, 900, 900]), ({'left': 390, 'right': 630, 'scroll': 300, 'viewport': 300, 'pinned': 0, 'total': 1200}, [300, 600, False, True, 900, 330]), ({'left': 360, 'right': 600, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, False, False, 900, 300])], 4: [({'left': 520, 'right': 840, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, False, True, 1200, 440]), ({'left': 320, 'right': 440, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, True, False, 1200, 240]), ({'left': 440, 'right': 560, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, True, False, 1200, 360]), ({'left': 0, 'right': 120, 'scroll': 0, 'viewport': 400, 'pinned': 80, 'total': 1600}, [80, 400, True, False, 1200, 0]), ({'left': 1400, 'right': 1600, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, False, True, 1200, 1200]), ({'left': 520, 'right': 840, 'scroll': 400, 'viewport': 400, 'pinned': 0, 'total': 1600}, [400, 800, False, True, 1200, 440]), ({'left': 480, 'right': 800, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, False, False, 1200, 400])], 5: [({'left': 650, 'right': 1050, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, False, True, 1500, 550]), ({'left': 400, 'right': 550, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, True, False, 1500, 300]), ({'left': 550, 'right': 700, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, True, False, 1500, 450]), ({'left': 0, 'right': 150, 'scroll': 0, 'viewport': 500, 'pinned': 100, 'total': 2000}, [100, 500, True, False, 1500, 0]), ({'left': 1750, 'right': 2000, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, False, True, 1500, 1500]), ({'left': 650, 'right': 1050, 'scroll': 500, 'viewport': 500, 'pinned': 0, 'total': 2000}, [500, 1000, False, True, 1500, 550]), ({'left': 600, 'right': 1000, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, False, False, 1500, 500])]}\nfor i, (inputs, expected) in enumerate(fixtures[N]):\n    check(\"workspace regression \"+str(i), solve(inputs), expected)\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":"5a93c929edfee920bfad1bedd6f653691fdcfed785080b1a41e1bd9a55a4009d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    r0 = x['scroll']\n    r1 = x['scroll']+x['viewport']\n    r2 = x['left']<x['scroll']+x['pinned']\n    r3 = x['right']>x['scroll']+x['viewport']\n    r4 = max(0,x['total']-x['viewport'])\n    r5 = max(0,min(x['total']-x['viewport'], x['left']-x['pinned'] if x['left']<x['scroll']+x['pinned'] else max(x['scroll'],x['right']-x['viewport'])))\n    return [r0,r1,r2,r3,r4,r5]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = {1: [({'left': 130, 'right': 210, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, False, True, 300, 110]), ({'left': 80, 'right': 110, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, True, False, 300, 60]), ({'left': 110, 'right': 140, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, True, False, 300, 90]), ({'left': 0, 'right': 30, 'scroll': 0, 'viewport': 100, 'pinned': 20, 'total': 400}, [20, 100, True, False, 300, 0]), ({'left': 350, 'right': 400, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, False, True, 300, 300]), ({'left': 130, 'right': 210, 'scroll': 100, 'viewport': 100, 'pinned': 0, 'total': 400}, [100, 200, False, True, 300, 110]), ({'left': 120, 'right': 200, 'scroll': 100, 'viewport': 100, 'pinned': 20, 'total': 400}, [120, 200, False, False, 300, 100])], 2: [({'left': 260, 'right': 420, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, False, True, 600, 220]), ({'left': 160, 'right': 220, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, True, False, 600, 120]), ({'left': 220, 'right': 280, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, True, False, 600, 180]), ({'left': 0, 'right': 60, 'scroll': 0, 'viewport': 200, 'pinned': 40, 'total': 800}, [40, 200, True, False, 600, 0]), ({'left': 700, 'right': 800, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, False, True, 600, 600]), ({'left': 260, 'right': 420, 'scroll': 200, 'viewport': 200, 'pinned': 0, 'total': 800}, [200, 400, False, True, 600, 220]), ({'left': 240, 'right': 400, 'scroll': 200, 'viewport': 200, 'pinned': 40, 'total': 800}, [240, 400, False, False, 600, 200])], 3: [({'left': 390, 'right': 630, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, False, True, 900, 330]), ({'left': 240, 'right': 330, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, True, False, 900, 180]), ({'left': 330, 'right': 420, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, True, False, 900, 270]), ({'left': 0, 'right': 90, 'scroll': 0, 'viewport': 300, 'pinned': 60, 'total': 1200}, [60, 300, True, False, 900, 0]), ({'left': 1050, 'right': 1200, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, False, True, 900, 900]), ({'left': 390, 'right': 630, 'scroll': 300, 'viewport': 300, 'pinned': 0, 'total': 1200}, [300, 600, False, True, 900, 330]), ({'left': 360, 'right': 600, 'scroll': 300, 'viewport': 300, 'pinned': 60, 'total': 1200}, [360, 600, False, False, 900, 300])], 4: [({'left': 520, 'right': 840, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, False, True, 1200, 440]), ({'left': 320, 'right': 440, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, True, False, 1200, 240]), ({'left': 440, 'right': 560, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, True, False, 1200, 360]), ({'left': 0, 'right': 120, 'scroll': 0, 'viewport': 400, 'pinned': 80, 'total': 1600}, [80, 400, True, False, 1200, 0]), ({'left': 1400, 'right': 1600, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, False, True, 1200, 1200]), ({'left': 520, 'right': 840, 'scroll': 400, 'viewport': 400, 'pinned': 0, 'total': 1600}, [400, 800, False, True, 1200, 440]), ({'left': 480, 'right': 800, 'scroll': 400, 'viewport': 400, 'pinned': 80, 'total': 1600}, [480, 800, False, False, 1200, 400])], 5: [({'left': 650, 'right': 1050, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, False, True, 1500, 550]), ({'left': 400, 'right': 550, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, True, False, 1500, 300]), ({'left': 550, 'right': 700, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, True, False, 1500, 450]), ({'left': 0, 'right': 150, 'scroll': 0, 'viewport': 500, 'pinned': 100, 'total': 2000}, [100, 500, True, False, 1500, 0]), ({'left': 1750, 'right': 2000, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, False, True, 1500, 1500]), ({'left': 650, 'right': 1050, 'scroll': 500, 'viewport': 500, 'pinned': 0, 'total': 2000}, [500, 1000, False, True, 1500, 550]), ({'left': 600, 'right': 1000, 'scroll': 500, 'viewport': 500, 'pinned': 100, 'total': 2000}, [600, 1000, False, False, 1500, 500])]}\nfor i, (inputs, expected) in enumerate(fixtures[N]):\n    check(\"workspace regression \"+str(i), solve(inputs), expected)\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":"Finite stipulated workspace snapshots only. Independent result fields describe observable obligations, not a full UI runtime. 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-tab-interfaces-strip-reveal-visible-origin","generated_at":"2026-09-29T14:42:43.264832+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline tab/panel workspace behavior; no browser or desktop framework is emulated.","root_cause":"The visible origin decision uses x['scroll'] instead of x['scroll']+x['pinned'].","sha256":"bf7fbdcc9803ace96a2ecdb90ce245df97fa5a0637255b6ff842136976bff7bd","title":"Strip reveal: visible origin · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":42.183,"exit_code":1,"observations":[{"actual":[20,200,false,true,300,110],"check":"workspace regression 0","expected":[120,200,false,true,300,110],"passed":false},{"actual":[20,200,true,false,300,60],"check":"workspace regression 1","expected":[120,200,true,false,300,60],"passed":false},{"actual":[20,200,true,false,300,90],"check":"workspace regression 2","expected":[120,200,true,false,300,90],"passed":false},{"actual":[20,100,true,false,300,0],"check":"workspace regression 3","expected":[20,100,true,false,300,0],"passed":true},{"actual":[20,200,false,true,300,300],"check":"workspace regression 4","expected":[120,200,false,true,300,300],"passed":false},{"actual":[0,200,false,true,300,110],"check":"workspace regression 5","expected":[100,200,false,true,300,110],"passed":false},{"actual":[20,200,false,false,300,100],"check":"workspace regression 6","expected":[120,200,false,false,300,100],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [20, 200, false, true, 300, 110], \"expected\": [120, 200, false, true, 300, 110], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [20, 200, true, false, 300, 60], \"expected\": [120, 200, true, false, 300, 60], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [20, 200, true, false, 300, 90], \"expected\": [120, 200, true, false, 300, 90], \"passed\": false}, {\"check\": \"workspace regression 3\", \"actual\": [20, 100, true, false, 300, 0], \"expected\": [20, 100, true, false, 300, 0], \"passed\": true}, {\"check\": \"workspace regression 4\", \"actual\": [20, 200, false, true, 300, 300], \"expected\": [120, 200, false, true, 300, 300], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [0, 200, false, true, 300, 110], \"expected\": [100, 200, false, true, 300, 110], \"passed\": false}, {\"check\": \"workspace regression 6\", \"actual\": [20, 200, false, false, 300, 100], \"expected\": [120, 200, false, false, 300, 100], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.752,"exit_code":1,"observations":[{"actual":[100,200,false,true,300,110],"check":"workspace regression 0","expected":[120,200,false,true,300,110],"passed":false},{"actual":[100,200,true,false,300,60],"check":"workspace regression 1","expected":[120,200,true,false,300,60],"passed":false},{"actual":[100,200,true,false,300,90],"check":"workspace regression 2","expected":[120,200,true,false,300,90],"passed":false},{"actual":[0,100,true,false,300,0],"check":"workspace regression 3","expected":[20,100,true,false,300,0],"passed":false},{"actual":[100,200,false,true,300,300],"check":"workspace regression 4","expected":[120,200,false,true,300,300],"passed":false},{"actual":[100,200,false,true,300,110],"check":"workspace regression 5","expected":[100,200,false,true,300,110],"passed":true},{"actual":[100,200,false,false,300,100],"check":"workspace regression 6","expected":[120,200,false,false,300,100],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"workspace regression 0\", \"actual\": [100, 200, false, true, 300, 110], \"expected\": [120, 200, false, true, 300, 110], \"passed\": false}, {\"check\": \"workspace regression 1\", \"actual\": [100, 200, true, false, 300, 60], \"expected\": [120, 200, true, false, 300, 60], \"passed\": false}, {\"check\": \"workspace regression 2\", \"actual\": [100, 200, true, false, 300, 90], \"expected\": [120, 200, true, false, 300, 90], \"passed\": false}, {\"check\": \"workspace regression 3\", \"actual\": [0, 100, true, false, 300, 0], \"expected\": [20, 100, true, false, 300, 0], \"passed\": false}, {\"check\": \"workspace regression 4\", \"actual\": [100, 200, false, true, 300, 300], \"expected\": [120, 200, false, true, 300, 300], \"passed\": false}, {\"check\": \"workspace regression 5\", \"actual\": [100, 200, false, true, 300, 110], \"expected\": [100, 200, false, true, 300, 110], \"passed\": true}, {\"check\": \"workspace regression 6\", \"actual\": [100, 200, false, false, 300, 100], \"expected\": [120, 200, false, false, 300, 100], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}