broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if True]
        if not children and not show_empty: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',key),'label':g['label'],'count':len(children),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden[:1]]
        if not children and not show_empty: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',key),'label':g['label'],'count':len(children),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

prompt:
The table group hidden members result violates the stipulated table grouped row projection contract.

Table group headers retain stable namespaced group keys distinct from labels, count visible members, derive tri-state selection over visible children, honor empty/collapsed group policies, and reset row striping within each group.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden]
        if not children: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',key),'label':g['label'],'count':len(children),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

meaning: Fixture-count band, not measured model difficulty

deps: stdlib

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden]
        if False: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',key),'label':g['label'],'count':len(children),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

prompt:
The table empty group policy result violates the stipulated table grouped row projection contract.

Table group headers retain stable namespaced group keys distinct from labels, count visible members, derive tri-state selection over visible children, honor empty/collapsed group policies, and reset row striping within each group.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden]
        if not children and not show_empty: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':key,'label':g['label'],'count':len(children),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden]
        if not children and not show_empty: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',g['label']),'label':g['label'],'count':len(children),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

prompt:
The table group key namespace result violates the stipulated table grouped row projection contract.

Table group headers retain stable namespaced group keys distinct from labels, count visible members, derive tri-state selection over visible children, honor empty/collapsed group policies, and reset row striping within each group.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden]
        if not children and not show_empty: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',key),'label':str(key),'count':len(children),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden]
        if not children and not show_empty: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',key),'label':g['label'] or '(empty)','count':len(children),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

prompt:
The table group display label result violates the stipulated table grouped row projection contract.

Table group headers retain stable namespaced group keys distinct from labels, count visible members, derive tri-state selection over visible children, honor empty/collapsed group policies, and reset row striping within each group.

split: open-access


broken_source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden]
        if not children and not show_empty: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',key),'label':g['label'],'count':len(g['rows']),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

source:
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(groups, collapsed, hidden, selected, show_empty):
    out=[]
    for g in groups:
        children=[r for r in g['rows'] if r['id'] not in hidden]
        if not children and not show_empty: continue
        key=g['key']
        picked=[r for r in children if r['id'] in selected]
        out.append({'kind':'group','key':('group',key),'label':g['label'],'count':len(picked),'checked':bool(children) and len(picked)==len(children),'mixed':0<len(picked)<len(children)})
        if key in collapsed: continue
        out += [{'kind':'row','key':('row',r['id']),'group':key,'row':r,'stripe':i%2} for i,r in enumerate(children)]
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
if N == 1:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':1},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 1}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 2:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':2},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 2}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 3:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':3},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 3}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 4:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':4},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 4}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

if N == 5:
    check('partial selected group', solve([{'key':'g1','label':'Group','rows':[{'id':'a','v':5},{'id':'b'}]},{'key':'g2','label':'Group','rows':[{'id':'c'},{'id':'d'}]}], [], [], ['a','c','d'], False), [{'kind': 'group', 'key': ('group', 'g1'), 'label': 'Group', 'count': 2, 'checked': False, 'mixed': True}, {'kind': 'row', 'key': ('row', 'a'), 'group': 'g1', 'row': {'id': 'a', 'v': 5}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'b'), 'group': 'g1', 'row': {'id': 'b'}, 'stripe': 1}, {'kind': 'group', 'key': ('group', 'g2'), 'label': 'Group', 'count': 2, 'checked': True, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g2', 'row': {'id': 'c'}, 'stripe': 0}, {'kind': 'row', 'key': ('row', 'd'), 'group': 'g2', 'row': {'id': 'd'}, 'stripe': 1}])
    check('collapsed group', solve([{'key':'g','label':'Label','rows':[{'id':'a'}]}], ['g'], [], ['a'], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'Label', 'count': 1, 'checked': True, 'mixed': False}])
    check('hidden members', solve([{'key':'g','label':'G','rows':[{'id':'a'},{'id':'b'},{'id':'c'}]}], [], ['a','b'], [], False), [{'kind': 'group', 'key': ('group', 'g'), 'label': 'G', 'count': 1, 'checked': False, 'mixed': False}, {'kind': 'row', 'key': ('row', 'c'), 'group': 'g', 'row': {'id': 'c'}, 'stripe': 0}])
    check('empty shown', solve([{'key':'g','label':'','rows':[]}], [], [], [], True), [{'kind': 'group', 'key': ('group', 'g'), 'label': '', 'count': 0, 'checked': False, 'mixed': False}])
    check('empty removed', solve([{'key':'g','label':'G','rows':[]}], [], [], [], False), [])
    check('no groups', solve([], [], [], [], False), [])

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)

prompt:
The table visible group count result violates the stipulated table grouped row projection contract.

Table group headers retain stable namespaced group keys distinct from labels, count visible members, derive tri-state selection over visible children, honor empty/collapsed group policies, and reset row striping within each group.

split: open-access