FAILURE MAP
← Case archive

FA-56726 / Auction allocation rules / Open access

Soft close: quiet period close · case 01

Quiet-period close ignores a newer last-bid grace obligation.

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

ROOT CAUSE

Quiet-period close ignores a newer last-bid grace obligation.

VERIFIED REPAIR

For quiet period close, apply the stipulated decision max(x["close"],x["last_bid"]+x["grace"]).

Unsuccessful approach: The attempted repair uses x["close"]; the explicit regression cases demonstrate that this still violates the stipulated auction rule.

Case contract

Toy soft-close auction scheduling uses integer ticks. Only eligible bids in the final extension window extend close, extending from the later existing deadline, with a fixed hard stop and a finite extension count. A batch carries submission and admission times separately. Named decision quiet-period-close: For quiet period close, apply the stipulated decision max(x["close"],x["last_bid"]+x["grace"]).

Why this case matters

Offline administrative auction model for software failure analysis.

1 / The failure

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

N = 1
observations = []
def solve(x):
    v0 = x["close"]-x["window"]<=x["now"]<x["close"]
    v1 = max(x["close"],x["now"]+x["extension"])
    v2 = min(x["hard_stop"],x["close"]+x["extension"])
    v3 = x["close"]+x["extension"] if x["eligible"] and not x["withdrawn"] else x["close"]
    v4 = x["count"]<x["max_count"]
    v5 = x["submitted"]<x["close"]
    v6 = min(x["hard_stop"],x["close"]+x["pause_length"]) if x["paused"] else x["close"]
    v7 = x["last_bid"]+x["grace"]
    v8 = len(set(x["batch_times"])-set(x["seen_times"]))
    v9 = not x["paused"] and x["now"]>=x["close"]
    return {'extension-window':v0,'extension-base':v1,'hard-stop-cap':v2,'eligible-bid-extension':v3,'extension-budget':v4,'timely-submission':v5,'paused-deadline':v6,'quiet-period-close':v7,'new-batch-extensions':v8,'paused-close-event':v9}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('normal contract', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('submission exactly closing', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 20, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('quiet grace extends close', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 19, 'grace': 4, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [23, 46, 69, 92, 115]), ('submission exactly closing / quiet grace extends close', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 20, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 19, 'grace': 4, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [23, 46, 69, 92, 115]), ('early bid', {'close': 20, 'now': 10, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('at deadline', {'close': 20, 'now': 20, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('past deadline', {'close': 20, 'now': 21, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('ineligible bid', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': False, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('hard stop near', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 22, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('no extensions left', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 3, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100])]
def vary(value):
 if type(value) is int: return value*N
 if isinstance(value,list): return [vary(v) for v in value]
 if isinstance(value,dict): return {k:(v if k in ['count', 'delivery_index', 'disputed', 'max_count', 'maximum_set', 'minimum_set', 'stage', 'threshold', 'waived'] else vary(v)) for k,v in value.items()}
 return value
for label, request, expected in fixtures:
 check(label, solve(vary(request))['quiet-period-close'], expected[N-1])
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
normal contract1720Failed
submission exactly closing1720Failed
quiet grace extends close2323Passed
submission exactly closing / quiet grace extends close2323Passed
early bid1720Failed
at deadline1720Failed
past deadline1720Failed
ineligible bid1720Failed
hard stop near1720Failed
no extensions left1720Failed

SHA-256 / 02be54f2901115d7abe217d7f3f1da992ce77e9e51ead9a02d649904f43b520b

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    v0 = x["close"]-x["window"]<=x["now"]<x["close"]
    v1 = max(x["close"],x["now"]+x["extension"])
    v2 = min(x["hard_stop"],x["close"]+x["extension"])
    v3 = x["close"]+x["extension"] if x["eligible"] and not x["withdrawn"] else x["close"]
    v4 = x["count"]<x["max_count"]
    v5 = x["submitted"]<x["close"]
    v6 = min(x["hard_stop"],x["close"]+x["pause_length"]) if x["paused"] else x["close"]
    v7 = x["close"]
    v8 = len(set(x["batch_times"])-set(x["seen_times"]))
    v9 = not x["paused"] and x["now"]>=x["close"]
    return {'extension-window':v0,'extension-base':v1,'hard-stop-cap':v2,'eligible-bid-extension':v3,'extension-budget':v4,'timely-submission':v5,'paused-deadline':v6,'quiet-period-close':v7,'new-batch-extensions':v8,'paused-close-event':v9}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('normal contract', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('submission exactly closing', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 20, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('quiet grace extends close', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 19, 'grace': 4, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [23, 46, 69, 92, 115]), ('submission exactly closing / quiet grace extends close', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 20, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 19, 'grace': 4, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [23, 46, 69, 92, 115]), ('early bid', {'close': 20, 'now': 10, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('at deadline', {'close': 20, 'now': 20, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('past deadline', {'close': 20, 'now': 21, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('ineligible bid', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': False, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('hard stop near', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 22, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('no extensions left', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 3, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100])]
def vary(value):
 if type(value) is int: return value*N
 if isinstance(value,list): return [vary(v) for v in value]
 if isinstance(value,dict): return {k:(v if k in ['count', 'delivery_index', 'disputed', 'max_count', 'maximum_set', 'minimum_set', 'stage', 'threshold', 'waived'] else vary(v)) for k,v in value.items()}
 return value
for label, request, expected in fixtures:
 check(label, solve(vary(request))['quiet-period-close'], expected[N-1])
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
normal contract2020Passed
submission exactly closing2020Passed
quiet grace extends close2023Failed
submission exactly closing / quiet grace extends close2023Failed
early bid2020Passed
at deadline2020Passed
past deadline2020Passed
ineligible bid2020Passed
hard stop near2020Passed
no extensions left2020Passed

SHA-256 / 3fb3d9e9cb3a22560f88a364cbdce7b44b6634823c9bcf85b9ca47de7789d8e7

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    v0 = x["close"]-x["window"]<=x["now"]<x["close"]
    v1 = max(x["close"],x["now"]+x["extension"])
    v2 = min(x["hard_stop"],x["close"]+x["extension"])
    v3 = x["close"]+x["extension"] if x["eligible"] and not x["withdrawn"] else x["close"]
    v4 = x["count"]<x["max_count"]
    v5 = x["submitted"]<x["close"]
    v6 = min(x["hard_stop"],x["close"]+x["pause_length"]) if x["paused"] else x["close"]
    v7 = max(x["close"],x["last_bid"]+x["grace"])
    v8 = len(set(x["batch_times"])-set(x["seen_times"]))
    v9 = not x["paused"] and x["now"]>=x["close"]
    return {'extension-window':v0,'extension-base':v1,'hard-stop-cap':v2,'eligible-bid-extension':v3,'extension-budget':v4,'timely-submission':v5,'paused-deadline':v6,'quiet-period-close':v7,'new-batch-extensions':v8,'paused-close-event':v9}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('normal contract', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('submission exactly closing', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 20, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('quiet grace extends close', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 19, 'grace': 4, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [23, 46, 69, 92, 115]), ('submission exactly closing / quiet grace extends close', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 20, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 19, 'grace': 4, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [23, 46, 69, 92, 115]), ('early bid', {'close': 20, 'now': 10, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('at deadline', {'close': 20, 'now': 20, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('past deadline', {'close': 20, 'now': 21, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('ineligible bid', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 1, 'max_count': 3, 'eligible': False, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('hard stop near', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 22, 'count': 1, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100]), ('no extensions left', {'close': 20, 'now': 18, 'window': 3, 'extension': 5, 'hard_stop': 30, 'count': 3, 'max_count': 3, 'eligible': True, 'submitted': 19, 'admitted': 21, 'paused': False, 'pause_length': 4, 'last_bid': 15, 'grace': 2, 'withdrawn': False, 'batch_times': [17, 19], 'seen_times': [17]}, [20, 40, 60, 80, 100])]
def vary(value):
 if type(value) is int: return value*N
 if isinstance(value,list): return [vary(v) for v in value]
 if isinstance(value,dict): return {k:(v if k in ['count', 'delivery_index', 'disputed', 'max_count', 'maximum_set', 'minimum_set', 'stage', 'threshold', 'waived'] else vary(v)) for k,v in value.items()}
 return value
for label, request, expected in fixtures:
 check(label, solve(vary(request))['quiet-period-close'], expected[N-1])
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
normal contract2020Passed
submission exactly closing2020Passed
quiet grace extends close2323Passed
submission exactly closing / quiet grace extends close2323Passed
early bid2020Passed
at deadline2020Passed
past deadline2020Passed
ineligible bid2020Passed
hard stop near2020Passed
no extensions left2020Passed

SHA-256 / 30e024f5388b248cb1a0daf9ac7198ecfa37e314c79160cda54a8d13b4c3c4f8

Verification & scope

Stipulated toy auction rules, not a venue specification, financial advice, optimization claim, or live trading implementation. Nonnegative integer inputs and internally aligned list fields only. 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:46:09.902325+00:00.

Case digest / 9c18fc2913abd05301979ef35366a1df4061db142143dc56066a5168890f1ca1