FAILURE MAP
← Case archive

FA-47931 / Delimited text / Open access

Explicit repeated column selectors are deduplicated · case 01

A structured table violates the declared record or column contract.

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

ROOT CAUSE

A set-like selector result removes intentionally repeated output columns.

VERIFIED REPAIR

Preserve the named invariant at the faulty decision: return out

Unsuccessful approach: Sorting the deduplicated set also destroys user-specified order.

Case contract

Resolve an ordered comma column selector against width. Decimal selectors are one based, ranges a-b include both endpoints, and * adds every column not selected earlier. Explicit duplicate selections are retained. Reject malformed, reversed or out-of-bound numeric ranges. Return zero-based physical indexes.

Why this case matters

Delimited interchange needs explicit framing, schema and field semantics at ingestion and emission boundaries.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
def _vary(value):
    if value == '@END': return 3 + 4*N
    if isinstance(value, str): return value.replace('@', 'cell' * N)
    if isinstance(value, list): return [_vary(x) for x in value]
    if isinstance(value, dict): return {_vary(k): _vary(v) for k,v in value.items()}
    return value
N = 1
observations = []
def solve(data):
    out = []
    for token in data['selector'].split(','):
        if token == '*':
            out.extend(i for i in range(data['width']) if i not in out)
            continue
        parts = token.split('-')
        if len(parts) not in (1,2) or any(not p.isascii() or not p.isdecimal() for p in parts): return None
        start, end = int(parts[0]), int(parts[-1])
        if not 1 <= start <= end <= data['width']: return None
        out.extend(range(start-1, end))
    return list(dict.fromkeys(out))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('ordered', solve(_vary({'selector': '3,1', 'width': 3})), _vary([2, 0]))
check('range', solve(_vary({'selector': '2-4', 'width': 4})), _vary([1, 2, 3]))
check('wildcard', solve(_vary({'selector': '2,*', 'width': 3})), _vary([1, 0, 2]))
check('duplicate', solve(_vary({'selector': '2,2', 'width': 3})), _vary([1, 1]))
check('reversed', solve(_vary({'selector': '3-1', 'width': 3})), _vary(None))
check('zero', solve(_vary({'selector': '0', 'width': 3})), _vary(None))
check('outside', solve(_vary({'selector': '4', 'width': 3})), _vary(None))
check('bad range', solve(_vary({'selector': '1-2-3', 'width': 3})), _vary(None))
check('empty', solve(_vary({'selector': '', 'width': 3})), _vary(None))
check('variable width', solve(_vary({'selector': '1,*', 'width': 4})), _vary([0, 1, 2, 3]))
check('variant selector width', solve({'selector':'1,*','width':N+2}), list(range(N+2)))
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
ordered[2, 0][2, 0]Passed
range[1, 2, 3][1, 2, 3]Passed
wildcard[1, 0, 2][1, 0, 2]Passed
duplicate[1][1, 1]Failed
reversedNoneNonePassed
zeroNoneNonePassed
outsideNoneNonePassed
bad rangeNoneNonePassed
emptyNoneNonePassed
variable width[0, 1, 2, 3][0, 1, 2, 3]Passed
variant selector width[0, 1, 2][0, 1, 2]Passed

SHA-256 / 8703d4316a65dff7cdd7c6d332d47d3a243225cb4373f432160e623ba0c0b844

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
def _vary(value):
    if value == '@END': return 3 + 4*N
    if isinstance(value, str): return value.replace('@', 'cell' * N)
    if isinstance(value, list): return [_vary(x) for x in value]
    if isinstance(value, dict): return {_vary(k): _vary(v) for k,v in value.items()}
    return value
