FAILURE MAP
← Case archive

FA-96216 / Postal address normalization / Open access

Block range side assignment: position rendered as a float · case 01

Positions read "0.02040816326530612" instead of "1/49".

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

ROOT CAUSE

The position is computed with true division and rendered as a float.

VERIFIED REPAIR

Render the exact reduced fraction.

Unsuccessful approach: Formatting numerator and denominator directly leaves unreduced fractions such as "98/98".

Case contract

Input [house, segment] where the segment maps "left"/"right" to [from, to] house ranges (either direction, both ends sharing parity). Check left, then right: a side matches when the house lies between the ends inclusive and has the parity of "from". Return [side, position] with position the reduced fraction (house - from) / (to - from) as a string, "0" for a single-address range, or None when no side matches.

Why this case matters

Assigning a normalized address to the correct block face and position drives geocoding and carrier walk order.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    house, seg = x
    for side in ('left', 'right'):
        lo_hi = seg.get(side)
        if not lo_hi:
            continue
        a, b = lo_hi
        if min(a, b) <= house <= max(a, b) and house % 2 == a % 2:
            if a == b:
                return [side, '0']
            return [side, str((house - a) / (b - a))]
    return None
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['odd house on odd left side', [103, {'left': [101, 199], 'right': [100, 198]}], ['left', '1/49']], ['even house on even right side', [152, {'left': [101, 199], 'right': [100, 198]}], ['right', '26/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [296, {'left': [298, 200], 'right': [299, 201]}], ['left', '1/49']], ['single-address range', [17, {'left': [17, 17], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [122, {'left': [100, 198], 'right': [101, 199]}], ['left', '11/49']], ['outside both ranges', [501, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [105, {'left': [101, 199], 'right': [100, 198]}], ['left', '2/49']], ['even house on even right side', [154, {'left': [101, 199], 'right': [100, 198]}], ['right', '27/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [294, {'left': [298, 200], 'right': [299, 201]}], ['left', '2/49']], ['single-address range', [19, {'left': [19, 19], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [124, {'left': [100, 198], 'right': [101, 199]}], ['left', '12/49']], ['outside both ranges', [502, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [107, {'left': [101, 199], 'right': [100, 198]}], ['left', '3/49']], ['even house on even right side', [156, {'left': [101, 199], 'right': [100, 198]}], ['right', '4/7']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [292, {'left': [298, 200], 'right': [299, 201]}], ['left', '3/49']], ['single-address range', [21, {'left': [21, 21], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [126, {'left': [100, 198], 'right': [101, 199]}], ['left', '13/49']], ['outside both ranges', [503, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [109, {'left': [101, 199], 'right': [100, 198]}], ['left', '4/49']], ['even house on even right side', [158, {'left': [101, 199], 'right': [100, 198]}], ['right', '29/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [290, {'left': [298, 200], 'right': [299, 201]}], ['left', '4/49']], ['single-address range', [23, {'left': [23, 23], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [128, {'left': [100, 198], 'right': [101, 199]}], ['left', '2/7']], ['outside both ranges', [504, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [111, {'left': [101, 199], 'right': [100, 198]}], ['left', '5/49']], ['even house on even right side', [160, {'left': [101, 199], 'right': [100, 198]}], ['right', '30/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [288, {'left': [298, 200], 'right': [299, 201]}], ['left', '5/49']], ['single-address range', [25, {'left': [25, 25], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [130, {'left': [100, 198], 'right': [101, 199]}], ['left', '15/49']], ['outside both ranges', [505, {'left': [101, 199], 'right': [100, 198]}], None]]]
for label, arg, expected in fixtures[N - 1]:
    check(label, solve(arg), expected)
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
odd house on odd left side['left', '0.02040816326530612']['left', '1/49']Failed
even house on even right side['right', '0.5306122448979592']['right', '26/49']Failed
range end is inclusive['left', '1.0']['left', '1']Failed
descending range['left', '0.02040816326530612']['left', '1/49']Failed
single-address range['left', '0']['left', '0']Passed
conflicting sides resolve to left['left', '0.5']['left', '1/2']Failed
even left side['left', '0.22448979591836735']['left', '11/49']Failed
outside both rangesNoneNonePassed

SHA-256 / 49da1a90c689a4fcb7b9e3a387bc8be96751ee8efde8244a9644e476fc2f40bd

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    house, seg = x
    for side in ('left', 'right'):
        lo_hi = seg.get(side)
        if not lo_hi:
            continue
        a, b = lo_hi
        if min(a, b) <= house <= max(a, b) and house % 2 == a % 2:
            if a == b:
                return [side, '0']
            return [side, '%d/%d' % (house - a, b - a)]
    return None
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['odd house on odd left side', [103, {'left': [101, 199], 'right': [100, 198]}], ['left', '1/49']], ['even house on even right side', [152, {'left': [101, 199], 'right': [100, 198]}], ['right', '26/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [296, {'left': [298, 200], 'right': [299, 201]}], ['left', '1/49']], ['single-address range', [17, {'left': [17, 17], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [122, {'left': [100, 198], 'right': [101, 199]}], ['left', '11/49']], ['outside both ranges', [501, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [105, {'left': [101, 199], 'right': [100, 198]}], ['left', '2/49']], ['even house on even right side', [154, {'left': [101, 199], 'right': [100, 198]}], ['right', '27/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [294, {'left': [298, 200], 'right': [299, 201]}], ['left', '2/49']], ['single-address range', [19, {'left': [19, 19], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [124, {'left': [100, 198], 'right': [101, 199]}], ['left', '12/49']], ['outside both ranges', [502, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [107, {'left': [101, 199], 'right': [100, 198]}], ['left', '3/49']], ['even house on even right side', [156, {'left': [101, 199], 'right': [100, 198]}], ['right', '4/7']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [292, {'left': [298, 200], 'right': [299, 201]}], ['left', '3/49']], ['single-address range', [21, {'left': [21, 21], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [126, {'left': [100, 198], 'right': [101, 199]}], ['left', '13/49']], ['outside both ranges', [503, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [109, {'left': [101, 199], 'right': [100, 198]}], ['left', '4/49']], ['even house on even right side', [158, {'left': [101, 199], 'right': [100, 198]}], ['right', '29/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [290, {'left': [298, 200], 'right': [299, 201]}], ['left', '4/49']], ['single-address range', [23, {'left': [23, 23], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [128, {'left': [100, 198], 'right': [101, 199]}], ['left', '2/7']], ['outside both ranges', [504, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [111, {'left': [101, 199], 'right': [100, 198]}], ['left', '5/49']], ['even house on even right side', [160, {'left': [101, 199], 'right': [100, 198]}], ['right', '30/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [288, {'left': [298, 200], 'right': [299, 201]}], ['left', '5/49']], ['single-address range', [25, {'left': [25, 25], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [130, {'left': [100, 198], 'right': [101, 199]}], ['left', '15/49']], ['outside both ranges', [505, {'left': [101, 199], 'right': [100, 198]}], None]]]
for label, arg, expected in fixtures[N - 1]:
    check(label, solve(arg), expected)
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
odd house on odd left side['left', '2/98']['left', '1/49']Failed
even house on even right side['right', '52/98']['right', '26/49']Failed
range end is inclusive['left', '98/98']['left', '1']Failed
descending range['left', '-2/-98']['left', '1/49']Failed
single-address range['left', '0']['left', '0']Passed
conflicting sides resolve to left['left', '4/8']['left', '1/2']Failed
even left side['left', '22/98']['left', '11/49']Failed
outside both rangesNoneNonePassed

SHA-256 / 0387ead1410fb01df10d8443e86a05ee2ddf7b1a6106b2f2d945e8293e6a69af

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
    house, seg = x
    for side in ('left', 'right'):
        lo_hi = seg.get(side)
        if not lo_hi:
            continue
        a, b = lo_hi
        if min(a, b) <= house <= max(a, b) and house % 2 == a % 2:
            if a == b:
                return [side, '0']
            return [side, str(Fraction(house - a, b - a))]
    return None
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['odd house on odd left side', [103, {'left': [101, 199], 'right': [100, 198]}], ['left', '1/49']], ['even house on even right side', [152, {'left': [101, 199], 'right': [100, 198]}], ['right', '26/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [296, {'left': [298, 200], 'right': [299, 201]}], ['left', '1/49']], ['single-address range', [17, {'left': [17, 17], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [122, {'left': [100, 198], 'right': [101, 199]}], ['left', '11/49']], ['outside both ranges', [501, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [105, {'left': [101, 199], 'right': [100, 198]}], ['left', '2/49']], ['even house on even right side', [154, {'left': [101, 199], 'right': [100, 198]}], ['right', '27/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [294, {'left': [298, 200], 'right': [299, 201]}], ['left', '2/49']], ['single-address range', [19, {'left': [19, 19], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [124, {'left': [100, 198], 'right': [101, 199]}], ['left', '12/49']], ['outside both ranges', [502, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [107, {'left': [101, 199], 'right': [100, 198]}], ['left', '3/49']], ['even house on even right side', [156, {'left': [101, 199], 'right': [100, 198]}], ['right', '4/7']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [292, {'left': [298, 200], 'right': [299, 201]}], ['left', '3/49']], ['single-address range', [21, {'left': [21, 21], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [126, {'left': [100, 198], 'right': [101, 199]}], ['left', '13/49']], ['outside both ranges', [503, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [109, {'left': [101, 199], 'right': [100, 198]}], ['left', '4/49']], ['even house on even right side', [158, {'left': [101, 199], 'right': [100, 198]}], ['right', '29/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [290, {'left': [298, 200], 'right': [299, 201]}], ['left', '4/49']], ['single-address range', [23, {'left': [23, 23], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [128, {'left': [100, 198], 'right': [101, 199]}], ['left', '2/7']], ['outside both ranges', [504, {'left': [101, 199], 'right': [100, 198]}], None]], [['odd house on odd left side', [111, {'left': [101, 199], 'right': [100, 198]}], ['left', '5/49']], ['even house on even right side', [160, {'left': [101, 199], 'right': [100, 198]}], ['right', '30/49']], ['range end is inclusive', [199, {'left': [101, 199], 'right': [100, 198]}], ['left', '1']], ['descending range', [288, {'left': [298, 200], 'right': [299, 201]}], ['left', '5/49']], ['single-address range', [25, {'left': [25, 25], 'right': [16, 16]}], ['left', '0']], ['conflicting sides resolve to left', [5, {'right': [1, 9], 'left': [1, 9]}], ['left', '1/2']], ['even left side', [130, {'left': [100, 198], 'right': [101, 199]}], ['left', '15/49']], ['outside both ranges', [505, {'left': [101, 199], 'right': [100, 198]}], None]]]
for label, arg, expected in fixtures[N - 1]:
    check(label, solve(arg), expected)
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
odd house on odd left side['left', '1/49']['left', '1/49']Passed
even house on even right side['right', '26/49']['right', '26/49']Passed
range end is inclusive['left', '1']['left', '1']Passed
descending range['left', '1/49']['left', '1/49']Passed
single-address range['left', '0']['left', '0']Passed
conflicting sides resolve to left['left', '1/2']['left', '1/2']Passed
even left side['left', '11/49']['left', '11/49']Passed
outside both rangesNoneNonePassed

SHA-256 / c89a7ee23cf20a0eb58c6d40c40f23df4bafe8fb429196f33208107e1b323637

Verification & scope

A deterministic toy contract over synthetic, obviously fictitious addresses. The rules are stipulated for this model only and make no claim of conformance with any postal authority standard. 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:52:20.739418+00:00.

Case digest / 54a687457f7814fc92cbd3becc223237f94951cde9cbabce624c8c11b46eb0be