Discovered by Greg Thrush:
variables.framework.routes = [
{ "$RESOURCES" = { resources = "users", nested = "logs" }},
{ "$RESOURCES" = { resources = "sites", nested = "logs" }},
];
The problem is the cache key in getResourceRoutes() -- it doesn't take anything but resourcesToRoute into account.