N = 1
observations = []
def solve(data):
    out = []
    for token in data['selector'].split(','):
        if token == '*':
            out.extend(i for i in range(data['width']) if i not in out)
            continue
        parts = token.split('-')
        if len(parts) not in (1,2) or any(not p.isascii() or not p.isdecimal() for p in parts): return None
        start, end = int(parts[0]), int(parts[-1])
        if not 1 <= start <= end <= data['width']: return None
        out.extend(range(start-1, end))
    return sorted(set(out))
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('ordered', solve(_vary({'selector': '3,1', 'width': 3})), _vary([2, 0]))
check('range', solve(_vary({'selector': '2-4', 'width': 4})), _vary([1, 2, 3]))
check('wildcard', solve(_vary({'selector': '2,*', 'width': 3})), _vary([1, 0, 2]))
check('duplicate', solve(_vary({'selector': '2,2', 'width': 3})), _vary([1, 1]))
check('reversed', solve(_vary({'selector': '3-1', 'width': 3})), _vary(None))
check('zero', solve(_vary({'selector': '0', 'width': 3})), _vary(None))
check('outside', solve(_vary({'selector': '4', 'width': 3})), _vary(None))
check('bad range', solve(_vary({'selector': '1-2-3', 'width': 3})), _vary(None))
check('empty', solve(_vary({'selector': '', 'width': 3})), _vary(None))
check('variable width', solve(_vary({'selector': '1,*', 'width': 4})), _vary([0, 1, 2, 3]))
check('variant selector width', solve({'selector':'1,*','width':N+2}), list(range(N+2)))
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
ordered[0, 2][2, 0]Failed
range[1, 2, 3][1, 2, 3]Passed
wildcard[0, 1, 2][1, 0, 2]Failed
duplicate[1][1, 1]Failed
reversedNoneNonePassed
zeroNoneNonePassed
outsideNoneNonePassed
bad rangeNoneNonePassed
emptyNoneNonePassed
variable width[0, 1, 2, 3][0, 1, 2, 3]Passed
variant selector width[0, 1, 2][0, 1, 2]Passed

SHA-256 / 865429da65dc9815438dfedd2e4247420d4d3a053d0f54c3455f91e20aee5f0f

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
def _vary(value):
    if value == '@END': return 3 + 4*N
    if isinstance(value, str): return value.replace('@', 'cell' * N)
    if isinstance(value, list): return [_vary(x) for x in value]
    if isinstance(value, dict): return {_vary(k): _vary(v) for k,v in value.items()}
    return value
N = 1
observations = []
def solve(data):
    out = []
    for token in data['selector'].split(','):
        if token == '*':
            out.extend(i for i in range(data['width']) if i not in out)
            continue
        parts = token.split('-')
        if len(parts) not in (1,2) or any(not p.isascii() or not p.isdecimal() for p in parts): return None
        start, end = int(parts[0]), int(parts[-1])
        if not 1 <= start <= end <= data['width']: return None
        out.extend(range(start-1, end))
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('ordered', solve(_vary({'selector': '3,1', 'width': 3})), _vary([2, 0]))
check('range', solve(_vary({'selector': '2-4', 'width': 4})), _vary([1, 2, 3]))
check('wildcard', solve(_vary({'selector': '2,*', 'width': 3})), _vary([1, 0, 2]))
check('duplicate', solve(_vary({'selector': '2,2', 'width': 3})), _vary([1, 1]))
check('reversed', solve(_vary({'selector': '3-1', 'width': 3})), _vary(None))
check('zero', solve(_vary({'selector': '0', 'width': 3})), _vary(None))
check('outside', solve(_vary({'selector': '4', 'width': 3})), _vary(None))
check('bad range', solve(_vary({'selector': '1-2-3', 'width': 3})), _vary(None))
check('empty', solve(_vary({'selector': '', 'width': 3})), _vary(None))
check('variable width', solve(_vary({'selector': '1,*', 'width': 4})), _vary([0, 1, 2, 3]))
check('variant selector width', solve({'selector':'1,*','width':N+2}), list(range(N+2)))
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
ordered[2, 0][2, 0]Passed
range[1, 2, 3][1, 2, 3]Passed
wildcard[1, 0, 2][1, 0, 2]Passed
duplicate[1, 1][1, 1]Passed
reversedNoneNonePassed
zeroNoneNonePassed
outsideNoneNonePassed
bad rangeNoneNonePassed
emptyNoneNonePassed
variable width[0, 1, 2, 3][0, 1, 2, 3]Passed
variant selector width[0, 1, 2][0, 1, 2]Passed

SHA-256 / 74afbb7e06e63c43d3bbd867097175cfafa89b4a57bf8a1323f72da59acdf1c5

Verification & scope

Deterministic bounded in-memory model. No claim of complete CSV or external format 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:46.155781+00:00.

Case digest / e507edcd9ee47d6e0cc94f3e52f1391f556f4f9c31c1e01b252e71207537bf9c