{"abstract":"Enum membership ignores JSON value type.","category":"Tool call schema validation","checks":7,"contract":"JSON-like enum membership requires both equal type and equal value, so true differs from integer one.","contract_signature":"value, choices","evaluation_group":"w3-schema-enum-type-sensitivity","failed_approach":"Rejecting booleans whenever any integer choice exists fixes the numeric collision but rejects a valid boolean in a mixed enum.","family":"w3-tool-call-schema-validation-enum-type-sensitivity","id":"FA-99761","implementations":{"attempt":{"sha256":"ee10938a38708a7a45ed48ce2bec99c023d2499c09eb9ed1d082fa672da12347","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(value, choices):\n    return value in choices and not (isinstance(value,bool) and any(type(x) is int for x in choices))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('matching integer',solve(N,[N,'x']),True)\ncheck('bool differs from one',solve(True,[1]),False)\ncheck('matching false',solve(False,[False]),True)\ncheck('bool alongside integer choice',solve(True,[True,1]),True)\ncheck('string differs',solve('1',[1]),False)\ncheck('empty choices',solve('x',[]),False)\ncheck('unlisted',solve('z',['a','b']),False)\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":"03fbac20237e9d3c4b79a9f7fc7799739e7a79fd5891d649bd8a613142cd239b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(value, choices):\n    return value in choices\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('matching integer',solve(N,[N,'x']),True)\ncheck('bool differs from one',solve(True,[1]),False)\ncheck('matching false',solve(False,[False]),True)\ncheck('bool alongside integer choice',solve(True,[True,1]),True)\ncheck('string differs',solve('1',[1]),False)\ncheck('empty choices',solve('x',[]),False)\ncheck('unlisted',solve('z',['a','b']),False)\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":"Self-contained toy JSON-like schema contract over in-memory Python values; no compatibility with a production schema standard or callable binding is claimed. 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":"w3-tool-call-schema-validation-enum-type-sensitivity","generated_at":"2026-09-30T16:48:28.064245+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Tool argument validation prevents malformed structured payloads from entering a deterministic downstream operation.","root_cause":"Host-language equality collapses distinct JSON scalar types.","sha256":"bd27ad8dba33dc61ac0494f57cfb3e8d6f690e8d1a7d83272363b800cca4eeb6","title":"Enum membership ignores JSON value type · case 01","variant":1,"variant_policy":"The fixture code references N, supplied as 1 through 5. Fixed boundary checks may repeat. These records share one mechanism and must remain together in evaluation splits.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":29.361,"exit_code":1,"observations":[{"actual":true,"check":"matching integer","expected":true,"passed":true},{"actual":false,"check":"bool differs from one","expected":false,"passed":true},{"actual":true,"check":"matching false","expected":true,"passed":true},{"actual":false,"check":"bool alongside integer choice","expected":true,"passed":false},{"actual":false,"check":"string differs","expected":false,"passed":true},{"actual":false,"check":"empty choices","expected":false,"passed":true},{"actual":false,"check":"unlisted","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"matching integer\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"bool differs from one\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"matching false\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"bool alongside integer choice\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"string differs\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"empty choices\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unlisted\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":28.327,"exit_code":1,"observations":[{"actual":true,"check":"matching integer","expected":true,"passed":true},{"actual":true,"check":"bool differs from one","expected":false,"passed":false},{"actual":true,"check":"matching false","expected":true,"passed":true},{"actual":true,"check":"bool alongside integer choice","expected":true,"passed":true},{"actual":false,"check":"string differs","expected":false,"passed":true},{"actual":false,"check":"empty choices","expected":false,"passed":true},{"actual":false,"check":"unlisted","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"matching integer\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"bool differs from one\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"matching false\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"bool alongside integer choice\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"string differs\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"empty choices\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unlisted\", \"actual\": false, \"expected\": false, \"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."}}