feat: model class routing

HA
20d ago
+4034-1090

Summary

Adds runtime support for activating standard and fast serving classes on an existing model. The model keeps its UUID, public alias, access grants and tariff history; its configured class destinations replace composite routing when explicitly activated.

Existing models remain on legacy routing until their routing mode is switched.

Changes

  • Resolve optional ingress aliases before caching, preserving the submitted name in responses.
  • Carry canonical model/class identity through forwarding, cache accounting, billing and analytics.
  • Normalize batch/flex requests to standard while preserving scheduling priority.
  • Include applicable public class prices in credit admission.
  • Expose primary class names through /v1/models, without listing synonyms.
  • Add grouped class destinations and pricing to admin model views.
  • Load routing from a consistent database snapshot and coalesce class-change notifications.
  • Preserve captured billing identity across routing rollback.

Customer-specific destination and priority overrides remain a follow-up.

Validation

  • Rust and TypeScript lint, including SQLx metadata checks, passed.
  • All 782 dashboard tests passed.
  • Shared and scoped PgBouncer compatibility tests passed.
  • Rust workspace: 3,862 passed, 31 ignored, two failures:
    • Known baseline request-memory budget failure: 11.04 copies against 10.35.
    • One streaming billing-poll timeout, which passed in isolation.

Rollout

No catalog changes or model activation are included. Complete fork workload and sync-performance testing before release. Activate models individually after their Dynamo destinations are verified.

After accepting class traffic, prefer routing rollback while retaining the new runtime: older billing projectors cannot safely interpret the new class receipts.