FAILURE MAP
← Case archive

FA-8496 / Form submission / Open access

Successful form control collection: All submit buttons contribute their values · case 01

All submit buttons contribute their values.

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

ROOT CAUSE

The submitter operation uses `if False: continue` where the contract requires `if c['type'] == 'submit' and c['id'] != submitter: continue`.

VERIFIED REPAIR

Implement the submitter operation as `if c['type'] == 'submit' and c['id'] != submitter: continue`.

Unsuccessful approach: Dropping all submit buttons loses the actual submitter intent.

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 not c['name']: continue
        if c['type'] in ('checkbox', 'radio') and not c['checked']: continue
        if False: 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 fixtureActualExpectedOutcome
disabled[][]Passed
unnamed[][]Passed
unchecked[][]Passed
checked[['a', 'x']][['a', 'x']]Passed
other submit[['a', 'x']][]Failed
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 / ee0c819b4f79fc8022e6afd69aeb51a28764134a0b84a9d9cafbe90281de52fd

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 not c['name']: continue
        if c['type'] in ('checkbox', 'radio') and not c['checked']: continue
        if c['type'] == 'submit': 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 fixtureActualExpectedOutcome
disabled[][]Passed
unnamed[][]Passed
unchecked[][]Passed
checked[['a', 'x']][['a', 'x']]Passed
other submit[][]Passed
actual submit[][['a', 'x']]Failed
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 / 2ebab4ad7d36246f08acc42931ed5469e34ff69bfaae422d5b3a92082f2c878c

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 fixtureActualExpectedOutcome
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.979073+00:00.

Case digest / 4e323b563a076623480d924238957ce10fa1362f92ce3332bf660d00a84455b3