FAILURE MAP
← Case archive

FA-56491 / Auction allocation rules / Open access

Package conditions: must link completeness · case 01

Package admission accepts a fragment of an all-linked offer.

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

ROOT CAUSE

Package admission accepts a fragment of an all-linked offer.

VERIFIED REPAIR

Allow zero linked items or every linked item.

Unsuccessful approach: The attempted repair uses set(x["required"])<=set(x["won"]); the explicit regression cases demonstrate that this still violates the stipulated auction rule.

Case contract

Auction package certification operates on item sets, declared item quantities and a dependency graph already known acyclic. It reports whether a proposed award respects must-link, excludes, prerequisites, lots offered, exact package quantities, and a seller consent rule. All package item identifiers are strings. Named decision must-link-completeness: Allow zero linked items or every linked item.

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 = bool(set(x["won"])&set(x["required"]))
    v1 = not set(x["won"])&set(x["forbidden"])
    v2 = set(x["won"])<=set(x["available"])
    v3 = all(set(x["prerequisites"].get(i,[]))<=set(x["won"]) for i in x["won"])
    v4 = all(x["counts"].get(i,0)==q for i,q in x["wanted"].items())
    v5 = sum(set(a)<=set(x["won"]) for a in x["alternatives"])<=1
    v6 = set(x["won"])&set(x["seller_items"])<=set(x["consents"])
    v7 = all(len(set(a)&set(x["won"]))<=1 for a in x["substitutes"])
    v8 = set(x["split"])<=set(x["divisible"])
    v9 = not set(x["won"])&set(x["previous"])
    return {'must-link-completeness':v0,'negative-package-clause':v1,'offered-inventory':v2,'dependency-closure':v3,'exact-quantity-contract':v4,'alternative-activation':v5,'seller-consent-scope':v6,'substitute-collision':v7,'divisibility-certificate':v8,'prior-package-encumbrance':v9}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('nothing awarded', {'won': [], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('partial bundle', {'won': ['A'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [False, False, False, False, False]), ('unoffered item', {'won': ['D'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('normal contract', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('partial exclusion set', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['B', 'C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('multi prerequisite', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A', 'C']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('mixed split certificate', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['A', 'B'], 'previous': ['C']}, [True, True, True, True, True]), ('blocked bundle', {'won': ['A', 'C'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [False, False, False, False, False]), ('full consent', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A', 'B'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True])]
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', '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))['must-link-completeness'], 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
nothing awardedFalseTrueFailed
partial bundleTrueFalseFailed
unoffered itemFalseTrueFailed
normal contractTrueTruePassed
partial exclusion setTrueTruePassed
multi prerequisiteTrueTruePassed
mixed split certificateTrueTruePassed
blocked bundleTrueFalseFailed
full consentTrueTruePassed

SHA-256 / bb561723facae55ef453b4adb472db5316a74a14e8ee88423e0d72194ca0d1ea

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    v0 = set(x["required"])<=set(x["won"])
    v1 = not set(x["won"])&set(x["forbidden"])
    v2 = set(x["won"])<=set(x["available"])
    v3 = all(set(x["prerequisites"].get(i,[]))<=set(x["won"]) for i in x["won"])
    v4 = all(x["counts"].get(i,0)==q for i,q in x["wanted"].items())
    v5 = sum(set(a)<=set(x["won"]) for a in x["alternatives"])<=1
    v6 = set(x["won"])&set(x["seller_items"])<=set(x["consents"])
    v7 = all(len(set(a)&set(x["won"]))<=1 for a in x["substitutes"])
    v8 = set(x["split"])<=set(x["divisible"])
    v9 = not set(x["won"])&set(x["previous"])
    return {'must-link-completeness':v0,'negative-package-clause':v1,'offered-inventory':v2,'dependency-closure':v3,'exact-quantity-contract':v4,'alternative-activation':v5,'seller-consent-scope':v6,'substitute-collision':v7,'divisibility-certificate':v8,'prior-package-encumbrance':v9}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('nothing awarded', {'won': [], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('partial bundle', {'won': ['A'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [False, False, False, False, False]), ('unoffered item', {'won': ['D'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('normal contract', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('partial exclusion set', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['B', 'C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('multi prerequisite', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A', 'C']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('mixed split certificate', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['A', 'B'], 'previous': ['C']}, [True, True, True, True, True]), ('blocked bundle', {'won': ['A', 'C'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [False, False, False, False, False]), ('full consent', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A', 'B'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True])]
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', '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))['must-link-completeness'], 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
nothing awardedFalseTrueFailed
partial bundleFalseFalsePassed
unoffered itemFalseTrueFailed
normal contractTrueTruePassed
partial exclusion setTrueTruePassed
multi prerequisiteTrueTruePassed
mixed split certificateTrueTruePassed
blocked bundleFalseFalsePassed
full consentTrueTruePassed

SHA-256 / e4be006d6db6b95dc479f5074bb40d397cb9053cd3f259c3be5e123dc5ac8f66

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    v0 = not set(x["won"])&set(x["required"]) or set(x["required"])<=set(x["won"])
    v1 = not set(x["won"])&set(x["forbidden"])
    v2 = set(x["won"])<=set(x["available"])
    v3 = all(set(x["prerequisites"].get(i,[]))<=set(x["won"]) for i in x["won"])
    v4 = all(x["counts"].get(i,0)==q for i,q in x["wanted"].items())
    v5 = sum(set(a)<=set(x["won"]) for a in x["alternatives"])<=1
    v6 = set(x["won"])&set(x["seller_items"])<=set(x["consents"])
    v7 = all(len(set(a)&set(x["won"]))<=1 for a in x["substitutes"])
    v8 = set(x["split"])<=set(x["divisible"])
    v9 = not set(x["won"])&set(x["previous"])
    return {'must-link-completeness':v0,'negative-package-clause':v1,'offered-inventory':v2,'dependency-closure':v3,'exact-quantity-contract':v4,'alternative-activation':v5,'seller-consent-scope':v6,'substitute-collision':v7,'divisibility-certificate':v8,'prior-package-encumbrance':v9}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [('nothing awarded', {'won': [], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('partial bundle', {'won': ['A'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [False, False, False, False, False]), ('unoffered item', {'won': ['D'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('normal contract', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('partial exclusion set', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['B', 'C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('multi prerequisite', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A', 'C']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True]), ('mixed split certificate', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['A', 'B'], 'previous': ['C']}, [True, True, True, True, True]), ('blocked bundle', {'won': ['A', 'C'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [False, False, False, False, False]), ('full consent', {'won': ['A', 'B'], 'required': ['A', 'B'], 'forbidden': ['C'], 'available': ['A', 'B', 'C'], 'prerequisites': {'B': ['A'], 'C': ['B']}, 'counts': {'A': 2, 'B': 1}, 'wanted': {'A': 2, 'B': 1}, 'alternatives': [['A', 'B'], ['C']], 'consents': ['A', 'B'], 'seller_items': ['A', 'B'], 'substitutes': [['A', 'C']], 'divisible': ['A'], 'split': ['B'], 'previous': ['C']}, [True, True, True, True, True])]
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', '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))['must-link-completeness'], 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
nothing awardedTrueTruePassed
partial bundleFalseFalsePassed
unoffered itemTrueTruePassed
normal contractTrueTruePassed
partial exclusion setTrueTruePassed
multi prerequisiteTrueTruePassed
mixed split certificateTrueTruePassed
blocked bundleFalseFalsePassed
full consentTrueTruePassed

SHA-256 / 3edffd4c9197ed0c688205fa9cf39957afff34b8356b23923171ff365d87b741

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:07.616008+00:00.

Case digest / 1ff35ce06d0d72dd8c1a2cb131ed9abded64e6f6826679a23fc4af6720e7ca66