FA-006 / Caching / Open access
An expired cache entry survives its deadline · case 01
An entry remains visible at precisely its expiration instant.
ROOT CAUSE
The expiration comparison treats the deadline as an inclusive valid instant.
VERIFIED REPAIR
Treat the valid interval as insertion time inclusive and expiration time exclusive.
Unsuccessful approach: Subtracting one tick expires values before their actual deadline.
Case contract
Treat the valid interval as insertion time inclusive and expiration time exclusive.
Why this case matters
A compact reasoning and repair task with executable evidence.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(value, now, expires):
return value if now <= expires else None
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('exact expiration', solve('record', N, N), None)
check('last valid half tick', solve('record', N-0.5, N), 'record')
check('past deadline', solve('record', N+1, N), 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 |
|---|---|---|---|
| exact expiration | record | None | Failed |
| last valid half tick | record | record | Passed |
| past deadline | None | None | Passed |
SHA-256 / f913cbdf9831d939d8dc0c0506d685ddb6628c67bb964c788fa18ac6bd2f70dd
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(value, now, expires):
return value if now < expires - 1 else None
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('exact expiration', solve('record', N, N), None)
check('last valid half tick', solve('record', N-0.5, N), 'record')
check('past deadline', solve('record', N+1, N), 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 |
|---|---|---|---|
| exact expiration | None | None | Passed |
| last valid half tick | None | record | Failed |
| past deadline | None | None | Passed |
SHA-256 / 041030b16cdb07eb54d70503580e94633ea6ab5c956a68b63252a8f17c20377c
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(value, now, expires):
return value if now < expires else None
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('exact expiration', solve('record', N, N), None)
check('last valid half tick', solve('record', N-0.5, N), 'record')
check('past deadline', solve('record', N+1, N), 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 |
|---|---|---|---|
| exact expiration | None | None | Passed |
| last valid half tick | record | record | Passed |
| past deadline | None | None | Passed |
SHA-256 / 32628d76a52605e8ff3d5b61888981c4953bc5e4383a5f21cfe1911e8337de30
Verification & scope
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:36:49.844634+00:00.
Case digest / 2945a1c4c96085530fcadb1a4d493c4c79a2df79c99c40d429dc8b71c13bd947