{"abstract":"Prefab holes erase existing walls.","category":"Procedural level generation constraints","checks":8,"contract":"The prefab (rows of chars, ' ' transparent) is rotated clockwise rot times (rot taken mod 4, negative allowed) and stamped with its top-left at column ox, row oy. If any non-transparent tile would land out of bounds or on a locked 'X' tile, the stamp is rejected and the original grid returned with False; otherwise the new grid with True.","evaluation_group":"w2-procedural-level-generation-constraints-prefab-stamp","failed_approach":"Also treating floor as transparent stops prefabs from carving floors.","family":"w2-procedural-level-generation-constraints-prefab-stamp-transparency","id":"FA-86741","implementations":{"attempt":{"sha256":"1a01a6b67aac360cf284679927f97d398cfc0d68f0b9017f91a61983090ea9e5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid, prefab, ox, oy, rot):\n    p = [list(row) for row in prefab]\n    for _ in range(rot % 4):\n        p = [list(row) for row in zip(*p[::-1])]\n    g = [list(row) for row in grid]\n    for r, line in enumerate(p):\n        for c, t in enumerate(line):\n            if t in ' .':\n                continue\n            y, x = oy + r, ox + c\n            if not (0 <= y < len(g) and 0 <= x < len(g[0])) or g[y][x] == 'X':\n                return [grid, False]\n            g[y][x] = t\n    return [[''.join(row) for row in g], True]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('regression transparency #1',\n   [['...', '#..', 'X..', '...', '#X.', '..X'], ['.D.', '#.D'], 0, 0, -1],\n   [['...', '#..', 'X..', '...', '#X.', '..X'], False]),\n  ('fault site transparency #1', [['.#.', '#..'], ['  ', 'DD', '#.'], 0, -1, 4], [['DD.', '#..'], True]),\n  ('regression transparency #2',\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], ['.', 'D', '.'], 1, 1, 6],\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], False]),\n  ('partial repair boundary #1',\n   [['......', '...X..', 'X.#...'], [' ', '.', ' '], -1, -1, 4],\n   [['......', '...X..', 'X.#...'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1', [['.#.', '#..'], ['  ', 'DD', '#.'], 0, -1, 4], [['DD.', '#..'], True]),\n  ('fault site transparency #2',\n   [['..#X.', '.....', '.....', '.XX#.'], ['##D', '#. ', '.# '], 0, 0, 0],\n   [['##DX.', '#....', '.#...', '.XX#.'], True]),\n  ('partial repair boundary #1',\n   [['......', '...X..', 'X.#...'], [' ', '.', ' '], -1, -1, 4],\n   [['......', '...X..', 'X.#...'], False]),\n  ('regression transparency #1',\n   [['.....', 'X..X#', 'X.X.X'], ['. .'], 1, 1, 2],\n   [['.....', 'X..X#', 'X.X.X'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1',\n   [['...#..', '.#....', '#.....'], ['#.', ' .', '#D'], 2, 0, 5],\n   [['..###.', '.#D...', '#.....'], True]),\n  ('fault site transparency #2',\n   [['#.#', '#..', '#..', '#.X', 'X#.'], [' '], 1, 4, 3],\n   [['#.#', '#..', '#..', '#.X', 'X#.'], True]),\n  ('regression transparency #1',\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], ['  ', ' .', 'D.'], 4, 0, 2],\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], False]),\n  ('regression transparency #2',\n   [['.....#', '#.#..X', 'X.....', '..#XX.', '.#..X.', '...#X.'], ['D', '.'], 2, 3, -1],\n   [['.....#', '#.#..X', 'X.....', '..#XX.', '.#..X.', '...#X.'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1',\n   [['..#', '...', '...', '##.'], [' #', 'D#'], 1, 2, -3],\n   [['..#', '...', '.D.', '###'], True]),\n  ('regression transparency #1',\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], ['.', 'D', '.'], 1, 1, 6],\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], False]),\n  ('partial repair boundary #1',\n   [['.X.', '...', 'X..', '..X', '..#'], ['D.', '. '], 0, -1, 3],\n   [['.X.', '...', 'X..', '..X', '..#'], False]),\n  ('regression transparency #2',\n   [['#...#.', '.##X..', '...X#.', '..XX..', '..#X.#'], ['.', '.'], 1, 1, -1],\n   [['#...#.', '...X..', '...X#.', '..XX..', '..#X.#'], True]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1',\n   [['#X', '..', '..', '#.', '#.'], [' D', '.#', '.#'], -1, 2, 3],\n   [['#X', '..', '..', '#.', '#.'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('regression transparency #1',\n   [['.....', 'X..X#', 'X.X.X'], ['. .'], 1, 1, 2],\n   [['.....', 'X..X#', 'X.X.X'], False]),\n  ('regression transparency #2',\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], ['  ', ' .', 'D.'], 4, 0, 2],\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], False]),\n  ('regression transparency #3',\n   [['...', '...', '...', 'X#.', 'X#.', '...'], ['.', '.', ' '], 1, 3, -1],\n   [['...', '...', '...', 'X..', 'X#.', '...'], True]),\n  ('partial repair boundary #1',\n   [['..', 'X.', '.X', '.#', '.#', '#.'], ['. '], -1, 3, 1],\n   [['..', 'X.', '.X', '.#', '.#', '#.'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1',\n   [['XX', 'X.', '..', '..', '..'], ['D', 'D', ' '], 0, 4, -3],\n   [['XX', 'X.', '..', '..', '..'], False])]]\nfor label, args, expected in cases[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"c99cf2efe87b6725d117cf51958db6100a121380edd1d6e162ab134f31a3de6b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid, prefab, ox, oy, rot):\n    p = [list(row) for row in prefab]\n    for _ in range(rot % 4):\n        p = [list(row) for row in zip(*p[::-1])]\n    g = [list(row) for row in grid]\n    for r, line in enumerate(p):\n        for c, t in enumerate(line):\n            if t == '.':\n                continue\n            y, x = oy + r, ox + c\n            if not (0 <= y < len(g) and 0 <= x < len(g[0])) or g[y][x] == 'X':\n                return [grid, False]\n            g[y][x] = t\n    return [[''.join(row) for row in g], True]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('regression transparency #1',\n   [['...', '#..', 'X..', '...', '#X.', '..X'], ['.D.', '#.D'], 0, 0, -1],\n   [['...', '#..', 'X..', '...', '#X.', '..X'], False]),\n  ('fault site transparency #1', [['.#.', '#..'], ['  ', 'DD', '#.'], 0, -1, 4], [['DD.', '#..'], True]),\n  ('regression transparency #2',\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], ['.', 'D', '.'], 1, 1, 6],\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], False]),\n  ('partial repair boundary #1',\n   [['......', '...X..', 'X.#...'], [' ', '.', ' '], -1, -1, 4],\n   [['......', '...X..', 'X.#...'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1', [['.#.', '#..'], ['  ', 'DD', '#.'], 0, -1, 4], [['DD.', '#..'], True]),\n  ('fault site transparency #2',\n   [['..#X.', '.....', '.....', '.XX#.'], ['##D', '#. ', '.# '], 0, 0, 0],\n   [['##DX.', '#....', '.#...', '.XX#.'], True]),\n  ('partial repair boundary #1',\n   [['......', '...X..', 'X.#...'], [' ', '.', ' '], -1, -1, 4],\n   [['......', '...X..', 'X.#...'], False]),\n  ('regression transparency #1',\n   [['.....', 'X..X#', 'X.X.X'], ['. .'], 1, 1, 2],\n   [['.....', 'X..X#', 'X.X.X'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1',\n   [['...#..', '.#....', '#.....'], ['#.', ' .', '#D'], 2, 0, 5],\n   [['..###.', '.#D...', '#.....'], True]),\n  ('fault site transparency #2',\n   [['#.#', '#..', '#..', '#.X', 'X#.'], [' '], 1, 4, 3],\n   [['#.#', '#..', '#..', '#.X', 'X#.'], True]),\n  ('regression transparency #1',\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], ['  ', ' .', 'D.'], 4, 0, 2],\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], False]),\n  ('regression transparency #2',\n   [['.....#', '#.#..X', 'X.....', '..#XX.', '.#..X.', '...#X.'], ['D', '.'], 2, 3, -1],\n   [['.....#', '#.#..X', 'X.....', '..#XX.', '.#..X.', '...#X.'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1',\n   [['..#', '...', '...', '##.'], [' #', 'D#'], 1, 2, -3],\n   [['..#', '...', '.D.', '###'], True]),\n  ('regression transparency #1',\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], ['.', 'D', '.'], 1, 1, 6],\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], False]),\n  ('partial repair boundary #1',\n   [['.X.', '...', 'X..', '..X', '..#'], ['D.', '. '], 0, -1, 3],\n   [['.X.', '...', 'X..', '..X', '..#'], False]),\n  ('regression transparency #2',\n   [['#...#.', '.##X..', '...X#.', '..XX..', '..#X.#'], ['.', '.'], 1, 1, -1],\n   [['#...#.', '...X..', '...X#.', '..XX..', '..#X.#'], True]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1',\n   [['#X', '..', '..', '#.', '#.'], [' D', '.#', '.#'], -1, 2, 3],\n   [['#X', '..', '..', '#.', '#.'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('regression transparency #1',\n   [['.....', 'X..X#', 'X.X.X'], ['. .'], 1, 1, 2],\n   [['.....', 'X..X#', 'X.X.X'], False]),\n  ('regression transparency #2',\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], ['  ', ' .', 'D.'], 4, 0, 2],\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], False]),\n  ('regression transparency #3',\n   [['...', '...', '...', 'X#.', 'X#.', '...'], ['.', '.', ' '], 1, 3, -1],\n   [['...', '...', '...', 'X..', 'X#.', '...'], True]),\n  ('partial repair boundary #1',\n   [['..', 'X.', '.X', '.#', '.#', '#.'], ['. '], -1, 3, 1],\n   [['..', 'X.', '.X', '.#', '.#', '#.'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1',\n   [['XX', 'X.', '..', '..', '..'], ['D', 'D', ' '], 0, 4, -3],\n   [['XX', 'X.', '..', '..', '..'], False])]]\nfor label, args, expected in cases[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"30f2463d1d6f002d123abec125c60364ac56c9737897320cafaae3dca612b583","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(grid, prefab, ox, oy, rot):\n    p = [list(row) for row in prefab]\n    for _ in range(rot % 4):\n        p = [list(row) for row in zip(*p[::-1])]\n    g = [list(row) for row in grid]\n    for r, line in enumerate(p):\n        for c, t in enumerate(line):\n            if t == ' ':\n                continue\n            y, x = oy + r, ox + c\n            if not (0 <= y < len(g) and 0 <= x < len(g[0])) or g[y][x] == 'X':\n                return [grid, False]\n            g[y][x] = t\n    return [[''.join(row) for row in g], True]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('regression transparency #1',\n   [['...', '#..', 'X..', '...', '#X.', '..X'], ['.D.', '#.D'], 0, 0, -1],\n   [['...', '#..', 'X..', '...', '#X.', '..X'], False]),\n  ('fault site transparency #1', [['.#.', '#..'], ['  ', 'DD', '#.'], 0, -1, 4], [['DD.', '#..'], True]),\n  ('regression transparency #2',\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], ['.', 'D', '.'], 1, 1, 6],\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], False]),\n  ('partial repair boundary #1',\n   [['......', '...X..', 'X.#...'], [' ', '.', ' '], -1, -1, 4],\n   [['......', '...X..', 'X.#...'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1', [['.#.', '#..'], ['  ', 'DD', '#.'], 0, -1, 4], [['DD.', '#..'], True]),\n  ('fault site transparency #2',\n   [['..#X.', '.....', '.....', '.XX#.'], ['##D', '#. ', '.# '], 0, 0, 0],\n   [['##DX.', '#....', '.#...', '.XX#.'], True]),\n  ('partial repair boundary #1',\n   [['......', '...X..', 'X.#...'], [' ', '.', ' '], -1, -1, 4],\n   [['......', '...X..', 'X.#...'], False]),\n  ('regression transparency #1',\n   [['.....', 'X..X#', 'X.X.X'], ['. .'], 1, 1, 2],\n   [['.....', 'X..X#', 'X.X.X'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1',\n   [['...#..', '.#....', '#.....'], ['#.', ' .', '#D'], 2, 0, 5],\n   [['..###.', '.#D...', '#.....'], True]),\n  ('fault site transparency #2',\n   [['#.#', '#..', '#..', '#.X', 'X#.'], [' '], 1, 4, 3],\n   [['#.#', '#..', '#..', '#.X', 'X#.'], True]),\n  ('regression transparency #1',\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], ['  ', ' .', 'D.'], 4, 0, 2],\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], False]),\n  ('regression transparency #2',\n   [['.....#', '#.#..X', 'X.....', '..#XX.', '.#..X.', '...#X.'], ['D', '.'], 2, 3, -1],\n   [['.....#', '#.#..X', 'X.....', '..#XX.', '.#..X.', '...#X.'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1', [['.#...#', '.#.#..'], ['  ', '# '], 1, -1, 6], [['.#...#', '.#.#..'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('fault site transparency #1',\n   [['..#', '...', '...', '##.'], [' #', 'D#'], 1, 2, -3],\n   [['..#', '...', '.D.', '###'], True]),\n  ('regression transparency #1',\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], ['.', 'D', '.'], 1, 1, 6],\n   [['##.', '..#', '#..', '.X.', '.#X', '#..'], False]),\n  ('partial repair boundary #1',\n   [['.X.', '...', 'X..', '..X', '..#'], ['D.', '. '], 0, -1, 3],\n   [['.X.', '...', 'X..', '..X', '..#'], False]),\n  ('regression transparency #2',\n   [['#...#.', '.##X..', '...X#.', '..XX..', '..#X.#'], ['.', '.'], 1, 1, -1],\n   [['#...#.', '...X..', '...X#.', '..XX..', '..#X.#'], True]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1',\n   [['#X', '..', '..', '#.', '#.'], [' D', '.#', '.#'], -1, 2, 3],\n   [['#X', '..', '..', '#.', '#.'], False])],\n [('transparent overhang #1', [['..', '..'], [' #', ' #'], -1, 0, 0], [['#.', '#.'], True]),\n  ('regression transparency #1',\n   [['.....', 'X..X#', 'X.X.X'], ['. .'], 1, 1, 2],\n   [['.....', 'X..X#', 'X.X.X'], False]),\n  ('regression transparency #2',\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], ['  ', ' .', 'D.'], 4, 0, 2],\n   [['..#.X.', '......', '.#..#.', 'XX.#.#', 'X..#.X'], False]),\n  ('regression transparency #3',\n   [['...', '...', '...', 'X#.', 'X#.', '...'], ['.', '.', ' '], 1, 3, -1],\n   [['...', '...', '...', 'X..', 'X#.', '...'], True]),\n  ('partial repair boundary #1',\n   [['..', 'X.', '.X', '.#', '.#', '#.'], ['. '], -1, 3, 1],\n   [['..', 'X.', '.X', '.#', '.#', '#.'], False]),\n  ('quarter turn #1', [['....', '....'], ['#D'], 0, 0, 1], [['#...', 'D...'], True]),\n  ('counter-clockwise turn #1', [['...', '...'], ['#.', '..'], 0, 0, -1], [['...', '#..'], True]),\n  ('control #1',\n   [['XX', 'X.', '..', '..', '..'], ['D', 'D', ' '], 0, 4, -3],\n   [['XX', 'X.', '..', '..', '..'], False])]]\nfor label, args, expected in cases[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-procedural-level-generation-constraints-prefab-stamp-transparency","generated_at":"2026-09-29T14:50:52.430170+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"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.","repair":"Restore `if t == ' ':` at the transparency step.","root_cause":"Floor, not space, is treated as transparent.","sha256":"84865a675d553251a1fc593af1207c28d05c53a8340b12366a744ff7cf503e3f","title":"Rotated prefab stamping: Transparent cells overwrite terrain · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.266,"exit_code":1,"observations":[{"actual":[["#.","#."],true],"check":"transparent overhang #1","expected":[["#.","#."],true],"passed":true},{"actual":[[".D.","D..","X#.","...","#X.","..X"],true],"check":"regression transparency #1","expected":[["...","#..","X..","...","#X.","..X"],false],"passed":false},{"actual":[["DD.","#.."],true],"check":"fault site transparency #1","expected":[["DD.","#.."],true],"passed":true},{"actual":[["##.","..#","#D.",".X.",".#X","#.."],true],"check":"regression transparency #2","expected":[["##.","..#","#..",".X.",".#X","#.."],false],"passed":false},{"actual":[["......","...X..","X.#..."],true],"check":"partial repair boundary #1","expected":[["......","...X..","X.#..."],false],"passed":false},{"actual":[["#...","D..."],true],"check":"quarter turn #1","expected":[["#...","D..."],true],"passed":true},{"actual":[["...","#.."],true],"check":"counter-clockwise turn #1","expected":[["...","#.."],true],"passed":true},{"actual":[[".#...#",".#.#.."],false],"check":"control #1","expected":[[".#...#",".#.#.."],false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"transparent overhang #1\", \"actual\": [[\"#.\", \"#.\"], true], \"expected\": [[\"#.\", \"#.\"], true], \"passed\": true}, {\"check\": \"regression transparency #1\", \"actual\": [[\".D.\", \"D..\", \"X#.\", \"...\", \"#X.\", \"..X\"], true], \"expected\": [[\"...\", \"#..\", \"X..\", \"...\", \"#X.\", \"..X\"], false], \"passed\": false}, {\"check\": \"fault site transparency #1\", \"actual\": [[\"DD.\", \"#..\"], true], \"expected\": [[\"DD.\", \"#..\"], true], \"passed\": true}, {\"check\": \"regression transparency #2\", \"actual\": [[\"##.\", \"..#\", \"#D.\", \".X.\", \".#X\", \"#..\"], true], \"expected\": [[\"##.\", \"..#\", \"#..\", \".X.\", \".#X\", \"#..\"], false], \"passed\": false}, {\"check\": \"partial repair boundary #1\", \"actual\": [[\"......\", \"...X..\", \"X.#...\"], true], \"expected\": [[\"......\", \"...X..\", \"X.#...\"], false], \"passed\": false}, {\"check\": \"quarter turn #1\", \"actual\": [[\"#...\", \"D...\"], true], \"expected\": [[\"#...\", \"D...\"], true], \"passed\": true}, {\"check\": \"counter-clockwise turn #1\", \"actual\": [[\"...\", \"#..\"], true], \"expected\": [[\"...\", \"#..\"], true], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [[\".#...#\", \".#.#..\"], false], \"expected\": [[\".#...#\", \".#.#..\"], false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.084,"exit_code":1,"observations":[{"actual":[["..",".."],false],"check":"transparent overhang #1","expected":[["#.","#."],true],"passed":false},{"actual":[[".D.","D..","X#.","...","#X.","..X"],true],"check":"regression transparency #1","expected":[["...","#..","X..","...","#X.","..X"],false],"passed":false},{"actual":[[".#.","#.."],false],"check":"fault site transparency #1","expected":[["DD.","#.."],true],"passed":false},{"actual":[["##.","..#","#D.",".X.",".#X","#.."],true],"check":"regression transparency #2","expected":[["##.","..#","#..",".X.",".#X","#.."],false],"passed":false},{"actual":[["......","...X..","X.#..."],false],"check":"partial repair boundary #1","expected":[["......","...X..","X.#..."],false],"passed":true},{"actual":[["#...","D..."],true],"check":"quarter turn #1","expected":[["#...","D..."],true],"passed":true},{"actual":[["...","#.."],true],"check":"counter-clockwise turn #1","expected":[["...","#.."],true],"passed":true},{"actual":[[".#...#",".#.#.."],false],"check":"control #1","expected":[[".#...#",".#.#.."],false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"transparent overhang #1\", \"actual\": [[\"..\", \"..\"], false], \"expected\": [[\"#.\", \"#.\"], true], \"passed\": false}, {\"check\": \"regression transparency #1\", \"actual\": [[\".D.\", \"D..\", \"X#.\", \"...\", \"#X.\", \"..X\"], true], \"expected\": [[\"...\", \"#..\", \"X..\", \"...\", \"#X.\", \"..X\"], false], \"passed\": false}, {\"check\": \"fault site transparency #1\", \"actual\": [[\".#.\", \"#..\"], false], \"expected\": [[\"DD.\", \"#..\"], true], \"passed\": false}, {\"check\": \"regression transparency #2\", \"actual\": [[\"##.\", \"..#\", \"#D.\", \".X.\", \".#X\", \"#..\"], true], \"expected\": [[\"##.\", \"..#\", \"#..\", \".X.\", \".#X\", \"#..\"], false], \"passed\": false}, {\"check\": \"partial repair boundary #1\", \"actual\": [[\"......\", \"...X..\", \"X.#...\"], false], \"expected\": [[\"......\", \"...X..\", \"X.#...\"], false], \"passed\": true}, {\"check\": \"quarter turn #1\", \"actual\": [[\"#...\", \"D...\"], true], \"expected\": [[\"#...\", \"D...\"], true], \"passed\": true}, {\"check\": \"counter-clockwise turn #1\", \"actual\": [[\"...\", \"#..\"], true], \"expected\": [[\"...\", \"#..\"], true], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [[\".#...#\", \".#.#..\"], false], \"expected\": [[\".#...#\", \".#.#..\"], false], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.709,"exit_code":0,"observations":[{"actual":[["#.","#."],true],"check":"transparent overhang #1","expected":[["#.","#."],true],"passed":true},{"actual":[["...","#..","X..","...","#X.","..X"],false],"check":"regression transparency #1","expected":[["...","#..","X..","...","#X.","..X"],false],"passed":true},{"actual":[["DD.","#.."],true],"check":"fault site transparency #1","expected":[["DD.","#.."],true],"passed":true},{"actual":[["##.","..#","#..",".X.",".#X","#.."],false],"check":"regression transparency #2","expected":[["##.","..#","#..",".X.",".#X","#.."],false],"passed":true},{"actual":[["......","...X..","X.#..."],false],"check":"partial repair boundary #1","expected":[["......","...X..","X.#..."],false],"passed":true},{"actual":[["#...","D..."],true],"check":"quarter turn #1","expected":[["#...","D..."],true],"passed":true},{"actual":[["...","#.."],true],"check":"counter-clockwise turn #1","expected":[["...","#.."],true],"passed":true},{"actual":[[".#...#",".#.#.."],false],"check":"control #1","expected":[[".#...#",".#.#.."],false],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"transparent overhang #1\", \"actual\": [[\"#.\", \"#.\"], true], \"expected\": [[\"#.\", \"#.\"], true], \"passed\": true}, {\"check\": \"regression transparency #1\", \"actual\": [[\"...\", \"#..\", \"X..\", \"...\", \"#X.\", \"..X\"], false], \"expected\": [[\"...\", \"#..\", \"X..\", \"...\", \"#X.\", \"..X\"], false], \"passed\": true}, {\"check\": \"fault site transparency #1\", \"actual\": [[\"DD.\", \"#..\"], true], \"expected\": [[\"DD.\", \"#..\"], true], \"passed\": true}, {\"check\": \"regression transparency #2\", \"actual\": [[\"##.\", \"..#\", \"#..\", \".X.\", \".#X\", \"#..\"], false], \"expected\": [[\"##.\", \"..#\", \"#..\", \".X.\", \".#X\", \"#..\"], false], \"passed\": true}, {\"check\": \"partial repair boundary #1\", \"actual\": [[\"......\", \"...X..\", \"X.#...\"], false], \"expected\": [[\"......\", \"...X..\", \"X.#...\"], false], \"passed\": true}, {\"check\": \"quarter turn #1\", \"actual\": [[\"#...\", \"D...\"], true], \"expected\": [[\"#...\", \"D...\"], true], \"passed\": true}, {\"check\": \"counter-clockwise turn #1\", \"actual\": [[\"...\", \"#..\"], true], \"expected\": [[\"...\", \"#..\"], true], \"passed\": true}, {\"check\": \"control #1\", \"actual\": [[\".#...#\", \".#.#..\"], false], \"expected\": [[\".#...#\", \".#.#..\"], false], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}