"""RMI Backend — middleware registration. Per v3 unfuck rule #7: add_middleware MUST be called at module level, NOT inside lifespan. FastAPI rejects middleware added after startup. This module owns every middleware registration. Adding a new middleware: 1. Add a `try_register(app, "name")` block below 2. Each block is isolated — one failure doesn't break the rest """ from __future__ import annotations import logging log = logging.getLogger(__name__) def register_middleware(app) -> None: """Register all middleware. Each registration is isolated.""" _try_register_prometheus(app) _try_register_cost_tracking(app) _try_register_tracing(app) def _try_register_prometheus(app) -> None: """Prometheus metrics middleware. Records every request.""" try: from app.core.metrics import PrometheusMiddleware app.add_middleware(PrometheusMiddleware) log.info("middleware_registered name=prometheus") except Exception as exc: log.warning("middleware_skipped name=prometheus err=%s", exc) def _try_register_cost_tracking(app) -> None: """M7 — per-tenant/per-route cost tracking.""" try: from app.middleware.cost_tracking import CostTrackingMiddleware, CostBuffer app.add_middleware(CostTrackingMiddleware, buffer=CostBuffer()) log.info("middleware_registered name=cost_tracking") except Exception as exc: log.warning("middleware_skipped name=cost_tracking err=%s", exc) def _try_register_tracing(app) -> None: """Request-id + timing middleware (always on).""" try: from app.core.tracing import setup_tracing setup_tracing(app) log.info("middleware_registered name=tracing") except Exception as exc: log.warning("middleware_skipped name=tracing err=%s", exc)