FA-8486 / Form submission / Open access
Successful form control collection: Unnamed controls create empty-name form entries · case 01
Unnamed controls create empty-name form entries.
ROOT CAUSE
The unnamed operation uses `if False: continue` where the contract requires `if not c['name']: continue`.
VERIFIED REPAIR
Implement the unnamed operation as `if not c['name']: continue`.
Unsuccessful approach: Rejecting named fields prevents normal form submission.
Case contract
Submit enabled named controls, checked choices and only the actual submitter; emit one ordered pair per selected multiple option without value deduplication.
Why this case matters
A deterministic model of successful form control collection; this isolates one interface invariant without requiring a browser.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(controls, submitter):
pairs = []
for c in controls:
if c['disabled']: continue
if False: continue
if c['type'] in ('checkbox', 'radio') and not c['checked']: continue
if c['type'] == 'submit' and c['id'] != submitter: continue
values = c['value'] if c['type'] == 'multiple' else [c['value']]
pairs.extend((c['name'], value) for value in values)
return pairs
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('disabled', solve([dict(disabled=True,name='a',type='text',checked=False,id='a',value='x')], None), [])
check('unnamed', solve([dict(disabled=False,name='',type='text',checked=False,id='a',value='x')], None), [])
check('unchecked', solve([dict(disabled=False,name='a',type='checkbox',checked=False,id='a',value='x')], None), [])
check('checked', solve([dict(disabled=False,name='a',type='checkbox',checked=True,id='a',value='x')], None), [('a', 'x')])
check('other submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='other',value='x')], 'actual'), [])
check('actual submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='actual',value='x')], 'actual'), [('a', 'x')])
check('multiple', solve([dict(disabled=False,name='a',type='multiple',checked=False,id='a',value=['x','x','y'])], None), [('a', 'x'), ('a', 'x'), ('a', 'y')])
check('parameterized submission value', solve([dict(disabled=False,name='a',type='text',checked=False,id='a',value=N)],None), [('a',N)])
for repetition in range(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')])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| disabled | [] | [] | Passed |
| unnamed | [['', 'x']] | [] | Failed |
| unchecked | [] | [] | Passed |
| checked | [['a', 'x']] | [['a', 'x']] | Passed |
| other submit | [] | [] | Passed |
| actual submit | [['a', 'x']] | [['a', 'x']] | Passed |
| multiple | [['a', 'x'], ['a', 'x'], ['a', 'y']] | [['a', 'x'], ['a', 'x'], ['a', 'y']] | Passed |
| parameterized submission value | [['a', 1]] | [['a', 1]] | Passed |
| repeat multiple | [['a', 'x'], ['a', 'x'], ['a', 'y']] | [['a', 'x'], ['a', 'x'], ['a', 'y']] | Passed |
SHA-256 / 76116f3be0427f153a82a61484c29220540ad85a1a89d9a14dc131a5823a98d1
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(controls, submitter):
pairs = []
for c in controls:
if c['disabled']: continue
if c['name']: continue
if c['type'] in ('checkbox', 'radio') and not c['checked']: continue
if c['type'] == 'submit' and c['id'] != submitter: continue
values = c['value'] if c['type'] == 'multiple' else [c['value']]
pairs.extend((c['name'], value) for value in values)
return pairs
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('disabled', solve([dict(disabled=True,name='a',type='text',checked=False,id='a',value='x')], None), [])
check('unnamed', solve([dict(disabled=False,name='',type='text',checked=False,id='a',value='x')], None), [])
check('unchecked', solve([dict(disabled=False,name='a',type='checkbox',checked=False,id='a',value='x')], None), [])
check('checked', solve([dict(disabled=False,name='a',type='checkbox',checked=True,id='a',value='x')], None), [('a', 'x')])
check('other submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='other',value='x')], 'actual'), [])
check('actual submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='actual',value='x')], 'actual'), [('a', 'x')])
check('multiple', solve([dict(disabled=False,name='a',type='multiple',checked=False,id='a',value=['x','x','y'])], None), [('a', 'x'), ('a', 'x'), ('a', 'y')])
check('parameterized submission value', solve([dict(disabled=False,name='a',type='text',checked=False,id='a',value=N)],None), [('a',N)])
for repetition in range(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')])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| disabled | [] | [] | Passed |
| unnamed | [['', 'x']] | [] | Failed |
| unchecked | [] | [] | Passed |
| checked | [] | [['a', 'x']] | Failed |
| other submit | [] | [] | Passed |
| actual submit | [] | [['a', 'x']] | Failed |
| multiple | [] | [['a', 'x'], ['a', 'x'], ['a', 'y']] | Failed |
| parameterized submission value | [] | [['a', 1]] | Failed |
| repeat multiple | [] | [['a', 'x'], ['a', 'x'], ['a', 'y']] | Failed |
SHA-256 / a23bcf93f6b43f73e1db8f4074aaa303b92e1a31c57b6a8d3e870399ba068c3e
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(controls, submitter):
pairs = []
for c in controls:
if c['disabled']: continue
if not c['name']: continue
if c['type'] in ('checkbox', 'radio') and not c['checked']: continue
if c['type'] == 'submit' and c['id'] != submitter: continue
values = c['value'] if c['type'] == 'multiple' else [c['value']]
pairs.extend((c['name'], value) for value in values)
return pairs
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('disabled', solve([dict(disabled=True,name='a',type='text',checked=False,id='a',value='x')], None), [])
check('unnamed', solve([dict(disabled=False,name='',type='text',checked=False,id='a',value='x')], None), [])
check('unchecked', solve([dict(disabled=False,name='a',type='checkbox',checked=False,id='a',value='x')], None), [])
check('checked', solve([dict(disabled=False,name='a',type='checkbox',checked=True,id='a',value='x')], None), [('a', 'x')])
check('other submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='other',value='x')], 'actual'), [])
check('actual submit', solve([dict(disabled=False,name='a',type='submit',checked=False,id='actual',value='x')], 'actual'), [('a', 'x')])
check('multiple', solve([dict(disabled=False,name='a',type='multiple',checked=False,id='a',value=['x','x','y'])], None), [('a', 'x'), ('a', 'x'), ('a', 'y')])
check('parameterized submission value', solve([dict(disabled=False,name='a',type='text',checked=False,id='a',value=N)],None), [('a',N)])
for repetition in range(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')])
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| disabled | [] | [] | Passed |
| unnamed | [] | [] | Passed |
| unchecked | [] | [] | Passed |
| checked | [['a', 'x']] | [['a', 'x']] | Passed |
| other submit | [] | [] | Passed |
| actual submit | [['a', 'x']] | [['a', 'x']] | Passed |
| multiple | [['a', 'x'], ['a', 'x'], ['a', 'y']] | [['a', 'x'], ['a', 'x'], ['a', 'y']] | Passed |
| parameterized submission value | [['a', 1]] | [['a', 1]] | Passed |
| repeat multiple | [['a', 'x'], ['a', 'x'], ['a', 'y']] | [['a', 'x'], ['a', 'x'], ['a', 'y']] | Passed |
SHA-256 / 847e1bce37bb83205226fee1e23a56c7104d6a89e068f21e74939db3064a37d5
Verification & scope
This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:38:21.811149+00:00.
Case digest / f3602c513fdc94f9db43d86f0a5f50343a9796068e54f80fdd1be36294f21e97