{"abstract":"A cached negative lookup is mistaken for a miss.","category":"Caching","checks":5,"contract":"Return [hit,value] for any stored key, including None, false, zero and empty values; absent keys return [miss,None].","evaluation_group":"xc-negative-hit-sentinel","failed_approach":"A None check still conflates an explicitly cached negative result with absence.","family":"xc-negative-hit-sentinel","id":"FA-10411","implementations":{"attempt":{"sha256":"5002a73694a75dd57aab492eebf56b2735a08b69edcced75257262beaeba3744","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cache, key):\n    return ['hit',cache[key]] if cache.get(key) is not None else ['miss',None]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve(*({'a': None}, 'a')), ['hit', None])\ncheck('fixture 2', solve(*({'a': 0}, 'a')), ['hit', 0])\ncheck('fixture 3', solve(*({'a': False}, 'a')), ['hit', False])\ncheck('fixture 4', solve(*({}, 'a')), ['miss', None])\ncheck('fixture 5', solve(*({'a': 'x'}, 'a')), ['hit', 'x'])\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":"3b536b2e5faa4ddf1b0e7129481aa50e230598b1433cc0116144167344763ca0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cache, key):\n    return ['hit',cache[key]] if cache.get(key) else ['miss',None]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve(*({'a': None}, 'a')), ['hit', None])\ncheck('fixture 2', solve(*({'a': 0}, 'a')), ['hit', 0])\ncheck('fixture 3', solve(*({'a': False}, 'a')), ['hit', False])\ncheck('fixture 4', solve(*({}, 'a')), ['miss', None])\ncheck('fixture 5', solve(*({'a': 'x'}, 'a')), ['hit', 'x'])\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":"c7905b5a5726db64d58e91e743f9f77b975c1db75108e74f54816310cb24055f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cache, key):\n    return ['hit',cache[key]] if key in cache else ['miss',None]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('fixture 1', solve(*({'a': None}, 'a')), ['hit', None])\ncheck('fixture 2', solve(*({'a': 0}, 'a')), ['hit', 0])\ncheck('fixture 3', solve(*({'a': False}, 'a')), ['hit', False])\ncheck('fixture 4', solve(*({}, 'a')), ['miss', None])\ncheck('fixture 5', solve(*({'a': 'x'}, 'a')), ['hit', 'x'])\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":"xc-negative-hit-sentinel","generated_at":"2026-09-29T14:38:38.685001+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic cache state transformation. Inputs are copied or treated as immutable; no remote storage, real clock, or concurrent interleaving is simulated.","repair":"Preserve the cache-state invariant: Return [hit,value] for any stored key, including None, false, zero and empty values; absent keys return [miss,None].","root_cause":"Payload truthiness doubles as the cache membership indicator.","sha256":"fd752b017d4869c7f915bf5b8a35a8150c8ebb3c717e374a5713f4f02e0f97b8","title":"A cached negative lookup is mistaken for a miss · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.359,"exit_code":1,"observations":[{"actual":["miss",null],"check":"fixture 1","expected":["hit",null],"passed":false},{"actual":["hit",0],"check":"fixture 2","expected":["hit",0],"passed":true},{"actual":["hit",false],"check":"fixture 3","expected":["hit",false],"passed":true},{"actual":["miss",null],"check":"fixture 4","expected":["miss",null],"passed":true},{"actual":["hit","x"],"check":"fixture 5","expected":["hit","x"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": [\"miss\", null], \"expected\": [\"hit\", null], \"passed\": false}, {\"check\": \"fixture 2\", \"actual\": [\"hit\", 0], \"expected\": [\"hit\", 0], \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": [\"hit\", false], \"expected\": [\"hit\", false], \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": [\"miss\", null], \"expected\": [\"miss\", null], \"passed\": true}, {\"check\": \"fixture 5\", \"actual\": [\"hit\", \"x\"], \"expected\": [\"hit\", \"x\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.003,"exit_code":1,"observations":[{"actual":["miss",null],"check":"fixture 1","expected":["hit",null],"passed":false},{"actual":["miss",null],"check":"fixture 2","expected":["hit",0],"passed":false},{"actual":["miss",null],"check":"fixture 3","expected":["hit",false],"passed":false},{"actual":["miss",null],"check":"fixture 4","expected":["miss",null],"passed":true},{"actual":["hit","x"],"check":"fixture 5","expected":["hit","x"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": [\"miss\", null], \"expected\": [\"hit\", null], \"passed\": false}, {\"check\": \"fixture 2\", \"actual\": [\"miss\", null], \"expected\": [\"hit\", 0], \"passed\": false}, {\"check\": \"fixture 3\", \"actual\": [\"miss\", null], \"expected\": [\"hit\", false], \"passed\": false}, {\"check\": \"fixture 4\", \"actual\": [\"miss\", null], \"expected\": [\"miss\", null], \"passed\": true}, {\"check\": \"fixture 5\", \"actual\": [\"hit\", \"x\"], \"expected\": [\"hit\", \"x\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.065,"exit_code":0,"observations":[{"actual":["hit",null],"check":"fixture 1","expected":["hit",null],"passed":true},{"actual":["hit",0],"check":"fixture 2","expected":["hit",0],"passed":true},{"actual":["hit",false],"check":"fixture 3","expected":["hit",false],"passed":true},{"actual":["miss",null],"check":"fixture 4","expected":["miss",null],"passed":true},{"actual":["hit","x"],"check":"fixture 5","expected":["hit","x"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 1\", \"actual\": [\"hit\", null], \"expected\": [\"hit\", null], \"passed\": true}, {\"check\": \"fixture 2\", \"actual\": [\"hit\", 0], \"expected\": [\"hit\", 0], \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": [\"hit\", false], \"expected\": [\"hit\", false], \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": [\"miss\", null], \"expected\": [\"miss\", null], \"passed\": true}, {\"check\": \"fixture 5\", \"actual\": [\"hit\", \"x\"], \"expected\": [\"hit\", \"x\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}