{"abstract":"Dns name equality ignores case and final root dot.","category":"DNS resolution","checks":4,"contract":"Given question, answer, dns name equality ignores case and final root dot. Return the protocol decision or transformed value; fields are validated and fixtures state boundary outcomes.","evaluation_group":"xh-dns-name-equality-ignores-case-and-final-root-dot","failed_approach":"The attempted repair uses `question[0].rstrip(\".\").lower() == answer[0].rstrip(\".\").lower()` and still violates a separate fixture.","family":"xh-dns-name-equality-ignores-case-and-final-root-dot","id":"FA-7331","implementations":{"attempt":{"sha256":"e4cb23cddd33bb761ac401641ee7f327afafeeca309df1c14fdd4518e10b6689","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport ipaddress\nimport re\nfrom urllib.parse import urlsplit, urljoin\nN = 1\nobservations = []\ndef solve(question, answer):\n    return question[0].rstrip(\".\").lower() == answer[0].rstrip(\".\").lower()\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_fixtures = [\"check('fixture 1', solve(('A.', 1, 1), ('a', 1, 1)), True)\", \"check('fixture 2', solve(('a', 1, 1), ('a', 28, 1)), False)\", \"check('fixture 3', solve(('a', 1, 1), ('a', 1, 3)), False)\", \"check('fixture 4', solve(('a', 1, 1), ('b', 1, 1)), False)\"]\nfor _line in _fixtures[N % len(_fixtures):] + _fixtures[:N % len(_fixtures)]:\n    exec(_line)\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":"5bfff1587c4a05967e5586da848351b5452c37e1afa36ee78605fcc89724079b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport ipaddress\nimport re\nfrom urllib.parse import urlsplit, urljoin\nN = 1\nobservations = []\ndef solve(question, answer):\n    return question == answer\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_fixtures = [\"check('fixture 1', solve(('A.', 1, 1), ('a', 1, 1)), True)\", \"check('fixture 2', solve(('a', 1, 1), ('a', 28, 1)), False)\", \"check('fixture 3', solve(('a', 1, 1), ('a', 1, 3)), False)\", \"check('fixture 4', solve(('a', 1, 1), ('b', 1, 1)), False)\"]\nfor _line in _fixtures[N % len(_fixtures):] + _fixtures[:N % len(_fixtures)]:\n    exec(_line)\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":"f26ec8fbf8240a8acabe6014297509ecfef10d2ae20be476f105da486071d625","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport ipaddress\nimport re\nfrom urllib.parse import urlsplit, urljoin\nN = 1\nobservations = []\ndef solve(question, answer):\n    return (question[0].rstrip(\".\").lower(),question[1],question[2]) == (answer[0].rstrip(\".\").lower(),answer[1],answer[2])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\n_fixtures = [\"check('fixture 1', solve(('A.', 1, 1), ('a', 1, 1)), True)\", \"check('fixture 2', solve(('a', 1, 1), ('a', 28, 1)), False)\", \"check('fixture 3', solve(('a', 1, 1), ('a', 1, 3)), False)\", \"check('fixture 4', solve(('a', 1, 1), ('b', 1, 1)), False)\"]\nfor _line in _fixtures[N % len(_fixtures):] + _fixtures[:N % len(_fixtures)]:\n    exec(_line)\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":"Bounded deterministic policy model over validated inputs; not a complete protocol stack or an interoperability claim. The five variants rotate the same explicit fixture set. 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":"xh-dns-name-equality-ignores-case-and-final-root-dot","generated_at":"2026-09-29T14:38:10.690750+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"This deterministic dns resolution model isolates the dns-name-equality-ignores-case-and-final-root-dot policy at a network component boundary.","repair":"Apply the explicit dns-name-equality-ignores-case-and-final-root-dot contract, including the tested boundary and negative cases.","root_cause":"The faulty implementation uses `question == answer` for the dns-name-equality-ignores-case-and-final-root-dot decision.","sha256":"5690692a2c9e057fc791f00905bd7928e577cc0bb5e87a9d754b6e8c23e9ac15","title":"Dns name equality ignores case and final root dot · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.504,"exit_code":1,"observations":[{"actual":true,"check":"fixture 2","expected":false,"passed":false},{"actual":true,"check":"fixture 3","expected":false,"passed":false},{"actual":false,"check":"fixture 4","expected":false,"passed":true},{"actual":true,"check":"fixture 1","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 2\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"fixture 3\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"fixture 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"fixture 1\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.875,"exit_code":1,"observations":[{"actual":false,"check":"fixture 2","expected":false,"passed":true},{"actual":false,"check":"fixture 3","expected":false,"passed":true},{"actual":false,"check":"fixture 4","expected":false,"passed":true},{"actual":false,"check":"fixture 1","expected":true,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"fixture 1\", \"actual\": false, \"expected\": true, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":50.233,"exit_code":0,"observations":[{"actual":false,"check":"fixture 2","expected":false,"passed":true},{"actual":false,"check":"fixture 3","expected":false,"passed":true},{"actual":false,"check":"fixture 4","expected":false,"passed":true},{"actual":true,"check":"fixture 1","expected":true,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"fixture 2\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"fixture 3\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"fixture 4\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"fixture 1\", \"actual\": true, \"expected\": true, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}