FA-29591 / HTTP retries / Open access
Retry reconciliation with a server receipt: An in-flight retry receipt is treated as committed · case 01
An in-flight retry receipt is treated as committed
ROOT CAUSE
An in-flight retry receipt is treated as committed
VERIFIED REPAIR
Restore the specified transition [body,'pending',None].
Unsuccessful approach: The attempted repair changes the faulty site to [body,'failed',None] but still violates a regression oracle.
Case contract
submit(key,body) returns new for absent key, pending for matching in-flight key, conflict for a changed body, and cached(value) for a completed matching key. commit(key,value) commits only existing pending entries. forget removes a receipt. Return decisions and receipt table.
Why this case matters
Offline deterministic model of HTTP request retries.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(events):
receipts={}; out=[]
for e in events:
if e[0]=='submit':
key,body=e[1],e[2]
if key not in receipts:
receipts[key]=[body,'done',None]
out.append('new')
elif receipts[key][0]!=body:
out.append('conflict')
elif receipts[key][1]=='pending':
out.append('pending')
else:
out.append(['cached',receipts[key][2]])
elif e[0]=='commit':
if e[1] in receipts and receipts[e[1]][1]=='pending':
receipts[e[1]][1]='done'
receipts[e[1]][2]=e[2]
elif e[0]=='forget':
receipts.pop(e[1],None)
return [out,receipts]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('0', solve([]), [[],{}])
check('1', solve([('submit','a',N),('submit','a',N)]), [['new','pending'],{'a':[N,'pending',None]}])
check('2', solve([('submit','a',N),('submit','b',N),('submit','a',N+1)]), [['new','new','conflict'],{'a':[N,'pending',None],'b':[N,'pending',None]}])
check('3', solve([('submit','a',N),('commit','a',N+5),('commit','a',99),('submit','a',N),('submit','a',N+1)]), [['new',['cached',N+5],'conflict'],{'a':[N,'done',N+5]}])
check('4', solve([('commit','absent',N),('forget','absent')]), [[],{}])
check('5', solve([('submit','a',N),('submit','b',N+1),('forget','a'),('submit','a',N+2)]), [['new','new','new'],{'b':[N+1,'pending',None],'a':[N+2,'pending',None]}])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 0 | [[], {}] | [[], {}] | Passed |
| 1 | [['new', ['cached', None]], {'a': [1, 'done', None]}] | [['new', 'pending'], {'a': [1, 'pending', None]}] | Failed |
| 2 | [['new', 'new', 'conflict'], {'a': [1, 'done', None], 'b': [1, 'done', None]}] | [['new', 'new', 'conflict'], {'a': [1, 'pending', None], 'b': [1, 'pending', None]}] | Failed |
| 3 | [['new', ['cached', None], 'conflict'], {'a': [1, 'done', None]}] | [['new', ['cached', 6], 'conflict'], {'a': [1, 'done', 6]}] | Failed |
| 4 | [[], {}] | [[], {}] | Passed |
| 5 | [['new', 'new', 'new'], {'a': [3, 'done', None], 'b': [2, 'done', None]}] | [['new', 'new', 'new'], {'a': [3, 'pending', None], 'b': [2, 'pending', None]}] | Failed |
SHA-256 / b05ff03200c2bbac1aed24a5a1f45076000e5e16fa189e6285285c64dc6176a1
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(events):
receipts={}; out=[]
for e in events:
if e[0]=='submit':
key,body=e[1],e[2]
if key not in receipts:
receipts[key]=[body,'failed',None]
out.append('new')
elif receipts[key][0]!=body:
out.append('conflict')
elif receipts[key][1]=='pending':
out.append('pending')
else:
out.append(['cached',receipts[key][2]])
elif e[0]=='commit':
if e[1] in receipts and receipts[e[1]][1]=='pending':
receipts[e[1]][1]='done'
receipts[e[1]][2]=e[2]
elif e[0]=='forget':
receipts.pop(e[1],None)
return [out,receipts]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('0', solve([]), [[],{}])
check('1', solve([('submit','a',N),('submit','a',N)]), [['new','pending'],{'a':[N,'pending',None]}])
check('2', solve([('submit','a',N),('submit','b',N),('submit','a',N+1)]), [['new','new','conflict'],{'a':[N,'pending',None],'b':[N,'pending',None]}])
check('3', solve([('submit','a',N),('commit','a',N+5),('commit','a',99),('submit','a',N),('submit','a',N+1)]), [['new',['cached',N+5],'conflict'],{'a':[N,'done',N+5]}])
check('4', solve([('commit','absent',N),('forget','absent')]), [[],{}])
check('5', solve([('submit','a',N),('submit','b',N+1),('forget','a'),('submit','a',N+2)]), [['new','new','new'],{'b':[N+1,'pending',None],'a':[N+2,'pending',None]}])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 0 | [[], {}] | [[], {}] | Passed |
| 1 | [['new', ['cached', None]], {'a': [1, 'failed', None]}] | [['new', 'pending'], {'a': [1, 'pending', None]}] | Failed |
| 2 | [['new', 'new', 'conflict'], {'a': [1, 'failed', None], 'b': [1, 'failed', None]}] | [['new', 'new', 'conflict'], {'a': [1, 'pending', None], 'b': [1, 'pending', None]}] | Failed |
| 3 | [['new', ['cached', None], 'conflict'], {'a': [1, 'failed', None]}] | [['new', ['cached', 6], 'conflict'], {'a': [1, 'done', 6]}] | Failed |
| 4 | [[], {}] | [[], {}] | Passed |
| 5 | [['new', 'new', 'new'], {'a': [3, 'failed', None], 'b': [2, 'failed', None]}] | [['new', 'new', 'new'], {'a': [3, 'pending', None], 'b': [2, 'pending', None]}] | Failed |
SHA-256 / 4f9d68a2ccb8e1a3bb9f9707a31b4abdbc4f97bc7967830276fb00df594d7840
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(events):
receipts={}; out=[]
for e in events:
if e[0]=='submit':
key,body=e[1],e[2]
if key not in receipts:
receipts[key]=[body,'pending',None]
out.append('new')
elif receipts[key][0]!=body:
out.append('conflict')
elif receipts[key][1]=='pending':
out.append('pending')
else:
out.append(['cached',receipts[key][2]])
elif e[0]=='commit':
if e[1] in receipts and receipts[e[1]][1]=='pending':
receipts[e[1]][1]='done'
receipts[e[1]][2]=e[2]
elif e[0]=='forget':
receipts.pop(e[1],None)
return [out,receipts]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('0', solve([]), [[],{}])
check('1', solve([('submit','a',N),('submit','a',N)]), [['new','pending'],{'a':[N,'pending',None]}])
check('2', solve([('submit','a',N),('submit','b',N),('submit','a',N+1)]), [['new','new','conflict'],{'a':[N,'pending',None],'b':[N,'pending',None]}])
check('3', solve([('submit','a',N),('commit','a',N+5),('commit','a',99),('submit','a',N),('submit','a',N+1)]), [['new',['cached',N+5],'conflict'],{'a':[N,'done',N+5]}])
check('4', solve([('commit','absent',N),('forget','absent')]), [[],{}])
check('5', solve([('submit','a',N),('submit','b',N+1),('forget','a'),('submit','a',N+2)]), [['new','new','new'],{'b':[N+1,'pending',None],'a':[N+2,'pending',None]}])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 0 | [[], {}] | [[], {}] | Passed |
| 1 | [['new', 'pending'], {'a': [1, 'pending', None]}] | [['new', 'pending'], {'a': [1, 'pending', None]}] | Passed |
| 2 | [['new', 'new', 'conflict'], {'a': [1, 'pending', None], 'b': [1, 'pending', None]}] | [['new', 'new', 'conflict'], {'a': [1, 'pending', None], 'b': [1, 'pending', None]}] | Passed |
| 3 | [['new', ['cached', 6], 'conflict'], {'a': [1, 'done', 6]}] | [['new', ['cached', 6], 'conflict'], {'a': [1, 'done', 6]}] | Passed |
| 4 | [[], {}] | [[], {}] | Passed |
| 5 | [['new', 'new', 'new'], {'a': [3, 'pending', None], 'b': [2, 'pending', None]}] | [['new', 'new', 'new'], {'a': [3, 'pending', None], 'b': [2, 'pending', None]}] | Passed |
SHA-256 / d954eef688bc7ddbed441b3968ffe7e8f2aca46edfd6335bbe8676104a62e2cb
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:41:44.695707+00:00.
Case digest / 1760b242e67e6805db929b749d0740494251cba291737c293034bafc3a65b6f6