FAILURE MAP
← Case archive

FA-46151 / Bounded deques / Open access

Expiry callback includes the first still-live entry · case 01

Expiry callback includes the first still-live entry.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Expiry callback includes the first still-live entry.

VERIFIED REPAIR

Restore the documented release boundary invariant in deadline-prefix.

Unsuccessful approach: The partial repair still applies the incorrect transition to an admitted boundary or multi-element case.

Case contract

A deadline-ordered bounded deque expires the maximal prefix with deadline <= now. Return live entries, release sequence, removed count and next wake deadline.

Why this case matters

Controlled bounded deque implementation model with explicit storage and lifecycle observations.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    items,now=x
    cut=0
    while cut<len(items) and items[cut][1]<=now:
        cut+=1
    live=items[cut:]
    released=items[:cut+1]
    wake=live[0][1] if live else None
    return [live,released,cut,wake]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('deadline equality', solve([[[N,1],[N+1,3],[N+2,6]],3]), {1: [[[3, 6]], [[1, 1], [2, 3]], 2, 6], 2: [[[4, 6]], [[2, 1], [3, 3]], 2, 6], 3: [[[5, 6]], [[3, 1], [4, 3]], 2, 6], 4: [[[6, 6]], [[4, 1], [5, 3]], 2, 6], 5: [[[7, 6]], [[5, 1], [6, 3]], 2, 6]}[N])
check('all expired', solve([[[N,1],[N+1,2]],8]), {1: [[], [[1, 1], [2, 2]], 2, None], 2: [[], [[2, 1], [3, 2]], 2, None], 3: [[], [[3, 1], [4, 2]], 2, None], 4: [[], [[4, 1], [5, 2]], 2, None], 5: [[], [[5, 1], [6, 2]], 2, None]}[N])
check('none expired', solve([[[N,4],[N+1,7]],1]), {1: [[[1, 4], [2, 7]], [], 0, 4], 2: [[[2, 4], [3, 7]], [], 0, 4], 3: [[[3, 4], [4, 7]], [], 0, 4], 4: [[[4, 4], [5, 7]], [], 0, 4], 5: [[[5, 4], [6, 7]], [], 0, 4]}[N])
check('empty', solve([[],3]), {1: [[], [], 0, None], 2: [[], [], 0, None], 3: [[], [], 0, None], 4: [[], [], 0, None], 5: [[], [], 0, None]}[N])
check('same deadlines', solve([[[N,2],[N+1,2],[N+2,4]],2]), {1: [[[3, 4]], [[1, 2], [2, 2]], 2, 4], 2: [[[4, 4]], [[2, 2], [3, 2]], 2, 4], 3: [[[5, 4]], [[3, 2], [4, 2]], 2, 4], 4: [[[6, 4]], [[4, 2], [5, 2]], 2, 4], 5: [[[7, 4]], [[5, 2], [6, 2]], 2, 4]}[N])
check('one expired', solve([[[N,1],[N+1,8],[N+2,9]],4]), {1: [[[2, 8], [3, 9]], [[1, 1]], 1, 8], 2: [[[3, 8], [4, 9]], [[2, 1]], 1, 8], 3: [[[4, 8], [5, 9]], [[3, 1]], 1, 8], 4: [[[5, 8], [6, 9]], [[4, 1]], 1, 8], 5: [[[6, 8], [7, 9]], [[5, 1]], 1, 8]}[N])
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 fixtureActualExpectedOutcome
deadline equality[[[3, 6]], [[1, 1], [2, 3], [3, 6]], 2, 6][[[3, 6]], [[1, 1], [2, 3]], 2, 6]Failed
all expired[[], [[1, 1], [2, 2]], 2, None][[], [[1, 1], [2, 2]], 2, None]Passed
none expired[[[1, 4], [2, 7]], [[1, 4]], 0, 4][[[1, 4], [2, 7]], [], 0, 4]Failed
empty[[], [], 0, None][[], [], 0, None]Passed
same deadlines[[[3, 4]], [[1, 2], [2, 2], [3, 4]], 2, 4][[[3, 4]], [[1, 2], [2, 2]], 2, 4]Failed
one expired[[[2, 8], [3, 9]], [[1, 1], [2, 8]], 1, 8][[[2, 8], [3, 9]], [[1, 1]], 1, 8]Failed

