{"abstract":"Advice retain 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 advice.insert(0,(e[0],e[1])); advice[:]=advice[:1] but still violates a regression oracle.","family":"s3-http_retries-retry-advice-clock-advice-retain","id":"FA-30701","implementations":{"attempt":{"sha256":"098c669a209323763fc40fb2a943e88c9f88e485a4a7187880b721e293949d94","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.insert(0,(e[0],e[1])); advice[:]=advice[: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":"1c6bf0a6748b156f0f707c8be560b18ceda2d1f616da1db8a603817203eb5012","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[:]=[(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-advice-retain","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":"Advice retain violates retry transition semantics","sha256":"65b26b6da1867bf6788a27cddd22c8be13216ba9dc9aabeb3142feafd4686ba6","title":"Retry advice across wall and monotonic clocks: Advice retain 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":42.914,"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":[3,3],"check":"4","expected":[3,3],"passed":true},{"actual":[5,"missing"],"check":"5","expected":["ambiguous","missing"],"passed":false},{"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\": [3, 3], \"expected\": [3, 3], \"passed\": true}, {\"check\": \"5\", \"actual\": [5, \"missing\"], \"expected\": [\"ambiguous\", \"missing\"], \"passed\": false}, {\"check\": \"6\", \"actual\": [0, 0], \"expected\": [0, 0], \"passed\": true}, {\"check\": \"7\", \"actual\": [7], \"expected\": [7], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.356,"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":[3,3],"check":"4","expected":[3,3],"passed":true},{"actual":[5,"missing"],"check":"5","expected":["ambiguous","missing"],"passed":false},{"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\": [3, 3], \"expected\": [3, 3], \"passed\": true}, {\"check\": \"5\", \"actual\": [5, \"missing\"], \"expected\": [\"ambiguous\", \"missing\"], \"passed\": false}, {\"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."}}