{"abstract":"Age origin 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 age=e[3] but still violates a regression oracle.","family":"s3-http_retries-retry-advice-clock-age-origin","id":"FA-30681","implementations":{"attempt":{"sha256":"7dc743714a795b86cce2488c8213fdb0ba47931fe57d3b58aa04d5aa22f005da","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[3]; 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"},"broken":{"sha256":"35b64ab34aeb3298bfb3f13df105823b1bdbefb1d7cb8f2931a6282c5d9138af","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=0; 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"},"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-age-origin","generated_at":"2026-09-29T14:41:55.168888+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 age=e[2].","root_cause":"Age origin violates retry transition semantics","sha256":"d967476ecf98dbd9f3236d4b26e5385bf7ae80c83a18d3be63855af43b673299","title":"Retry advice across wall and monotonic clocks: Age origin 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":43.824,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":["missing"],"check":"1","expected":["missing"],"passed":true},{"actual":[9,7],"check":"2","expected":[5,3],"passed":false},{"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":[19],"check":"7","expected":[7],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"1\", \"actual\": [\"missing\"], \"expected\": [\"missing\"], \"passed\": true}, {\"check\": \"2\", \"actual\": [9, 7], \"expected\": [5, 3], \"passed\": false}, {\"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\": [19], \"expected\": [7], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.525,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":["missing"],"check":"1","expected":["missing"],"passed":true},{"actual":[10,8],"check":"2","expected":[5,3],"passed":false},{"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":[20],"check":"7","expected":[7],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"1\", \"actual\": [\"missing\"], \"expected\": [\"missing\"], \"passed\": true}, {\"check\": \"2\", \"actual\": [10, 8], \"expected\": [5, 3], \"passed\": false}, {\"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\": [20], \"expected\": [7], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.883,"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"}