key_farm/flavors.py is now the single source of truth for compute flavors
(name/kind/hourly_usd/vram). The scaler budget math costs each GPU flavor
from the catalog, and the OS-search route_query() answers gpu/cost/hardware/
flavor queries (previously 'Route not matched').
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Phase 1: ScalePolicy gains gpu_hardware/gpu_space_hourly_usd + effective_hardware()
with budget-aware worker count; run_job uses the effective flavor; _scale_policy
reads gpu_hardware from payload/env. Phase 0: FarmStore.prune mirrored in for
key_farm consistency. Additive: gpu_hardware=None preserves the CPU farm exactly.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>