{"abstract":"Repeated submission cancels the visible pending state.","category":"Form submission","checks":8,"contract":"A duplicate pending submit preserves pending; invalid submit retains errors; success clears errors; failure installs result errors; editing resets status and stale errors.","contract_signature":"state, errors, event, result","evaluation_group":"xi-submit-state","failed_approach":"Claiming success before a result gives false completion.","family":"xi-submit-state-double-submit","id":"FA-8531","implementations":{"attempt":{"sha256":"ed9204bc7393c547f5e92766c93b45a260bee5fe55ec9be292b6e0f1af7caa0a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(state, errors, event, result):\n    if event == 'submit':\n        if state == 'submitting': return ('succeeded', {})\n        if errors: return ('invalid', errors)\n        return ('submitting', {})\n    if event == 'success': return ('succeeded', {})\n    if event == 'failure': return ('failed', result)\n    if event == 'edit': return ('idle', {})\n    return (state, errors)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate', solve('submitting', {}, 'submit', None), ('submitting', {}))\ncheck('invalid', solve('idle', {'a':'required'}, 'submit', None), ('invalid', {'a': 'required'}))\ncheck('valid', solve('idle', {}, 'submit', None), ('submitting', {}))\ncheck('success', solve('submitting', {'old':'stale'}, 'success', None), ('succeeded', {}))\ncheck('failure', solve('submitting', {'old':'stale'}, 'failure', {'a':'conflict'}), ('failed', {'a': 'conflict'}))\ncheck('edit', solve('failed', {'a':'stale'}, 'edit', None), ('idle', {}))\ncheck('parameterized failure details', solve('submitting', {}, 'failure', {'field':str(N)}), ('failed',{'field':str(N)}))\nfor repetition in range(N):\n    check('repeat edit', solve('failed', {'a':'stale'}, 'edit', None), ('idle', {}))\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"aa1725b3dc0e0c92c8af58551d7f966ca3c305c21aadd9423ad06c914e368d33","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(state, errors, event, result):\n    if event == 'submit':\n        if state == 'submitting': return ('idle', errors)\n        if errors: return ('invalid', errors)\n        return ('submitting', {})\n    if event == 'success': return ('succeeded', {})\n    if event == 'failure': return ('failed', result)\n    if event == 'edit': return ('idle', {})\n    return (state, errors)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('duplicate', solve('submitting', {}, 'submit', None), ('submitting', {}))\ncheck('invalid', solve('idle', {'a':'required'}, 'submit', None), ('invalid', {'a': 'required'}))\ncheck('valid', solve('idle', {}, 'submit', None), ('submitting', {}))\ncheck('success', solve('submitting', {'old':'stale'}, 'success', None), ('succeeded', {}))\ncheck('failure', solve('submitting', {'old':'stale'}, 'failure', {'a':'conflict'}), ('failed', {'a': 'conflict'}))\ncheck('edit', solve('failed', {'a':'stale'}, 'edit', None), ('idle', {}))\ncheck('parameterized failure details', solve('submitting', {}, 'failure', {'field':str(N)}), ('failed',{'field':str(N)}))\nfor repetition in range(N):\n    check('repeat edit', solve('failed', {'a':'stale'}, 'edit', None), ('idle', {}))\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":" 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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"xi-submit-state-double-submit","generated_at":"2026-09-29T14:38:22.371447+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic model of submission state transitions; this isolates one interface invariant without requiring a browser.","root_cause":"The double submit operation uses `if state == 'submitting': return ('idle', errors)` where the contract requires `if state == 'submitting': return (state, errors)`.","sha256":"1309bbd10c8c5c3b7e5a3519ed6fe5bf99c0f23226de5a98f369fda454566de3","title":"Submission state transitions: Repeated submission cancels the visible pending state · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":38.897,"exit_code":1,"observations":[{"actual":["succeeded",{}],"check":"duplicate","expected":["submitting",{}],"passed":false},{"actual":["invalid",{"a":"required"}],"check":"invalid","expected":["invalid",{"a":"required"}],"passed":true},{"actual":["submitting",{}],"check":"valid","expected":["submitting",{}],"passed":true},{"actual":["succeeded",{}],"check":"success","expected":["succeeded",{}],"passed":true},{"actual":["failed",{"a":"conflict"}],"check":"failure","expected":["failed",{"a":"conflict"}],"passed":true},{"actual":["idle",{}],"check":"edit","expected":["idle",{}],"passed":true},{"actual":["failed",{"field":"1"}],"check":"parameterized failure details","expected":["failed",{"field":"1"}],"passed":true},{"actual":["idle",{}],"check":"repeat edit","expected":["idle",{}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate\", \"actual\": [\"succeeded\", {}], \"expected\": [\"submitting\", {}], \"passed\": false}, {\"check\": \"invalid\", \"actual\": [\"invalid\", {\"a\": \"required\"}], \"expected\": [\"invalid\", {\"a\": \"required\"}], \"passed\": true}, {\"check\": \"valid\", \"actual\": [\"submitting\", {}], \"expected\": [\"submitting\", {}], \"passed\": true}, {\"check\": \"success\", \"actual\": [\"succeeded\", {}], \"expected\": [\"succeeded\", {}], \"passed\": true}, {\"check\": \"failure\", \"actual\": [\"failed\", {\"a\": \"conflict\"}], \"expected\": [\"failed\", {\"a\": \"conflict\"}], \"passed\": true}, {\"check\": \"edit\", \"actual\": [\"idle\", {}], \"expected\": [\"idle\", {}], \"passed\": true}, {\"check\": \"parameterized failure details\", \"actual\": [\"failed\", {\"field\": \"1\"}], \"expected\": [\"failed\", {\"field\": \"1\"}], \"passed\": true}, {\"check\": \"repeat edit\", \"actual\": [\"idle\", {}], \"expected\": [\"idle\", {}], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.049,"exit_code":1,"observations":[{"actual":["idle",{}],"check":"duplicate","expected":["submitting",{}],"passed":false},{"actual":["invalid",{"a":"required"}],"check":"invalid","expected":["invalid",{"a":"required"}],"passed":true},{"actual":["submitting",{}],"check":"valid","expected":["submitting",{}],"passed":true},{"actual":["succeeded",{}],"check":"success","expected":["succeeded",{}],"passed":true},{"actual":["failed",{"a":"conflict"}],"check":"failure","expected":["failed",{"a":"conflict"}],"passed":true},{"actual":["idle",{}],"check":"edit","expected":["idle",{}],"passed":true},{"actual":["failed",{"field":"1"}],"check":"parameterized failure details","expected":["failed",{"field":"1"}],"passed":true},{"actual":["idle",{}],"check":"repeat edit","expected":["idle",{}],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"duplicate\", \"actual\": [\"idle\", {}], \"expected\": [\"submitting\", {}], \"passed\": false}, {\"check\": \"invalid\", \"actual\": [\"invalid\", {\"a\": \"required\"}], \"expected\": [\"invalid\", {\"a\": \"required\"}], \"passed\": true}, {\"check\": \"valid\", \"actual\": [\"submitting\", {}], \"expected\": [\"submitting\", {}], \"passed\": true}, {\"check\": \"success\", \"actual\": [\"succeeded\", {}], \"expected\": [\"succeeded\", {}], \"passed\": true}, {\"check\": \"failure\", \"actual\": [\"failed\", {\"a\": \"conflict\"}], \"expected\": [\"failed\", {\"a\": \"conflict\"}], \"passed\": true}, {\"check\": \"edit\", \"actual\": [\"idle\", {}], \"expected\": [\"idle\", {}], \"passed\": true}, {\"check\": \"parameterized failure details\", \"actual\": [\"failed\", {\"field\": \"1\"}], \"expected\": [\"failed\", {\"field\": \"1\"}], \"passed\": true}, {\"check\": \"repeat edit\", \"actual\": [\"idle\", {}], \"expected\": [\"idle\", {}], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}