# Use canonical Slow Query URL for traffic mirroring

## Background

The traffic-mirroring cluster comparison service falls back to a direct O11Y lookup when the request omits `SlowQueryS3URL`. That fallback appends `-premium` to every NextGen region, duplicating routing policy and producing incorrect buckets for Essential V2 and other storage layouts.

## Goal and target contract

- Preserve an explicitly supplied `SlowQueryS3URL` as the first-priority source.
- Otherwise obtain the authoritative URL from Clinic Internal API `cluster-dataurls`.
- Validate the canonical target and fail closed when it is unavailable or malformed.
- Remove the traffic-mirroring path's direct O11Y region/bucket construction.
- Log only the target source, scheme, operation, cluster ID, and outcome with the request trace ID.

## Affected modules and routes

- Nested module `clinic_data_service`: cluster comparison service and server dependency wiring.
- Internal traffic-mirroring comparison/report routes.
- Image/CD component/app-delivery workload: `clinic/data-service`, `clinic-data-service`, Data Service Deployment.
- Runtime prerequisite: the #1578 `clinic` image must already return the corrected canonical URL.

## Implementation

1. Inject a narrow canonical cluster-dataurls reader into `ClusterDiffApiService`.
2. Resolve the data source from the request first, then call `GetCanonicalClusterDataURLs` by cluster ID when missing.
3. Accept only non-empty supported object-storage URLs and return an error otherwise.
4. Remove the reachable `GetDeltaScanFormO11y` fallback and its request builder from this service.
5. Wire the existing Clinic Internal API client from Data Service configuration and add fake-based regression tests.

## Compatibility and exclusions

- Request and response schemas do not change.
- Explicit request URLs retain their existing precedence and value.
- O11Y client behavior used by unrelated services is not changed.
- No database, workflow, or app-delivery configuration change is required.

## Validation and release boundary

- Run focused service and server tests from the nested module, formatting, and `git diff --check`.
- Stage only after #1578 is live in staging; deploy `clinic-data-service` and verify the actual Data Service image, comparison result, and trace-correlated fallback logs.
- Keep the implementation uncommitted, unpushed, and undeployed pending review.
