I had a closer look at the data that you provided via PM. And it indeed looks like the subtree file is plainly inconsistent with the actual data.
As mentioned above: The validator does not detect this. It can only detect structural inconsistencies (e.g. when a child tile is ‘available’, but not its parent tile). In this case, the subtree just says: “There is no tile”. The fact that the actual file exists (and should be marked as ‘available’) is something that is not validated. One could do that, in theory. There could be a check for the actual files, and this could be reported as
“There is a tile at (x,y,z), but this is not marked as ‘available’”
But nothing prevents the user from storing arbitrary files there, so I’d hesitate to add this, because it could cause “wrong warnings”…
However, I quickly hacked together a test, based on some small demo in the 3D Tiles Tools. This just checks the availability information, and compares it with the presence of the files. And this indeed generates this output:
Tile availability from coordinates:
(level 0, (0,0,0)) index 0, available: true, exists true
(level 1, (0,0,0)) index 1, available: true, exists true
(level 1, (1,0,0)) index 2, available: true, exists true
(level 1, (0,1,0)) index 3, available: true, exists true
(level 1, (1,1,0)) index 4, available: true, exists true
(level 1, (0,0,1)) index 5, available: false, exists false
(level 1, (1,0,1)) index 6, available: false, exists false
(level 1, (0,1,1)) index 7, available: false, exists false
(level 1, (1,1,1)) index 8, available: false, exists false
(level 2, (0,0,0)) index 9, available: true, exists true
(level 2, (1,0,0)) index 10, available: true, exists true
(level 2, (0,1,0)) index 11, available: true, exists true
(level 2, (1,1,0)) index 12, available: false, exists true INCONSISTENT!
(level 2, (0,0,1)) index 13, available: false, exists false
(level 2, (1,0,1)) index 14, available: false, exists false
(level 2, (0,1,1)) index 15, available: false, exists false
(level 2, (1,1,1)) index 16, available: false, exists false
(level 2, (2,0,0)) index 17, available: true, exists true
(level 2, (3,0,0)) index 18, available: true, exists true
...
As you suspected: The tile is there, but it is not marked as ‘available’. (And the fact that it should be available is clear when loading the data in CesiumJS…)
Unfortunately, there is no easy way to handle this on the client side.
If this is “urgent”, I could probably quickly create a fixed .subtree file for this specific data set (just drop me a note).
But this apparently is a bug in the tiler. I’ll open an issue internally, with additional information and a link to this forum thread, so that information about the progress or possible fixes can be posted here.