{"abstract":"Receive monotonic 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.","contract_signature":"events","evaluation_group":"s3-http_retries-retry-advice-clock","failed_approach":"The attempted repair changes the faulty site to received=0 but still violates a regression oracle.","family":"s3-http_retries-retry-advice-clock-receive-monotonic","id":"FA-30686","implementations":{"attempt":{"sha256":"23306cefd896eaf11e2205903a5e46ba71d29e4d6c5fb52cc565436d4c388da2","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=0; 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":"1a6d269d055b205fb932cce703ce5f369d3cfde976a6eaed47ba11f830dca69c","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[4]; 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-receive-monotonic","generated_at":"2026-09-29T14:41:55.470382+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline deterministic model of HTTP request retries.","root_cause":"Receive monotonic violates retry transition semantics","sha256":"f497ee739d936f7cfa945a93f9668c71078a6c9f7e3bb8db48e50a62fdef12db","title":"Retry advice across wall and monotonic clocks: Receive monotonic violates retry transition semantics · 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.711,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":["missing"],"check":"1","expected":["missing"],"passed":true},{"actual":[5,2],"check":"2","expected":[5,3],"passed":false},{"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, 2], \"expected\": [5, 3], \"passed\": false}, {\"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":41.714,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":["missing"],"check":"1","expected":["missing"],"passed":true},{"actual":[5,5],"check":"2","expected":[5,3],"passed":false},{"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, 5], \"expected\": [5, 3], \"passed\": false}, {\"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"}},"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."}}