{"abstract":"A completed zero-span range is announced as unstarted.","category":"Assistive semantics","checks":7,"contract":"Indeterminate indicators omit numeric value and are busy; determinate values clamp, percentages normalize the range, zero-span means complete, and busy reflects explicit state.","contract_signature":"value, minimum, maximum, label, busy","evaluation_group":"xi-progress","failed_approach":"Half completion also contradicts the completed-range contract.","family":"xi-progress-empty-range","id":"FA-8746","implementations":{"attempt":{"sha256":"e3d74b8b822de9b255ff27573f630d53f9b9a694157263233a9bd8a85d684f95","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(value, minimum, maximum, label, busy):\n    if value is None: return {'role':'progressbar', 'label':label, 'busy':True}\n    value = max(minimum, min(value, maximum))\n    ratio = (value-minimum)/(maximum-minimum) if maximum > minimum else 0.5\n    return {'role':'progressbar', 'label':label, 'busy':busy, 'value':value, 'percent':round(ratio*100)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('indeterminate', solve(None, 0, 100, 'Upload', True), {'role': 'progressbar', 'label': 'Upload', 'busy': True})\ncheck('below', solve(-5, 10, 30, 'Upload', True), {'role': 'progressbar', 'label': 'Upload', 'busy': True, 'value': 10, 'percent': 0})\ncheck('above', solve(40, 10, 30, 'Upload', False), {'role': 'progressbar', 'label': 'Upload', 'busy': False, 'value': 30, 'percent': 100})\ncheck('offset', solve(20, 10, 30, 'Upload', True), {'role': 'progressbar', 'label': 'Upload', 'busy': True, 'value': 20, 'percent': 50})\ncheck('empty range', solve(10, 10, 10, 'Upload', False), {'role': 'progressbar', 'label': 'Upload', 'busy': False, 'value': 10, 'percent': 100})\ncheck('parameterized progress range', solve(2*N,N,3*N,'Task',True), dict(role='progressbar',label='Task',busy=True,value=2*N,percent=50))\nfor repetition in range(N):\n    check('repeat empty range', solve(10, 10, 10, 'Upload', False), {'role': 'progressbar', 'label': 'Upload', 'busy': False, 'value': 10, 'percent': 100})\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":"0c41c72e93a4804d146a2e4c554177619c01097c9bc3d426b19546ad50465749","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(value, minimum, maximum, label, busy):\n    if value is None: return {'role':'progressbar', 'label':label, 'busy':True}\n    value = max(minimum, min(value, maximum))\n    ratio = (value-minimum)/(maximum-minimum) if maximum > minimum else 0\n    return {'role':'progressbar', 'label':label, 'busy':busy, 'value':value, 'percent':round(ratio*100)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('indeterminate', solve(None, 0, 100, 'Upload', True), {'role': 'progressbar', 'label': 'Upload', 'busy': True})\ncheck('below', solve(-5, 10, 30, 'Upload', True), {'role': 'progressbar', 'label': 'Upload', 'busy': True, 'value': 10, 'percent': 0})\ncheck('above', solve(40, 10, 30, 'Upload', False), {'role': 'progressbar', 'label': 'Upload', 'busy': False, 'value': 30, 'percent': 100})\ncheck('offset', solve(20, 10, 30, 'Upload', True), {'role': 'progressbar', 'label': 'Upload', 'busy': True, 'value': 20, 'percent': 50})\ncheck('empty range', solve(10, 10, 10, 'Upload', False), {'role': 'progressbar', 'label': 'Upload', 'busy': False, 'value': 10, 'percent': 100})\ncheck('parameterized progress range', solve(2*N,N,3*N,'Task',True), dict(role='progressbar',label='Task',busy=True,value=2*N,percent=50))\nfor repetition in range(N):\n    check('repeat empty range', solve(10, 10, 10, 'Upload', False), {'role': 'progressbar', 'label': 'Upload', 'busy': False, 'value': 10, 'percent': 100})\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":" 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":"xi-progress-empty-range","generated_at":"2026-09-29T14:38:24.097999+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic model of progress indicator representation; this isolates one interface invariant without requiring a browser.","root_cause":"The empty range operation uses `else 0` where the contract requires `else 1`.","sha256":"7ef28c3bf1a88cbb6e3fb65a7cf5805c579a09b42ec15d2eff17af53f5ff4277","title":"Progress indicator representation: A completed zero-span range is announced as unstarted · 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":41.448,"exit_code":1,"observations":[{"actual":{"busy":true,"label":"Upload","role":"progressbar"},"check":"indeterminate","expected":{"busy":true,"label":"Upload","role":"progressbar"},"passed":true},{"actual":{"busy":true,"label":"Upload","percent":0,"role":"progressbar","value":10},"check":"below","expected":{"busy":true,"label":"Upload","percent":0,"role":"progressbar","value":10},"passed":true},{"actual":{"busy":false,"label":"Upload","percent":100,"role":"progressbar","value":30},"check":"above","expected":{"busy":false,"label":"Upload","percent":100,"role":"progressbar","value":30},"passed":true},{"actual":{"busy":true,"label":"Upload","percent":50,"role":"progressbar","value":20},"check":"offset","expected":{"busy":true,"label":"Upload","percent":50,"role":"progressbar","value":20},"passed":true},{"actual":{"busy":false,"label":"Upload","percent":50,"role":"progressbar","value":10},"check":"empty range","expected":{"busy":false,"label":"Upload","percent":100,"role":"progressbar","value":10},"passed":false},{"actual":{"busy":true,"label":"Task","percent":50,"role":"progressbar","value":2},"check":"parameterized progress range","expected":{"busy":true,"label":"Task","percent":50,"role":"progressbar","value":2},"passed":true},{"actual":{"busy":false,"label":"Upload","percent":50,"role":"progressbar","value":10},"check":"repeat empty range","expected":{"busy":false,"label":"Upload","percent":100,"role":"progressbar","value":10},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"indeterminate\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true}, \"passed\": true}, {\"check\": \"below\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true, \"value\": 10, \"percent\": 0}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true, \"value\": 10, \"percent\": 0}, \"passed\": true}, {\"check\": \"above\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 30, \"percent\": 100}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 30, \"percent\": 100}, \"passed\": true}, {\"check\": \"offset\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true, \"value\": 20, \"percent\": 50}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true, \"value\": 20, \"percent\": 50}, \"passed\": true}, {\"check\": \"empty range\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 10, \"percent\": 50}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 10, \"percent\": 100}, \"passed\": false}, {\"check\": \"parameterized progress range\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Task\", \"busy\": true, \"value\": 2, \"percent\": 50}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Task\", \"busy\": true, \"value\": 2, \"percent\": 50}, \"passed\": true}, {\"check\": \"repeat empty range\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 10, \"percent\": 50}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 10, \"percent\": 100}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.539,"exit_code":1,"observations":[{"actual":{"busy":true,"label":"Upload","role":"progressbar"},"check":"indeterminate","expected":{"busy":true,"label":"Upload","role":"progressbar"},"passed":true},{"actual":{"busy":true,"label":"Upload","percent":0,"role":"progressbar","value":10},"check":"below","expected":{"busy":true,"label":"Upload","percent":0,"role":"progressbar","value":10},"passed":true},{"actual":{"busy":false,"label":"Upload","percent":100,"role":"progressbar","value":30},"check":"above","expected":{"busy":false,"label":"Upload","percent":100,"role":"progressbar","value":30},"passed":true},{"actual":{"busy":true,"label":"Upload","percent":50,"role":"progressbar","value":20},"check":"offset","expected":{"busy":true,"label":"Upload","percent":50,"role":"progressbar","value":20},"passed":true},{"actual":{"busy":false,"label":"Upload","percent":0,"role":"progressbar","value":10},"check":"empty range","expected":{"busy":false,"label":"Upload","percent":100,"role":"progressbar","value":10},"passed":false},{"actual":{"busy":true,"label":"Task","percent":50,"role":"progressbar","value":2},"check":"parameterized progress range","expected":{"busy":true,"label":"Task","percent":50,"role":"progressbar","value":2},"passed":true},{"actual":{"busy":false,"label":"Upload","percent":0,"role":"progressbar","value":10},"check":"repeat empty range","expected":{"busy":false,"label":"Upload","percent":100,"role":"progressbar","value":10},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"indeterminate\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true}, \"passed\": true}, {\"check\": \"below\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true, \"value\": 10, \"percent\": 0}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true, \"value\": 10, \"percent\": 0}, \"passed\": true}, {\"check\": \"above\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 30, \"percent\": 100}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 30, \"percent\": 100}, \"passed\": true}, {\"check\": \"offset\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true, \"value\": 20, \"percent\": 50}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": true, \"value\": 20, \"percent\": 50}, \"passed\": true}, {\"check\": \"empty range\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 10, \"percent\": 0}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 10, \"percent\": 100}, \"passed\": false}, {\"check\": \"parameterized progress range\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Task\", \"busy\": true, \"value\": 2, \"percent\": 50}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Task\", \"busy\": true, \"value\": 2, \"percent\": 50}, \"passed\": true}, {\"check\": \"repeat empty range\", \"actual\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 10, \"percent\": 0}, \"expected\": {\"role\": \"progressbar\", \"label\": \"Upload\", \"busy\": false, \"value\": 10, \"percent\": 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."}}