GRANT SELECT ON default.* plus targeted REVOKEs instead of
readonly_role because the role grants every table in default, including the
raw tables that store request and response bodies, headers, IP addresses, and
free-form logs. Those can contain customer PII and secrets (for example
Authorization headers or API keys in request bodies), which an exploration
user has no reason to read. The direct-grant-then-revoke shape still auto-picks
up new rollup tables while keeping the four raw streams out.

