Overview
When the vertical scaling admission webhook mutates a pod’s resource requests (or limits) inautonomous mode, it annotates the pod:
These are written once, at pod admission (
CREATE), by the mutating webhook
only — not by in-place resize,
which patches running pods directly without going through admission.
This is scoped to the pod-mutating webhook, which covers both vertical
AIScaleTarget rightsizing and initial resource seeding by a
DaemonSetAutoscaler. Horizontal scaling (replica count), which mutates the
*/scale subresource instead of the pod, is a separate webhook and does
not set these annotations.What This Answers
thoras.ai/managed: "true" means “the webhook set this pod’s resources
at admission,” and nothing stronger. Use it to answer: did Thoras’s
mutating webhook write to this pod’s resources, as opposed to the
controller’s pod template, another mutating webhook, or a manual
kubectl edit.
It does not mean “Thoras currently manages this pod.” Two situations
produce a pod that is annotated managed: "true" but is no longer
representative of Thoras’s current recommendation:
Pods Predate Autonomous Mode
AnAIScaleTarget switched into autonomous mode only annotates pods that
are admitted (created) after the switch. Pods that were already running keep
being resized in place by the disruption worker and are never re-admitted, so
they stay unannotated until they’re naturally recreated (a rollout, eviction,
node drain, or manual restart). Once a pod turns over, it goes through the
webhook and picks up the annotation on its next admission.
The Annotation Isn’t Cleared When Thoras Stops Managing a Pod
Switching anAIScaleTarget out of autonomous mode, or unenrolling it (see
Stopping Autonomous Scaling), reverts running
pods to their controller’s template values with an in-place resize wherever
possible — the pods are not recreated, so they are never re-admitted and the
webhook never runs again to clear the annotation. A reverted pod keeps
thoras.ai/managed: "true" while sitting at template values. As with the
case above, this self-heals the next time the pod is recreated for any
reason: a fresh admission with nothing to mutate does not set the annotation.
When the in-place revert can’t apply (for example, the template declares a
different set of resource keys than the running pod, which would change its
QoS class) and the update policy permits recreation, Thoras falls back to
restarting the workload — those pods are recreated and come back without the
annotation.
Both cases are false positives on a pod Thoras did mutate at some earlier
admission, consistent with the annotation’s actual meaning — never false
positives claiming Thoras is currently managing a pod it isn’t.
Related Documentation
- Predictive Vertical Pod Rightsizing -
Configuring
autonomousmode and update policy - Stopping Autonomous Scaling - How pods revert when autonomous mode is turned off
- ClusterAIScaleTemplate - The
thoras.ai/skip-templateandthoras.ai/managed-by-templateannotations and labels, which control template enrollment rather than pod mutation

