FAILURE MAP
← Case archive

FA-7331 / DNS resolution / Open access

Dns name equality ignores case and final root dot · case 01

Dns name equality ignores case and final root dot.

Verified by executionVariant 1 · 4 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The faulty implementation uses `question == answer` for the dns-name-equality-ignores-case-and-final-root-dot decision.

VERIFIED REPAIR

Apply the explicit dns-name-equality-ignores-case-and-final-root-dot contract, including the tested boundary and negative cases.

Unsuccessful approach: The attempted repair uses `question[0].rstrip(".").lower() == answer[0].rstrip(".").lower()` and still violates a separate fixture.

Case 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.

Why this case matters

This deterministic dns resolution model isolates the dns-name-equality-ignores-case-and-final-root-dot policy at a network component boundary.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import ipaddress
import re
from urllib.parse import urlsplit, urljoin
N = 1
observations = []
def solve(question, answer):
    return question == answer
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_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)"]
for _line in _fixtures[N % len(_fixtures):] + _fixtures[:N % len(_fixtures)]:
    exec(_line)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
fixture 2FalseFalsePassed
fixture 3FalseFalsePassed
fixture 4FalseFalsePassed
fixture 1FalseTrueFailed

SHA-256 / 5bfff1587c4a05967e5586da848351b5452c37e1afa36ee78605fcc89724079b

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import ipaddress
import re
from urllib.parse import urlsplit, urljoin
N = 1
observations = []
def solve(question, answer):
    return question[0].rstrip(".").lower() == answer[0].rstrip(".").lower()
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_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)"]
for _line in _fixtures[N % len(_fixtures):] + _fixtures[:N % len(_fixtures)]:
    exec(_line)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
fixture 2TrueFalseFailed
fixture 3TrueFalseFailed
fixture 4FalseFalsePassed
fixture 1TrueTruePassed

SHA-256 / e4cb23cddd33bb761ac401641ee7f327afafeeca309df1c14fdd4518e10b6689

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import ipaddress
import re
from urllib.parse import urlsplit, urljoin
N = 1
observations = []
def solve(question, answer):
    return (question[0].rstrip(".").lower(),question[1],question[2]) == (answer[0].rstrip(".").lower(),answer[1],answer[2])
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
_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)"]
for _line in _fixtures[N % len(_fixtures):] + _fixtures[:N % len(_fixtures)]:
    exec(_line)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
fixture 2FalseFalsePassed
fixture 3FalseFalsePassed
fixture 4FalseFalsePassed
fixture 1TrueTruePassed

SHA-256 / f26ec8fbf8240a8acabe6014297509ecfef10d2ae20be476f105da486071d625

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:38:10.690750+00:00.

Case digest / 5690692a2c9e057fc791f00905bd7928e577cc0bb5e87a9d754b6e8c23e9ac15