FAILURE MAP
← Case archive

FA-37286 / Table interactions / Open access

Table clipboard serialization: record separator · case 01

The table record separator result violates the stipulated table clipboard serialization contract.

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

ROOT CAUSE

The record separator decision uses "'\\n'.join(lines)" instead of "'\\r\\n'.join(lines)".

VERIFIED REPAIR

Apply the complete record separator rule: '\r\n'.join(lines).

Unsuccessful approach: The attempted repair "'\\t'.join(lines)" still loses a required part of the table contract.

Case contract

Serialize selected rows in current table order and copyable visible columns in schema order. Optional labels precede records, display/raw selection is explicit, None is empty while zero is retained, TSV-special cells use doubled quotes, and records use CRLF without a trailing separator.

Why this case matters

An offline table UI model isolates table clipboard serialization, including adversarial row/column relationships.

1 / The failure

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

N = 1
observations = []
def solve(rows, columns, selected, hidden, include_headers, raw):
    cols=[c for c in columns if c['id'] not in hidden and c.get('copy',True)]
    rr=[r for r in rows if r['id'] in selected]
    def text(v):
        s='' if v is None else str(v)
        return '"'+s.replace('"','""')+'"' if any(x in s for x in ('\t','\n','"')) else s
    lines=[]
    if include_headers: lines.append('\t'.join(text(c['label']) for c in cols))
    for r in rr:
        values=[r.get(c['id']) if raw else r.get('_display',{}).get(c['id'],r.get(c['id'])) for c in cols]
        lines.append('\t'.join(text(v) for v in values))
    return '\n'.join(lines)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('display selected rows', solve([{'id':'r1','a':1,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 2:
    check('display selected rows', solve([{'id':'r1','a':2,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 3:
    check('display selected rows', solve([{'id':'r1','a':3,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 4:
    check('display selected rows', solve([{'id':'r1','a':4,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 5:
    check('display selected rows', solve([{'id':'r1','a':5,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

check('variant formatted clipboard value', solve([{'id':'r','a':N,'_display':{'a':'value'+str(N)}}], [{'id':'a','label':'A'}], ['r'], [], False, False), 'value'+str(N))
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
display selected rowsAlpha Beta shown 0 xAlpha Beta shown 0 xFailed
quoted cells"x""y" "line next" "x y""x""y" "line next" "x y"Passed
hidden private33Passed
raw mode2 2 Passed
header-onlyAlphaAlphaPassed
no selectionPassed
variant formatted clipboard valuevalue1value1Passed

SHA-256 / b01155f84e65ad1419d902b9bff9a2acaed74cb99b923b33623e47a2ae01dae5

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(rows, columns, selected, hidden, include_headers, raw):
    cols=[c for c in columns if c['id'] not in hidden and c.get('copy',True)]
    rr=[r for r in rows if r['id'] in selected]
    def text(v):
        s='' if v is None else str(v)
        return '"'+s.replace('"','""')+'"' if any(x in s for x in ('\t','\n','"')) else s
    lines=[]
    if include_headers: lines.append('\t'.join(text(c['label']) for c in cols))
    for r in rr:
        values=[r.get(c['id']) if raw else r.get('_display',{}).get(c['id'],r.get(c['id'])) for c in cols]
        lines.append('\t'.join(text(v) for v in values))
    return '\t'.join(lines)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('display selected rows', solve([{'id':'r1','a':1,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 2:
    check('display selected rows', solve([{'id':'r1','a':2,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 3:
    check('display selected rows', solve([{'id':'r1','a':3,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 4:
    check('display selected rows', solve([{'id':'r1','a':4,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 5:
    check('display selected rows', solve([{'id':'r1','a':5,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

check('variant formatted clipboard value', solve([{'id':'r','a':N,'_display':{'a':'value'+str(N)}}], [{'id':'a','label':'A'}], ['r'], [], False, False), 'value'+str(N))
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
display selected rowsAlpha Beta shown 0 xAlpha Beta shown 0 xFailed
quoted cells"x""y" "line next" "x y""x""y" "line next" "x y"Passed
hidden private33Passed
raw mode2 2 Passed
header-onlyAlphaAlphaPassed
no selectionPassed
variant formatted clipboard valuevalue1value1Passed

SHA-256 / 992d9b54ee39037c27336c9fcf85e3ef47d16e778b21769a2e6b57e5380307c8

3 / The verified repair

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

N = 1
observations = []
def solve(rows, columns, selected, hidden, include_headers, raw):
    cols=[c for c in columns if c['id'] not in hidden and c.get('copy',True)]
    rr=[r for r in rows if r['id'] in selected]
    def text(v):
        s='' if v is None else str(v)
        return '"'+s.replace('"','""')+'"' if any(x in s for x in ('\t','\n','"')) else s
    lines=[]
    if include_headers: lines.append('\t'.join(text(c['label']) for c in cols))
    for r in rr:
        values=[r.get(c['id']) if raw else r.get('_display',{}).get(c['id'],r.get(c['id'])) for c in cols]
        lines.append('\t'.join(text(v) for v in values))
    return '\r\n'.join(lines)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('display selected rows', solve([{'id':'r1','a':1,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 2:
    check('display selected rows', solve([{'id':'r1','a':2,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 3:
    check('display selected rows', solve([{'id':'r1','a':3,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 4:
    check('display selected rows', solve([{'id':'r1','a':4,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

if N == 5:
    check('display selected rows', solve([{'id':'r1','a':5,'b':0,'_display':{'a':'shown'}},{'id':'r2','a':None,'b':'x'}], [{'id':'a','label':'Alpha'},{'id':'b','label':'Beta'}], ['r2','r1'], [], True, False), 'Alpha\tBeta\r\nshown\t0\r\n\tx')
    check('quoted cells', solve([{'id':'r','a':'x"y','b':'line\nnext','c':'x\ty'}], [{'id':'a','label':'A'},{'id':'b','label':'B'},{'id':'c','label':'C'}], ['r'], [], False, True), '"x""y"\t"line\nnext"\t"x\ty"')
    check('hidden private', solve([{'id':'r','a':1,'b':2,'c':3}], [{'id':'a','label':'A'},{'id':'b','label':'B','copy':False},{'id':'c','label':'C'}], ['r'], ['a'], False, True), '3')
    check('raw mode', solve([{'id':'r','a':2,'b':None,'_display':{'a':'two'}}], [{'id':'a','label':'A'},{'id':'b','label':'B'}], ['r'], [], False, True), '2\t')
    check('header-only', solve([], [{'id':'a','label':'Alpha'}], [], [], True, True), 'Alpha')
    check('no selection', solve([{'id':'r','a':1}], [{'id':'a','label':'A'}], [], [], False, False), '')

check('variant formatted clipboard value', solve([{'id':'r','a':N,'_display':{'a':'value'+str(N)}}], [{'id':'a','label':'A'}], ['r'], [], False, False), 'value'+str(N))
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
display selected rowsAlpha Beta shown 0 xAlpha Beta shown 0 xPassed
quoted cells"x""y" "line next" "x y""x""y" "line next" "x y"Passed
hidden private33Passed
raw mode2 2 Passed
header-onlyAlphaAlphaPassed
no selectionPassed
variant formatted clipboard valuevalue1value1Passed

SHA-256 / 5981d927f7a37deb30551e3ed5974458bafc184a19eac1992fa8851d4eda7107

Verification & scope

Source row/column IDs are unique. Cell strings exclude lone carriage returns; quoting models tabs, LF, and double quotes only. Deterministic offline table UI model; no browser, DOM, framework, or standards conformance is claimed. 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:42:59.675771+00:00.

Case digest / bc06836753f726ec10459ac570b94cce241cbee7824a45512aca13760e6a4a7a