{"abstract":"Relative base violates retry transition semantics","category":"HTTP retries","checks":8,"contract":"Controlled decoded Retry-After model. response(server Date or None,Age,received monotonic,local wall at receive) resets advice. delta(nonnegative seconds) or date(absolute seconds) records one advice; multiple advice values are rejected. For date, estimate server time as Date+Age, or local wall if Date absent. Project remaining server delay onto receive monotonic clock. advance moves monotonic time forward. schedule returns remaining wait or missing/ambiguous; no network requests or full header parsing.","evaluation_group":"s3-http_retries-retry-advice-clock","failed_approach":"The attempted repair changes the faulty site to due=value but still violates a regression oracle.","family":"s3-http_retries-retry-advice-clock-relative-base","id":"FA-30716","implementations":{"attempt":{"sha256":"4a224414ed71ec7da8c7dd3fada86abcdac54fc1ee6f8de24ed2417e655b5418","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    server=None; age=0; received=0; wall=0; now=0; advice=[]; out=[]\n    for e in events:\n        if e[0]=='response':\n            server=e[1]; age=e[2]; received=e[3]; wall=e[4]; now=received; advice=[]\n        elif e[0] in ('delta','date'): advice.append((e[0],e[1]))\n        elif e[0]=='advance': now=max(now,e[1])\n        elif e[0]=='schedule':\n            if not advice: out.append('missing'); continue\n            if len(advice)!=1: out.append('ambiguous'); continue\n            kind,value=advice[0]\n            if kind=='delta': due=value\n            else:\n                reference=server+age if server is not None else wall\n                due=received+max(0,value-reference)\n            out.append(max(0,due-now))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([]), [])\ncheck('1', solve([('response',100,0,N,200),('schedule',)]), ['missing'])\ncheck('2', solve([('response',100,5,N,200),('date',110),('schedule',),('advance',N+2),('schedule',)]), [5,3])\ncheck('3', solve([('response',None,99,N,200),('date',207),('schedule',)]), [7])\ncheck('4', solve([('response',100,0,N,200),('delta',5),('advance',N+2),('schedule',),('advance',N),('schedule',)]), [3,3])\ncheck('5', solve([('response',100,0,N,200),('delta',5),('delta',5),('schedule',),('response',100,0,N+1,200),('schedule',)]), ['ambiguous','missing'])\ncheck('6', solve([('response',100,0,N,200),('date',90),('schedule',),('advance',N+10),('schedule',)]), [0,0])\ncheck('7', solve([('response',100,13,N,200),('date',120),('schedule',)]), [7])\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":"c91b6793c7d4c64450c4a4762827d02da31373c4970c818c56ff465e4ff73208","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    server=None; age=0; received=0; wall=0; now=0; advice=[]; out=[]\n    for e in events:\n        if e[0]=='response':\n            server=e[1]; age=e[2]; received=e[3]; wall=e[4]; now=received; advice=[]\n        elif e[0] in ('delta','date'): advice.append((e[0],e[1]))\n        elif e[0]=='advance': now=max(now,e[1])\n        elif e[0]=='schedule':\n            if not advice: out.append('missing'); continue\n            if len(advice)!=1: out.append('ambiguous'); continue\n            kind,value=advice[0]\n            if kind=='delta': due=now+value\n            else:\n                reference=server+age if server is not None else wall\n                due=received+max(0,value-reference)\n            out.append(max(0,due-now))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([]), [])\ncheck('1', solve([('response',100,0,N,200),('schedule',)]), ['missing'])\ncheck('2', solve([('response',100,5,N,200),('date',110),('schedule',),('advance',N+2),('schedule',)]), [5,3])\ncheck('3', solve([('response',None,99,N,200),('date',207),('schedule',)]), [7])\ncheck('4', solve([('response',100,0,N,200),('delta',5),('advance',N+2),('schedule',),('advance',N),('schedule',)]), [3,3])\ncheck('5', solve([('response',100,0,N,200),('delta',5),('delta',5),('schedule',),('response',100,0,N+1,200),('schedule',)]), ['ambiguous','missing'])\ncheck('6', solve([('response',100,0,N,200),('date',90),('schedule',),('advance',N+10),('schedule',)]), [0,0])\ncheck('7', solve([('response',100,13,N,200),('date',120),('schedule',)]), [7])\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":"c5d80a71e09011e5b2da8d8167a3d9840c344a144bf963595ab2a32e4ff54905","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    server=None; age=0; received=0; wall=0; now=0; advice=[]; out=[]\n    for e in events:\n        if e[0]=='response':\n            server=e[1]; age=e[2]; received=e[3]; wall=e[4]; now=received; advice=[]\n        elif e[0] in ('delta','date'): advice.append((e[0],e[1]))\n        elif e[0]=='advance': now=max(now,e[1])\n        elif e[0]=='schedule':\n            if not advice: out.append('missing'); continue\n            if len(advice)!=1: out.append('ambiguous'); continue\n            kind,value=advice[0]\n            if kind=='delta': due=received+value\n            else:\n                reference=server+age if server is not None else wall\n                due=received+max(0,value-reference)\n            out.append(max(0,due-now))\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([]), [])\ncheck('1', solve([('response',100,0,N,200),('schedule',)]), ['missing'])\ncheck('2', solve([('response',100,5,N,200),('date',110),('schedule',),('advance',N+2),('schedule',)]), [5,3])\ncheck('3', solve([('response',None,99,N,200),('date',207),('schedule',)]), [7])\ncheck('4', solve([('response',100,0,N,200),('delta',5),('advance',N+2),('schedule',),('advance',N),('schedule',)]), [3,3])\ncheck('5', solve([('response',100,0,N,200),('delta',5),('delta',5),('schedule',),('response',100,0,N+1,200),('schedule',)]), ['ambiguous','missing'])\ncheck('6', solve([('response',100,0,N,200),('date',90),('schedule',),('advance',N+10),('schedule',)]), [0,0])\ncheck('7', solve([('response',100,13,N,200),('date',120),('schedule',)]), [7])\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 bounded simulator, not a complete HTTP implementation or a standards conformance claim. 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-http_retries-retry-advice-clock-relative-base","generated_at":"2026-09-29T14:41:55.462077+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline deterministic model of HTTP request retries.","repair":"Restore the specified transition due=received+value.","root_cause":"Relative base violates retry transition semantics","sha256":"540b1b054eb86d8a636c1bbb678eae894c73c9ff4cbe0a05f46a2791569bf9ea","title":"Retry advice across wall and monotonic clocks: Relative base violates retry transition semantics · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.178,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":["missing"],"check":"1","expected":["missing"],"passed":true},{"actual":[5,3],"check":"2","expected":[5,3],"passed":true},{"actual":[7],"check":"3","expected":[7],"passed":true},{"actual":[2,2],"check":"4","expected":[3,3],"passed":false},{"actual":["ambiguous","missing"],"check":"5","expected":["ambiguous","missing"],"passed":true},{"actual":[0,0],"check":"6","expected":[0,0],"passed":true},{"actual":[7],"check":"7","expected":[7],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"1\", \"actual\": [\"missing\"], \"expected\": [\"missing\"], \"passed\": true}, {\"check\": \"2\", \"actual\": [5, 3], \"expected\": [5, 3], \"passed\": true}, {\"check\": \"3\", \"actual\": [7], \"expected\": [7], \"passed\": true}, {\"check\": \"4\", \"actual\": [2, 2], \"expected\": [3, 3], \"passed\": false}, {\"check\": \"5\", \"actual\": [\"ambiguous\", \"missing\"], \"expected\": [\"ambiguous\", \"missing\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"7\", \"actual\": [7], \"expected\": [7], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.736,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":["missing"],"check":"1","expected":["missing"],"passed":true},{"actual":[5,3],"check":"2","expected":[5,3],"passed":true},{"actual":[7],"check":"3","expected":[7],"passed":true},{"actual":[5,5],"check":"4","expected":[3,3],"passed":false},{"actual":["ambiguous","missing"],"check":"5","expected":["ambiguous","missing"],"passed":true},{"actual":[0,0],"check":"6","expected":[0,0],"passed":true},{"actual":[7],"check":"7","expected":[7],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"1\", \"actual\": [\"missing\"], \"expected\": [\"missing\"], \"passed\": true}, {\"check\": \"2\", \"actual\": [5, 3], \"expected\": [5, 3], \"passed\": true}, {\"check\": \"3\", \"actual\": [7], \"expected\": [7], \"passed\": true}, {\"check\": \"4\", \"actual\": [5, 5], \"expected\": [3, 3], \"passed\": false}, {\"check\": \"5\", \"actual\": [\"ambiguous\", \"missing\"], \"expected\": [\"ambiguous\", \"missing\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"7\", \"actual\": [7], \"expected\": [7], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.517,"exit_code":0,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":["missing"],"check":"1","expected":["missing"],"passed":true},{"actual":[5,3],"check":"2","expected":[5,3],"passed":true},{"actual":[7],"check":"3","expected":[7],"passed":true},{"actual":[3,3],"check":"4","expected":[3,3],"passed":true},{"actual":["ambiguous","missing"],"check":"5","expected":["ambiguous","missing"],"passed":true},{"actual":[0,0],"check":"6","expected":[0,0],"passed":true},{"actual":[7],"check":"7","expected":[7],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"1\", \"actual\": [\"missing\"], \"expected\": [\"missing\"], \"passed\": true}, {\"check\": \"2\", \"actual\": [5, 3], \"expected\": [5, 3], \"passed\": true}, {\"check\": \"3\", \"actual\": [7], \"expected\": [7], \"passed\": true}, {\"check\": \"4\", \"actual\": [3, 3], \"expected\": [3, 3], \"passed\": true}, {\"check\": \"5\", \"actual\": [\"ambiguous\", \"missing\"], \"expected\": [\"ambiguous\", \"missing\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"7\", \"actual\": [7], \"expected\": [7], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}