Descriptores well-known de OpenAPI
`GET /.well-known/openapi.json` y `GET /.well-known/openapi.yaml` sirven el contrato público curado de OpenAPI 3.1 en la ruta well-known de RFC 8615. Ambos no requieren autenticación, devuelven ETags fuertes derivados de un hash de contenido y respetan `If-None-Match` con `304 Not Modified` para que las herramientas puedan cachear con confianza. El descriptor se filtra contra la denylist pública de `app/core/public_contract_filter.py`, que refleja la lista `denylist` del contrato del sitio: las rutas internas, administrativas y de plataforma nunca aparecen. Ambos formatos son equivalentes a nivel semántico; solo difiere la serialización.