Measure controller memory, then strip pod fields from the cache
The controller caches full Pod objects for every pod in the cluster, where the design calls for stripping them. The design estimates the transform cuts memory about 80%, but neither the current memory use nor that figure has been measured here.
Measure: run the controller against a kind cluster with a few thousand pods and read heap use with and without a cache.Options transform that keeps metadata, nodeName, phase, QoS, container resources and resizePolicy. Ship the transform if the saving matters at realistic cluster sizes; otherwise record the number in the design and drop the promise.
That keep list is too short for slack. internal/eligibility/eligibility.go:256:func PodBookedCPUMilli also reads spec.initContainers (with their restartPolicy), spec.overhead, spec.resources, status.containerStatuses, status.initContainerStatuses, status.allocatedResources, status.resources and status.conditions. A transform that strips any of them raises no error and moves the booking away from the scheduler's. Stripping status.conditions books too much on an infeasible grow, which understates slack. Stripping any of the others books too little, which overstates slack and raises limits on a node the scheduler has full.
docs/design.md:495:Informer cache transform is the promise.