SHA-256 / a3aec4244b48ee3389ce12d1986e9d1c00e68b6310ba3d75c2684ab5a3524413

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    items,now=x
    cut=0
    while cut<len(items) and items[cut][1]<=now:
        cut+=1
    live=items[cut:]
    released=items[:cut] if cut==0 else items[:cut+1]
    wake=live[0][1] if live else None
    return [live,released,cut,wake]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('deadline equality', solve([[[N,1],[N+1,3],[N+2,6]],3]), {1: [[[3, 6]], [[1, 1], [2, 3]], 2, 6], 2: [[[4, 6]], [[2, 1], [3, 3]], 2, 6], 3: [[[5, 6]], [[3, 1], [4, 3]], 2, 6], 4: [[[6, 6]], [[4, 1], [5, 3]], 2, 6], 5: [[[7, 6]], [[5, 1], [6, 3]], 2, 6]}[N])
check('all expired', solve([[[N,1],[N+1,2]],8]), {1: [[], [[1, 1], [2, 2]], 2, None], 2: [[], [[2, 1], [3, 2]], 2, None], 3: [[], [[3, 1], [4, 2]], 2, None], 4: [[], [[4, 1], [5, 2]], 2, None], 5: [[], [[5, 1], [6, 2]], 2, None]}[N])
check('none expired', solve([[[N,4],[N+1,7]],1]), {1: [[[1, 4], [2, 7]], [], 0, 4], 2: [[[2, 4], [3, 7]], [], 0, 4], 3: [[[3, 4], [4, 7]], [], 0, 4], 4: [[[4, 4], [5, 7]], [], 0, 4], 5: [[[5, 4], [6, 7]], [], 0, 4]}[N])
check('empty', solve([[],3]), {1: [[], [], 0, None], 2: [[], [], 0, None], 3: [[], [], 0, None], 4: [[], [], 0, None], 5: [[], [], 0, None]}[N])
check('same deadlines', solve([[[N,2],[N+1,2],[N+2,4]],2]), {1: [[[3, 4]], [[1, 2], [2, 2]], 2, 4], 2: [[[4, 4]], [[2, 2], [3, 2]], 2, 4], 3: [[[5, 4]], [[3, 2], [4, 2]], 2, 4], 4: [[[6, 4]], [[4, 2], [5, 2]], 2, 4], 5: [[[7, 4]], [[5, 2], [6, 2]], 2, 4]}[N])
check('one expired', solve([[[N,1],[N+1,8],[N+2,9]],4]), {1: [[[2, 8], [3, 9]], [[1, 1]], 1, 8], 2: [[[3, 8], [4, 9]], [[2, 1]], 1, 8], 3: [[[4, 8], [5, 9]], [[3, 1]], 1, 8], 4: [[[5, 8], [6, 9]], [[4, 1]], 1, 8], 5: [[[6, 8], [7, 9]], [[5, 1]], 1, 8]}[N])
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 fixtureActualExpectedOutcome
deadline equality[[[3, 6]], [[1, 1], [2, 3], [3, 6]], 2, 6][[[3, 6]], [[1, 1], [2, 3]], 2, 6]Failed
all expired[[], [[1, 1], [2, 2]], 2, None][[], [[1, 1], [2, 2]], 2, None]Passed
none expired[[[1, 4], [2, 7]], [], 0, 4][[[1, 4], [2, 7]], [], 0, 4]Passed
empty[[], [], 0, None][[], [], 0, None]Passed
same deadlines[[[3, 4]], [[1, 2], [2, 2], [3, 4]], 2, 4][[[3, 4]], [[1, 2], [2, 2]], 2, 4]Failed
one expired[[[2, 8], [3, 9]], [[1, 1], [2, 8]], 1, 8][[[2, 8], [3, 9]], [[1, 1]], 1, 8]Failed

