FA-8511 / Form lifecycle / Open access
Application form reset semantics: Reset clears file text but keeps selected file objects · case 01
Reset clears file text but keeps selected file objects.
ROOT CAUSE
The file list operation uses `files = files` where the contract requires `files = []`.
VERIFIED REPAIR
Implement the file list operation as `files = []`.
Unsuccessful approach: Replacing files with the default string is not an empty 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 = ''; files = 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| file | ['', False, ['blob'], ''] | ['', 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 / 0f5de948dba2fa1310286f3c71183ef96c5fb0a7c5069b022ccae7f7e2c93ec6
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 = ''; files = [default]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| file | ['', False, ['default-path'], ''] | ['', 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 / f9983a070b7a9f38016ede88f28e8b1eccbd4f9162c2c9b62d0d58a05c660161
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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.982168+00:00.
Case digest / 2106e51ea4fee52fa260a443036bb450a35545a1ac157333af52981b506a8d5a