Simply having a mesh with a vertex channel that is not Float32 or Float16 (or unorm8 for the color channel) causes server-side validation to fail (For a list of vertex attribute formats see https://docs.unity3d.com/2022.3/Documentation/ScriptReference/Rendering.VertexAttributeFormat.html). While these are unusual, certain optimization tools will use these for normal/tangent/uv1 to reduce vertex size, something that is especially important for mobile (for example see https://github.com/StressLevelZero/CustomStaticBatching). Integer formats are also important for some use-cases.
Joining this world will send you back to your home, and print this to the log:
Error - [API] [2570, 403, Get, -1 https://api.vrchat.cloud/api/1/analysis/file_b25715ea-6d63-408a-be18-a279972580c0/102/security] Abandoning request, because - File forbidden
Error - World 'wrld_e9f594c3-f33f-4638-8df4-711afc6bce4e' did not pass initial checks and won't be downloaded: 10
Error - Error Downloading or Instantiating Custom Scene - Fixed-Point Mesh - 10
Steps to reproduce:
  1. Download any of the attached Mesh_* files and rename the file from the canny-generated hash to the original name plus .asset as the extension. Move one or more of these into the assets folder of a VRC world project.
1a. Alternatively, download/rename CreateNonStandardMeshes.cs into your project. Then run Create Debug Meshes->Create from the top bar. This will generate the meshes in your root Assets/ folder.
  1. Make a new scene with the VRC World template.
  2. Place a cube in the scene, and change the mesh filter's mesh to the Mesh_* mesh you copied in 1.
  3. Build and publish.
  4. Try to load the world and you will be kicked to your home. Checking the log reveals the map has failed validation