{"abstract":"Synonym expansion changes a conjunction into a broad disjunction.","category":"Search retrieval semantics","checks":7,"contract":"Return whether a token set satisfies all nonempty synonym groups. Each group is OR; groups are AND. Empty query matches; empty group cannot match.","evaluation_group":"model-1c96b2e22d52f6a9","failed_approach":"Requiring every expanded token makes alternatives mandatory together.","family":"z-search-synonym-alternative-groups","id":"FA-11846","implementations":{"attempt":{"sha256":"cd8bb2db51370a5e58ce980fbfed5182e69c5f615f6a32388ebdd49cdcb6f9c1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(tokens, groups):\n    return all(t in tokens for group in groups for t in group)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nterm='car'+str(N)\ncheck('one synonym per position', solve([term,'red'], [[term,'auto'],['red']]), True)\ncheck('missing required position', solve([term], [[term,'auto'],['red']]), False)\ncheck('alternate spelling', solve(['auto','red'], [[term,'auto'],['red']]), True)\ncheck('no query', solve([], []), True)\ncheck('empty alternative group', solve([term], [[]]), False)\ncheck('unrelated document', solve(['blue'], [[term,'auto']]), False)\ncheck('single exact term', solve([term], [[term]]), True)\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":"ffc4e070d6d5f8c3b6c8791dfd1bb10e2dc821d8bcaeb06fc43c25c91da5019c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(tokens, groups):\n    return any(t in tokens for group in groups for t in group)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nterm='car'+str(N)\ncheck('one synonym per position', solve([term,'red'], [[term,'auto'],['red']]), True)\ncheck('missing required position', solve([term], [[term,'auto'],['red']]), False)\ncheck('alternate spelling', solve(['auto','red'], [[term,'auto'],['red']]), True)\ncheck('no query', solve([], []), True)\ncheck('empty alternative group', solve([term], [[]]), False)\ncheck('unrelated document', solve(['blue'], [[term,'auto']]), False)\ncheck('single exact term', solve([term], [[term]]), True)\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"},"fixed":{"sha256":"f3786ad3942ff52b7c51a41fc357825f73c69cb5ab875aab7415dc318eea621c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(tokens, groups):\n    return all(any(t in tokens for t in group) for group in groups)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nterm='car'+str(N)\ncheck('one synonym per position', solve([term,'red'], [[term,'auto'],['red']]), True)\ncheck('missing required position', solve([term], [[term,'auto'],['red']]), False)\ncheck('alternate spelling', solve(['auto','red'], [[term,'auto'],['red']]), True)\ncheck('no query', solve([], []), True)\ncheck('empty alternative group', solve([term], [[]]), False)\ncheck('unrelated document', solve(['blue'], [[term,'auto']]), False)\ncheck('single exact term', solve([term], [[term]]), True)\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":"Inputs are already tokenized or scored; this model makes no claim about production engine performance or linguistic analysis. 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-search-synonym-alternative-groups","generated_at":"2026-09-29T14:38:51.552980+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline deterministic retrieval model isolates this search contract from tokenization, storage, and network behavior.","repair":"Require one document term from every alternative group.","root_cause":"Flattening synonym alternatives loses the required conjunction between query positions.","sha256":"0007d01cd62955986e3a0b252858a7c0e6d934b099088c985818af9ae16c6929","title":"Synonym expansion changes a conjunction into a broad disjunction · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.124,"exit_code":1,"observations":[{"actual":false,"check":"one synonym per position","expected":true,"passed":false},{"actual":false,"check":"missing required position","expected":false,"passed":true},{"actual":false,"check":"alternate spelling","expected":true,"passed":false},{"actual":true,"check":"no query","expected":true,"passed":true},{"actual":true,"check":"empty alternative group","expected":false,"passed":false},{"actual":false,"check":"unrelated document","expected":false,"passed":true},{"actual":true,"check":"single exact term","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"one synonym per position\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"missing required position\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"alternate spelling\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"no query\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"empty alternative group\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"unrelated document\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"single exact term\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.118,"exit_code":1,"observations":[{"actual":true,"check":"one synonym per position","expected":true,"passed":true},{"actual":true,"check":"missing required position","expected":false,"passed":false},{"actual":true,"check":"alternate spelling","expected":true,"passed":true},{"actual":false,"check":"no query","expected":true,"passed":false},{"actual":false,"check":"empty alternative group","expected":false,"passed":true},{"actual":false,"check":"unrelated document","expected":false,"passed":true},{"actual":true,"check":"single exact term","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"one synonym per position\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"missing required position\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"alternate spelling\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"no query\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"empty alternative group\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unrelated document\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"single exact term\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.064,"exit_code":0,"observations":[{"actual":true,"check":"one synonym per position","expected":true,"passed":true},{"actual":false,"check":"missing required position","expected":false,"passed":true},{"actual":true,"check":"alternate spelling","expected":true,"passed":true},{"actual":true,"check":"no query","expected":true,"passed":true},{"actual":false,"check":"empty alternative group","expected":false,"passed":true},{"actual":false,"check":"unrelated document","expected":false,"passed":true},{"actual":true,"check":"single exact term","expected":true,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"one synonym per position\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"missing required position\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"alternate spelling\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"no query\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"empty alternative group\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unrelated document\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"single exact term\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}