feat: queue scaler cutover shape - single OD HPA, floor 3 / cap 16 (f05065)

Merged
GI
14h ago
+113-50

Reworks the dormant queue scaler (#23824, merged disabled) into the qualified cutover shape accepted for the 100% capacity plan: demand-driven, min 3 / max 16, OD-first (lead f05065; David b38eea — peak OK today, skip 50%).

  • replicaCount 4 → 3: the ratified batch floor (lead 114a22/724762; op1 readback 3 desired / 3 Ready on 10-28).
  • Latent autoscaling budget 2/24 → 3/16. Stays disabled in values; enabling happens only in op1's reviewed qualification window during the 25% soak, where a real scale-up doubles as the scheduling proof and op1 raises batch-pipeline-pool's node maximum (3 → 16) in the same window.
  • OD-first placement: the worker pins to batch-pipeline-pool so the guaranteed floor and scale-out never depend on Spot (persistent L4 Spot stockout; Spot L4 bills above on-demand — N6 10-26).
  • balancedPools stays machinery-only; the chart rejects it in production when the stage, values namespace, or Helm release namespace marks production, and the docs now name the single OD HPA as the cutover. Going above 16 is a second, separately qualified step; never pre-provision.
  • targetQueuedUnitsPerWorker=16 remains provisional until op1 benchmarks useful completions/queue latency on the qualified worker.

Tests: environment/policy pins move to replicas 3; the balanced design test uses a non-production explicit even budget (2/24); production values reject balanced mode at min=3 or min=4 even with overrides, and a production Helm release namespace rejects balanced mode when chart values say dev. Production cutover remains a single OD HPA at min3/max16, pinned to OD with no -spot deployment; the adapter contract renders the single-pool cutover. Local targeted backend shard: 77 passed across test_batch_pipeline_chart.py and test_monitoring_adapter_hpa_contract.py.

Failure-Class: none
UI-Evidence: none -- reason: chart/docs/tests only; no web/admin/app paths