FA-70621 / GIS polygon topology / Open access
Sliver polygon detection by thinness ratio: exterior orientation · case 01
Clockwise polygons are always reported as degenerate.
ROOT CAUSE
The exterior uses the signed area, negative for clockwise rings.
VERIFIED REPAIR
Take the absolute exterior area before subtracting the absolute hole areas.
Unsuccessful approach: The absolute value is applied to the whole difference, so clockwise exteriors add their hole areas.
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 = 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 #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])], [('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 #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 #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]), ('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 #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 #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['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]), ('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]), ('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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 | ['degenerate', 0.0] | ['ok', 0.785398] | Failed |
| regression #4 | ['degenerate', 0.0] | ['ok', 0.523599] | Failed |
| boundary #5 | ['ok', 0.785398] | ['ok', 0.785398] | Passed |
| boundary #6 | ['degenerate', 0.0] | ['degenerate', 0.0] | Passed |
| regression #7 | ['degenerate', 0.0] | ['degenerate', 0.0] | Passed |
SHA-256 / caf9741c517f3f0e79145dfa6832969cc23a1b3d4373cbc81dde5ebdbe1f8e28
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 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 #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])], [('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 #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 #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]), ('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 #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 #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['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]), ('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]), ('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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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.567232] | ['ok', 0.523599] | Failed |
| boundary #5 | ['ok', 0.785398] | ['ok', 0.785398] | Passed |
| boundary #6 | ['degenerate', 0.0] | ['degenerate', 0.0] | Passed |
| regression #7 | ['degenerate', 0.0] | ['degenerate', 0.0] | Passed |
SHA-256 / b838222c733d0e29da87e3974a80af6b358cef2ee7d92223607a926a7d47e920
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 #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])], [('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 #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 #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]), ('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 #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 #3', [[[[0, 0], [0, 20], [20, 20], [20, 0], [0, 0]]], 0.3], ['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]), ('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]), ('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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 #7 | ['degenerate', 0.0] | ['degenerate', 0.0] | Passed |
SHA-256 / e4f75fd5e5f693d5efb9d58235183ac7dd435993bae7bd8915c4c566f9803942
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.396540+00:00.
Case digest / 1e8278dcd80a66da798c7883184879e25223529bd2b66c477858bc24df20dc78