SHA-256 / 82b80f74db99b2882be5b62e8e538b33bfe3aa08093905df2b6f8a04b56c9fd6

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    items,now=x
    cut=0
    while cut<len(items) and items[cut][1]<=now:
        cut+=1
    live=items[cut:]
    released=items[:cut]
    wake=live[0][1] if live else None
    return [live,released,cut,wake]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('deadline equality', solve([[[N,1],[N+1,3],[N+2,6]],3]), {1: [[[3, 6]], [[1, 1], [2, 3]], 2, 6], 2: [[[4, 6]], [[2, 1], [3, 3]], 2, 6], 3: [[[5, 6]], [[3, 1], [4, 3]], 2, 6], 4: [[[6, 6]], [[4, 1], [5, 3]], 2, 6], 5: [[[7, 6]], [[5, 1], [6, 3]], 2, 6]}[N])
check('all expired', solve([[[N,1],[N+1,2]],8]), {1: [[], [[1, 1], [2, 2]], 2, None], 2: [[], [[2, 1], [3, 2]], 2, None], 3: [[], [[3, 1], [4, 2]], 2, None], 4: [[], [[4, 1], [5, 2]], 2, None], 5: [[], [[5, 1], [6, 2]], 2, None]}[N])
check('none expired', solve([[[N,4],[N+1,7]],1]), {1: [[[1, 4], [2, 7]], [], 0, 4], 2: [[[2, 4], [3, 7]], [], 0, 4], 3: [[[3, 4], [4, 7]], [], 0, 4], 4: [[[4, 4], [5, 7]], [], 0, 4], 5: [[[5, 4], [6, 7]], [], 0, 4]}[N])
check('empty', solve([[],3]), {1: [[], [], 0, None], 2: [[], [], 0, None], 3: [[], [], 0, None], 4: [[], [], 0, None], 5: [[], [], 0, None]}[N])
check('same deadlines', solve([[[N,2],[N+1,2],[N+2,4]],2]), {1: [[[3, 4]], [[1, 2], [2, 2]], 2, 4], 2: [[[4, 4]], [[2, 2], [3, 2]], 2, 4], 3: [[[5, 4]], [[3, 2], [4, 2]], 2, 4], 4: [[[6, 4]], [[4, 2], [5, 2]], 2, 4], 5: [[[7, 4]], [[5, 2], [6, 2]], 2, 4]}[N])
check('one expired', solve([[[N,1],[N+1,8],[N+2,9]],4]), {1: [[[2, 8], [3, 9]], [[1, 1]], 1, 8], 2: [[[3, 8], [4, 9]], [[2, 1]], 1, 8], 3: [[[4, 8], [5, 9]], [[3, 1]], 1, 8], 4: [[[5, 8], [6, 9]], [[4, 1]], 1, 8], 5: [[[6, 8], [7, 9]], [[5, 1]], 1, 8]}[N])
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 fixtureActualExpectedOutcome
deadline equality[[[3, 6]], [[1, 1], [2, 3]], 2, 6][[[3, 6]], [[1, 1], [2, 3]], 2, 6]Passed
all expired[[], [[1, 1], [2, 2]], 2, None][[], [[1, 1], [2, 2]], 2, None]Passed
none expired[[[1, 4], [2, 7]], [], 0, 4][[[1, 4], [2, 7]], [], 0, 4]Passed
empty[[], [], 0, None][[], [], 0, None]Passed
same deadlines[[[3, 4]], [[1, 2], [2, 2]], 2, 4][[[3, 4]], [[1, 2], [2, 2]], 2, 4]Passed
one expired[[[2, 8], [3, 9]], [[1, 1]], 1, 8][[[2, 8], [3, 9]], [[1, 1]], 1, 8]Passed

SHA-256 / a30ae0414cc22ee0d4553a1fcbbe8c64c6ffc6b96b31e9e703cdeb3c9416f2c9

Verification & scope

Offline finite deterministic model; no claim of production implementation or concurrent memory-model conformance. 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:44:29.254558+00:00.

Case digest / 601359aae4e00cd1c73d3c759bdd4a065bbe1f8ecec597ec1258f5a0b56489da