Autoscaling Controller · View 03 of 37 · 1 · Context and scope
Decisions
- The loop closes on verify-serving, not on actuate. Capacity that has been requested but is not yet healthy and registered does not count.
- The interval is 15 s by default and configurable per target between 5 and 300 s; the cost of a shorter interval is provider API pressure, not compute.
- A step that cannot complete holds the last declaration. The loop never advances on a guess.
Why closed loop, not a schedule
- A schedule is a policy input, not a control strategy: it cannot see the burst it did not predict.
- Per-target evaluation cost is independent of fleet size, so holding the interval constant as the fleet grows to 2,000 targets is a sharding problem, not a loop-design problem.
Risks
- A loop this tight amplifies a bad signal quickly. The qualification step exists to bound that, and the damping in act 4 bounds what survives it.
- Verify-serving depends on the provider reporting health honestly; a crash-looping instance can report healthy and is handled as the poison-target failure class.