Mesh.face_neighbors

I made a mesh from the following vertices and faces:

{0: [-127.56, -343.14, 48.94], 1: [-158.72, -330.45, 11.02], 2: [-126.56, -331.42, 51.41], 3: [-131.78, -347.25, 51.41], 4: [-164.05, -336.6, 13.85], 5: [-126.46, -341.1, 48.57], 6: [-158.83, -320.77, 13.85], 7: [-159.83, -332.5, 11.39]}

{0: [2, 3, 5], 1: [7, 6, 4], 2: [7, 1, 6], 3: [0, 3, 5], 4: [2, 3, 4], 5: [2, 6, 4], 6: [1, 2, 6], 7: [1, 2, 5], 8: [0, 1, 5], 9: [0, 7, 1], 10: [0, 3, 4], 11: [0, 7, 4]}

Is there a reason that Mesh.face_neighbors only returns one or two neighboring face keys?

the cycles of your faces are incorrect (i.e. not consistent).
after unify_cycles you get the expected result…

from compas.datastructures import Mesh

vertices = {0: [-127.56, -343.14, 48.94], 1: [-158.72, -330.45, 11.02], 2: [-126.56, -331.42, 51.41], 3: [-131.78, -347.25, 51.41], 4: [-164.05, -336.6, 13.85], 5: [-126.46, -341.1, 48.57], 6: [-158.83, -320.77, 13.85], 7: [-159.83, -332.5, 11.39]}
faces = {0: [2, 3, 5], 1: [7, 6, 4], 2: [7, 1, 6], 3: [0, 3, 5], 4: [2, 3, 4], 5: [2, 6, 4], 6: [1, 2, 6], 7: [1, 2, 5], 8: [0, 1, 5], 9: [0, 7, 1], 10: [0, 3, 4], 11: [0, 7, 4]}

mesh = Mesh.from_vertices_and_faces(vertices, faces)
mesh.unify_cycles()

for face in mesh.faces():
    print(mesh.face_neighbors(face))
[4, 3, 7]
[5, 2, 11]
[6, 9, 1]
[0, 10, 8]
[10, 0, 5]
[6, 1, 4]
[5, 7, 2]
[6, 0, 8]
[9, 7, 3]
[11, 2, 8]
[3, 4, 11]
[1, 9, 10]