FAILURE MAP
← Case archive

FA-86531 / Procedural level generation constraints / Open access

BSP dungeon partition: Square regions always split vertically · case 01

BSP layouts are biased to vertical slices.

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

ROOT CAUSE

Squares always split vertically instead of alternating by depth.

THE FAILURE

Squares always split vertically instead of alternating by depth.

Unsuccessful approach: Flipping the parity alternates in the wrong phase.

Case contract

Recursively split the rectangle while depth remains. An axis can be split when that side is >= 2*min_size; if neither can, it is a leaf. Split vertically when w > h, or when w == h at even remaining depth; if the chosen axis cannot be split use the other. The first child gets floor(side/2). Returns leaves [x, y, w, h] in left/top-first order.

Why this case matters

Procedural generators silently emit unplayable or unfair levels when a single constraint check uses the wrong boundary, axis, neighborhood or update order; the defect is visible in exact generated geometry.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x, y, w, h, min_size, depth):
    out = []
    def split(x, y, w, h, d):
        can_v = w >= 2 * min_size
        can_h = h >= 2 * min_size
        if d == 0 or not (can_v or can_h):
            out.append([x, y, w, h])
            return
        vertical = w >= h
        if vertical and not can_v:
            vertical = False
        elif not vertical and not can_h:
            vertical = True
        if vertical:
            half = w // 2
            split(x, y, half, h, d - 1)
            split(x + half, y, w - half, h, d - 1)
        else:
            half = h // 2
            split(x, y, w, half, d - 1)
            split(x, y + half, w, h - half, d - 1)
    split(x, y, w, h, depth)
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [0, 5, 7, 25, 3, 3],
   [[0, 5, 3, 6],
    [3, 5, 4, 6],
    [0, 11, 3, 6],
    [3, 11, 4, 6],
    [0, 17, 3, 6],
    [3, 17, 4, 6],
    [0, 23, 7, 3],
    [0, 26, 7, 4]]),
  ('regression orientation choice #2',
   [0, 3, 15, 30, 3, 4],
   [[0, 3, 7, 3],
    [0, 6, 7, 4],
    [7, 3, 4, 7],
    [11, 3, 4, 7],
    [0, 10, 7, 4],
    [0, 14, 7, 4],
    [7, 10, 8, 4],
    [7, 14, 8, 4],
    [0, 18, 7, 3],
    [0, 21, 7, 4],
    [7, 18, 4, 7],
    [11, 18, 4, 7],
    [0, 25, 7, 4],
    [0, 29, 7, 4],
    [7, 25, 8, 4],
    [7, 29, 8, 4]]),
  ('partial repair boundary #1',
   [3, 0, 25, 12, 2, 3],
   [[3, 0, 6, 6],
    [3, 6, 6, 6],
    [9, 0, 6, 6],
    [9, 6, 6, 6],
    [15, 0, 6, 6],
    [15, 6, 6, 6],
    [21, 0, 7, 6],
    [21, 6, 7, 6]]),
  ('partial repair boundary #2',
   [1, 0, 6, 24, 3, 4],
   [[1, 0, 3, 3],
    [1, 3, 3, 3],
    [4, 0, 3, 3],
    [4, 3, 3, 3],
    [1, 6, 3, 3],
    [1, 9, 3, 3],
    [4, 6, 3, 3],
    [4, 9, 3, 3],
    [1, 12, 3, 3],
    [1, 15, 3, 3],
    [4, 12, 3, 3],
    [4, 15, 3, 3],
    [1, 18, 3, 3],
    [1, 21, 3, 3],
    [4, 18, 3, 3],
    [4, 21, 3, 3]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [2, 3, 16, 10, 5, 1], [[2, 3, 8, 10], [10, 3, 8, 10]])],
 [('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [5, 0, 25, 13, 4, 4],
   [[5, 0, 6, 6],
    [11, 0, 6, 6],
    [5, 6, 6, 7],
    [11, 6, 6, 7],
    [17, 0, 6, 6],
    [23, 0, 7, 6],
    [17, 6, 6, 7],
    [23, 6, 7, 7]]),
  ('regression orientation choice #2',
   [5, 4, 13, 27, 4, 4],
   [[5, 4, 6, 6],
    [11, 4, 7, 6],
    [5, 10, 6, 7],
    [11, 10, 7, 7],
    [5, 17, 6, 7],
    [11, 17, 7, 7],
    [5, 24, 6, 7],
    [11, 24, 7, 7]]),
  ('partial repair boundary #1',
   [1, 0, 6, 24, 3, 4],
   [[1, 0, 3, 3],
    [1, 3, 3, 3],
    [4, 0, 3, 3],
    [4, 3, 3, 3],
    [1, 6, 3, 3],
    [1, 9, 3, 3],
    [4, 6, 3, 3],
    [4, 9, 3, 3],
    [1, 12, 3, 3],
    [1, 15, 3, 3],
    [4, 12, 3, 3],
    [4, 15, 3, 3],
    [1, 18, 3, 3],
    [1, 21, 3, 3],
    [4, 18, 3, 3],
    [4, 21, 3, 3]]),
  ('partial repair boundary #2',
   [0, 0, 29, 27, 6, 4],
   [[0, 0, 7, 6],
    [0, 6, 7, 7],
    [7, 0, 7, 6],
    [7, 6, 7, 7],
    [0, 13, 7, 7],
    [0, 20, 7, 7],
    [7, 13, 7, 7],
    [7, 20, 7, 7],
    [14, 0, 7, 6],
    [14, 6, 7, 7],
    [21, 0, 8, 6],
    [21, 6, 8, 7],
    [14, 13, 7, 7],
    [14, 20, 7, 7],
    [21, 13, 8, 7],
    [21, 20, 8, 7]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [2, 3, 16, 10, 5, 1], [[2, 3, 8, 10], [10, 3, 8, 10]])],
 [('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [5, 4, 8, 15, 2, 4],
   [[5, 4, 2, 3],
    [7, 4, 2, 3],
    [5, 7, 4, 2],
    [5, 9, 4, 2],
    [9, 4, 2, 3],
    [11, 4, 2, 3],
    [9, 7, 4, 2],
    [9, 9, 4, 2],
    [5, 11, 4, 2],
    [5, 13, 4, 2],
    [9, 11, 4, 2],
    [9, 13, 4, 2],
    [5, 15, 4, 2],
    [5, 17, 4, 2],
    [9, 15, 4, 2],
    [9, 17, 4, 2]]),
  ('regression orientation choice #2',
   [2, 5, 28, 28, 2, 3],
   [[2, 5, 14, 7],
    [2, 12, 14, 7],
    [16, 5, 14, 7],
    [16, 12, 14, 7],
    [2, 19, 14, 7],
    [2, 26, 14, 7],
    [16, 19, 14, 7],
    [16, 26, 14, 7]]),
  ('partial repair boundary #1',
   [3, 2, 19, 20, 5, 4],
   [[3, 2, 9, 5],
    [3, 7, 9, 5],
    [12, 2, 5, 5],
    [12, 7, 5, 5],
    [17, 2, 5, 5],
    [17, 7, 5, 5],
    [3, 12, 9, 5],
    [3, 17, 9, 5],
    [12, 12, 5, 5],
    [12, 17, 5, 5],
    [17, 12, 5, 5],
    [17, 17, 5, 5]]),
  ('partial repair boundary #2',
   [2, 1, 6, 21, 3, 4],
   [[2, 1, 3, 5],
    [5, 1, 3, 5],
    [2, 6, 3, 5],
    [5, 6, 3, 5],
    [2, 11, 3, 5],
    [5, 11, 3, 5],
    [2, 16, 3, 3],
    [2, 19, 3, 3],
    [5, 16, 3, 3],
    [5, 19, 3, 3]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [2, 3, 16, 10, 5, 1], [[2, 3, 8, 10], [10, 3, 8, 10]])],
 [('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [3, 1, 26, 4, 2, 4],
   [[3, 1, 3, 2],
    [3, 3, 3, 2],
    [6, 1, 3, 2],
    [6, 3, 3, 2],
    [9, 1, 3, 2],
    [9, 3, 3, 2],
    [12, 1, 4, 2],
    [12, 3, 4, 2],
    [16, 1, 3, 2],
    [16, 3, 3, 2],
    [19, 1, 3, 2],
    [19, 3, 3, 2],
    [22, 1, 3, 2],
    [22, 3, 3, 2],
    [25, 1, 4, 2],
    [25, 3, 4, 2]]),
  ('regression orientation choice #2',
   [3, 0, 28, 29, 5, 3],
   [[3, 0, 14, 7],
    [3, 7, 14, 7],
    [17, 0, 14, 7],
    [17, 7, 14, 7],
    [3, 14, 14, 7],
    [3, 21, 14, 8],
    [17, 14, 14, 7],
    [17, 21, 14, 8]]),
  ('regression orientation choice #3',
   [0, 5, 7, 25, 3, 3],
   [[0, 5, 3, 6],
    [3, 5, 4, 6],
    [0, 11, 3, 6],
    [3, 11, 4, 6],
    [0, 17, 3, 6],
    [3, 17, 4, 6],
    [0, 23, 7, 3],
    [0, 26, 7, 4]]),
  ('partial repair boundary #1',
   [0, 1, 29, 28, 6, 4],
   [[0, 1, 7, 7],
    [0, 8, 7, 7],
    [7, 1, 7, 7],
    [7, 8, 7, 7],
    [0, 15, 7, 7],
    [0, 22, 7, 7],
    [7, 15, 7, 7],
    [7, 22, 7, 7],
    [14, 1, 7, 7],
    [14, 8, 7, 7],
    [21, 1, 8, 7],
    [21, 8, 8, 7],
    [14, 15, 7, 7],
    [14, 22, 7, 7],
    [21, 15, 8, 7],
    [21, 22, 8, 7]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [3, 0, 14, 28, 4, 1], [[3, 0, 14, 14], [3, 14, 14, 14]])],
 [('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [2, 4, 23, 21, 3, 3],
   [[2, 4, 5, 10],
    [7, 4, 6, 10],
    [2, 14, 11, 5],
    [2, 19, 11, 6],
    [13, 4, 6, 10],
    [19, 4, 6, 10],
    [13, 14, 6, 11],
    [19, 14, 6, 11]]),
  ('regression orientation choice #2',
   [4, 4, 19, 20, 2, 3],
   [[4, 4, 9, 5],
    [4, 9, 9, 5],
    [13, 4, 10, 5],
    [13, 9, 10, 5],
    [4, 14, 9, 5],
    [4, 19, 9, 5],
    [13, 14, 10, 5],
    [13, 19, 10, 5]]),
  ('partial repair boundary #1',
   [5, 4, 13, 25, 6, 3],
   [[5, 4, 6, 6],
    [5, 10, 6, 6],
    [11, 4, 7, 6],
    [11, 10, 7, 6],
    [5, 16, 6, 6],
    [5, 22, 6, 7],
    [11, 16, 7, 6],
    [11, 22, 7, 7]]),
  ('partial repair boundary #2',
   [1, 3, 22, 11, 4, 3],
   [[1, 3, 5, 5],
    [1, 8, 5, 6],
    [6, 3, 6, 5],
    [6, 8, 6, 6],
    [12, 3, 5, 5],
    [12, 8, 5, 6],
    [17, 3, 6, 5],
    [17, 8, 6, 6]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [5, 1, 1, 10, 4, 2], [[5, 1, 1, 5], [5, 6, 1, 5]])]]
for label, args, expected in cases[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
square at even depth #1[[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]][[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]Passed
regression orientation choice #1[[0, 5, 3, 6], [3, 5, 4, 6], [0, 11, 3, 6], [3, 11, 4, 6], [0, 17, 3, 6], [3, 17, 4, 6], [0, 23, 3, 7], [3, 23, 4, 7]][[0, 5, 3, 6], [3, 5, 4, 6], [0, 11, 3, 6], [3, 11, 4, 6], [0, 17, 3, 6], [3, 17, 4, 6], [0, 23, 7, 3], [0, 26, 7, 4]]Failed
regression orientation choice #2[[0, 3, 3, 7], [3, 3, 4, 7], [0, 10, 7, 4], [0, 14, 7, 4], [7, 3, 4, 7], [11, 3, 4, 7], [7, 10, 4, 8], [11, 10, 4, 8], [0, 18, 3, 7], [3, 18, 4, 7], [0, 25, 7, 4], [0, 29, 7, 4], [7, 18, 4, 7], [11, 18, 4, 7], [7, 25, 4, 8], [11, 25, 4, 8]][[0, 3, 7, 3], [0, 6, 7, 4], [7, 3, 4, 7], [11, 3, 4, 7], [0, 10, 7, 4], [0, 14, 7, 4], [7, 10, 8, 4], [7, 14, 8, 4], [0, 18, 7, 3], [0, 21, 7, 4], [7, 18, 4, 7], [11, 18, 4, 7], [0, 25, 7, 4], [0, 29, 7, 4], [7, 25, 8, 4], [7, 29, 8, 4]]Failed
partial repair boundary #1[[3, 0, 6, 6], [3, 6, 6, 6], [9, 0, 6, 6], [9, 6, 6, 6], [15, 0, 6, 6], [15, 6, 6, 6], [21, 0, 7, 6], [21, 6, 7, 6]][[3, 0, 6, 6], [3, 6, 6, 6], [9, 0, 6, 6], [9, 6, 6, 6], [15, 0, 6, 6], [15, 6, 6, 6], [21, 0, 7, 6], [21, 6, 7, 6]]Passed
partial repair boundary #2[[1, 0, 3, 3], [1, 3, 3, 3], [4, 0, 3, 3], [4, 3, 3, 3], [1, 6, 3, 3], [1, 9, 3, 3], [4, 6, 3, 3], [4, 9, 3, 3], [1, 12, 3, 3], [1, 15, 3, 3], [4, 12, 3, 3], [4, 15, 3, 3], [1, 18, 3, 3], [1, 21, 3, 3], [4, 18, 3, 3], [4, 21, 3, 3]][[1, 0, 3, 3], [1, 3, 3, 3], [4, 0, 3, 3], [4, 3, 3, 3], [1, 6, 3, 3], [1, 9, 3, 3], [4, 6, 3, 3], [4, 9, 3, 3], [1, 12, 3, 3], [1, 15, 3, 3], [4, 12, 3, 3], [4, 15, 3, 3], [1, 18, 3, 3], [1, 21, 3, 3], [4, 18, 3, 3], [4, 21, 3, 3]]Passed
exactly splittable #1[[0, 0, 4, 3], [4, 0, 4, 3]][[0, 0, 4, 3], [4, 0, 4, 3]]Passed
odd width #1[[1, 1, 4, 4], [5, 1, 5, 4]][[1, 1, 4, 4], [5, 1, 5, 4]]Passed
control #1[[2, 3, 8, 10], [10, 3, 8, 10]][[2, 3, 8, 10], [10, 3, 8, 10]]Passed

SHA-256 / c823dcf1a70ed2baa4685105d5d65edc19fa33fe1068da174016f5c90aec4f3a

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x, y, w, h, min_size, depth):
    out = []
    def split(x, y, w, h, d):
        can_v = w >= 2 * min_size
        can_h = h >= 2 * min_size
        if d == 0 or not (can_v or can_h):
            out.append([x, y, w, h])
            return
        vertical = w > h or (w == h and d % 2 == 1)
        if vertical and not can_v:
            vertical = False
        elif not vertical and not can_h:
            vertical = True
        if vertical:
            half = w // 2
            split(x, y, half, h, d - 1)
            split(x + half, y, w - half, h, d - 1)
        else:
            half = h // 2
            split(x, y, w, half, d - 1)
            split(x, y + half, w, h - half, d - 1)
    split(x, y, w, h, depth)
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = [[('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [0, 5, 7, 25, 3, 3],
   [[0, 5, 3, 6],
    [3, 5, 4, 6],
    [0, 11, 3, 6],
    [3, 11, 4, 6],
    [0, 17, 3, 6],
    [3, 17, 4, 6],
    [0, 23, 7, 3],
    [0, 26, 7, 4]]),
  ('regression orientation choice #2',
   [0, 3, 15, 30, 3, 4],
   [[0, 3, 7, 3],
    [0, 6, 7, 4],
    [7, 3, 4, 7],
    [11, 3, 4, 7],
    [0, 10, 7, 4],
    [0, 14, 7, 4],
    [7, 10, 8, 4],
    [7, 14, 8, 4],
    [0, 18, 7, 3],
    [0, 21, 7, 4],
    [7, 18, 4, 7],
    [11, 18, 4, 7],
    [0, 25, 7, 4],
    [0, 29, 7, 4],
    [7, 25, 8, 4],
    [7, 29, 8, 4]]),
  ('partial repair boundary #1',
   [3, 0, 25, 12, 2, 3],
   [[3, 0, 6, 6],
    [3, 6, 6, 6],
    [9, 0, 6, 6],
    [9, 6, 6, 6],
    [15, 0, 6, 6],
    [15, 6, 6, 6],
    [21, 0, 7, 6],
    [21, 6, 7, 6]]),
  ('partial repair boundary #2',
   [1, 0, 6, 24, 3, 4],
   [[1, 0, 3, 3],
    [1, 3, 3, 3],
    [4, 0, 3, 3],
    [4, 3, 3, 3],
    [1, 6, 3, 3],
    [1, 9, 3, 3],
    [4, 6, 3, 3],
    [4, 9, 3, 3],
    [1, 12, 3, 3],
    [1, 15, 3, 3],
    [4, 12, 3, 3],
    [4, 15, 3, 3],
    [1, 18, 3, 3],
    [1, 21, 3, 3],
    [4, 18, 3, 3],
    [4, 21, 3, 3]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [2, 3, 16, 10, 5, 1], [[2, 3, 8, 10], [10, 3, 8, 10]])],
 [('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [5, 0, 25, 13, 4, 4],
   [[5, 0, 6, 6],
    [11, 0, 6, 6],
    [5, 6, 6, 7],
    [11, 6, 6, 7],
    [17, 0, 6, 6],
    [23, 0, 7, 6],
    [17, 6, 6, 7],
    [23, 6, 7, 7]]),
  ('regression orientation choice #2',
   [5, 4, 13, 27, 4, 4],
   [[5, 4, 6, 6],
    [11, 4, 7, 6],
    [5, 10, 6, 7],
    [11, 10, 7, 7],
    [5, 17, 6, 7],
    [11, 17, 7, 7],
    [5, 24, 6, 7],
    [11, 24, 7, 7]]),
  ('partial repair boundary #1',
   [1, 0, 6, 24, 3, 4],
   [[1, 0, 3, 3],
    [1, 3, 3, 3],
    [4, 0, 3, 3],
    [4, 3, 3, 3],
    [1, 6, 3, 3],
    [1, 9, 3, 3],
    [4, 6, 3, 3],
    [4, 9, 3, 3],
    [1, 12, 3, 3],
    [1, 15, 3, 3],
    [4, 12, 3, 3],
    [4, 15, 3, 3],
    [1, 18, 3, 3],
    [1, 21, 3, 3],
    [4, 18, 3, 3],
    [4, 21, 3, 3]]),
  ('partial repair boundary #2',
   [0, 0, 29, 27, 6, 4],
   [[0, 0, 7, 6],
    [0, 6, 7, 7],
    [7, 0, 7, 6],
    [7, 6, 7, 7],
    [0, 13, 7, 7],
    [0, 20, 7, 7],
    [7, 13, 7, 7],
    [7, 20, 7, 7],
    [14, 0, 7, 6],
    [14, 6, 7, 7],
    [21, 0, 8, 6],
    [21, 6, 8, 7],
    [14, 13, 7, 7],
    [14, 20, 7, 7],
    [21, 13, 8, 7],
    [21, 20, 8, 7]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [2, 3, 16, 10, 5, 1], [[2, 3, 8, 10], [10, 3, 8, 10]])],
 [('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [5, 4, 8, 15, 2, 4],
   [[5, 4, 2, 3],
    [7, 4, 2, 3],
    [5, 7, 4, 2],
    [5, 9, 4, 2],
    [9, 4, 2, 3],
    [11, 4, 2, 3],
    [9, 7, 4, 2],
    [9, 9, 4, 2],
    [5, 11, 4, 2],
    [5, 13, 4, 2],
    [9, 11, 4, 2],
    [9, 13, 4, 2],
    [5, 15, 4, 2],
    [5, 17, 4, 2],
    [9, 15, 4, 2],
    [9, 17, 4, 2]]),
  ('regression orientation choice #2',
   [2, 5, 28, 28, 2, 3],
   [[2, 5, 14, 7],
    [2, 12, 14, 7],
    [16, 5, 14, 7],
    [16, 12, 14, 7],
    [2, 19, 14, 7],
    [2, 26, 14, 7],
    [16, 19, 14, 7],
    [16, 26, 14, 7]]),
  ('partial repair boundary #1',
   [3, 2, 19, 20, 5, 4],
   [[3, 2, 9, 5],
    [3, 7, 9, 5],
    [12, 2, 5, 5],
    [12, 7, 5, 5],
    [17, 2, 5, 5],
    [17, 7, 5, 5],
    [3, 12, 9, 5],
    [3, 17, 9, 5],
    [12, 12, 5, 5],
    [12, 17, 5, 5],
    [17, 12, 5, 5],
    [17, 17, 5, 5]]),
  ('partial repair boundary #2',
   [2, 1, 6, 21, 3, 4],
   [[2, 1, 3, 5],
    [5, 1, 3, 5],
    [2, 6, 3, 5],
    [5, 6, 3, 5],
    [2, 11, 3, 5],
    [5, 11, 3, 5],
    [2, 16, 3, 3],
    [2, 19, 3, 3],
    [5, 16, 3, 3],
    [5, 19, 3, 3]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [2, 3, 16, 10, 5, 1], [[2, 3, 8, 10], [10, 3, 8, 10]])],
 [('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [3, 1, 26, 4, 2, 4],
   [[3, 1, 3, 2],
    [3, 3, 3, 2],
    [6, 1, 3, 2],
    [6, 3, 3, 2],
    [9, 1, 3, 2],
    [9, 3, 3, 2],
    [12, 1, 4, 2],
    [12, 3, 4, 2],
    [16, 1, 3, 2],
    [16, 3, 3, 2],
    [19, 1, 3, 2],
    [19, 3, 3, 2],
    [22, 1, 3, 2],
    [22, 3, 3, 2],
    [25, 1, 4, 2],
    [25, 3, 4, 2]]),
  ('regression orientation choice #2',
   [3, 0, 28, 29, 5, 3],
   [[3, 0, 14, 7],
    [3, 7, 14, 7],
    [17, 0, 14, 7],
    [17, 7, 14, 7],
    [3, 14, 14, 7],
    [3, 21, 14, 8],
    [17, 14, 14, 7],
    [17, 21, 14, 8]]),
  ('regression orientation choice #3',
   [0, 5, 7, 25, 3, 3],
   [[0, 5, 3, 6],
    [3, 5, 4, 6],
    [0, 11, 3, 6],
    [3, 11, 4, 6],
    [0, 17, 3, 6],
    [3, 17, 4, 6],
    [0, 23, 7, 3],
    [0, 26, 7, 4]]),
  ('partial repair boundary #1',
   [0, 1, 29, 28, 6, 4],
   [[0, 1, 7, 7],
    [0, 8, 7, 7],
    [7, 1, 7, 7],
    [7, 8, 7, 7],
    [0, 15, 7, 7],
    [0, 22, 7, 7],
    [7, 15, 7, 7],
    [7, 22, 7, 7],
    [14, 1, 7, 7],
    [14, 8, 7, 7],
    [21, 1, 8, 7],
    [21, 8, 8, 7],
    [14, 15, 7, 7],
    [14, 22, 7, 7],
    [21, 15, 8, 7],
    [21, 22, 8, 7]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [3, 0, 14, 28, 4, 1], [[3, 0, 14, 14], [3, 14, 14, 14]])],
 [('square at even depth #1', [0, 0, 10, 10, 2, 2], [[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]),
  ('regression orientation choice #1',
   [2, 4, 23, 21, 3, 3],
   [[2, 4, 5, 10],
    [7, 4, 6, 10],
    [2, 14, 11, 5],
    [2, 19, 11, 6],
    [13, 4, 6, 10],
    [19, 4, 6, 10],
    [13, 14, 6, 11],
    [19, 14, 6, 11]]),
  ('regression orientation choice #2',
   [4, 4, 19, 20, 2, 3],
   [[4, 4, 9, 5],
    [4, 9, 9, 5],
    [13, 4, 10, 5],
    [13, 9, 10, 5],
    [4, 14, 9, 5],
    [4, 19, 9, 5],
    [13, 14, 10, 5],
    [13, 19, 10, 5]]),
  ('partial repair boundary #1',
   [5, 4, 13, 25, 6, 3],
   [[5, 4, 6, 6],
    [5, 10, 6, 6],
    [11, 4, 7, 6],
    [11, 10, 7, 6],
    [5, 16, 6, 6],
    [5, 22, 6, 7],
    [11, 16, 7, 6],
    [11, 22, 7, 7]]),
  ('partial repair boundary #2',
   [1, 3, 22, 11, 4, 3],
   [[1, 3, 5, 5],
    [1, 8, 5, 6],
    [6, 3, 6, 5],
    [6, 8, 6, 6],
    [12, 3, 5, 5],
    [12, 8, 5, 6],
    [17, 3, 6, 5],
    [17, 8, 6, 6]]),
  ('exactly splittable #1', [0, 0, 8, 3, 4, 1], [[0, 0, 4, 3], [4, 0, 4, 3]]),
  ('odd width #1', [1, 1, 9, 4, 2, 1], [[1, 1, 4, 4], [5, 1, 5, 4]]),
  ('control #1', [5, 1, 1, 10, 4, 2], [[5, 1, 1, 5], [5, 6, 1, 5]])]]
for label, args, expected in cases[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
square at even depth #1[[0, 0, 5, 5], [5, 0, 5, 5], [0, 5, 5, 5], [5, 5, 5, 5]][[0, 0, 5, 5], [0, 5, 5, 5], [5, 0, 5, 5], [5, 5, 5, 5]]Failed
regression orientation choice #1[[0, 5, 3, 6], [3, 5, 4, 6], [0, 11, 3, 6], [3, 11, 4, 6], [0, 17, 3, 6], [3, 17, 4, 6], [0, 23, 3, 7], [3, 23, 4, 7]][[0, 5, 3, 6], [3, 5, 4, 6], [0, 11, 3, 6], [3, 11, 4, 6], [0, 17, 3, 6], [3, 17, 4, 6], [0, 23, 7, 3], [0, 26, 7, 4]]Failed
regression orientation choice #2[[0, 3, 3, 7], [3, 3, 4, 7], [0, 10, 7, 4], [0, 14, 7, 4], [7, 3, 4, 7], [11, 3, 4, 7], [7, 10, 4, 8], [11, 10, 4, 8], [0, 18, 3, 7], [3, 18, 4, 7], [0, 25, 7, 4], [0, 29, 7, 4], [7, 18, 4, 7], [11, 18, 4, 7], [7, 25, 4, 8], [11, 25, 4, 8]][[0, 3, 7, 3], [0, 6, 7, 4], [7, 3, 4, 7], [11, 3, 4, 7], [0, 10, 7, 4], [0, 14, 7, 4], [7, 10, 8, 4], [7, 14, 8, 4], [0, 18, 7, 3], [0, 21, 7, 4], [7, 18, 4, 7], [11, 18, 4, 7], [0, 25, 7, 4], [0, 29, 7, 4], [7, 25, 8, 4], [7, 29, 8, 4]]Failed
partial repair boundary #1[[3, 0, 6, 6], [9, 0, 6, 6], [3, 6, 6, 6], [9, 6, 6, 6], [15, 0, 6, 6], [15, 6, 6, 6], [21, 0, 7, 6], [21, 6, 7, 6]][[3, 0, 6, 6], [3, 6, 6, 6], [9, 0, 6, 6], [9, 6, 6, 6], [15, 0, 6, 6], [15, 6, 6, 6], [21, 0, 7, 6], [21, 6, 7, 6]]Failed
partial repair boundary #2[[1, 0, 3, 3], [4, 0, 3, 3], [1, 3, 3, 3], [4, 3, 3, 3], [1, 6, 3, 3], [4, 6, 3, 3], [1, 9, 3, 3], [4, 9, 3, 3], [1, 12, 3, 3], [4, 12, 3, 3], [1, 15, 3, 3], [4, 15, 3, 3], [1, 18, 3, 3], [4, 18, 3, 3], [1, 21, 3, 3], [4, 21, 3, 3]][[1, 0, 3, 3], [1, 3, 3, 3], [4, 0, 3, 3], [4, 3, 3, 3], [1, 6, 3, 3], [1, 9, 3, 3], [4, 6, 3, 3], [4, 9, 3, 3], [1, 12, 3, 3], [1, 15, 3, 3], [4, 12, 3, 3], [4, 15, 3, 3], [1, 18, 3, 3], [1, 21, 3, 3], [4, 18, 3, 3], [4, 21, 3, 3]]Failed
exactly splittable #1[[0, 0, 4, 3], [4, 0, 4, 3]][[0, 0, 4, 3], [4, 0, 4, 3]]Passed
odd width #1[[1, 1, 4, 4], [5, 1, 5, 4]][[1, 1, 4, 4], [5, 1, 5, 4]]Passed
control #1[[2, 3, 8, 10], [10, 3, 8, 10]][[2, 3, 8, 10], [10, 3, 8, 10]]Passed

SHA-256 / 69da4917356635f2aa43dcb29caf6b39ede5c353233c860d2e9c9dba6d6af71f

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

Member access is invitation-based. Sign in with your invited account to inspect the repair.

Sign in to the archive ↗

Verification & scope

Deterministic toy contract stipulated for this model; integer or exact arithmetic only, not a reproduction of any specific game engine. 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:50:50.476702+00:00.

Case digest / c600c136aa44d661fd929b6bfdd550713f077bbcd4930d48799dbf4402fe333f