FAILURE MAP
← Case archive

FA-8481 / Form submission / Open access

Successful form control collection: Disabled field values are submitted · case 01

Disabled field values are submitted.

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

ROOT CAUSE

The disabled operation uses `if False: continue` where the contract requires `if c['disabled']: continue`.

VERIFIED REPAIR

Implement the disabled operation as `if c['disabled']: continue`.

Unsuccessful approach: Submitting only disabled fields reverses successful-control rules.

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 False: 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[['a', 'x']][]Failed
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 / 58331d92629188ea176faa359d5565b75ab8b5f35eebeddaf435ad9467abcc84

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 not 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[['a', 'x']][]Failed
unnamed[][]Passed
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 / 7a28eced5c91aff63a89ded8012167b61d93c6a083d48254181fd698d1d65a74

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

Case digest / 89368b05587e918dd44beca3410a9dc5144740c959429e1bb0944af85af05555