FAILURE MAP
← Case archive

FA-70626 / GIS polygon topology / Open access

Sliver polygon detection by thinness ratio: threshold strictness · case 01

Polygons exactly at the threshold are flagged as slivers.

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

ROOT CAUSE

The sliver test uses <=, flagging t equal to the threshold.

VERIFIED REPAIR

At the threshold strictness step restore `'sliver' if t < thresh else 'ok'`, leaving the rest of the model unchanged.

Unsuccessful approach: Rounding t to 2 decimals before comparing misclassifies values near the threshold.

Case contract

Input [rings, threshold]: exterior then holes, closed rings in any orientation. Area = |exterior area| minus the sum of |hole areas|; perimeter = total length of all rings. If area <= 0 or perimeter == 0 return ["degenerate", 0.0]. Thinness t = 4*pi*area/perimeter**2; return ["sliver" if t < threshold else "ok", t rounded to 6 decimals].

Why this case matters

Overlay operations leave thin slivers along near-coincident boundaries; QA jobs flag them by compactness.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    rings, thresh = x
    def a2(r):
        return sum(p[0] * q[1] - q[0] * p[1] for p, q in zip(r, r[1:]))
    def per(r):
        return sum(math.hypot(q[0] - p[0], q[1] - p[1]) for p, q in zip(r, r[1:]))
    area = abs(a2(rings[0])) / 2 - sum(abs(a2(h)) / 2 for h in rings[1:])
    perim = sum(per(r) for r in rings)
    if area <= 0 or perim == 0:
        return ['degenerate', 0.0]
    t = 4 * math.pi * area / perim ** 2
    return ['sliver' if t <= thresh else 'ok', round(t, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('control #0', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.3], ['ok', 0.785398]), ('control #1', [[[[0, 0], [100, 0], [100, 2], [0, 2], [0, 0]]], 0.3], ['sliver', 0.060392]), ('regression #2', [[[[0, 0], [20, 0], [20, 20], [0, 20], [0, 0]], [[1, 1], [1, 19], [19, 19], [19, 1], [1, 1]]], 0.3], ['sliver', 0.041337]), ('regression #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['ok', 0.785398]), ('regression #4', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]], [[2, 2], [6, 2], [6, 6], [2, 6], [2, 2]]], 0.3], ['ok', 0.523599]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('boundary #6', [[[[0, 0], [10, 0], [20, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('regression #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['ok', 0.785398]), ('regression #4', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]], [[2, 2], [6, 2], [6, 6], [2, 6], [2, 2]]], 0.3], ['ok', 0.523599]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('boundary #6', [[[[0, 0], [10, 0], [20, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('regression #7', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], [[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('control #8', [[[[0, 0], [30, 0], [15, 26], [0, 0]]], 0.5], ['ok', 0.6046]), ('regression #9', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [25, 25], [25, 5], [5, 5]]], 0.2], ['sliver', 0.15708]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #7', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], [[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('control #8', [[[[0, 0], [30, 0], [15, 26], [0, 0]]], 0.5], ['ok', 0.6046]), ('regression #9', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [25, 25], [25, 5], [5, 5]]], 0.2], ['sliver', 0.15708]), ('regression #10', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [10, 25], [10, 5], [5, 5]], [[15, 5], [15, 25], [25, 25], [25, 5], [15, 5]]], 0.2], ['sliver', 0.14253]), ('control #11', [[[[0, 0], [40, 0], [40, 5], [0, 5], [0, 0]]], 0.5], ['sliver', 0.310281]), ('boundary #12', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.5], ['ok', 0.502655]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #10', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [10, 25], [10, 5], [5, 5]], [[15, 5], [15, 25], [25, 25], [25, 5], [15, 5]]], 0.2], ['sliver', 0.14253]), ('control #11', [[[[0, 0], [40, 0], [40, 5], [0, 5], [0, 0]]], 0.5], ['sliver', 0.310281]), ('boundary #12', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.5], ['ok', 0.502655]), ('regression #13', [[[[0, 0], [12, 0], [12, 12], [0, 12], [0, 0]], [[1, 1], [1, 2], [11, 2], [11, 1], [1, 1]]], 0.6], ['sliver', 0.343652]), ('control #14', [[[[0, 0], [8, 1], [9, 9], [1, 8], [0, 0]]], 0.4], ['ok', 0.761232]), ('regression #15', [[[[0, 0], [1, 8], [9, 9], [8, 1], [0, 0]], [[3, 3], [5, 3], [5, 5], [3, 5], [3, 3]]], 0.4], ['ok', 0.457668]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('control #0', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.3], ['ok', 0.785398]), ('control #1', [[[[0, 0], [100, 0], [100, 2], [0, 2], [0, 0]]], 0.3], ['sliver', 0.060392]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #13', [[[[0, 0], [12, 0], [12, 12], [0, 12], [0, 0]], [[1, 1], [1, 2], [11, 2], [11, 1], [1, 1]]], 0.6], ['sliver', 0.343652]), ('control #14', [[[[0, 0], [8, 1], [9, 9], [1, 8], [0, 0]]], 0.4], ['ok', 0.761232]), ('regression #15', [[[[0, 0], [1, 8], [9, 9], [8, 1], [0, 0]], [[3, 3], [5, 3], [5, 5], [3, 5], [3, 3]]], 0.4], ['ok', 0.457668]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655]), ('regression #17', [[[[0, 0], [30, 0], [30, 10], [0, 10], [0, 0]]], 0.587], ['ok', 0.589049])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), 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
control #0['ok', 0.785398]['ok', 0.785398]Passed
control #1['sliver', 0.060392]['sliver', 0.060392]Passed
regression #2['sliver', 0.041337]['sliver', 0.041337]Passed
regression #3['ok', 0.785398]['ok', 0.785398]Passed
regression #4['ok', 0.523599]['ok', 0.523599]Passed
boundary #5['sliver', 0.785398]['ok', 0.785398]Failed
boundary #6['degenerate', 0.0]['degenerate', 0.0]Passed
regression #16['ok', 0.502655]['ok', 0.502655]Passed

SHA-256 / e86c9f89b7ea3594e6da687dcd1ee8658fb1d06b3b5351ddb3d24118b8a420db

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    rings, thresh = x
    def a2(r):
        return sum(p[0] * q[1] - q[0] * p[1] for p, q in zip(r, r[1:]))
    def per(r):
        return sum(math.hypot(q[0] - p[0], q[1] - p[1]) for p, q in zip(r, r[1:]))
    area = abs(a2(rings[0])) / 2 - sum(abs(a2(h)) / 2 for h in rings[1:])
    perim = sum(per(r) for r in rings)
    if area <= 0 or perim == 0:
        return ['degenerate', 0.0]
    t = 4 * math.pi * area / perim ** 2
    return ['sliver' if round(t, 2) < thresh else 'ok', round(t, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('control #0', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.3], ['ok', 0.785398]), ('control #1', [[[[0, 0], [100, 0], [100, 2], [0, 2], [0, 0]]], 0.3], ['sliver', 0.060392]), ('regression #2', [[[[0, 0], [20, 0], [20, 20], [0, 20], [0, 0]], [[1, 1], [1, 19], [19, 19], [19, 1], [1, 1]]], 0.3], ['sliver', 0.041337]), ('regression #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['ok', 0.785398]), ('regression #4', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]], [[2, 2], [6, 2], [6, 6], [2, 6], [2, 2]]], 0.3], ['ok', 0.523599]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('boundary #6', [[[[0, 0], [10, 0], [20, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('regression #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['ok', 0.785398]), ('regression #4', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]], [[2, 2], [6, 2], [6, 6], [2, 6], [2, 2]]], 0.3], ['ok', 0.523599]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('boundary #6', [[[[0, 0], [10, 0], [20, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('regression #7', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], [[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('control #8', [[[[0, 0], [30, 0], [15, 26], [0, 0]]], 0.5], ['ok', 0.6046]), ('regression #9', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [25, 25], [25, 5], [5, 5]]], 0.2], ['sliver', 0.15708]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #7', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], [[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('control #8', [[[[0, 0], [30, 0], [15, 26], [0, 0]]], 0.5], ['ok', 0.6046]), ('regression #9', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [25, 25], [25, 5], [5, 5]]], 0.2], ['sliver', 0.15708]), ('regression #10', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [10, 25], [10, 5], [5, 5]], [[15, 5], [15, 25], [25, 25], [25, 5], [15, 5]]], 0.2], ['sliver', 0.14253]), ('control #11', [[[[0, 0], [40, 0], [40, 5], [0, 5], [0, 0]]], 0.5], ['sliver', 0.310281]), ('boundary #12', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.5], ['ok', 0.502655]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #10', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [10, 25], [10, 5], [5, 5]], [[15, 5], [15, 25], [25, 25], [25, 5], [15, 5]]], 0.2], ['sliver', 0.14253]), ('control #11', [[[[0, 0], [40, 0], [40, 5], [0, 5], [0, 0]]], 0.5], ['sliver', 0.310281]), ('boundary #12', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.5], ['ok', 0.502655]), ('regression #13', [[[[0, 0], [12, 0], [12, 12], [0, 12], [0, 0]], [[1, 1], [1, 2], [11, 2], [11, 1], [1, 1]]], 0.6], ['sliver', 0.343652]), ('control #14', [[[[0, 0], [8, 1], [9, 9], [1, 8], [0, 0]]], 0.4], ['ok', 0.761232]), ('regression #15', [[[[0, 0], [1, 8], [9, 9], [8, 1], [0, 0]], [[3, 3], [5, 3], [5, 5], [3, 5], [3, 3]]], 0.4], ['ok', 0.457668]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('control #0', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.3], ['ok', 0.785398]), ('control #1', [[[[0, 0], [100, 0], [100, 2], [0, 2], [0, 0]]], 0.3], ['sliver', 0.060392]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #13', [[[[0, 0], [12, 0], [12, 12], [0, 12], [0, 0]], [[1, 1], [1, 2], [11, 2], [11, 1], [1, 1]]], 0.6], ['sliver', 0.343652]), ('control #14', [[[[0, 0], [8, 1], [9, 9], [1, 8], [0, 0]]], 0.4], ['ok', 0.761232]), ('regression #15', [[[[0, 0], [1, 8], [9, 9], [8, 1], [0, 0]], [[3, 3], [5, 3], [5, 5], [3, 5], [3, 3]]], 0.4], ['ok', 0.457668]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655]), ('regression #17', [[[[0, 0], [30, 0], [30, 10], [0, 10], [0, 0]]], 0.587], ['ok', 0.589049])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), 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
control #0['ok', 0.785398]['ok', 0.785398]Passed
control #1['sliver', 0.060392]['sliver', 0.060392]Passed
regression #2['sliver', 0.041337]['sliver', 0.041337]Passed
regression #3['ok', 0.785398]['ok', 0.785398]Passed
regression #4['ok', 0.523599]['ok', 0.523599]Passed
boundary #5['ok', 0.785398]['ok', 0.785398]Passed
boundary #6['degenerate', 0.0]['degenerate', 0.0]Passed
regression #16['sliver', 0.502655]['ok', 0.502655]Failed

SHA-256 / 5dc1174deedea435227801f4da2ebce924d2d31f428f2a716cb36b1c95b86925

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    rings, thresh = x
    def a2(r):
        return sum(p[0] * q[1] - q[0] * p[1] for p, q in zip(r, r[1:]))
    def per(r):
        return sum(math.hypot(q[0] - p[0], q[1] - p[1]) for p, q in zip(r, r[1:]))
    area = abs(a2(rings[0])) / 2 - sum(abs(a2(h)) / 2 for h in rings[1:])
    perim = sum(per(r) for r in rings)
    if area <= 0 or perim == 0:
        return ['degenerate', 0.0]
    t = 4 * math.pi * area / perim ** 2
    return ['sliver' if t < thresh else 'ok', round(t, 6)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('control #0', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.3], ['ok', 0.785398]), ('control #1', [[[[0, 0], [100, 0], [100, 2], [0, 2], [0, 0]]], 0.3], ['sliver', 0.060392]), ('regression #2', [[[[0, 0], [20, 0], [20, 20], [0, 20], [0, 0]], [[1, 1], [1, 19], [19, 19], [19, 1], [1, 1]]], 0.3], ['sliver', 0.041337]), ('regression #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['ok', 0.785398]), ('regression #4', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]], [[2, 2], [6, 2], [6, 6], [2, 6], [2, 2]]], 0.3], ['ok', 0.523599]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('boundary #6', [[[[0, 0], [10, 0], [20, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('regression #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['ok', 0.785398]), ('regression #4', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]], [[2, 2], [6, 2], [6, 6], [2, 6], [2, 2]]], 0.3], ['ok', 0.523599]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('boundary #6', [[[[0, 0], [10, 0], [20, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('regression #7', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], [[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('control #8', [[[[0, 0], [30, 0], [15, 26], [0, 0]]], 0.5], ['ok', 0.6046]), ('regression #9', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [25, 25], [25, 5], [5, 5]]], 0.2], ['sliver', 0.15708]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #7', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], [[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]]], 0.3], ['degenerate', 0.0]), ('control #8', [[[[0, 0], [30, 0], [15, 26], [0, 0]]], 0.5], ['ok', 0.6046]), ('regression #9', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [25, 25], [25, 5], [5, 5]]], 0.2], ['sliver', 0.15708]), ('regression #10', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [10, 25], [10, 5], [5, 5]], [[15, 5], [15, 25], [25, 25], [25, 5], [15, 5]]], 0.2], ['sliver', 0.14253]), ('control #11', [[[[0, 0], [40, 0], [40, 5], [0, 5], [0, 0]]], 0.5], ['sliver', 0.310281]), ('boundary #12', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.5], ['ok', 0.502655]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #10', [[[[0, 0], [30, 0], [30, 30], [0, 30], [0, 0]], [[5, 5], [5, 25], [10, 25], [10, 5], [5, 5]], [[15, 5], [15, 25], [25, 25], [25, 5], [15, 5]]], 0.2], ['sliver', 0.14253]), ('control #11', [[[[0, 0], [40, 0], [40, 5], [0, 5], [0, 0]]], 0.5], ['sliver', 0.310281]), ('boundary #12', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.5], ['ok', 0.502655]), ('regression #13', [[[[0, 0], [12, 0], [12, 12], [0, 12], [0, 0]], [[1, 1], [1, 2], [11, 2], [11, 1], [1, 1]]], 0.6], ['sliver', 0.343652]), ('control #14', [[[[0, 0], [8, 1], [9, 9], [1, 8], [0, 0]]], 0.4], ['ok', 0.761232]), ('regression #15', [[[[0, 0], [1, 8], [9, 9], [8, 1], [0, 0]], [[3, 3], [5, 3], [5, 5], [3, 5], [3, 3]]], 0.4], ['ok', 0.457668]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655])], [('control #0', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.3], ['ok', 0.785398]), ('control #1', [[[[0, 0], [100, 0], [100, 2], [0, 2], [0, 0]]], 0.3], ['sliver', 0.060392]), ('boundary #5', [[[[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]], 0.7853981633974483], ['ok', 0.785398]), ('regression #13', [[[[0, 0], [12, 0], [12, 12], [0, 12], [0, 0]], [[1, 1], [1, 2], [11, 2], [11, 1], [1, 1]]], 0.6], ['sliver', 0.343652]), ('control #14', [[[[0, 0], [8, 1], [9, 9], [1, 8], [0, 0]]], 0.4], ['ok', 0.761232]), ('regression #15', [[[[0, 0], [1, 8], [9, 9], [8, 1], [0, 0]], [[3, 3], [5, 3], [5, 5], [3, 5], [3, 3]]], 0.4], ['ok', 0.457668]), ('regression #16', [[[[0, 0], [40, 0], [40, 10], [0, 10], [0, 0]]], 0.502], ['ok', 0.502655]), ('regression #17', [[[[0, 0], [30, 0], [30, 10], [0, 10], [0, 0]]], 0.587], ['ok', 0.589049])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), 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
control #0['ok', 0.785398]['ok', 0.785398]Passed
control #1['sliver', 0.060392]['sliver', 0.060392]Passed
regression #2['sliver', 0.041337]['sliver', 0.041337]Passed
regression #3['ok', 0.785398]['ok', 0.785398]Passed
regression #4['ok', 0.523599]['ok', 0.523599]Passed
boundary #5['ok', 0.785398]['ok', 0.785398]Passed
boundary #6['degenerate', 0.0]['degenerate', 0.0]Passed
regression #16['ok', 0.502655]['ok', 0.502655]Passed

SHA-256 / fc87a158fa0ec3e6ec6c0d147fc2e3fa2aceab2018eaaa148ec87df0487ed657

Verification & scope

Stipulated deterministic toy contract on a bounded input domain; results are rounded as stated and no conformance with any published standard or library is claimed. 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:48:22.443777+00:00.

Case digest / 50d342485073b321d5d03a0381dde0dbc436027c1630935d0b2f12c97cc96b89