{"abstract":"Multiple selections are submitted as one nested value.","category":"Form submission","checks":9,"contract":"Submit enabled named controls, checked choices and only the actual submitter; emit one ordered pair per selected multiple option without value deduplication.","contract_signature":"controls, submitter","evaluation_group":"xi-form-serialize","failed_approach":"Deduplicating selected values loses separate equal-valued options.","family":"xi-form-serialize-multiple","id":"FA-8501","implementations":{"attempt":{"sha256":"684c6615f17bfd1f9170dfb6d36bf2ceeedfa60423384d33072c2ad091f103e9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(controls, submitter):\n    pairs = []\n    for c in controls:\n        if c['disabled']: continue\n        if not c['name']: continue\n        if c['type'] in ('checkbox', 'radio') and not c['checked']: continue\n        if c['type'] == 'submit' and c['id'] != submitter: continue\n        values = list(set(c['value'])) if c['type'] == 'multiple' else [c['value']]\n        pairs.extend((c['name'], value) for value in values)\n    return pairs\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('disabled', solve([dict(disabled=True,name='a',type='text',checked=False,id='a',value='x')], None), [])\ncheck('unnamed', solve([dict(disabled=False,name='',type='text',checked=False,id='a',value='x')], None), [])\ncheck('unchecked', solve([dict(disabled=False,name='a',type='checkbox',checked=False,id='a',value='x')], None), [])\ncheck('checked', solve([dict(disabled=False,name='a',type='checkbox',checked=True,id='a',value='x')], None), [('a', 'x')])\ncheck('other submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='other',value='x')], 'actual'), [])\ncheck('actual submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='actual',value='x')], 'actual'), [('a', 'x')])\ncheck('multiple', solve([dict(disabled=False,name='a',type='multiple',checked=False,id='a',value=['x','x','y'])], None), [('a', 'x'), ('a', 'x'), ('a', 'y')])\ncheck('parameterized submission value', solve([dict(disabled=False,name='a',type='text',checked=False,id='a',value=N)],None), [('a',N)])\nfor repetition in range(N):\n    check('repeat multiple', solve([dict(disabled=False,name='a',type='multiple',checked=False,id='a',value=['x','x','y'])], None), [('a', 'x'), ('a', 'x'), ('a', 'y')])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"80fc8cdac1e7efe214585259126be0d816400185aebdf056360b41b8cd921d35","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(controls, submitter):\n    pairs = []\n    for c in controls:\n        if c['disabled']: continue\n        if not c['name']: continue\n        if c['type'] in ('checkbox', 'radio') and not c['checked']: continue\n        if c['type'] == 'submit' and c['id'] != submitter: continue\n        values = [c['value']]\n        pairs.extend((c['name'], value) for value in values)\n    return pairs\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('disabled', solve([dict(disabled=True,name='a',type='text',checked=False,id='a',value='x')], None), [])\ncheck('unnamed', solve([dict(disabled=False,name='',type='text',checked=False,id='a',value='x')], None), [])\ncheck('unchecked', solve([dict(disabled=False,name='a',type='checkbox',checked=False,id='a',value='x')], None), [])\ncheck('checked', solve([dict(disabled=False,name='a',type='checkbox',checked=True,id='a',value='x')], None), [('a', 'x')])\ncheck('other submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='other',value='x')], 'actual'), [])\ncheck('actual submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='actual',value='x')], 'actual'), [('a', 'x')])\ncheck('multiple', solve([dict(disabled=False,name='a',type='multiple',checked=False,id='a',value=['x','x','y'])], None), [('a', 'x'), ('a', 'x'), ('a', 'y')])\ncheck('parameterized submission value', solve([dict(disabled=False,name='a',type='text',checked=False,id='a',value=N)],None), [('a',N)])\nfor repetition in range(N):\n    check('repeat multiple', solve([dict(disabled=False,name='a',type='multiple',checked=False,id='a',value=['x','x','y'])], None), [('a', 'x'), ('a', 'x'), ('a', 'y')])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":" This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"xi-form-serialize-multiple","generated_at":"2026-09-29T14:38:21.983892+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic model of successful form control collection; this isolates one interface invariant without requiring a browser.","root_cause":"The multiple operation uses `[c['value']]` where the contract requires `c['value'] if c['type'] == 'multiple' else [c['value']]`.","sha256":"4cd80d97b1d0445685a6ce61c3519464658c29b1aa9272c112a861778eef987e","title":"Successful form control collection: Multiple selections are submitted as one nested value · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":39.191,"exit_code":1,"observations":[{"actual":[],"check":"disabled","expected":[],"passed":true},{"actual":[],"check":"unnamed","expected":[],"passed":true},{"actual":[],"check":"unchecked","expected":[],"passed":true},{"actual":[["a","x"]],"check":"checked","expected":[["a","x"]],"passed":true},{"actual":[],"check":"other submit","expected":[],"passed":true},{"actual":[["a","x"]],"check":"actual submit","expected":[["a","x"]],"passed":true},{"actual":[["a","x"],["a","y"]],"check":"multiple","expected":[["a","x"],["a","x"],["a","y"]],"passed":false},{"actual":[["a",1]],"check":"parameterized submission value","expected":[["a",1]],"passed":true},{"actual":[["a","x"],["a","y"]],"check":"repeat multiple","expected":[["a","x"],["a","x"],["a","y"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"disabled\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unnamed\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unchecked\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"checked\", \"actual\": [[\"a\", \"x\"]], \"expected\": [[\"a\", \"x\"]], \"passed\": true}, {\"check\": \"other submit\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"actual submit\", \"actual\": [[\"a\", \"x\"]], \"expected\": [[\"a\", \"x\"]], \"passed\": true}, {\"check\": \"multiple\", \"actual\": [[\"a\", \"x\"], [\"a\", \"y\"]], \"expected\": [[\"a\", \"x\"], [\"a\", \"x\"], [\"a\", \"y\"]], \"passed\": false}, {\"check\": \"parameterized submission value\", \"actual\": [[\"a\", 1]], \"expected\": [[\"a\", 1]], \"passed\": true}, {\"check\": \"repeat multiple\", \"actual\": [[\"a\", \"x\"], [\"a\", \"y\"]], \"expected\": [[\"a\", \"x\"], [\"a\", \"x\"], [\"a\", \"y\"]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.521,"exit_code":1,"observations":[{"actual":[],"check":"disabled","expected":[],"passed":true},{"actual":[],"check":"unnamed","expected":[],"passed":true},{"actual":[],"check":"unchecked","expected":[],"passed":true},{"actual":[["a","x"]],"check":"checked","expected":[["a","x"]],"passed":true},{"actual":[],"check":"other submit","expected":[],"passed":true},{"actual":[["a","x"]],"check":"actual submit","expected":[["a","x"]],"passed":true},{"actual":[["a",["x","x","y"]]],"check":"multiple","expected":[["a","x"],["a","x"],["a","y"]],"passed":false},{"actual":[["a",1]],"check":"parameterized submission value","expected":[["a",1]],"passed":true},{"actual":[["a",["x","x","y"]]],"check":"repeat multiple","expected":[["a","x"],["a","x"],["a","y"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"disabled\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unnamed\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"unchecked\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"checked\", \"actual\": [[\"a\", \"x\"]], \"expected\": [[\"a\", \"x\"]], \"passed\": true}, {\"check\": \"other submit\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"actual submit\", \"actual\": [[\"a\", \"x\"]], \"expected\": [[\"a\", \"x\"]], \"passed\": true}, {\"check\": \"multiple\", \"actual\": [[\"a\", [\"x\", \"x\", \"y\"]]], \"expected\": [[\"a\", \"x\"], [\"a\", \"x\"], [\"a\", \"y\"]], \"passed\": false}, {\"check\": \"parameterized submission value\", \"actual\": [[\"a\", 1]], \"expected\": [[\"a\", 1]], \"passed\": true}, {\"check\": \"repeat multiple\", \"actual\": [[\"a\", [\"x\", \"x\", \"y\"]]], \"expected\": [[\"a\", \"x\"], [\"a\", \"x\"], [\"a\", \"y\"]], \"passed\": false}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}