{"abstract":"Applying percentage formatting multiplies the stored cell value.","category":"Spreadsheet calculation semantics","checks":6,"contract":"For a finite float input whose binary floating-point product value*100 is also finite, and decimal places 0..3, return [unchanged stored value, fixed-point display of that product with percent suffix]. This is a formatting-only operation using Python float formatting, not exact decimal arithmetic.","contract_signature":"value, places","evaluation_group":"model-e7c0696a58c1617c","failed_approach":"Dividing stored inputs by a hundred assumes they were whole percentage points rather than fractions.","family":"z-spreadsheets-percent-storage","id":"FA-11381","implementations":{"attempt":{"sha256":"caa7d243360ad118a806a54b6f7f5c011536bb52bd4fba3eaa9ed138839ae7b3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(value, places):\n    return [value/100, format(value, f'.{places}f')+'%']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fraction stored unchanged', solve(N/8,1), [N/8, f'{12.5*N:.1f}%'])\ncheck('whole unit is hundred percent', solve(1,0), [1,'100%'])\ncheck('zero percent', solve(0,2), [0,'0.00%'])\ncheck('negative fraction', solve(-0.5,0), [-0.5,'-50%'])\ncheck('above hundred percent', solve(2,1), [2,'200.0%'])\ncheck('three decimal places', solve(0.125,3), [0.125,'12.500%'])\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":"ff833bc980df5ad5007b46b37b3686574293bed224ee04f5b5c7d075eef041d2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(value, places):\n    return [value*100, format(value*100, f'.{places}f')+'%']\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fraction stored unchanged', solve(N/8,1), [N/8, f'{12.5*N:.1f}%'])\ncheck('whole unit is hundred percent', solve(1,0), [1,'100%'])\ncheck('zero percent', solve(0,2), [0,'0.00%'])\ncheck('negative fraction', solve(-0.5,0), [-0.5,'-50%'])\ncheck('above hundred percent', solve(2,1), [2,'200.0%'])\ncheck('three decimal places', solve(0.125,3), [0.125,'12.500%'])\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":"z-spreadsheets-percent-storage","generated_at":"2026-09-29T14:38:47.444112+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"This isolated spreadsheet model makes cell semantics explicit; it does not claim compatibility with every workbook engine.","root_cause":"The rendering scale is written back into numeric storage.","sha256":"bd16361e8807699e6dfd68c8a3ca8f160c0d80fc529c0e7dc99f4ff05e8adeb9","title":"Percent formatting changes the stored numeric value · 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":45.4,"exit_code":1,"observations":[{"actual":[0.00125,"0.1%"],"check":"fraction stored unchanged","expected":[0.125,"12.5%"],"passed":false},{"actual":[0.01,"1%"],"check":"whole unit is hundred percent","expected":[1,"100%"],"passed":false},{"actual":[0.0,"0.00%"],"check":"zero percent","expected":[0,"0.00%"],"passed":true},{"actual":[-0.005,"-0%"],"check":"negative fraction","expected":[-0.5,"-50%"],"passed":false},{"actual":[0.02,"2.0%"],"check":"above hundred percent","expected":[2,"200.0%"],"passed":false},{"actual":[0.00125,"0.125%"],"check":"three decimal places","expected":[0.125,"12.500%"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fraction stored unchanged\", \"actual\": [0.00125, \"0.1%\"], \"expected\": [0.125, \"12.5%\"], \"passed\": false}, {\"check\": \"whole unit is hundred percent\", \"actual\": [0.01, \"1%\"], \"expected\": [1, \"100%\"], \"passed\": false}, {\"check\": \"zero percent\", \"actual\": [0.0, \"0.00%\"], \"expected\": [0, \"0.00%\"], \"passed\": true}, {\"check\": \"negative fraction\", \"actual\": [-0.005, \"-0%\"], \"expected\": [-0.5, \"-50%\"], \"passed\": false}, {\"check\": \"above hundred percent\", \"actual\": [0.02, \"2.0%\"], \"expected\": [2, \"200.0%\"], \"passed\": false}, {\"check\": \"three decimal places\", \"actual\": [0.00125, \"0.125%\"], \"expected\": [0.125, \"12.500%\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.149,"exit_code":1,"observations":[{"actual":[12.5,"12.5%"],"check":"fraction stored unchanged","expected":[0.125,"12.5%"],"passed":false},{"actual":[100,"100%"],"check":"whole unit is hundred percent","expected":[1,"100%"],"passed":false},{"actual":[0,"0.00%"],"check":"zero percent","expected":[0,"0.00%"],"passed":true},{"actual":[-50.0,"-50%"],"check":"negative fraction","expected":[-0.5,"-50%"],"passed":false},{"actual":[200,"200.0%"],"check":"above hundred percent","expected":[2,"200.0%"],"passed":false},{"actual":[12.5,"12.500%"],"check":"three decimal places","expected":[0.125,"12.500%"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fraction stored unchanged\", \"actual\": [12.5, \"12.5%\"], \"expected\": [0.125, \"12.5%\"], \"passed\": false}, {\"check\": \"whole unit is hundred percent\", \"actual\": [100, \"100%\"], \"expected\": [1, \"100%\"], \"passed\": false}, {\"check\": \"zero percent\", \"actual\": [0, \"0.00%\"], \"expected\": [0, \"0.00%\"], \"passed\": true}, {\"check\": \"negative fraction\", \"actual\": [-50.0, \"-50%\"], \"expected\": [-0.5, \"-50%\"], \"passed\": false}, {\"check\": \"above hundred percent\", \"actual\": [200, \"200.0%\"], \"expected\": [2, \"200.0%\"], \"passed\": false}, {\"check\": \"three decimal places\", \"actual\": [12.5, \"12.500%\"], \"expected\": [0.125, \"12.500%\"], \"passed\": false}], \"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."}}