FAILURE MAP
← Case archive

FA-8506 / Form lifecycle / Open access

Application form reset semantics: Reset restores a file input path that cannot be retained · case 01

Reset restores a file input path that cannot be retained.

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

ROOT CAUSE

The file value operation uses `value = default; files = []` where the contract requires `value = ''; files = []`.

VERIFIED REPAIR

Implement the file value operation as `value = ''; files = []`.

Unsuccessful approach: Keeping its current path still exposes a stale file selection.

Case contract

File inputs clear paths and file objects; choices restore default checkedness; text restores default value; reset clears custom validity.

Why this case matters

A deterministic model of application form reset semantics; 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(kind, value, default, checked, default_checked, files, custom_error):
    if kind == 'file': value = default; files = []
    elif kind in ('checkbox','radio'): checked = default_checked
    else: value = default
    custom_error = ''
    return (value, checked, files, custom_error)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('file', solve('file', 'chosen', 'default-path', False, False, ['blob'], 'bad'), ('', False, [], ''))
check('default checked', solve('checkbox', 'yes', 'yes', True, True, [], ''), ('yes', True, [], ''))
check('unchecked', solve('radio', 'yes', 'yes', True, False, [], ''), ('yes', False, [], ''))
check('text', solve('text', 'edited', 'original', False, False, [], ''), ('original', False, [], ''))
check('validity', solve('text', 'edited', 'original', False, False, [], 'bad'), ('original', False, [], ''))
check('parameterized reset default', solve('text', 'edited', N, False, False, [], 'bad'), (N,False,[],''))
for repetition in range(N):
    check('repeat validity', solve('text', 'edited', 'original', False, False, [], 'bad'), ('original', 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)
Boundary fixtureActualExpectedOutcome
file['default-path', False, [], '']['', False, [], '']Failed
default checked['yes', True, [], '']['yes', True, [], '']Passed
unchecked['yes', False, [], '']['yes', False, [], '']Passed
text['original', False, [], '']['original', False, [], '']Passed
validity['original', False, [], '']['original', False, [], '']Passed
parameterized reset default[1, False, [], ''][1, False, [], '']Passed
repeat validity['original', False, [], '']['original', False, [], '']Passed

SHA-256 / 4622b743bb2df7f23eeb9aeb3c4101790b685f359ce70b6ea70196c165743e19

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(kind, value, default, checked, default_checked, files, custom_error):
    if kind == 'file': value = value; files = []
    elif kind in ('checkbox','radio'): checked = default_checked
    else: value = default
    custom_error = ''
    return (value, checked, files, custom_error)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('file', solve('file', 'chosen', 'default-path', False, False, ['blob'], 'bad'), ('', False, [], ''))
check('default checked', solve('checkbox', 'yes', 'yes', True, True, [], ''), ('yes', True, [], ''))
check('unchecked', solve('radio', 'yes', 'yes', True, False, [], ''), ('yes', False, [], ''))
check('text', solve('text', 'edited', 'original', False, False, [], ''), ('original', False, [], ''))
check('validity', solve('text', 'edited', 'original', False, False, [], 'bad'), ('original', False, [], ''))
check('parameterized reset default', solve('text', 'edited', N, False, False, [], 'bad'), (N,False,[],''))
for repetition in range(N):
    check('repeat validity', solve('text', 'edited', 'original', False, False, [], 'bad'), ('original', 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)
Boundary fixtureActualExpectedOutcome
file['chosen', False, [], '']['', False, [], '']Failed
default checked['yes', True, [], '']['yes', True, [], '']Passed
unchecked['yes', False, [], '']['yes', False, [], '']Passed
text['original', False, [], '']['original', False, [], '']Passed
validity['original', False, [], '']['original', False, [], '']Passed
parameterized reset default[1, False, [], ''][1, False, [], '']Passed
repeat validity['original', False, [], '']['original', False, [], '']Passed

SHA-256 / 264e80d6b4da985d27bb59a61e50dfb0550c3885b2c9160f4ce8a13119394c14

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(kind, value, default, checked, default_checked, files, custom_error):
    if kind == 'file': value = ''; files = []
    elif kind in ('checkbox','radio'): checked = default_checked
    else: value = default
    custom_error = ''
    return (value, checked, files, custom_error)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('file', solve('file', 'chosen', 'default-path', False, False, ['blob'], 'bad'), ('', False, [], ''))
check('default checked', solve('checkbox', 'yes', 'yes', True, True, [], ''), ('yes', True, [], ''))
check('unchecked', solve('radio', 'yes', 'yes', True, False, [], ''), ('yes', False, [], ''))
check('text', solve('text', 'edited', 'original', False, False, [], ''), ('original', False, [], ''))
check('validity', solve('text', 'edited', 'original', False, False, [], 'bad'), ('original', False, [], ''))
check('parameterized reset default', solve('text', 'edited', N, False, False, [], 'bad'), (N,False,[],''))
for repetition in range(N):
    check('repeat validity', solve('text', 'edited', 'original', False, False, [], 'bad'), ('original', 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)
Boundary fixtureActualExpectedOutcome
file['', False, [], '']['', False, [], '']Passed
default checked['yes', True, [], '']['yes', True, [], '']Passed
unchecked['yes', False, [], '']['yes', False, [], '']Passed
text['original', False, [], '']['original', False, [], '']Passed
validity['original', False, [], '']['original', False, [], '']Passed
parameterized reset default[1, False, [], ''][1, False, [], '']Passed
repeat validity['original', False, [], '']['original', False, [], '']Passed

SHA-256 / ad56be63cd4529932da58027e9b8314948cd9bdd3a9951cd0f2ca5010f139153

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

Case digest / ab35755bc9d057a8abeff9f8b82be14e1dd1b68b5d0799cbb80e54ddb618e260