X_QUERY_CACHE_TTL_INVALID
Means
a query declares a cache ttlMs no tier can hold
Typical cause
cache: { ttlMs: Infinity }, 0, a negative value or NaN. Judged at query(), in the file that declared it, rather than on the first read: the tiers already refuse the value with X_CACHE_TTL_INVALID, so before this the mistake compiled, passed review, and made every read of that query fail permanently in production. The cause echoes the value rather than the query name — query() runs before defineApi() stamps a name, exactly as X_QUERY_INPUT_UNENCODABLE does
Fix
pass a positive, finite ttlMs, or drop the cache block — "do not cache" is expressed by not declaring one