materialized='table' rewrites metadata.json with the full snapshot list. The coordinator parses that list into heap. File version in the 700s; JVM 2 GiB then 8 GiB. Expiry runs on Spark, not on Trino. Nessie GC is the wrong tool.
One coordinator for dashboards and dbt full-refresh is a bad idea. trino-main is humans; trino-etl is batch with task retry. dbt stays a container in an Argo workflow, not a Helm release.
Events exists so raw ingestion is not the same graph as semantic-layer dbt. Sensors on completion; producers stay a CronWorkflow, a label, a Sensor. The informer-cache OOM is a later story.