At ~1,400 Workflows, EventSources at 512 Mi were OOMKilled; at ~2,000, with nodeStatusOffLoad false, the workflow controller at 2 GiB joined them. Label filters, CronWorkflow history limits, offload, and archive bounded the cache, not a message bus.
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.
Argo Workflows was the data scheduler before Spark. The first job plane is Workflows + a standing Spark cluster: IRSA on the cluster, static keys on submit from `argo`, not the Spark Operator, not Argo CD, not Events yet.