FA-66761 / Airline fare rule evaluation / Open access
Coupons before the no-show also cancelled · case 01
An open coupon earlier in the itinerary is voided because a later sector was missed.
ROOT CAUSE
Voiding checks whether any NOSHOW exists on the ticket instead of whether one has already occurred.
THE FAILURE
Voiding checks whether any NOSHOW exists on the ticket instead of whether one has already occurred.
Unsuccessful approach: Looking one coupon back still voids the coupon immediately before a no-show.
Case contract
Input {'status':[FLOWN|OPEN|NOSHOW per coupon],'fee'}. After the first NOSHOW, every later OPEN coupon becomes VOID (earlier coupons are untouched, FLOWN stays FLOWN). The no-show fee is charged once per ticket. Return [statuses, fee].
Why this case matters
Coupon sequence rules cancel onward segments after a no-show and assess a single penalty.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
st = list(x['status'])
fee = 0
seen = False
for i, s in enumerate(st):
if s == 'NOSHOW':
if not seen: fee += x['fee']
seen = True
elif s == 'OPEN' and 'NOSHOW' in st:
st[i] = 'VOID'
return [st, fee]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 101}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 101]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 75}, [['OPEN', 'NOSHOW', 'VOID'], 75]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['OPEN', 'NOSHOW', 'OPEN', 'NOSHOW', 'NOSHOW', 'OPEN'], 'fee': 100}, [['OPEN', 'NOSHOW', 'VOID', 'NOSHOW', 'NOSHOW', 'VOID'], 100]], ['sampled case 2', {'status': ['FLOWN', 'OPEN', 'FLOWN', 'OPEN', 'OPEN', 'OPEN'], 'fee': 150}, [['FLOWN', 'OPEN', 'FLOWN', 'OPEN', 'OPEN', 'OPEN'], 0]], ['sampled case 3', {'status': ['OPEN'], 'fee': 100}, [['OPEN'], 0]]], [['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 102}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 102]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 150}, [['OPEN', 'NOSHOW', 'VOID'], 150]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['OPEN', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 150}, [['OPEN', 'OPEN', 'NOSHOW', 'VOID'], 150]], ['sampled case 2', {'status': ['OPEN', 'OPEN', 'NOSHOW', 'NOSHOW', 'NOSHOW'], 'fee': 50}, [['OPEN', 'OPEN', 'NOSHOW', 'NOSHOW', 'NOSHOW'], 50]], ['sampled case 3', {'status': ['FLOWN', 'NOSHOW', 'NOSHOW', 'NOSHOW', 'OPEN'], 'fee': 100}, [['FLOWN', 'NOSHOW', 'NOSHOW', 'NOSHOW', 'VOID'], 100]]], [['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 103}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 103]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 225}, [['OPEN', 'NOSHOW', 'VOID'], 225]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['OPEN', 'FLOWN', 'FLOWN', 'FLOWN', 'NOSHOW', 'NOSHOW'], 'fee': 75}, [['OPEN', 'FLOWN', 'FLOWN', 'FLOWN', 'NOSHOW', 'NOSHOW'], 75]], ['sampled case 2', {'status': ['FLOWN', 'OPEN', 'OPEN', 'OPEN', 'OPEN', 'FLOWN'], 'fee': 75}, [['FLOWN', 'OPEN', 'OPEN', 'OPEN', 'OPEN', 'FLOWN'], 0]], ['sampled case 3', {'status': ['OPEN'], 'fee': 50}, [['OPEN'], 0]]], [['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 104}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 104]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 300}, [['OPEN', 'NOSHOW', 'VOID'], 300]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['OPEN', 'NOSHOW', 'OPEN', 'OPEN', 'FLOWN'], 'fee': 75}, [['OPEN', 'NOSHOW', 'VOID', 'VOID', 'FLOWN'], 75]], ['sampled case 2', {'status': ['NOSHOW', 'OPEN', 'OPEN', 'FLOWN'], 'fee': 75}, [['NOSHOW', 'VOID', 'VOID', 'FLOWN'], 75]], ['sampled case 3', {'status': ['OPEN', 'OPEN', 'OPEN', 'FLOWN', 'OPEN', 'NOSHOW'], 'fee': 50}, [['OPEN', 'OPEN', 'OPEN', 'FLOWN', 'OPEN', 'NOSHOW'], 50]]], [['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 105}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 105]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 375}, [['OPEN', 'NOSHOW', 'VOID'], 375]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['NOSHOW', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID'], 150]], ['sampled case 2', {'status': ['OPEN', 'OPEN', 'FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 50}, [['OPEN', 'OPEN', 'FLOWN', 'NOSHOW', 'VOID', 'VOID'], 50]], ['sampled case 3', {'status': ['FLOWN', 'OPEN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 150}, [['FLOWN', 'OPEN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 150]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
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 |
|---|---|---|---|
| missed second leg | [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 101] | [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 101] | Passed |
| missed first leg | [['NOSHOW', 'VOID', 'VOID'], 150] | [['NOSHOW', 'VOID', 'VOID'], 150] | Passed |
| open before noshow | [['VOID', 'NOSHOW', 'VOID'], 75] | [['OPEN', 'NOSHOW', 'VOID'], 75] | Failed |
| two noshows | [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120] | [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120] | Passed |
| flown anomaly after noshow | [['NOSHOW', 'FLOWN', 'VOID'], 90] | [['NOSHOW', 'FLOWN', 'VOID'], 90] | Passed |
| all flown | [['FLOWN', 'FLOWN'], 0] | [['FLOWN', 'FLOWN'], 0] | Passed |
| sampled case 1 | [['VOID', 'NOSHOW', 'VOID', 'NOSHOW', 'NOSHOW', 'VOID'], 100] | [['OPEN', 'NOSHOW', 'VOID', 'NOSHOW', 'NOSHOW', 'VOID'], 100] | Failed |
| sampled case 2 | [['FLOWN', 'OPEN', 'FLOWN', 'OPEN', 'OPEN', 'OPEN'], 0] | [['FLOWN', 'OPEN', 'FLOWN', 'OPEN', 'OPEN', 'OPEN'], 0] | Passed |
| sampled case 3 | [['OPEN'], 0] | [['OPEN'], 0] | Passed |
SHA-256 / 12c5596fcdafe5eec6256f249e4676a51711ec6a00c6a604be337be4825b222e
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
st = list(x['status'])
fee = 0
seen = False
for i, s in enumerate(st):
if s == 'NOSHOW':
if not seen: fee += x['fee']
seen = True
elif s == 'OPEN' and 'NOSHOW' in st[max(0, i - 1):]:
st[i] = 'VOID'
return [st, fee]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 101}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 101]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 75}, [['OPEN', 'NOSHOW', 'VOID'], 75]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['OPEN', 'NOSHOW', 'OPEN', 'NOSHOW', 'NOSHOW', 'OPEN'], 'fee': 100}, [['OPEN', 'NOSHOW', 'VOID', 'NOSHOW', 'NOSHOW', 'VOID'], 100]], ['sampled case 2', {'status': ['FLOWN', 'OPEN', 'FLOWN', 'OPEN', 'OPEN', 'OPEN'], 'fee': 150}, [['FLOWN', 'OPEN', 'FLOWN', 'OPEN', 'OPEN', 'OPEN'], 0]], ['sampled case 3', {'status': ['OPEN'], 'fee': 100}, [['OPEN'], 0]]], [['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 102}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 102]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 150}, [['OPEN', 'NOSHOW', 'VOID'], 150]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['OPEN', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 150}, [['OPEN', 'OPEN', 'NOSHOW', 'VOID'], 150]], ['sampled case 2', {'status': ['OPEN', 'OPEN', 'NOSHOW', 'NOSHOW', 'NOSHOW'], 'fee': 50}, [['OPEN', 'OPEN', 'NOSHOW', 'NOSHOW', 'NOSHOW'], 50]], ['sampled case 3', {'status': ['FLOWN', 'NOSHOW', 'NOSHOW', 'NOSHOW', 'OPEN'], 'fee': 100}, [['FLOWN', 'NOSHOW', 'NOSHOW', 'NOSHOW', 'VOID'], 100]]], [['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 103}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 103]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 225}, [['OPEN', 'NOSHOW', 'VOID'], 225]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['OPEN', 'FLOWN', 'FLOWN', 'FLOWN', 'NOSHOW', 'NOSHOW'], 'fee': 75}, [['OPEN', 'FLOWN', 'FLOWN', 'FLOWN', 'NOSHOW', 'NOSHOW'], 75]], ['sampled case 2', {'status': ['FLOWN', 'OPEN', 'OPEN', 'OPEN', 'OPEN', 'FLOWN'], 'fee': 75}, [['FLOWN', 'OPEN', 'OPEN', 'OPEN', 'OPEN', 'FLOWN'], 0]], ['sampled case 3', {'status': ['OPEN'], 'fee': 50}, [['OPEN'], 0]]], [['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 104}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 104]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 300}, [['OPEN', 'NOSHOW', 'VOID'], 300]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['OPEN', 'NOSHOW', 'OPEN', 'OPEN', 'FLOWN'], 'fee': 75}, [['OPEN', 'NOSHOW', 'VOID', 'VOID', 'FLOWN'], 75]], ['sampled case 2', {'status': ['NOSHOW', 'OPEN', 'OPEN', 'FLOWN'], 'fee': 75}, [['NOSHOW', 'VOID', 'VOID', 'FLOWN'], 75]], ['sampled case 3', {'status': ['OPEN', 'OPEN', 'OPEN', 'FLOWN', 'OPEN', 'NOSHOW'], 'fee': 50}, [['OPEN', 'OPEN', 'OPEN', 'FLOWN', 'OPEN', 'NOSHOW'], 50]]], [['missed second leg', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 105}, [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 105]], ['missed first leg', {'status': ['NOSHOW', 'OPEN', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID', 'VOID'], 150]], ['open before noshow', {'status': ['OPEN', 'NOSHOW', 'OPEN'], 'fee': 375}, [['OPEN', 'NOSHOW', 'VOID'], 375]], ['two noshows', {'status': ['FLOWN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 120}, [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120]], ['flown anomaly after noshow', {'status': ['NOSHOW', 'FLOWN', 'OPEN'], 'fee': 90}, [['NOSHOW', 'FLOWN', 'VOID'], 90]], ['all flown', {'status': ['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 'fee': 100}, [['FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN', 'FLOWN'], 0]], ['sampled case 1', {'status': ['NOSHOW', 'OPEN'], 'fee': 150}, [['NOSHOW', 'VOID'], 150]], ['sampled case 2', {'status': ['OPEN', 'OPEN', 'FLOWN', 'NOSHOW', 'OPEN', 'OPEN'], 'fee': 50}, [['OPEN', 'OPEN', 'FLOWN', 'NOSHOW', 'VOID', 'VOID'], 50]], ['sampled case 3', {'status': ['FLOWN', 'OPEN', 'NOSHOW', 'OPEN', 'NOSHOW', 'OPEN'], 'fee': 150}, [['FLOWN', 'OPEN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 150]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
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 |
|---|---|---|---|
| missed second leg | [['FLOWN', 'NOSHOW', 'VOID', 'OPEN'], 101] | [['FLOWN', 'NOSHOW', 'VOID', 'VOID'], 101] | Failed |
| missed first leg | [['NOSHOW', 'VOID', 'OPEN'], 150] | [['NOSHOW', 'VOID', 'VOID'], 150] | Failed |
| open before noshow | [['VOID', 'NOSHOW', 'VOID'], 75] | [['OPEN', 'NOSHOW', 'VOID'], 75] | Failed |
| two noshows | [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120] | [['FLOWN', 'NOSHOW', 'VOID', 'NOSHOW', 'VOID'], 120] | Passed |
| flown anomaly after noshow | [['NOSHOW', 'FLOWN', 'OPEN'], 90] | [['NOSHOW', 'FLOWN', 'VOID'], 90] | Failed |
| all flown | [['FLOWN', 'FLOWN'], 0] | [['FLOWN', 'FLOWN'], 0] | Passed |
| sampled case 1 | [['VOID', 'NOSHOW', 'VOID', 'NOSHOW', 'NOSHOW', 'VOID'], 100] | [['OPEN', 'NOSHOW', 'VOID', 'NOSHOW', 'NOSHOW', 'VOID'], 100] | Failed |
| sampled case 2 | [['FLOWN', 'OPEN', 'FLOWN', 'OPEN', 'OPEN', 'OPEN'], 0] | [['FLOWN', 'OPEN', 'FLOWN', 'OPEN', 'OPEN', 'OPEN'], 0] | Passed |
| sampled case 3 | [['OPEN'], 0] | [['OPEN'], 0] | Passed |
SHA-256 / 720e5af125ff32623592a0f3b6d52fc829ca695abc12b6d2d7cb399b2e884986
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 9 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
A stipulated toy fare-rule contract with invented constants; it is not an ATPCO or carrier tariff implementation and makes no claim of industry-standard 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:47:46.800297+00:00.
Case digest / c3e7f2c2cb368424a96ba785f03b94106c108f9c731ba0ebebc5fcc09df409bf